From: Nadezhda Ivanova Date: Wed, 22 Nov 2017 11:44:07 +0000 (+0200) Subject: ITS#8841 Fix an assertion error in back-meta when network interface is unavailable X-Git-Tag: OPENLDAP_REL_ENG_2_4_48~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b61e66871d105bd43f3dc74020a13a02106959d9;p=thirdparty%2Fopenldap.git ITS#8841 Fix an assertion error in back-meta when network interface is unavailable Because an API error code was assigned to sr_err, on network error back-meta would cause an assert error at result.c: 830 assert( !LDAP_API_ERROR( rs->sr_err ) ); --- diff --git a/servers/slapd/back-meta/search.c b/servers/slapd/back-meta/search.c index eef687bc6c..0cbb69bdee 100644 --- a/servers/slapd/back-meta/search.c +++ b/servers/slapd/back-meta/search.c @@ -344,12 +344,15 @@ down:; default: other:; + /* convert rc to the correct LDAP error and send it back to the client: + assing the error to rs, so we can use it as argument to slap_map_api2result + and then assign the output back to rs->sr_err */ rs->sr_err = rc; - rc = slap_map_api2result( rs ); + rs->sr_err = slap_map_api2result( rs ); ldap_pvt_thread_mutex_lock( &mi->mi_conninfo.lai_mutex ); meta_clear_one_candidate( op, mc, candidate ); - candidates[ candidate ].sr_err = rc; + candidates[ candidate ].sr_err = rs->sr_err; if ( META_BACK_ONERR_STOP( mi ) ) { LDAP_BACK_CONN_TAINTED_SET( mc ); meta_back_release_conn_lock( mi, mc, 0 );