]> git.sur5r.net Git - openldap/log
openldap
10 years agoITS#7749 OPENLDAP_REL_ENG_2_4_38
Quanah Gibson-Mount [Fri, 15 Nov 2013 03:31:27 +0000 (19:31 -0800)]
ITS#7749

10 years agoITS#7749 propagate op->o_extra in syncprov_findbase
Howard Chu [Fri, 15 Nov 2013 03:16:57 +0000 (19:16 -0800)]
ITS#7749 propagate op->o_extra in syncprov_findbase

10 years agoPrep for release
Quanah Gibson-Mount [Thu, 14 Nov 2013 19:13:55 +0000 (11:13 -0800)]
Prep for release

10 years agoITS#7746
Quanah Gibson-Mount [Thu, 14 Nov 2013 16:42:47 +0000 (08:42 -0800)]
ITS#7746

10 years agoITS#7746 fix for cert with NULL issuerDN
Howard Chu [Thu, 14 Nov 2013 11:02:07 +0000 (03:02 -0800)]
ITS#7746 fix for cert with NULL issuerDN

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Tue, 12 Nov 2013 17:07:50 +0000 (09:07 -0800)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoITS#7743 bits
Quanah Gibson-Mount [Tue, 12 Nov 2013 17:06:24 +0000 (09:06 -0800)]
ITS#7743 bits

10 years agoITS#7743 Fix indexed AND filter
Howard Chu [Tue, 12 Nov 2013 05:01:33 +0000 (21:01 -0800)]
ITS#7743 Fix indexed AND filter

Partially revert 47f6aec61e65afd66bea096887f1cd550b55946e
Was using RANGE_FIRST/RANGE_LAST on an IDL known to *not* be a range.

10 years agoDoc tweak
Howard Chu [Tue, 12 Nov 2013 16:10:33 +0000 (08:10 -0800)]
Doc tweak

Measured perf cost of meminit was 7% worst case on an Intel Core2
system. YMMV.

10 years agoBump to 0.9.10
Howard Chu [Tue, 12 Nov 2013 04:15:54 +0000 (20:15 -0800)]
Bump to 0.9.10

10 years agoWindows/Win64/MSVC tweaks
Howard Chu [Tue, 12 Nov 2013 04:08:26 +0000 (20:08 -0800)]
Windows/Win64/MSVC tweaks

Silence warnings, fix broken MinGW64 definitions, etc.

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Tue, 12 Nov 2013 01:45:53 +0000 (17:45 -0800)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoClarify WRITEMAP / NOMEMINIT
Howard Chu [Tue, 12 Nov 2013 00:35:17 +0000 (16:35 -0800)]
Clarify WRITEMAP / NOMEMINIT

10 years agoChange default mem init behavior
Howard Chu [Mon, 11 Nov 2013 23:09:32 +0000 (15:09 -0800)]
Change default mem init behavior

Init malloc'd memory by default, use #MDB_NOMEMINIT to disable.
Bump version to 0.9.10

10 years agoAdd MDB_CLEANMEM option.
Hallvard Furuseth [Thu, 7 Nov 2013 22:41:30 +0000 (23:41 +0100)]
Add MDB_CLEANMEM option.

Initialize unused portions of DB pages, for security or to silence
checkers like Purify and Valgrind. Like BDB configure --enable-umrw.

10 years agoFix MDB_MAXKEYSIZE doc: Account for MDB_DUPSORT.
Hallvard Furuseth [Thu, 7 Nov 2013 22:38:15 +0000 (23:38 +0100)]
Fix MDB_MAXKEYSIZE doc: Account for MDB_DUPSORT.

A node may need room for [key, subpage with 2 items] = 3 keys.

10 years agoITS#7713 Handle bigger OS page sizes
Hallvard Furuseth [Thu, 7 Nov 2013 22:38:15 +0000 (23:38 +0100)]
ITS#7713 Handle bigger OS page sizes

Use DB page size = min(32k, OS pagesize).  Previous limit was 8k
(MDB_MINKEYS*MDB_PAGESIZE).

Handle DB pagesize < OS pagesize. That's an I/O pessimization,
but transactions remain atomic: Only writing the MDB_meta must
be atomic, and it fits in one OS page.

Don't truncate desired subpage size: Asssign it to a size_t
(mv_size), not an uint16_t (mp_upper).

10 years agomdb_cursor_put(): Factor out code. Kill a label.
Hallvard Furuseth [Thu, 7 Nov 2013 22:38:15 +0000 (23:38 +0100)]
mdb_cursor_put(): Factor out code. Kill a label.

