]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#8841 Fix an assertion error in back-meta when network interface is unavailable
authorNadezhda Ivanova <nivanova@symas.com>
Wed, 22 Nov 2017 11:44:07 +0000 (13:44 +0200)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 13 Jun 2019 18:46:21 +0000 (18:46 +0000)
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 ) );

servers/slapd/back-meta/search.c

index eef687bc6c319bd9f444838987a3d57db4ae95d6..0cbb69bdee1311cfdd0b1242bf8b38ffce1f0b3b 100644 (file)
@@ -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 );