]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/result.c
Fix prev commit, overlay config was broken
[openldap] / servers / slapd / result.c
index c2efc492fd8dc75a0f76a1f7872098e3451c280a..f1abb5110b8970cc2a1af9b83cdd7adf807beb4b 100644 (file)
@@ -465,20 +465,18 @@ cleanup:;
 clean2:;
        if ( op->o_callback ) {
                int             first = 1;
-               slap_callback   *sc = op->o_callback,
-                               *sc_next = op->o_callback;
+               slap_callback   *sc = op->o_callback, *sc_next;
 
                for ( sc_next = op->o_callback; sc_next; op->o_callback = sc_next) {
                        sc_next = op->o_callback->sc_next;
                        if ( op->o_callback->sc_cleanup ) {
                                (void)op->o_callback->sc_cleanup( op, rs );
-                               if ( first && op->o_callback == NULL ) {
-                                       sc = NULL;
+                               if ( first && op->o_callback != sc ) {
+                                       sc = op->o_callback;
                                }
                        }
                        first = 0;
                }
-
                op->o_callback = sc;
        }
 
@@ -581,7 +579,7 @@ slap_send_ldap_result( Operation *op, SlapReply *rs )
         * should just set SLAPI_RESULT_CODE rather than sending a
         * result if they wish to change the result.
         */
-       if ( op->o_pb != NULL ) {
+       if ( op->o_callback == NULL && op->o_pb != NULL ) {
                slapi_int_pblock_set_operation( op->o_pb, op );
                slapi_pblock_set( op->o_pb, SLAPI_RESULT_CODE,
                        (void *)rs->sr_err );
@@ -1197,20 +1195,18 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
 error_return:;
        if ( op->o_callback ) {
                int             first = 1;
-               slap_callback   *sc = op->o_callback,
-                               *sc_next = op->o_callback;
+               slap_callback   *sc = op->o_callback, *sc_next;
 
                for ( sc_next = op->o_callback; sc_next; op->o_callback = sc_next) {
                        sc_next = op->o_callback->sc_next;
                        if ( op->o_callback->sc_cleanup ) {
                                (void)op->o_callback->sc_cleanup( op, rs );
-                               if ( first && op->o_callback == NULL ) {
-                                       sc = NULL;
+                               if ( first && op->o_callback != sc ) {
+                                       sc = op->o_callback;
                                }
                        }
                        first = 0;
                }
-
                op->o_callback = sc;
        }
 
@@ -1386,20 +1382,18 @@ slap_send_search_reference( Operation *op, SlapReply *rs )
 rel:
        if ( op->o_callback ) {
                int             first = 1;
-               slap_callback   *sc = op->o_callback,
-                               *sc_next = op->o_callback;
+               slap_callback   *sc = op->o_callback, *sc_next;
 
                for ( sc_next = op->o_callback; sc_next; op->o_callback = sc_next) {
                        sc_next = op->o_callback->sc_next;
                        if ( op->o_callback->sc_cleanup ) {
                                (void)op->o_callback->sc_cleanup( op, rs );
-                               if ( first && op->o_callback == NULL ) {
-                                       sc = NULL;
+                               if ( first && op->o_callback != sc ) {
+                                       sc = op->o_callback;
                                }
                        }
                        first = 0;
                }
-
                op->o_callback = sc;
        }