10 years agoFix prev commit, cursor depth comparison
Howard Chu [Thu, 7 Nov 2013 17:37:48 +0000 (09:37 -0800)]
Fix prev commit, cursor depth comparison

10 years agoFix cursor_del0 cursor fixup
Howard Chu [Thu, 7 Nov 2013 00:49:25 +0000 (16:49 -0800)]
Fix cursor_del0 cursor fixup

Skip cursors that aren't as deep as current cursor

10 years agoITS#7741
Quanah Gibson-Mount [Wed, 6 Nov 2013 18:25:33 +0000 (10:25 -0800)]
ITS#7741

10 years agoITS#7741 Fix entryDN index lookup
Howard Chu [Wed, 6 Nov 2013 17:39:38 +0000 (09:39 -0800)]
ITS#7741 Fix entryDN index lookup

DN notfound is authoritative, don't ignore the result

10 years agoFix CONFIG_DELETE crash
Howard Chu [Tue, 5 Nov 2013 20:59:56 +0000 (12:59 -0800)]
Fix CONFIG_DELETE crash

Closing a connection can abandon its ops without going thru the threadpool,
so make sure to lock the si_ops_mutex before walking the list.

10 years agoITS#7735 fix memctx usage in prev commit
Howard Chu [Tue, 5 Nov 2013 19:49:43 +0000 (11:49 -0800)]
ITS#7735 fix memctx usage in prev commit

10 years agoMore for ITS#7589
Quanah Gibson-Mount [Tue, 5 Nov 2013 19:19:38 +0000 (11:19 -0800)]
More for ITS#7589

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Tue, 5 Nov 2013 19:18:47 +0000 (11:18 -0800)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoITS#7739
Quanah Gibson-Mount [Tue, 5 Nov 2013 19:18:35 +0000 (11:18 -0800)]
ITS#7739

10 years agoITS#7739 fix for empty nested include
Howard Chu [Tue, 5 Nov 2013 15:34:30 +0000 (07:34 -0800)]
ITS#7739 fix for empty nested include

10 years agoITS#7740
Quanah Gibson-Mount [Tue, 5 Nov 2013 19:18:05 +0000 (11:18 -0800)]
ITS#7740

10 years agoITS#7740 back-meta: avoid blocking other threads
Jorge Perez Burgos [Tue, 5 Nov 2013 09:12:41 +0000 (10:12 +0100)]
ITS#7740 back-meta: avoid blocking other threads

Don't lock other threads while trying to connect to remote node.

10 years agoITS#7735
Quanah Gibson-Mount [Tue, 5 Nov 2013 19:17:20 +0000 (11:17 -0800)]
ITS#7735

10 years agoFix slap_reparse_sync_cookie prototype
Howard Chu [Sat, 2 Nov 2013 21:20:15 +0000 (14:20 -0700)]
Fix slap_reparse_sync_cookie prototype

10 years agoITS#7735 plug memleak
Howard Chu [Fri, 1 Nov 2013 18:07:51 +0000 (11:07 -0700)]
ITS#7735 plug memleak

Introduced in commit 48cdd54d9accb9283807ed592369b72654fb302d

10 years agoMore for #7589
Howard Chu [Tue, 5 Nov 2013 04:00:55 +0000 (20:00 -0800)]
More for #7589

10 years agoITS#7737
Quanah Gibson-Mount [Fri, 1 Nov 2013 17:00:31 +0000 (10:00 -0700)]
ITS#7737

