From cb272de32302ace9143820242aeda3be26332d73 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 19 May 2007 23:24:46 +0000 Subject: [PATCH] import fix to ITS#4958) --- CHANGES | 3 ++- servers/slapd/back-relay/op.c | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index f76c69f0c8..ba315839ad 100644 --- a/CHANGES +++ b/CHANGES @@ -3,8 +3,9 @@ OpenLDAP 2.3 Change Log OpenLDAP 2.3.36 Engineering Fixed slapd error code on Windows (ITS#4945, #4606) Fixed slapd mutex bug after failed startup (ITS#4957) - Fixed slapd-config olcModuleLoad replace (ITS#4921) Fixed slapd-bdb no-op crasher (ITS#4925) + Fixed slapd-config olcModuleLoad replace (ITS#4921) + Fixed slapd-relay crash when no database can be selected (ITS#4958) Fixed slapo-chain RFC3062 passwd exop handling (ITS#4964) Fixed libldap response code handling on rebind (ITS#4924) Fixed libldap SASL_MAX_BUFF_SIZE (ITS#4935) diff --git a/servers/slapd/back-relay/op.c b/servers/slapd/back-relay/op.c index 0c463cc203..9b444d26bf 100644 --- a/servers/slapd/back-relay/op.c +++ b/servers/slapd/back-relay/op.c @@ -60,7 +60,7 @@ relay_back_select_backend( struct slap_op *op, struct slap_rep *rs, int err ) relay_back_info *ri = (relay_back_info *)op->o_bd->be_private; BackendDB *bd = ri->ri_bd; - if ( bd == NULL ) { + if ( bd == NULL && !BER_BVISNULL( &op->o_req_ndn ) ) { bd = select_backend( &op->o_req_ndn, 0, 1 ); if ( bd == op->o_bd ) { if ( err > LDAP_SUCCESS ) { @@ -140,9 +140,9 @@ relay_back_op_unbind( struct slap_op *op, struct slap_rep *rs ) BackendDB *bd; int rc = 1; - bd = ri->ri_bd; + bd = relay_back_select_backend( op, rs, -1 ); if ( bd == NULL ) { - bd = select_backend( &op->o_req_ndn, 0, 1 ); + return rc; } if ( bd && bd->be_unbind ) { @@ -405,7 +405,7 @@ relay_back_op_cancel( struct slap_op *op, struct slap_rep *rs ) BackendDB *bd; int rc = 1; - bd = relay_back_select_backend( op, rs, LDAP_NO_SUCH_OBJECT ); + bd = relay_back_select_backend( op, rs, LDAP_CANNOT_CANCEL ); if ( bd == NULL ) { return 1; } -- 2.47.2