Commit graph

3900 commits

Author SHA1 Message Date
Howard Chu
2565e974b9 ITS#7477 check for invalid LDIF 2012-12-19 09:15:09 -08:00
Howard Chu
9ed5ca4f7a Merge remote-tracking branch 'origin/mdb.master' 2012-12-11 22:22:52 -08:00
Howard Chu
82b97a8af0 init_meta should write mapsize
Was leaving it 0 initially.
2012-12-11 22:21:52 -08:00
Howard Chu
1c1b5ca0c4 Merge remote-tracking branch 'origin/mdb.master' 2012-12-11 16:01:27 -08:00
Howard Chu
0702fbd688 Update version date 2012-12-11 16:01:25 -08:00
Howard Chu
bae86317e0 Merge remote-tracking branch 'origin/mdb.master' 2012-12-11 14:22:31 -08:00
Howard Chu
9acf801cc1 Make sure init_meta is at beginning of file 2012-12-11 12:55:47 -08:00
Howard Chu
ed86a086f7 More for prev commit
Use the latest meta page
2012-12-11 12:46:17 -08:00
Howard Chu
e74d70e88e Partially revert 65d40eb5d2
Allow both increasing and decreasing the environment size.
But don't allow decreasing below the currently occupied space.
2012-12-11 12:03:19 -08:00
Howard Chu
470b126e9f Merge remote-tracking branch 'origin/mdb.master' 2012-12-10 17:22:26 -08:00
Howard Chu
282be11654 FIx prev commit 2012-12-10 17:21:24 -08:00
Howard Chu
3bf87500a3 Merge remote-tracking branch 'origin/mdb.master' 2012-12-10 12:22:30 -08:00
Howard Chu
0ce6bb4be0 Add error checks to txn_commit
These ops could fail if the map is full.
2012-12-10 12:21:36 -08:00
Howard Chu
aff2693fc0 ITS#7455 simplify
Don't try to reclaim overflow pages while operating on
the freelist (for now). The circular dependencies are much like
the single-page case, but worse. Maybe look into this in the
future, but it's not absolutely necessary now.
2012-12-10 12:16:50 -08:00
Howard Chu
e26fc73417 ITS#7467 add verbose freelist info 2012-12-07 13:19:36 -08:00
Howard Chu
6a9476822d Merge remote-tracking branch 'origin/mdb.master' 2012-12-07 12:28:25 -08:00
Howard Chu
784757faa9 ITS#7465 fail if both -a and -s specified 2012-12-07 12:06:30 -08:00
Howard Chu
6062cd9777 Merge remote-tracking branch 'origin/mdb.master' 2012-12-06 17:41:14 -08:00
Howard Chu
9a5d4370be Yet more retries for overflow page scan 2012-12-06 17:39:49 -08:00
Howard Chu
8ab758c9cc Merge remote-tracking branch 'origin/mdb.master' 2012-12-06 17:11:29 -08:00
Howard Chu
5863d5cc61 Freelist fixes
Keep list sorted if it grows during a write. Don't free pghead until
we're sure our writes are all finished.
2012-12-06 09:05:30 -08:00
Howard Chu
a037e27fc0 Merge remote branch 'origin/mdb.master' 2012-12-04 06:39:01 -08:00
Howard Chu
7b10fdde00 Fix mdb_env_copy
Just write in 2^31 sized chunks
2012-12-04 06:30:22 -08:00
Howard Chu
bbfe587246 Add support for 64 bit index hashing 2012-12-03 18:14:28 -08:00
Howard Chu
f9d41ba98a Merge remote-tracking branch 'origin/mdb.master' 2012-12-03 16:54:33 -08:00
Howard Chu
04b7c42109 Rename mdb_open/close mdb_dbi_open/close
Avoid possible symbol clashes with MDB-Tools libmdb
2012-12-03 16:53:24 -08:00
Howard Chu
e545b742e5 Fix 5c1ee7f7ba
mdb_cursor_sibling() no longer pops cursor before returning.
2012-12-03 13:57:46 -08:00
Howard Chu
5af47adf6b Fix mdb_midl_shrink 2012-12-03 13:57:28 -08:00
Howard Chu
ef3b4213ff Merge remote-tracking branch 'origin/mdb.master' 2012-11-30 12:56:58 -08:00
Howard Chu
d3f51fdcf7 More retries for overflow page scan 2012-11-30 12:54:19 -08:00
Howard Chu
1509d75363 Merge remote-tracking branch 'origin/mdb.master' 2012-11-30 12:47:00 -08:00
Howard Chu
98fe339089 Rename libmdb to liblmdb 2012-11-30 12:45:34 -08:00
Howard Chu
2a94ebced6 Add install target 2012-11-30 12:39:53 -08:00
Howard Chu
d0e86d485d Merge remote-tracking branch 'origin/mdb.master' 2012-11-30 12:33:18 -08:00
Howard Chu
13f3bcd59c Rename libmdb to liblmdb, lmdb.h
Avoid naming conflicts with other mdb* packages. Bump version to 0.9.5
2012-11-30 12:30:51 -08:00
Howard Chu
f165507199 ITS#7455 use freelist for overflow pages 2012-11-30 12:18:27 -08:00
Howard Chu
185136397d Drop unneeded #include <time.h> 2012-11-28 15:34:44 -08:00
Howard Chu
049b145ec7 Doc layout tweaks 2012-11-28 15:34:19 -08:00
Hallvard Furuseth
97ed96206d mdb_env_sync(,force=1): Override MDB_MAPASYNC.
With MDB_MAPASYNC, the API provided no way to ensure full sync.
2012-11-28 00:59:00 +01:00
Hallvard Furuseth
b9275c9991 mdb_cursor_dbi(): Assume valid args.
It returned 0, which is the freelist DBI and is valid for a few uses.
2012-11-28 00:59:00 +01:00
Hallvard Furuseth
7e620a34a2 API change: mdb_drop() only accepts del=0 or 1.
This allows for other flag values in the future.
2012-11-28 00:59:00 +01:00
Hallvard Furuseth
d903bed218 API change: mdb_env_set_maxdbs(, *named* DBs).
Let the user specify the number of databases he will actually
use. Adding 2 for FREE_DBI and MAIN_DBI is an internal matter.
2012-11-28 00:59:00 +01:00
Hallvard Furuseth
6b56e0fab1 ITS#7453 Fix reset of MDB_NOSYNC/MDB_NOMETASYNC.
mdb_env_open() with these flags did not open a synchronizing
file descriptor.  Thus disabling them later did not work.
2012-11-28 00:59:00 +01:00
Hallvard Furuseth
0201b9002c Tweak MDB_FIXEDMAP handling.
Drop mmap()'s MAP_FIXED flag, so it returns another address instead
of unmapping existing overlapping pages. Verify the returned address.
2012-11-28 00:59:00 +01:00
Hallvard Furuseth
52e3adbdec Renumber MDB_NOSUBDIR. Check mdb_env_open() flags.
MDB_NOSUBDIR was == MDB_REVERSEKEY. That affected the freelist:
Env flags are stored in mm_flags alias mm_dbs[FREE_DBI].md_flags.

It stays a persistent flag, in case mdb_env_open someday wants
to pick/verify which lockfile to use with the datafile.

Catch bad flags so they will no longer make it into the data file.
2012-11-28 00:59:00 +01:00
Ralf Haferkamp
c728ebf586 ITS#7428 Use non-blocking IO during SSL Handshake
If a timeout is set, perform the SSL Handshake using non-blocking IO.  This way
we can timeout if SSL Handshake gets stuck for whatever reason.

This code is currently hidden behind #ifdefs (LDAP_USE_NON_BLOCKING_TLS) and
disabled by default as there seem to be some problems using NON-blocking
I/O during the TLS Handshake when linking against NSS (either a bug in NSS
itself of in tls_m.c, see discussion on -devel)

