]> git.sur5r.net Git - openldap/commitdiff
send_search_reference should propagate errors
authorHoward Chu <hyc@openldap.org>
Thu, 21 Sep 2006 09:28:49 +0000 (09:28 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 21 Sep 2006 09:28:49 +0000 (09:28 +0000)
servers/slapd/result.c

index 0cde942a2cf0b691a189d91f5879bed597c717c5..65e83b7232b7da11ec578376560314736051569c 100644 (file)
@@ -1359,11 +1359,15 @@ slap_send_search_reference( Operation *op, SlapReply *rs )
        bytes = send_ldap_ber( op->o_conn, ber );
        ber_free_buf( ber );
 
-       ldap_pvt_thread_mutex_lock( &slap_counters.sc_sent_mutex );
-       ldap_pvt_mp_add_ulong( slap_counters.sc_bytes, (unsigned long)bytes );
-       ldap_pvt_mp_add_ulong( slap_counters.sc_refs, 1 );
-       ldap_pvt_mp_add_ulong( slap_counters.sc_pdu, 1 );
-       ldap_pvt_thread_mutex_unlock( &slap_counters.sc_sent_mutex );
+       if ( bytes < 0 ) {
+               rc = LDAP_UNAVAILABLE;
+       } else {
+               ldap_pvt_thread_mutex_lock( &slap_counters.sc_sent_mutex );
+               ldap_pvt_mp_add_ulong( slap_counters.sc_bytes, (unsigned long)bytes );
+               ldap_pvt_mp_add_ulong( slap_counters.sc_refs, 1 );
+               ldap_pvt_mp_add_ulong( slap_counters.sc_pdu, 1 );
+               ldap_pvt_thread_mutex_unlock( &slap_counters.sc_sent_mutex );
+       }
 #ifdef LDAP_CONNECTIONLESS
        }
 #endif