From: Howard Chu Date: Thu, 23 Jun 2005 23:00:19 +0000 (+0000) Subject: Import TXN patch from HEAD X-Git-Tag: OPENLDAP_REL_ENG_2_2_28~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad1034cb43eee7206cd391c3dbba63aa479a5732;p=thirdparty%2Fopenldap.git Import TXN patch from HEAD --- diff --git a/servers/slapd/back-bdb/cache.c b/servers/slapd/back-bdb/cache.c index 55e9cc63d5..59021c7d6e 100644 --- a/servers/slapd/back-bdb/cache.c +++ b/servers/slapd/back-bdb/cache.c @@ -37,6 +37,14 @@ static void bdb_lru_print(Cache *cache); static int bdb_txn_get( Operation *op, DB_ENV *env, DB_TXN **txn, int reset ); +/* 4.2.52 */ +#if DB_VERSION_FULL == 0x04020034 +#define READ_TXN_FLAG ReadFlag +static int ReadFlag = DB_TXN_NOT_DURABLE; +#else +#define READ_TXN_FLAG 0 +#endif + static EntryInfo * bdb_cache_entryinfo_new( Cache *cache ) { @@ -1211,7 +1219,17 @@ bdb_txn_get( Operation *op, DB_ENV *env, DB_TXN **txn, int reset ) if ( ldap_pvt_thread_pool_getkey( ctx, ((char *)env)+1, &data, NULL ) || data == NULL ) { for ( i=0, rc=1; rc != 0 && i<4; i++ ) { - rc = TXN_BEGIN( env, NULL, txn, 0 ); + rc = TXN_BEGIN( env, NULL, txn, READ_TXN_FLAG ); +#if DB_VERSION_FULL == 0x04020034 + if ( rc == EINVAL && READ_TXN_FLAG ) { + READ_TXN_FLAG = 0; + Debug( LDAP_DEBUG_ANY, + "bdb_txn_get: BerkeleyDB 4.2.52 library needs TXN patch!\n", + 0, 0, 0 ); + i--; + continue; + } +#endif if (rc) ldap_pvt_thread_yield(); } if ( rc != 0) {