This patch adds an additional parameter to ldap_int_poll() in order to indicate
if we're waiting in order to perform a read or write operation.
2012-11-21 14:25:18 +01:00
Howard Chu
88fd28886d Merge remote-tracking branch 'origin/mdb.master' 2012-11-05 09:47:03 -08:00
Howard Chu
bb36bdcd1c ITS#7432 fix typo in mdb_midl_sort
Wasn't pushing the optimal half of the array onto the stack,
thus used more stack than expected -> overrun.
2012-11-05 05:06:06 -08:00
Howard Chu
64b164b4fc Merge remote-tracking branch 'origin/mdb.master' 2012-10-30 16:34:14 -07:00
Howard Chu
0108327c27 Better fix for MDB_DEBUG tweak -- from hbf 2012-10-25 07:03:25 -07:00
Howard Chu
b68aa3f86b Revert "MDB_DEBUG tweak for old compilers"
This reverts commit ef2092eac9.
2012-10-25 06:54:09 -07:00
Howard Chu
ef2092eac9 MDB_DEBUG tweak for old compilers 2012-10-25 05:28:55 -07:00
Howard Chu
52a0b4f83c Merge remote-tracking branch 'origin/mdb.master' 2012-10-23 04:49:09 -07:00
Howard Chu
c2f15990c7 Fix flag checks in mdb_open 2012-10-23 04:48:04 -07:00
Howard Chu
f5b8d017df fix Windows mdb_env_copy(), WriteFile overflow 2012-10-23 04:32:55 -07:00
Howard Chu
f51efd4b03 Merge remote-tracking branch 'origin/mdb.master' 2012-10-22 17:05:26 -07:00
Howard Chu
66f2b7b2ec Make sure mdb_open flags are committed on main DB
If no data was modified in the txn, mdb_open flag changes were dropped.
2012-10-22 17:03:15 -07:00
Howard Chu
5f2ddb5532 Minor cleanup 2012-10-22 16:13:42 -07:00
Howard Chu
5c1ee7f7ba Fix MDB_PREV
Could return 1 garbage record before actual data, if starting from EOF
2012-10-22 16:02:30 -07:00
Howard Chu
617769bce5 Tweak output, add free page info 2012-10-16 17:01:16 -07:00
Howard Chu
754cd88819 Add mdb_env_info() to retrieve interesting env params 2012-10-16 16:22:21 -07:00
Howard Chu
7f0771a3ed Merge mdb_stata into mdb_stat 2012-10-16 15:37:29 -07:00
Howard Chu
65d40eb5d2 Make sure increases of mapsize are persisted 2012-10-16 14:53:25 -07:00
Hallvard Furuseth
94965307c8 ITS#7377 Errorcheck Windows calls and thread keys. 2012-10-15 17:04:48 +02:00
Hallvard Furuseth
88b7bb4639 Explicitly unlock the MDB lockfile on Windows. 2012-10-15 17:04:43 +02:00
Hallvard Furuseth
e9d87866c4 mdb_env_open(): Keep mdb_env_set_flags() flags. 2012-10-15 17:04:11 +02:00
Hallvard Furuseth
092f9a5c66 More for mdb_env_copy().
Fix #define _GNU_SOURCE = 1 to match any command line -D_GNU_SOURCE.
.gitignore += mdb_copy.
2012-10-15 17:03:46 +02:00
Hallvard Furuseth
462d9dfd10 Fix last commit.
Add flag MDB_ENV_ACTIVE instead of using the state of me_lfd.
Require MDB_RDONLY for MDB_ROFS.  Swap reader/writer mutex lock.
2012-10-15 17:03:33 +02:00
Howard Chu
e40713b631 Support read access on read-only media 2012-10-13 04:05:00 -07:00
Howard Chu
f037dd2d19 Silence warning in prev commit 2012-10-11 16:47:56 -07:00
Howard Chu
ebb6859ea5 Add mdb_copy for backing up a DB environment 2012-10-11 12:24:01 -07:00
Hallvard Furuseth
756ce8e10c Tweak MDB restrictions 2012-10-03 21:13:21 +02:00
Hallvard Furuseth
a3f33dd20e Fix mdb_open() off-by-one error in maxdbs check 2012-10-03 18:08:56 +02:00
Hallvard Furuseth
38fb8e6eb1 ITS#7377 Wrap fcntl F_SETLK in EINTR loop too.
This can happen even on local filesystems.
2012-10-03 18:06:29 +02:00
Hallvard Furuseth
ab3fea51dc ITS#7377 Catch ftruncate() error 2012-10-03 18:06:29 +02:00
Hallvard Furuseth
2b960613e0 ITS#7377 Document caveats/troubeshooting. 2012-10-03 18:04:07 +02:00
Howard Chu
0fc0ccdc0c Merge remote-tracking branch 'origin/mdb.master' 2012-09-30 10:03:21 -07:00
Howard Chu
7333b6bdc9 Fix prev commit
It only worked if the freelist was already non-empty
2012-09-30 10:01:57 -07:00
Howard Chu
b0ad9e76c7 Merge remote-tracking branch 'origin/mdb.master' 2012-09-30 07:50:56 -07:00
Howard Chu
cd228b4722 Fix mdb_drop
if it was the only operation in a txn, it would be ignored.
2012-09-30 07:49:30 -07:00
Howard Chu
a1c2dc66db Merge remote-tracking branch 'origin/mdb.master' 2012-09-27 05:07:24 -07:00
Howard Chu
0c4c6fe72a ITS#7385, check further for bad splits
More for 48ef27b6f5
Our definition of "large" data item needs to be smaller to
handle more cases where a bad split is possible
2012-09-27 05:06:23 -07:00
Howard Chu
2a68553ec1 Merge remote-tracking branch 'origin/mdb.master' 2012-09-19 06:16:36 -07:00
Howard Chu
ba6c3281a1 Add MDB_GET_CURRENT
return whatever the cursor is currently pointing at
2012-09-19 06:15:09 -07:00
Howard Chu
c264d70fbe Merge remote-tracking branch 'origin/mdb.master' 2012-09-18 12:37:59 -07:00
Howard Chu
d13ca0de4f ITS#7394 ignore WRITEMAP if RDONLY 2012-09-18 12:36:54 -07:00
Howard Chu
b8e48e95fb Merge remote-tracking branch 'origin/mdb.master' 2012-09-17 08:21:20 -07:00
Howard Chu
0a359fb629 More for 48ef27b6f5
page_split with newindex > split_indx
2012-09-17 07:02:41 -07:00
Howard Chu
5ef56b437e More for ab04c50a32
Use explicit MDB_RDONLY flag
2012-09-17 07:01:28 -07:00
Hallvard Furuseth
c67ea9c060 ITS#7377 Catch MDB user errors. 2012-09-17 15:42:15 +02:00
Hallvard Furuseth
c0f3d9b9a8 ITS#7377 Catch MDB setup errors and clean up. 2012-09-17 15:42:15 +02:00
Hallvard Furuseth
fe1b3794de ITS#7364 Limit mdb lock upgrade before sem_unlink.
Do not try shared lock when closing or after error.  Track file lock
state to decide.  Change meaning of *excl to reflect file lock state.
2012-09-17 15:42:15 +02:00
Hallvard Furuseth
c760e536ec ITS#7364 Always sem_unlink() in mdb_env_open().
Drop the sem_unlink() error checks, which could prevent the 2nd
unlink.  Instead use O_EXCL in sem_open().

This makes "open+close the database" the API for trying to clean
away the old semaphores, if they were left behind by a previous run.
2012-09-17 15:42:15 +02:00
Hallvard Furuseth
31be24896b ITS#7377 Wrap sem_wait & file locks in EINTR loops 2012-09-17 15:42:14 +02:00
Hallvard Furuseth
a35f9b2a53 Remove mdb data races. Use (txnid_t)-1 as "no ID".
Avoid race between numreaders++ and reading numreaders at cleanup. Make
the un-mutexed reset of reader table entry, atomic: Reset mr_pid only.

