From 60a4a8d8c9a80262e69e43edc78251175992e605 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Thu, 22 Aug 2002 02:29:46 +0000 Subject: [PATCH] Check LOCK_ID() return --- servers/slapd/back-bdb/attribute.c | 13 ++++++++++--- servers/slapd/back-bdb/bind.c | 10 +++++++++- servers/slapd/back-bdb/compare.c | 10 +++++++++- servers/slapd/back-bdb/group.c | 11 +++++++++-- servers/slapd/back-bdb/referral.c | 8 +++++++- servers/slapd/back-bdb/search.c | 10 +++++++++- 6 files changed, 53 insertions(+), 9 deletions(-) diff --git a/servers/slapd/back-bdb/attribute.c b/servers/slapd/back-bdb/attribute.c index b41177b4e7..6ad4b30e78 100644 --- a/servers/slapd/back-bdb/attribute.c +++ b/servers/slapd/back-bdb/attribute.c @@ -67,10 +67,17 @@ bdb_attribute( txn = boi->boi_txn; } - if ( txn != NULL ) + if ( txn != NULL ) { locker = TXN_ID ( txn ); - else - LOCK_ID ( bdb->bi_dbenv, &locker ); + } else { + rc = LOCK_ID ( bdb->bi_dbenv, &locker ); + switch(rc) { + case 0: + break; + default: + return LDAP_OTHER; + } + } if (target != NULL && dn_match(&target->e_nname, entry_ndn)) { /* we already have a LOCKED copy of the entry */ diff --git a/servers/slapd/back-bdb/bind.c b/servers/slapd/back-bdb/bind.c index ebd4880642..7a9230dcdc 100644 --- a/servers/slapd/back-bdb/bind.c +++ b/servers/slapd/back-bdb/bind.c @@ -49,7 +49,15 @@ bdb_bind( Debug( LDAP_DEBUG_ARGS, "==> bdb_bind: dn: %s\n", dn->bv_val, 0, 0); #endif - LOCK_ID(bdb->bi_dbenv, &locker); + rc = LOCK_ID(bdb->bi_dbenv, &locker); + switch(rc) { + case 0: + break; + default: + send_ldap_result( conn, op, rc=LDAP_OTHER, + NULL, "internal error", NULL, NULL ); + return rc; + } dn2entry_retry: /* get entry */ diff --git a/servers/slapd/back-bdb/compare.c b/servers/slapd/back-bdb/compare.c index 25c8cf4f95..c22c4311c7 100644 --- a/servers/slapd/back-bdb/compare.c +++ b/servers/slapd/back-bdb/compare.c @@ -34,7 +34,15 @@ bdb_compare( u_int32_t locker; DB_LOCK lock; - LOCK_ID ( bdb->bi_dbenv, &locker ); + rc = LOCK_ID(bdb->bi_dbenv, &locker); + switch(rc) { + case 0: + break; + default: + send_ldap_result( conn, op, rc=LDAP_OTHER, + NULL, "internal error", NULL, NULL ); + return rc; + } dn2entry_retry: /* get entry */ diff --git a/servers/slapd/back-bdb/group.c b/servers/slapd/back-bdb/group.c index 59a33e94b3..d4fb4de09e 100644 --- a/servers/slapd/back-bdb/group.c +++ b/servers/slapd/back-bdb/group.c @@ -79,10 +79,17 @@ bdb_group( txn = boi->boi_txn; } - if ( txn ) + if ( txn ) { locker = TXN_ID( txn ); - else + } else { LOCK_ID ( bdb->bi_dbenv, &locker ); + switch(rc) { + case 0: + break; + default: + return 1; + } + } if (dn_match(&target->e_name, gr_ndn)) { /* we already have a LOCKED copy of the entry */ diff --git a/servers/slapd/back-bdb/referral.c b/servers/slapd/back-bdb/referral.c index 07c85df4b3..1ecbf1dddc 100644 --- a/servers/slapd/back-bdb/referral.c +++ b/servers/slapd/back-bdb/referral.c @@ -39,7 +39,13 @@ bdb_referrals( return rc; } - LOCK_ID ( bdb->bi_dbenv, &locker ); + rc = LOCK_ID(bdb->bi_dbenv, &locker); + switch(rc) { + case 0: + break; + default: + return LDAP_OTHER; + } dn2entry_retry: /* get entry */ diff --git a/servers/slapd/back-bdb/search.c b/servers/slapd/back-bdb/search.c index 3bea37794c..a7b0736719 100644 --- a/servers/slapd/back-bdb/search.c +++ b/servers/slapd/back-bdb/search.c @@ -71,7 +71,15 @@ bdb_search( manageDSAit = get_manageDSAit( op ); - LOCK_ID (bdb->bi_dbenv, &locker ); + rc = LOCK_ID (bdb->bi_dbenv, &locker ); + switch(rc) { + case 0: + break; + default: + send_ldap_result( conn, op, rc=LDAP_OTHER, + NULL, "internal error", NULL, NULL ); + return rc; + } if ( nbase->bv_len == 0 ) { /* DIT root special case */ -- 2.39.5