10 years agoITS#7737 Add a matching rule for OlcDbEnvFlgs
Quanah Gibson-Mount [Fri, 1 Nov 2013 16:57:20 +0000 (09:57 -0700)]
ITS#7737 Add a matching rule for OlcDbEnvFlgs

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Fri, 1 Nov 2013 00:55:06 +0000 (17:55 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoITS#7589 another mdb_page_split fix
Howard Chu [Fri, 1 Nov 2013 00:31:15 +0000 (17:31 -0700)]
ITS#7589 another mdb_page_split fix

Tweak split_indx check, go one slot further.

10 years agoITS#7736 fix regression in ITS#7733 patch
Howard Chu [Thu, 31 Oct 2013 23:01:04 +0000 (16:01 -0700)]
ITS#7736 fix regression in ITS#7733 patch

In d8eccb353b1be7f07e74149dde9a41bb199d74e8

10 years agoITS#7736 fix regression in ITS#7733 patch
Howard Chu [Thu, 31 Oct 2013 23:01:04 +0000 (16:01 -0700)]
ITS#7736 fix regression in ITS#7733 patch

In d8eccb353b1be7f07e74149dde9a41bb199d74e8

10 years agoReturn to RE
Quanah Gibson-Mount [Thu, 31 Oct 2013 21:53:42 +0000 (14:53 -0700)]
Return to RE

10 years agoITS#7662
Quanah Gibson-Mount [Thu, 31 Oct 2013 21:53:18 +0000 (14:53 -0700)]
ITS#7662

10 years agoITS#7662 cleanup reader txn in mdb_entry_get()
Howard Chu [Sat, 10 Aug 2013 12:05:16 +0000 (05:05 -0700)]
ITS#7662 cleanup reader txn in mdb_entry_get()

10 years agoITS#7733, ITS#7734
Quanah Gibson-Mount [Mon, 28 Oct 2013 16:26:23 +0000 (09:26 -0700)]
ITS#7733, ITS#7734

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Mon, 28 Oct 2013 16:24:57 +0000 (09:24 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoITS#7733 check cursor index before cursor_del
Howard Chu [Mon, 28 Oct 2013 14:25:54 +0000 (07:25 -0700)]
ITS#7733 check cursor index before cursor_del

10 years agoITS#7734 Add MDB_NORDAHEAD to CHANGELESS.
David Wilson [Mon, 28 Oct 2013 13:58:04 +0000 (06:58 -0700)]
ITS#7734 Add MDB_NORDAHEAD to CHANGELESS.

10 years agoPrep for release OPENLDAP_REL_ENG_2_4_37
Quanah Gibson-Mount [Sat, 26 Oct 2013 20:46:04 +0000 (13:46 -0700)]
Prep for release

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Thu, 24 Oct 2013 23:25:17 +0000 (16:25 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoBump to 0.9.9
Howard Chu [Thu, 24 Oct 2013 22:57:17 +0000 (15:57 -0700)]
Bump to 0.9.9

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Mon, 21 Oct 2013 18:03:27 +0000 (11:03 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoAdd mdb_env_get_fd()
Howard Chu [Mon, 21 Oct 2013 17:29:38 +0000 (10:29 -0700)]
Add mdb_env_get_fd()

Return the environment's filedescriptor. Useful when the caller
is doing their own locking.

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Fri, 18 Oct 2013 20:38:24 +0000 (13:38 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoFix 01dfb2083dd690707a062cabb03801bfad1a6859
Howard Chu [Mon, 14 Oct 2013 16:47:26 +0000 (09:47 -0700)]
Fix 01dfb2083dd690707a062cabb03801bfad1a6859

USE_POSIX_SEM must define USE_HASH

10 years agoITS#7725
Quanah Gibson-Mount [Mon, 14 Oct 2013 16:29:35 +0000 (09:29 -0700)]
ITS#7725

10 years agoITS#7725 add nordahead envflag
Howard Chu [Sat, 12 Oct 2013 23:25:33 +0000 (16:25 -0700)]
ITS#7725 add nordahead envflag

10 years agoITS#7692
Quanah Gibson-Mount [Mon, 14 Oct 2013 16:21:20 +0000 (09:21 -0700)]
ITS#7692

10 years agoITS#7692 no-op if target entry doesn't exist
Howard Chu [Sat, 12 Oct 2013 22:30:05 +0000 (15:30 -0700)]
ITS#7692 no-op if target entry doesn't exist

10 years agoITS#7699
Quanah Gibson-Mount [Mon, 14 Oct 2013 16:18:14 +0000 (09:18 -0700)]
ITS#7699

10 years agoITS#7699 fixed one dds start-up assertion failure
Ted C. Cheng [Wed, 18 Sep 2013 22:33:17 +0000 (15:33 -0700)]
ITS#7699 fixed one dds start-up assertion failure

10 years agoITS#7589
Quanah Gibson-Mount [Mon, 14 Oct 2013 16:16:31 +0000 (09:16 -0700)]
ITS#7589

10 years agoITS#7722
Quanah Gibson-Mount [Mon, 14 Oct 2013 16:14:22 +0000 (09:14 -0700)]
ITS#7722

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Mon, 14 Oct 2013 16:04:26 +0000 (09:04 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoITS#7725 add MDB_NORDAHEAD flag for env_open
Howard Chu [Sat, 12 Oct 2013 23:20:04 +0000 (16:20 -0700)]
ITS#7725 add MDB_NORDAHEAD flag for env_open

10 years agoITS#7589 silence warnings
Howard Chu [Sat, 12 Oct 2013 20:40:28 +0000 (13:40 -0700)]
ITS#7589 silence warnings

10 years agoITS#7589 Fix typo in prev commit
Howard Chu [Sat, 12 Oct 2013 20:31:09 +0000 (13:31 -0700)]
ITS#7589 Fix typo in prev commit

10 years agoITS#7589 Cleanup unneeded vars in prev patch
Howard Chu [Sat, 12 Oct 2013 20:19:33 +0000 (13:19 -0700)]
ITS#7589 Cleanup unneeded vars in prev patch

10 years agoITS#7589 avoid wasting space in mdb_page_split
Howard Chu [Sat, 12 Oct 2013 16:34:40 +0000 (09:34 -0700)]
ITS#7589 avoid wasting space in mdb_page_split

Also, check the split point on branch pages as well as leaf pages.

10 years agoAdd MDB_USE_HASH
Howard Chu [Fri, 4 Oct 2013 17:22:14 +0000 (10:22 -0700)]
Add MDB_USE_HASH

There may be other uses for it besides semaphore names.

10 years agoITS#7695
Quanah Gibson-Mount [Thu, 10 Oct 2013 18:10:09 +0000 (11:10 -0700)]
ITS#7695

10 years agoFrom: Stef Walter <stefw@redhat.com>
Quanah Gibson-Mount [Thu, 10 Oct 2013 18:07:57 +0000 (11:07 -0700)]
From: Stef Walter <stefw@redhat.com>
ITS#7695 Fix ldapsearch regression with CLDAP

Don't try to parse the result of a CLDAP bind request. Since these are
faked, no message is actually returned.

10 years agoITS#7694 more for IPv6 CLDAP, slapd fix
Howard Chu [Thu, 10 Oct 2013 17:48:08 +0000 (10:48 -0700)]
ITS#7694 more for IPv6 CLDAP, slapd fix

10 years agoITS#7694 Fix use of IPv6 with LDAP_CONNECTIONLESS
Stef Walter [Thu, 12 Sep 2013 13:49:36 +0000 (15:49 +0200)]
ITS#7694 Fix use of IPv6 with LDAP_CONNECTIONLESS

LDAP_CONNECTIONLESS code assumed that the size of an peer address
is equal to or smaller than sizeof (struct sockaddr).

Fix to use struct sockaddr_storage instead which is intended for
this purpose. Use getnameinfo() where appropriate so we don't
assume anything about the contents of struct sockaddr

10 years agoITS#7710 fix typo
Howard Chu [Thu, 10 Oct 2013 11:04:44 +0000 (04:04 -0700)]
ITS#7710 fix typo

10 years agoITS#7329, ITS#7710
Quanah Gibson-Mount [Wed, 9 Oct 2013 16:25:12 +0000 (09:25 -0700)]
ITS#7329, ITS#7710

10 years agoITS#7329 optimize index update for simple add ops
Howard Chu [Wed, 9 Oct 2013 14:55:50 +0000 (07:55 -0700)]
ITS#7329 optimize index update for simple add ops

Don't need to reindex all the attr values if there were no deletes.

10 years agoITS#7710 fix for non-replicated internal ops
Howard Chu [Wed, 9 Oct 2013 11:58:37 +0000 (04:58 -0700)]
ITS#7710 fix for non-replicated internal ops

Their completion was making slap_graduate_commit_csn() cleanup
their parent op's CSN, thus preventing that CSN from propagating
to any consumers.

10 years agoITS#7722 fix page_merge for collapsing root
Howard Chu [Wed, 9 Oct 2013 09:24:45 +0000 (02:24 -0700)]
ITS#7722 fix page_merge for collapsing root

Other cursors being fixed up are not necessarily height 1.

10 years agoITS#7720
Quanah Gibson-Mount [Tue, 8 Oct 2013 18:19:47 +0000 (11:19 -0700)]
ITS#7720

10 years agoITS#7720 don't do ptr arithmetic on void *s
Howard Chu [Tue, 8 Oct 2013 17:40:51 +0000 (10:40 -0700)]
ITS#7720 don't do ptr arithmetic on void *s

10 years agoITS#7712
Quanah Gibson-Mount [Tue, 8 Oct 2013 16:59:56 +0000 (09:59 -0700)]
ITS#7712

10 years agoITS#7712 Fix lock ordering in libldap abandon
Emily Backes [Mon, 30 Sep 2013 22:14:22 +0000 (15:14 -0700)]
ITS#7712 Fix lock ordering in libldap abandon

10 years agoITS#7715, ITS#7718
Quanah Gibson-Mount [Tue, 8 Oct 2013 16:56:01 +0000 (09:56 -0700)]
ITS#7715, ITS#7718

10 years agoFix modrdn unique check
Howard Chu [Thu, 19 Sep 2013 22:58:40 +0000 (15:58 -0700)]
Fix modrdn unique check

Just check normalized name match. Case-changes are allowed.

10 years agoMerge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
Quanah Gibson-Mount [Tue, 8 Oct 2013 16:06:35 +0000 (09:06 -0700)]
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4

10 years agoITS#7718 invalidate cursor when DB gets emptied
Howard Chu [Tue, 8 Oct 2013 11:43:58 +0000 (04:43 -0700)]
ITS#7718 invalidate cursor when DB gets emptied

10 years agoFix mdb_env_set_mapsize()
Howard Chu [Fri, 4 Oct 2013 09:55:34 +0000 (02:55 -0700)]
Fix mdb_env_set_mapsize()

Don't allow shrinking below minimum size for an already open env.

10 years agoITS#7715 always set filesize for WRITEMAP
Howard Chu [Fri, 4 Oct 2013 09:46:38 +0000 (02:46 -0700)]
ITS#7715 always set filesize for WRITEMAP

10 years agoAdd Caveat: Readers need write access. Whitespace.
Hallvard Furuseth [Thu, 3 Oct 2013 22:48:19 +0000 (00:48 +0200)]
Add Caveat: Readers need write access. Whitespace.

10 years agoMaintain MDB_cursor.mc_top
Hallvard Furuseth [Thu, 3 Oct 2013 21:59:25 +0000 (23:59 +0200)]
Maintain MDB_cursor.mc_top

10 years agomdb_cursor_sibling(): Fix error result
Hallvard Furuseth [Thu, 3 Oct 2013 21:59:25 +0000 (23:59 +0200)]
mdb_cursor_sibling(): Fix error result

10 years agomdb_node_add(): Plug page leak when MDB_PAGE_FULL.
Hallvard Furuseth [Thu, 3 Oct 2013 21:59:25 +0000 (23:59 +0200)]
mdb_node_add(): Plug page leak when MDB_PAGE_FULL.

Do not fail after mdb_page_new() succeeds.

10 years agoOptimize code holding reader mutex
Hallvard Furuseth [Thu, 3 Oct 2013 21:59:24 +0000 (23:59 +0200)]
Optimize code holding reader mutex

10 years agoSet MDB_xcursor DB_DIRTY, clear md_name.
Hallvard Furuseth [Thu, 3 Oct 2013 21:59:24 +0000 (23:59 +0200)]
Set MDB_xcursor DB_DIRTY, clear md_name.

Both were unused and md_name was unmaintained -- except
mdb_cursor_touch(xcursor) would abuse md_name as a key to
touch MAIN_DBI if it could somehow get passed ! DB_DIRTY.

10 years agoSet subDB DBI=parent DBI, fix MDB_DUPSORT delete.
Hallvard Furuseth [Thu, 3 Oct 2013 21:59:24 +0000 (23:59 +0200)]
Set subDB DBI=parent DBI, fix MDB_DUPSORT delete.

xcursor DBIs were parent DBI+1 for debugging. Instead output
-(parent DBI).  Fixes a crash in mdb_cursor_del0()'s xcursor
tracking, it forgot to subtract 1 for C_SUB cursors.

10 years agos/MDB_NORDLOCK/MDB_NOLOCK/
Howard Chu [Thu, 3 Oct 2013 17:26:44 +0000 (10:26 -0700)]
s/MDB_NORDLOCK/MDB_NOLOCK/

Leave all lock management to the caller.

10 years agoMore doc for MDB_NORDLOCK
Howard Chu [Wed, 2 Oct 2013 06:36:57 +0000 (23:36 -0700)]
More doc for MDB_NORDLOCK

10 years agoAdd MDB_NORDLOCK to omit all reader table usage
Howard Chu [Tue, 1 Oct 2013 20:16:38 +0000 (13:16 -0700)]
Add MDB_NORDLOCK to omit all reader table usage

Calling app wants to manage its own locking.

10 years agoDrop unneeded code.
Hallvard Furuseth [Mon, 23 Sep 2013 18:21:11 +0000 (20:21 +0200)]
Drop unneeded code.

MDB_txn.mt_toggle: Use (mt_txnid & 1) instead.
Drop error checks which will be repeated.
mdb_cursor_set(): Turn assert into if/return to match the above.
mdb_cursor_del(): 'flags' are now used as bitflags.

10 years agoClean up and simplify mdb_page_search().
Hallvard Furuseth [Mon, 23 Sep 2013 18:21:11 +0000 (20:21 +0200)]
Clean up and simplify mdb_page_search().

Only named DBs can have DB_STALE, and they do not use MDB_PS_MODIFY.
Replace magic key values with flags.  Drop duplicated comments at
mdb_page_search_root() vs. mdb_page_search(), and rephrase.