Instead check mr_pid != 0 in mdb_page_alloc()'s scan for readers.
(txnid_t)-1 as "no ID"-mark avoids a check for mr_txnid != 0.
The scan can stop when seeing an old reader.
2012-09-17 15:42:14 +02:00
Hallvard Furuseth
38cc1e96b4 Save pid in MDB_env instead of repeating getpid().
An open MDB environment does not survive or catch fork(),
so repeating getpid() was pointless.
2012-09-17 15:42:14 +02:00
Hallvard Furuseth
20a216fcc9 MDB_WRITEMAP needs no DSYNC descriptor (me_mfd) 2012-09-17 15:42:14 +02:00
Hallvard Furuseth
588a84a5ae ITS#7363 Preprocessor namespace cleanup.
Rename USE_POSIX_SEM to MDB_USE_POSIX_SEM.
Separate MDB_FDATASYNC from MDB_USE_POSIX_SEM.
2012-09-17 15:42:14 +02:00
Howard Chu
8bb10add24 More for ab04c50a32
Fix typos, error code ranges
2012-09-17 06:35:03 -07:00
Howard Chu
acbff5b1ea Add mdb_cursor_renew()
Allow cursors on read-only txns to be reused with later txns.
2012-09-17 04:41:13 -07:00
Howard Chu
076b2b36a9 Shared lib should depend on pthread 2012-09-17 03:48:54 -07:00
Howard Chu
c542442c9f Add MDB_SET_KEY cursor op
Overwrites the passed in key with the DB's key
2012-09-17 02:17:25 -07:00
Howard Chu
ad79308d5a Merge remote-tracking branch 'origin/mdb.master' 2012-09-14 06:52:37 -07:00
Howard Chu
ab04c50a32 ITS#7383 More explicit error codes 2012-09-14 06:51:31 -07:00
Howard Chu
c2bd7e630d Merge remote-tracking branch 'origin/mdb.master' 2012-09-12 10:47:36 -07:00
Howard Chu
48ef27b6f5 ITS#7385 fix mdb_page_split (again)
More for d793594173 ITS#7229
2012-09-12 10:45:51 -07:00
Howard Chu
c56ede7781 Merge remote-tracking branch 'origin/mdb.master' 2012-09-07 13:42:52 -07:00
Howard Chu
de77882898 Update comments, bump version
Note read-write vs read-only mmap tradeoffs.
2012-09-07 13:40:07 -07:00
Howard Chu
2e677bcb99 msync should default to fully synchronous 2012-09-06 11:17:25 -07:00
Howard Chu
1c733bdc4e Add msync support for WRITEMAP option 2012-09-05 08:40:17 -07:00
Howard Chu
d8a89464cd Add MDB_WRITEMAP to use a writable mmap 2012-09-05 08:39:46 -07:00
Howard Chu
14a08f877f More for 57b5fbea49
Fix abort of child txn
2012-09-04 06:02:26 -07:00
Hallvard Furuseth
4608cd9552 libmdb: Fix P_INVALID when pgno_t != unsigned long 2012-08-29 06:43:35 +02:00
Hallvard Furuseth
3e3c785034 libmdb: Check sem_open() against SEM_FAILED. 2012-08-29 06:42:52 +02:00
Howard Chu
d7dd1bdb82 Merge remote-tracking branch 'origin/mdb.master' 2012-08-27 14:45:58 -07:00
Howard Chu
4bc18a5dd3 In mdb_audit, change assert to fprintf 2012-08-27 14:45:16 -07:00
Howard Chu
85ae5011e7 Fix mdb_audit()
due to a0993354a6
2012-08-26 11:05:45 -07:00
Howard Chu
f980c64cb6 Merge remote-tracking branch 'origin/mdb.master' 2012-08-24 05:34:29 -07:00
Ondrej Kuznik
bd92b570a8 ITS#7369 mdb_stat: cleanup in case something went wrong. 2012-08-24 05:33:46 -07:00
Howard Chu
a2d1b42e39 ITS#7369 abort txn before exiting 2012-08-24 05:23:55 -07:00
Howard Chu
67dd10ed2c Merge remote-tracking branch 'origin/mdb.master' 2012-08-22 23:02:48 -07:00
Howard Chu
916995236e ITS#7364 also close the mutexes as needed
Otherwise a process that opens and closes an env more than once
will leak mutex handles. (WIN32/BSD)
2012-08-22 23:01:19 -07:00
Chris Mikkelson
46cf442700 ITS#7364 Remove POSIX semaphores when the last user closes the mdb environment. 2012-08-22 22:55:01 -07:00
Rich Megginson
a0e48e7246 ITS#7360 accept nss certname in the form of tokenname:certnickname
There are cases where the user may want to force the use of a particular
PKCS11 device to use for a given certificate.  Allow the user to do this
with MozNSS by specifying the cert as "tokenname:certnickname" where
token name is the name of a token/slot in a PKCS11 device and certnickname
is the nickname of a certificate on that device.
2012-08-22 14:21:23 -07:00
Howard Chu
1ebf95c31b ITS#7359 cleanup for loop 2012-08-22 14:13:10 -07:00
Jan Vcelak
6833b8717a ITS#7359 MozNSS: fix whitespaces in all my changes
To be compliant with OpenLDAP coding standards.
2012-08-22 14:12:01 -07:00
Howard Chu
d377f353b7 Merge remote-tracking branch 'origin/mdb.master' 2012-08-22 14:09:56 -07:00
Chris Mikkelson
9f983b7999 ITS#7363 Use posix semaphores on apple and bsd systems. 2012-08-22 14:09:08 -07:00
Jan Vcelak
46dc6c424b ITS#7359 MozNSS: prefer unlocked slot when getting private key 2012-08-21 13:32:34 -07:00
Howard Chu
68c3cf9795 ITS#7358 fix ITS#7270 patch
commit 8bb9e88d5f breaks Visual C
(as well as our own coding rules)
2012-08-21 13:22:19 -07:00
Howard Chu
a787eb641f Merge commit 'd53644f6' 2012-08-21 12:18:10 -07:00
Howard Chu
f114fec545 Loop thru all DBs and show their stats
This is quick and dirty, should be integrated into mdb_stat.
2012-08-16 10:25:40 -07:00
Howard Chu
d53644f682 Minor cleanup 2012-08-02 16:03:10 -07:00
Howard Chu
d1120fbccc Write optimization: avoid copying unused portions of pages. 2012-07-31 16:03:48 -07:00
Jan Vcelak
f425a07d02 ITS#7331 MozNSS: ignore untrusted issuer error when verifying server cert
Untrusted issuer error can appear with self-signed PEM certificates.
2012-07-26 10:16:39 -07:00
Howard Chu
8fe328dd51 Merge remote-tracking branch 'origin/mdb.master' 2012-07-26 08:43:57 -07:00
Howard Chu
234cd9dfb5 Fix txn_commit error check 2012-07-26 08:42:41 -07:00
Howard Chu
0e3fa1ee14 Merge remote-tracking branch 'origin/mdb.master' 2012-07-26 07:25:07 -07:00
Howard Chu
23219ed32a Fix 205bb17793
Ignore current cursor pos if it's out of bounds.
2012-07-26 07:22:52 -07:00
Howard Chu
d1a7fa267b Update sub-DBs before updating free list 2012-07-26 06:25:31 -07:00
Howard Chu
4317c7ce54 Merge remote-tracking branch 'origin/mdb.master' 2012-07-25 12:32:28 -07:00
Howard Chu
d3990eb2f8 Append mode should also detect keys that are too small 2012-07-25 12:31:08 -07:00
Howard Chu
cf74dfbb2d Merge remote-tracking branch 'origin/mdb.master' 2012-07-24 10:18:40 -07:00
Howard Chu
5da67968af Fix root split check in mdb_page_split 2012-07-24 08:50:42 -07:00
Mat Booth
e6d190c7de ITS#7332 Changes required to build with Microsoft Visual Studio 2012-07-23 08:29:39 -07:00
Howard Chu
205bb17793 Skip unneeded calls to mdb_page_get in mdb_page_search 2012-07-23 04:23:49 -07:00
Howard Chu
832f7de6ae Merge remote-tracking branch 'origin/mdb.master' 2012-07-22 17:58:39 -07:00
Howard Chu
ccc4d23e74 Leave extra space when creating a fake page
Minimizes the number of memcpy's if additional dups are stored.
2012-07-22 17:45:50 -07:00
Howard Chu
05ec98d119 Append mode still needs to detect duplicates 2012-07-22 17:45:50 -07:00
Emily Backes
c453a236fc Update name information 2012-07-22 07:08:35 -07:00
Howard Chu
2b1b64f021 Merge remote-tracking branch 'origin/mdb.master' 2012-07-21 06:21:36 -07:00
Howard Chu
14fb1f59c7 Append tweaks, page_split fixes
Append mode now does no key comparisons, input must be in sorted order.
page_split was not updating cursor parents correctly.
2012-07-21 06:19:09 -07:00
Howard Chu
accd19edbc Merge remote-tracking branch 'origin/mdb.master' 2012-07-18 14:19:19 -07:00
Howard Chu
7e9a6134fd Make sure cursor's DB is init'd if STALE. 2012-07-17 04:04:52 -07:00
Howard Chu
a0993354a6 Don't use env-private copy of DB root nodes.
Just lookup the DB roots as needed. When many DBs are in use,
most of the copies won't be referenced in a given txn, and
there's a bad race condition in the copy routine.
2012-07-13 15:48:26 -07:00
Howard Chu
0ea56294f1 Fix darwin sem_open() names
Must begin with '/'
2012-07-13 14:14:36 -07:00
Howard Chu
1a9775dc5a Fix ID -> MDB_ID due to 20baad4a20 2012-07-13 14:14:36 -07:00
Howard Chu
248fd1c7b8 Windows thread callback support 2012-07-13 14:14:36 -07:00
Howard Chu
43d47c46a7 ITS#6262 fix gettime() regression
Add a mutex in ldap_pvt_gettime(), delete the mutex comment
since it's no longer relevant (and was ignored anyway). This
could only ever affect multi-processor machines.
2012-07-11 16:53:33 -07:00
Howard Chu
113538806f Merge remote-tracking branch 'origin/mdb.master' 2012-07-09 08:44:12 -07:00
Howard Chu
e562f53e10 Drop me_toggle, unused 2012-07-08 18:43:45 -07:00
Howard Chu
179c44e7da Revert "libmdb: Do not use the MDB_txbody.mtb_txnid field."
This reverts commit 4a0b30499c.
2012-07-08 18:18:12 -07:00
Howard Chu
c6b5abbfd2 Merge remote-tracking branch 'origin/mdb.master' 2012-07-06 18:03:06 -07:00
Howard Chu
433105f09b Fix: avoid direct reference to meta pages
Relevant info should be copied during txn_begin only.
2012-07-06 17:38:03 -07:00
Howard Chu
df7ddb6bf4 Add MDB_NOMETASYNC env option.
Just a trial. This may not make sense if we decide to split the
meta pages into their own separate file, to allow meta traffic to
reside on a separate spindle.
2012-07-05 18:11:18 -07:00
Howard Chu
38560c2517 Tweak b802bcf704
Clarify prev commit, fix Doxygen comments broken by earlier changes
2012-07-05 17:43:29 -07:00
Howard Chu
b802bcf704 Partial revert of 13c663f666
Don't re-use free pages so soon; that leaves us vulnerable to
DB corruption if data syncs successfully but meta doesn't.
2012-07-05 16:52:13 -07:00
Jan Vcelak
2db5195650 ITS#7316 MozNSS: do not retry when reading the pin from file
Avoid infinite loop if the pin in the password file is wrong.
2012-06-26 06:47:48 -07:00
Jan Vcelak
a171237999 ITS#7315 MozNSS: do not authenticate to a slot manually
We cannot rely on tc_certificate->slot value, the library will choose
the correct slot itself when needed. Just provide correct pin argument.
2012-06-26 06:46:29 -07:00
Jan Vcelak
3531c344e1 ITS#7314 MozNSS: lock whole init and clenaup process 2012-06-26 06:44:46 -07:00
Jan Vcelak
d07779e97b ITS#7313 MozNSS: store certificate object instead of nickname in in ctx
PEM certificates should not be referenced by nicknames, because the
nicknames are derived from basename of the cerificate file and in
general are not easy-predictable.

