]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/connection.c
Merge in latest changes from HEAD
[openldap] / servers / slapd / connection.c
index e7effae3468768ec2ce5adedc1c40733959c3cc3..731f46bc8cc764f31d55bcfe9a66cd740be0ae0d 100644 (file)
@@ -193,6 +193,9 @@ int connections_timeout_idle(time_t now)
                c != NULL;
                c = connection_next( c, &connindex ) )
        {
+               /* Don't timeout a slow-running request */
+               if( c->c_n_ops_executing ) continue;
+
                if( difftime( c->c_activitytime+global_idletimeout, now) < 0 ) {
                        /* close it */
                        connection_closing( c );
@@ -1079,9 +1082,6 @@ operations_error:
 
        ldap_pvt_thread_mutex_lock( &conn->c_mutex );
 
-       conn->c_n_ops_executing--;
-       conn->c_n_ops_completed++;
-
        LDAP_STAILQ_REMOVE( &conn->c_ops, op, slap_op, o_next);
        LDAP_STAILQ_NEXT(op, o_next) = NULL;
 
@@ -1094,6 +1094,8 @@ operations_error:
 
 co_op_free:
 
+       conn->c_n_ops_executing--;
+       conn->c_n_ops_completed++;
        memctx = NULL;
        ber_set_option( op->o_ber, LBER_OPT_BER_MEMCTX, &memctx );
        slap_op_free( op );