]> git.sur5r.net Git - openldap/commitdiff
ITS#6412, refix #6304 - only check for writes if sockbuf NEEDS_WRITE
authorHoward Chu <hyc@openldap.org>
Fri, 4 Dec 2009 02:44:00 +0000 (02:44 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 4 Dec 2009 02:44:00 +0000 (02:44 +0000)
servers/slapd/connection.c

index 7f8331f5329875b6bc8b486f7377b5f00383ac7b..66e49f1c4dc0e7a1edd279bfc096bbdaf0525b45 100644 (file)
@@ -1362,8 +1362,8 @@ connection_read( ber_socket_t s, conn_readinfo *cri )
                            c->c_connid, (int) s, c->c_tls_ssf, c->c_ssf, 0 );
                        slap_sasl_external( c, c->c_tls_ssf, &authid );
                        if ( authid.bv_val ) free( authid.bv_val );
-               } else if ( rc == 1 ) { /* need to retry */
-                       slapd_set_read( s, 0 );
+               } else if ( rc == 1 && ber_sockbuf_ctrl( c->c_sb,
+                       LBER_SB_OPT_NEEDS_WRITE, NULL )) {      /* need to retry */
                        slapd_set_write( s, 1 );
                        connection_return( c );
                        return 0;