The code of Mozilla NSS backend depends on some aspects of PEM module
and tries to guess the nicknames correctly. In some cases the guessing
is wrong.
2012-06-26 06:43:11 -07:00
Jan Vcelak
87132b820d ITS#7312 MozNSS: context specific token description for certdb 2012-06-26 06:41:05 -07:00
Jan Vcelak
221531b31a ITS#7241 unbind: free socket prior to destroying TLS context 2012-06-25 12:53:29 -07:00
Howard Chu
450d224291 ITS#7293 make ldapava_free static 2012-06-23 05:41:39 -07:00
Howard Chu
e2b5aaf5dd ITS#7290 fix ldap_int_initialize() to set debug level 2012-06-07 05:15:04 -07:00
Jan Vcelak
00d0e16272 ITS#7291 MozNSS: read pin from file file can cause infinite loop
The buffer allocated for reading password file has to be initialized
with zeros, or we need to append zero at the end of the file. Otherwise
we might read unitialized memory and consider it to be a password.
2012-06-07 05:05:08 -07:00
Tim Strobell (Contractor)
4b6bd2c600 ITS#7289 MozNSS: cipher suite selection by name may be ignored 2012-06-07 05:03:15 -07:00
Jan Vcelak
dc3842fca3 ITS#7287 MozNSS: do not overwrite error in tlsm_verify_cert 2012-06-05 03:43:24 -07:00
Tim Strobell (Contractor)
2c2bb2e7ae ITS#7285 Mozilla NSS: default cipher suite always selected 2012-06-05 03:43:15 -07:00
Quanah Gibson-Mount
3f46f2e0bc Merge remote branch 'origin/mdb.master' 2012-06-04 19:41:58 -07:00
Howard Chu
a334257800 Tweak prev commit, use first unused slot 2012-06-02 05:26:31 -07:00
Howard Chu
4cabb24b83 Fix mdb_open, re-use closed dbi slots 2012-06-02 05:24:47 -07:00
Jan Vcelak
df1d118de8 ITS#7276 MozNSS: allow CA certdb together with PEM CA bundle file
Prior to this patch, if TLS_CACERTDIR was set to Mozilla NSS certificate
database and TLS_CACERT was set to a PEM bundle file with CA
certificates, the PEM file content was not loaded.

