]> git.sur5r.net Git - openldap/commitdiff
remove unnecessary assertion; add test for pending ops
authorPierangelo Masarati <ando@openldap.org>
Fri, 1 Sep 2006 10:41:54 +0000 (10:41 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 1 Sep 2006 10:41:54 +0000 (10:41 +0000)
servers/slapd/connection.c

index ea21b7379bcdbe7c455688ea84e25b440735c3be..e57977ba0e1ad60548ab6a13188717ea4c3833c0 100644 (file)
@@ -857,16 +857,15 @@ connection_close( Connection *c )
                ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_GET_FD, &sd );
        }
 
-       if ( !LDAP_STAILQ_EMPTY(&c->c_ops) ) {
+       if ( !LDAP_STAILQ_EMPTY(&c->c_ops) ||
+               !LDAP_STAILQ_EMPTY(&c->c_pending_ops) )
+       {
                Debug( LDAP_DEBUG_TRACE,
                        "connection_close: deferring conn=%lu sd=%d\n",
                        c->c_connid, sd, 0 );
                return;
        }
 
-       /* NOTE: if there's no pending ops, writewaiter must be 0 (ITS#4659) */
-       assert( c->c_writewaiter == 0 );
-
        Debug( LDAP_DEBUG_TRACE, "connection_close: conn=%lu sd=%d\n",
                c->c_connid, sd, 0 );
 
@@ -1158,6 +1157,7 @@ operations_error:
                        op->o_cancel = LDAP_TOO_LATE;
                }
        }
+
        while ( op->o_cancel != SLAP_CANCEL_NONE &&
                op->o_cancel != SLAP_CANCEL_DONE )
        {