With this patch and the same settings, OpenLDAP can verify certificates
which are signed by CAs stored both in certdb and PEM bundle file.
2012-05-30 06:18:50 -07:00
Frederik Deweerdt
8bb9e88d5f ITS#7270 Protect accesses to ldap_int_hostname with a mutex.
Not protecting the accesses to ldap_int_hostname could lead to a double
free.
2012-05-30 05:49:53 -07:00
Howard Chu
22bf5188a9 Merge remote-tracking branch 'origin/mdb.master' 2012-05-09 12:13:05 -07:00
Howard Chu
eeec509150 ITS#7266 fix rebalance for LEAF2 pages 2012-05-09 11:24:25 -07:00
Howard Chu
ff1839ebe6 Merge remote-tracking branch 'origin/mdb.master' 2012-05-08 22:19:05 -07:00
Howard Chu
a540597dd6 More freelist tweaks, avoid referencing freed page 2012-05-08 22:17:17 -07:00
Howard Chu
326d07d8c6 Merge remote-tracking branch 'origin/mdb.master' 2012-05-05 19:42:30 -07:00
Howard Chu
fadf75a9cb Further clarification of mdb_open() 2012-05-05 19:41:45 -07:00
Howard Chu
4d0d12db27 Merge remote-tracking branch 'origin/mdb.master' 2012-04-18 16:05:16 -07:00
Howard Chu
fbf9c23304 ITS#7251 fix Apple/Windows shared mutex naming 2012-04-18 15:59:54 -07:00
Hallvard Furuseth
20baad4a20 libmdb: midl.h namespace cleanup.
Prefix ID, NOID, ID2, IDL, ID2L with 'MDB_'.
Also drop bdb from file description.
2012-04-12 08:24:36 +02:00
Hallvard Furuseth
0a4aa88927 libmdb: Simplify pick_meta() from read_meta().
Put one call in #if MDB_DEBUG. Move DPRINTF(Using meta page #) there.
2012-04-12 08:15:33 +02:00
Hallvard Furuseth
dce5bb2fee libmdb: Simplify mdb_default_cmp. No real change. 2012-04-12 08:15:33 +02:00
Hallvard Furuseth
729a8a2819 libmdb: signed meets unsigned warning cleanup 2012-04-12 08:15:33 +02:00
Hallvard Furuseth
99fa22c164 libmdb: MDB_FDATASYNC code cleanup.
Define MDB_FDATASYNC() instead of redefining fdatasync().
2012-04-12 08:15:33 +02:00
Hallvard Furuseth
592b3f8727 libmdb: Add C++ 'extern "C" {}' to *.h 2012-04-12 08:15:33 +02:00
Hallvard Furuseth
8e1ebbb4a8 libmdb: Don't open datafile twice when not needed.
If the database is opened with MDB_RDONLY or MDB_NOSYNC,
instead use the same file descriptor for me_mfd and me_fd.

Also factor out Windows/Unix error handling after open.
2012-04-12 08:15:33 +02:00
Hallvard Furuseth
6d0b424dbe libmdb: Set close-on-exec flag on lockfile 2012-04-12 08:15:33 +02:00
Hallvard Furuseth
4a0b30499c libmdb: Do not use the MDB_txbody.mtb_txnid field.
Get txn->mt_txnid from the meta page instead.  Otherwise it
and txn->mt_toggle could become inconsistent, since read-only
txns fetched both from MDB_txbody without mutex proteciton.
2012-04-12 08:15:33 +02:00
Hallvard Furuseth
d1738c3e6b Fix MDB_DEBUG in last ITS#7299 commit.
Make DPRINTF usable in if-else.  Silence signed vs unsigned warning.
2012-04-12 07:34:13 +02:00
Howard Chu
d806b970b1 Merge remote branch 'origin/mdb.master' 2012-04-10 15:42:43 -07:00
Howard Chu
d793594173 ITS#7229 more mdb_page_split tweaks
Also add mdb_debug/mdb_debug_start to toggle debug output at runtime
2012-04-10 14:05:05 -07:00
Howard Chu
a66f9e9292 ITS#7210 fix check for freelist changes
Was being fooled before because the newly malloc'd block had
the same address as the previously freed block.
2012-04-09 19:24:47 -07:00
Howard Chu
321b0fa93e Merge remote branch 'origin/mdb.master' 2012-04-09 05:19:41 -07:00
Howard Chu
191d78948b ITS#7238 doc clarification 2012-04-09 05:01:37 -07:00
Howard Chu
ae027b5214 ITS#7229 additional tweaks
Should probably compare nsize to pg_size/4 instead...
2012-04-09 04:45:32 -07:00
Howard Chu
de0cb27d70 ITS#7230 check and strip 0 length IDLs from freelist 2012-04-09 04:44:08 -07:00
Howard Chu
d2da9c1a7d Merge remote branch 'origin/mdb.master' 2012-04-07 04:59:30 -07:00
Howard Chu
7ba25c488a ITS#7229 more mdb_page_split fixes 2012-04-07 01:27:38 -07:00
Howard Chu
04c44f016c Merge remote branch 'origin/mdb.master' 2012-04-04 05:52:45 -07:00
Howard Chu
84acc0e803 ITS#7219 fixup keysize in previous commit 2012-04-04 05:44:53 -07:00
Howard Chu
fc1396fa2e Merge remote branch 'origin/mdb.master' 2012-04-04 01:39:27 -07:00
Howard Chu
0f10814494 ITS#7219 fix for odd-aligned keys in mdb_update_key() 2012-04-03 12:24:27 -07:00
Howard Chu
487d3966ee Merge remote branch 'origin/mdb.master' 2012-03-30 06:37:12 -07:00
Howard Chu
91bab157f6 ITS#7210 fix leak of overflow pages in freelist 2012-03-30 06:36:02 -07:00
Howard Chu
7ff8baf1d3 Merge remote branch 'origin/mdb.master' 2012-03-28 10:45:06 -07:00
Howard Chu
f53beeabee Partial revert of prev commit
Sub-DBs were correct before
2012-03-28 10:44:18 -07:00
Howard Chu
55060f6b1f Merge remote branch 'origin/mdb.master' 2012-03-28 10:35:56 -07:00
Howard Chu
ac0b18911b Fix entry counts in cursor_put
when replacing an existing item
2012-03-28 10:34:35 -07:00
Howard Chu
b8bbe985b8 Merge remote branch 'origin/mdb.master' 2012-03-28 09:34:13 -07:00
Howard Chu
0952cfdf84 Fix uninit'd xcursor index 2012-03-28 09:33:06 -07:00
Howard Chu
5c16c8842b Add mfree utility to show the freelist 2012-03-28 09:20:18 -07:00
Howard Chu
04f488e7a0 ITS#7210 additional freelist fixes
Also allow read access to freelist in mdb_cursor_open
2012-03-28 09:18:00 -07:00
Howard Chu
b92af0760b ITS#7210 partial fix
Allow pages from free list to be used when growing the free list.
(Yes, this is self-referential...)
2012-03-27 06:44:28 -07:00
Howard Chu
5fcc9285fb Merge remote branch 'origin/mdb.master' 2012-03-26 06:59:41 -07:00
Howard Chu
8a4981d8aa ITS#7213 fix page_split with MDB_APPEND
don't skip the cursor adjust checks
2012-03-26 06:58:16 -07:00
Howard Chu
dcf94e25f5 ITS#7207 check for ld->ld_defconn 2012-03-26 03:35:31 -07:00
Howard Chu
25e8e82c5f Update overflow page count when freeing overflow page 2012-03-20 17:14:59 -07:00
Howard Chu
9b21d585dc Merge remote branch 'origin/mdb.master' 2012-03-09 12:48:57 -08:00
Hallvard Furuseth
c7da506dd2 Fix MDB_txninfo.mt2 padding on Windows/Apple 2012-03-09 19:30:34 +01:00
Hallvard Furuseth
c7fe1f466e Tweak mdb comment with conflicting spec of 'ID' 2012-03-09 19:25:44 +01:00
Hallvard Furuseth
5c182fbedf Fix valgrind call after malloc failure in mdb.
Also line up the code logic a bit.
2012-03-09 19:22:31 +01:00
Hallvard Furuseth
d3b9939e71 Clean up MAP_FAILED handling in mdb.
Delay (MDB_txninfo*) cast to after comparing mmap() with MAP_FAILED.
Otherwise, if MAP_FAILED = (void*)-1 but MDB_txninfo requires stricter
alignment, the compiler could assume the result is never MAP_FAILED.

Also store NULL in env->(me_map, me_txns) after mmap failure.
2012-03-09 19:06:04 +01:00
Hallvard Furuseth
2baadabdff ITS#7191 Align dirty MDB pages on the stack 2012-03-09 18:45:39 +01:00
Howard Chu
cfa8dd6884 Merge remote branch 'origin/mdb.master' 2012-03-08 21:39:01 -08:00
Howard Chu
15f3e650da ITS#7191 more alignment tweaks
Revealed when gcc optimization is enabled
2012-03-08 21:28:24 -08:00
Howard Chu
bb921063e0 ITS#7194 fix IPv6 URL detection 2012-03-08 19:35:44 -08:00
Howard Chu
3743a5a68e Merge remote branch 'origin/mdb.master' 2012-03-06 22:56:29 -08:00
Howard Chu
2ccf0d58b2 Fix typo in 7bc62c5128 2012-03-06 22:55:53 -08:00
Howard Chu
5ce2a2aee6 Merge remote branch 'origin/mdb.master' 2012-03-06 22:17:19 -08:00
Howard Chu
7bc62c5128 ITS#7190 fix merging of branch pages in deletes 2012-03-06 22:12:21 -08:00
Hallvard Furuseth
d50d57ed63 Fix libmdb comments 2012-03-03 09:58:05 +01:00
Hallvard Furuseth
e1b88d93ac Remove development file libmdb/make.sh 2012-03-03 09:52:33 +01:00
Hallvard Furuseth
d8b4598085 ITS#7191 Fix mdb_xcursor_init1() unaligned access 2012-03-03 09:49:20 +01:00
Howard Chu
9547dd7a0d Merge remote branch 'origin/mdb.master' 2012-03-02 17:28:51 -08:00
Howard Chu
1b07b48c1a ITS#7196 use IOV_MAX if it's defined and small 2012-03-02 17:26:49 -08:00
Howard Chu
de7f6d38fa ITS#7115 add missing pool_idle/unidle stubs 2012-02-27 20:42:29 -08:00
Howard Chu
aa33f4b220 Merge remote branch 'origin/mdb.master' 2012-02-21 11:52:44 -08:00
Howard Chu
b23bb7a0b1 ITS#7160 get BYTE_ORDER def for HPUX (and Solaris) 2012-02-21 11:52:01 -08:00
Howard Chu
33f6bc4fe6 ITS#7167 only poll sockets for write as needed 2012-02-20 14:51:30 -08:00
Howard Chu
92ed65d298 ITS#7174 lutil_str2bin: can't modify input strings 2012-02-19 18:10:16 -08:00
Hallvard Furuseth
ffbad797c8 Fix typo in ldap_int_client_controls() comment 2012-02-07 16:11:43 +01:00
Jan Vcelak
4e9926ca97 ITS#7136 MozNSS: store TLS params until the deferred initialization is finished
Deferred TLS initialization is used with Mozilla NSS. The real
initialization takes place when the TLS context is needed for the first
time. If the initialization parameters were freed immediately after
tlsm_ctx_init was called, they were not available at the time of
deferred initialization which caused segmentation fault.

With this patch, initialization parameters are copied and stored until
the deferred initialization is finished. The parameters are freed
afterwards.

Red Hat Bugzilla: #783431
2012-01-25 21:24:28 -08:00
Jan Vcelak
1107103dd7 ITS#7135 MozNSS, PEM: fix segfault when TLS certificate key is not set
Red Hat Bugzilla: #772890
2012-01-25 21:22:47 -08:00
Howard Chu
ce2c041671 Cleanup gssapi_flags -> ldo_gssapi_flags 2012-01-24 15:43:39 -08:00
Howard Chu
7ff18967d7 More for prev commit (270ef33acf) 2012-01-24 15:43:14 -08:00
Howard Chu
270ef33acf ITS#7118, #7133 tentative fix
Move mutexes to end of structs, so libldap can ignore them
2012-01-24 13:32:52 -08:00
Hallvard Furuseth
1a931a86ee Silence 'assign away const' warning 2012-01-24 01:45:51 +01:00
Hallvard Furuseth
999ff398d6 thr_debug: tweak debug_already_initialized().
With gcc, declare debug_already_initialized() as 'noinline' so
its deliberate uninitialized access stays inside the function and
valgrind can ignore it there.
2012-01-24 01:45:51 +01:00
Hallvard Furuseth
23f3657807 ITS#7115: Tighten ldap_pvt_thread_pool_unidle().
Only wait out already-started pauses, not pause reqests.
ltp_pause now says whether a pause is requested or has started.

This reduces the chance that slapd:send_ldap_ber() will start
a pause in the middle of an operation.
2012-01-24 00:47:48 +01:00
Howard Chu
a8f6deee03 Merge remote branch 'origin/mdb.master' 2012-01-21 17:32:18 -08:00
Howard Chu
953796759e Fix typo in e8e57be421 2012-01-21 17:31:23 -08:00
Howard Chu
7d13ef7e42 Merge remote branch 'origin/mdb.master' 2012-01-21 08:29:03 -08:00
Howard Chu
e8e57be421 Add valgrind support with -DUSE_VALGRIND
Track allocations and invalid accesses to freed tmp pages.
2012-01-21 08:22:59 -08:00
Howard Chu
3d6b924c25 txn_commit must abort txn before returning errors
Fix for failure when committing a txn that is a child of
some parent txn.
2012-01-21 08:20:43 -08:00
Howard Chu
1c8de1883c ITS#7121 fix page splits when newindx == 0 2012-01-21 08:18:37 -08:00
Howard Chu
b9cbcb0588 ITS#7126 fix cursor tracking code
Don't compare cursors that aren't deep enough to match the
current cursor.
2012-01-21 08:12:56 -08:00
Howard Chu
713bf092b6 Happy New Year! 2012-01-21 08:09:16 -08:00
Howard Chu
a17f8e7326 ITS#7121 fix page splits when data+key size is too large 2012-01-21 08:09:16 -08:00
Kurt Zeilenga
81afbb2fca Happy New Year! 2012-01-21 08:07:21 -08:00
Hallvard Furuseth
fa7575666f ITS#7115 Re-fix tpool.c (idle/unidle) 2012-01-13 15:38:12 +01:00
Howard Chu
e86da2fe3f ITS#7121 fix page splits when data+key size is too large 2012-01-04 15:27:15 -08:00
Kurt Zeilenga
2bbf9804b9 Happy New Year! 2012-01-01 07:10:53 -08:00
Howard Chu
68ee165fb5 ITS#7115 blocked writers should not interfere with pool pause 2011-12-21 01:24:23 -08:00
Howard Chu
fadb48a723 Add $(SOLIBS) macro for shared lib dependencies 2011-11-21 16:30:58 -08:00
Howard Chu
95a72ac82a Add $(SOLIBS) macro for shared lib dependencies 2011-11-18 15:43:55 -08:00
Howard Chu
ea026cb2cf Merge remote branch 'origin/mdb.master' 2011-11-15 11:23:48 -08:00
Howard Chu
dd9c56f0fb More s/DEBUG/MDB_DEBUG/ 2011-11-15 11:23:00 -08:00
Howard Chu
40477fae4e Merge remote branch 'origin/mdb.master' 2011-11-14 16:22:51 -08:00
Howard Chu
575691ca8a Alignment fixes for debug msgs 2011-11-14 16:21:59 -08:00
Howard Chu
51c1ba6818 s/DEBUG/MDB_DEBUG/ 2011-11-14 14:40:43 -08:00
Howard Chu
122fa3a895 Merge remote branch 'origin/mdb.master' 2011-11-11 12:50:12 -08:00
Howard Chu
29de655bc4 Add MDB_FDATASYNC to allow override to fsync if needed. 2011-11-11 12:49:11 -08:00
Howard Chu
ca15238dfb Merge remote branch 'origin/mdb.master' 2011-11-11 11:00:14 -08:00
Howard Chu
291c0ce2db Use <inttypes.h> instead of <stdint.h> 2011-11-11 10:59:27 -08:00
Howard Chu
334099c0db Merge remote branch 'origin/mdb.master' 2011-11-10 12:43:41 -08:00
Howard Chu
8763c41e30 Fix size check 2011-11-10 12:41:34 -08:00
Howard Chu
52a0d00031 Merge remote branch 'origin/mdb.master' 2011-11-09 15:36:00 -08:00
Howard Chu
04b522cc72 More Solaris warning cleanup 2011-11-09 15:32:37 -08:00
Howard Chu
b905811d3c Merge remote branch 'origin/mdb.master' 2011-11-09 01:02:38 -08:00
Howard Chu
68143e4532 More pgno alignment tweaks 2011-11-09 00:36:50 -08:00
Howard Chu
056910df03 Merge remote branch 'origin/mdb.master' 2011-11-08 20:06:23 -08:00
Howard Chu
690792c170 Add dummy DKEY define 2011-11-08 20:05:29 -08:00
Howard Chu
dac408369b Merge remote branch 'origin/mdb.master' 2011-11-08 19:05:39 -08:00
Howard Chu
cc7a89cd67 Add Solaris byte-order detection 2011-11-08 19:04:39 -08:00
Howard Chu
f0c9d77326 Fix mdb_drop return 2011-11-08 16:45:45 -08:00
Howard Chu
6018fe9671 Merge remote branch 'origin/mdb.master' 2011-10-14 22:05:37 -07:00
Howard Chu
a103a64434 Android/ARM portability
2-byte alignment isn't good enough for subpages
2011-10-14 22:03:46 -07:00
Howard Chu
277a8edd2e Android defines wctomb but doesn't provide it 2011-10-12 19:18:05 -07:00
Howard Chu
fb5ba5f09c Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-10-06 19:15:43 -07:00
Howard Chu
331bf92df5 Fix page_split with MDB_RESERVE 2011-10-06 18:53:07 -07:00
Howard Chu
19e4df476d Fix subcursor initialization 2011-10-06 16:12:52 -07:00
Howard Chu
1adc0b9b1c Merge remote branch 'origin/mdb.master' 2011-10-04 02:22:01 -07:00
Howard Chu
934a19553c Don't use Append mode when splits are caused by sub-page inserts
Sub-pages need room to grow...
2011-10-03 18:02:17 -07:00
Howard Chu
ea0d07ffa3 Fix freelist bug on page split
NULL out env->pghead before writing it, so that its pages can't be used
to satisfy the write.
2011-10-03 12:40:53 -07:00
Howard Chu
7cd16d7b9f Merge remote branch 'origin/mdb.master' 2011-10-03 11:30:10 -07:00
Howard Chu
85bfb3c1d1 Add rudimentary MDB_MULTIPLE support for puts
Only for DUPFIXED DBs. Still could do better.
2011-10-03 11:28:14 -07:00
Howard Chu
02cafebb8e Merge remote branch 'origin/mdb.master' 2011-10-02 21:28:55 -07:00
Howard Chu
fa3c2945f5 Add MDB_APPEND to avoid splitting full pages 2011-10-02 21:27:07 -07:00
Howard Chu
163514e470 Fix 6e05ca17e9
Missed a MDB_RESERVE case
2011-10-02 19:52:12 -07:00
Howard Chu
c2df36c86f Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-10-02 19:36:57 -07:00
Howard Chu
28b8aaeb96 Add mdb_cursor_txn() and mdb_cursor_dbi() for querying the cursor 2011-10-02 19:28:33 -07:00
Howard Chu
2dd578221b Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-10-02 11:14:53 -07:00
Howard Chu
6e05ca17e9 Add MDB_RESERVE mode
When putting a record, just make space for the data, don't copy it.
(Not compatible with MDB_DUPSORT, since the actual data is needed
to determine the insert location.)
2011-10-02 10:02:30 -07:00
Howard Chu
fe11433619 Tweak cursor adjustment code
Skip the original cursor that made the change
2011-09-30 22:15:05 -07:00
Howard Chu
8a5d0952ad ITS#7006 fix MozNSS wildcard cert match 2011-09-30 03:27:19 -07:00
Rich Megginson
8e9af53fb6 ITS#7034 use mutex for connection handshake when using PEM nss
PEM nss is not thread safe when establishing the initial connection
using SSL_ForceHandshake.  Create a new mutex - tlsm_pem_mutex - to
protect this function call.
The call to SSL_ConfigServerSessionIDCache() is not thread-safe - move it
to the init section and protect it with the init mutex.
2011-09-30 03:16:57 -07:00
Howard Chu
9b082bf716 ITS#7051 fix GNUtls cert dn parse 2011-09-30 00:41:13 -07:00
Howard Chu
19d1e72bbc Make sure mdb_open actually got a sub-db record 2011-09-29 21:07:07 -07:00
Howard Chu
fa0d64242b Doc for the MDB_NOSUBDIR env option 2011-09-22 21:46:12 -07:00
Howard Chu
7a40080dd1 Add MDB_NOSUBDIR option
Create the data file using exactly the given pathname, and
the lock file using a suffix on the data file name.
2011-09-22 18:05:06 -07:00
Howard Chu
54eb76cc7a Reader table notes 2011-09-22 04:34:40 -07:00
Howard Chu
4bcaabecf5 assert cleanup 2011-09-21 17:21:48 -07:00
Howard Chu
619e671f1c txn_abort/commit free all their cursors now. 2011-09-21 16:37:29 -07:00
Howard Chu
9bcc51ef5d Only free malloc'd cursors 2011-09-21 16:06:52 -07:00
Howard Chu
c8c34cdd43 Merge remote branch 'origin/mdb.master' 2011-09-21 15:58:55 -07:00
Howard Chu
b9d13a29e6 Track changes to all cursors.
For any change to a page or node, update all other cursors pointing
at the same page (or node). Cursors are now stored in a linked list
off their owning transaction. Cursors are all closed when the transaction
ends. Cursors in parent transactions are updated when their child
transaction commits.
2011-09-21 15:55:27 -07:00
Howard Chu
c4d5e6e786 Add support for nested transactions. 2011-09-21 12:58:43 -07:00
Hallvard Furuseth
ef7f5f5e32 Cleanup ISO C compatibility for recent commits 2011-09-19 10:31:12 +02:00
Hallvard Furuseth
d9edc7d5af Merge branch 'mdb.master' 2011-09-19 10:30:30 +02:00
Hallvard Furuseth
8fa10ae668 libmdb IDL cleanup.
Microoptimize IDL search.
Use RANGE_<FIRST/LAST> when IDL is known to be a range.
2011-09-19 10:27:49 +02:00
Howard Chu
02abfb91ba Additional fix for prev commit 2011-09-18 18:26:54 -07:00
Howard Chu
76c6c8e5b7 Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-09-18 18:14:05 -07:00
Howard Chu
4272e7de4f Make sure 2 subpages fit in one real page 2011-09-18 18:13:23 -07:00
Howard Chu
001f149654 Merge remote branch 'origin/mdb.master' 2011-09-18 17:08:40 -07:00
Howard Chu
237fabda64 Fix last delete from a subpage 2011-09-18 17:07:47 -07:00
Howard Chu
0ab841598f Fix 09006ccec7
Check for stale DBs was in the wrong place.
2011-09-18 16:39:18 -07:00
Howard Chu
7164c4c662 Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-09-18 14:28:20 -07:00
Howard Chu
2c70d0430a Fix mdb_drop() if not deleting the DB record 2011-09-18 14:22:27 -07:00
Howard Chu
77b1017b85 Fix typo, minor cleanup 2011-09-18 14:12:49 -07:00
Howard Chu
e76299c196 Merge remote branch 'origin/mdb.master' 2011-09-18 13:25:09 -07:00
Howard Chu
57b5fbea49 Add mdb_drop() for deleting a DB
Allow MIDLs to grow arbitrarily, to allow unlimited number of
pages to be freed in one txn.
2011-09-18 12:37:02 -07:00
Howard Chu
09006ccec7 API change, consistency check
mdb_close() takes an env, not a txn.
Also, add check for stale DB records (in case some other process
wrote to the DB last).
2011-09-18 10:48:12 -07:00
Howard Chu
a05cbba77a Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-09-17 04:02:52 -07:00
Howard Chu
b7057eb61e New sorted-dup subpage support
Instead of converting directly to a subDB when the first duplicate
item is seen for a key, convert to a subpage instead. Allow the
subpage to grow up to the overflow limit, then convert to a subDB.
This saves a significant amount of space in a typical slapd index
database.

Currently we don't convert back to the smaller form if items are
later deleted. Probably could do that with some hysteresis, e.g.,
convert back from subDB to subpage when the size drops below
(overflow limit/2). Maybe later.
2011-09-17 03:33:07 -07:00
Howard Chu
e1a5177bac Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-09-15 10:37:13 -07:00
Howard Chu
0a28548131 Use FNV-1A hash to generate unique mutex names
For Windows and MacOSX
2011-09-15 10:36:15 -07:00
Howard Chu
d9a60db75e Merge remote branch 'origin/mdb.master' 2011-09-14 20:34:27 -07:00
Howard Chu
2c033676ea Doc tweak - txn flags 2011-09-14 20:33:09 -07:00
Howard Chu
5b7c983a66 MacOSX semaphore names are limited to 31 chars
Including the terminating NUL. Good job documenting that, guys.
2011-09-14 20:30:26 -07:00
Howard Chu
8917b774f7 Merge remote branch 'origin/mdb.master' 2011-09-14 11:46:40 -07:00
Howard Chu
0533f80364 Add MacOSX support
mmap() with FIXEDMAP fails, otherwise things work.
2011-09-14 11:31:27 -07:00
Howard Chu
e222506b88 Minor doc cleanup 2011-09-14 01:46:08 -07:00
Howard Chu
9e3e7cefd8 More docs 2011-09-14 01:08:01 -07:00
Howard Chu
71a665aa9d Namespace cleanup 2011-09-13 23:36:41 -07:00
Howard Chu
550dc4aaee Merge remote branch 'origin/mdb.master' 2011-09-13 15:24:33 -07:00
Howard Chu
56fe0d4f1a Tweak search_node inner loop to avoid LEAF2 checks 2011-09-13 13:42:02 -07:00
Howard Chu
70c79df1df cursor_set/search_node tweaks, use intcmp when possible 2011-09-13 13:41:40 -07:00
Howard Chu
dc83777ab9 Minor tweaks, update relfunc behavior 2011-09-12 01:15:22 -07:00
Howard Chu
0f1522418e Merge remote branch 'origin/mdb.master' 2011-09-11 23:58:50 -07:00
Howard Chu
25529a4c36 More cursor_init cleanup 2011-09-11 23:57:17 -07:00
Howard Chu
8acb755034 One more sub-cursor fix 2011-09-11 23:13:36 -07:00
Howard Chu
92a63ff790 Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap into mdb.master 2011-09-11 22:23:35 -07:00
Howard Chu
3501248548 Fix 2e3bc39fa9
Various mistakes when converting from previous data structures.
Add a few more debug asserts/sanity checks.
Split all "if (foo) return" constructs to separate lines to allow
easier breakpoint setting.

Add mtest6 for checking mdb_split() behavior. This needs to be
expanded to check rebalance/merge cases too.
2011-09-11 22:17:10 -07:00
Hallvard Furuseth
946b38f471 Fix mdb debug formats 2011-09-11 19:29:24 +02:00
Hallvard Furuseth
ed0fc55fd3 Restore missing LAZY_LOCKS semicolon.
Lost in C90 compat commit c5dad7a6d0.
2011-09-11 19:29:24 +02:00
Hallvard Furuseth
90ed553301 mdb integer type cleanup: Use MDB_dbi consistently.
This changes the prototype of mdb_env_set_maxdbs().
2011-09-11 19:29:24 +02:00
Hallvard Furuseth
b56be64d2e Drop ULONG in favor of size_t. 2011-09-10 22:49:34 +02:00
Hallvard Furuseth
b1cfff4aeb Add mdb.c:txnid_t for readability.
Maybe later we'll test txnid wraparound with it defined to ushort.
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
bf9d722bec mdb type cleanup: Consistent reader count types.
Use unsigned int for reader counts/max limits, that's the smallest
change.  Don't need uint32_t when mdb_env_set_maxreaders() takes less.
Change prototypes of mdb_env_set_maxreaders,mdb_env_get_maxreaders().
Check the mdb_env_set_maxreaders() argument.
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
5f68293475 explain mdl_midl_sort() istack size 2011-09-10 22:49:34 +02:00
Hallvard Furuseth
2d1f3b7ed3 Fix memn(r)cmp of key sizes > INT_MAX. Simplify. 2011-09-10 22:49:34 +02:00
Hallvard Furuseth
69e53cf700 Check some mdb integer type assumptions 2011-09-10 22:49:34 +02:00
Hallvard Furuseth
88da18cccf Put MDB_node.<mn_lo,mn_hi> in host byte order. 2011-09-10 22:49:20 +02:00
Hallvard Furuseth
c5dad7a6d0 C90 compatibility cleanup in mdb.
Fix void* pointer arithmetic in cintcmp().
Fix invalid ';'s in declarations after possibly-empty macros.
2011-09-10 15:39:02 +02:00
Hallvard Furuseth
3dc8fa491a Cleanup mdb macros.
Parenthesize.  Rename GetPageSize -> GET_PAGESIZE since it does not
behave like a function (it has a non-pointer output argument).
2011-09-10 10:11:55 +02:00
Hallvard Furuseth
ec2d82f79a libmdb/.gitignore += test[45], Doxygen output 2011-09-10 10:11:55 +02:00
Howard Chu
8623c98726 Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-09-09 22:29:37 -07:00
Howard Chu
acdc248f57 If put(NOOVERWRITE) exists, return existing data 2011-09-09 22:28:07 -07:00
Howard Chu
a7edb95e64 Minor typos, additional clarification 2011-09-09 03:52:12 -07:00
Howard Chu
c7d6c0fab3 Add a few NULL checks to defend against dumb API checkers.
Unfortunately automated checkers don't seem to read the documentation
for how APIs are expected to be used, and the C declaration syntax
isn't expressive enough to encode the documented usage.
2011-09-08 23:41:06 -07:00
Howard Chu
0c487538cf Partial revert, fix MDB_page definition 2011-09-08 20:18:29 -07:00
Howard Chu
9ac8638d9d More docs 2011-09-08 17:13:51 -07:00
Howard Chu
badc324647 Merge remote branch 'origin/mdb.master' 2011-09-08 14:35:17 -07:00
Howard Chu
bed3123b82 More docs 2011-09-08 14:34:21 -07:00
Pierangelo Masarati
568e3b7faa fix uninit'ed vars (ITS#7039) 2011-09-08 23:32:58 +02:00
Howard Chu
1b69295a48 Speedup cintcmp
Now that we know we're always 2-byte aligned...
2011-09-08 13:10:17 -07:00
Howard Chu
cb24efd287 Merge remote branch 'origin/mdb.master' 2011-09-08 10:11:30 -07:00
Howard Chu
dac3fae3b5 Fix previous commit 2011-09-08 10:08:21 -07:00
Howard Chu
cba0d05a9d Merge remote branch 'origin/mdb.master' 2011-09-07 23:58:29 -07:00
Howard Chu
8678fef597 Forgot to commit this 2011-09-07 23:11:14 -07:00
Howard Chu
2e3bc39fa9 Further cursor-based restructuring
Get rid of all of the redundant MDB_*page structs and other cruft.
2011-09-07 23:09:45 -07:00
Howard Chu
976a150973 Cleanup unused code 2011-09-06 23:37:37 -07:00
Howard Chu
619cebee12 Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap 2011-09-06 23:22:40 -07:00
Howard Chu
1f8c3369b9 Fix mdb_move_node again 2011-09-06 23:16:45 -07:00
Howard Chu
06ec9f1db2 ITS#7035 don't loop forever in wait4msg 2011-09-06 21:13:49 -07:00
Howard Chu
473e2c997f Merge branch 'mdb.master' of /home/hyc/OD/mdb 2011-09-06 15:24:00 -07:00
Howard Chu
f9c8796d0b Fix search_node, add cintcmp 2011-09-06 15:22:53 -07:00