]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/search.c
allow pretty time form in quarantine string
[openldap] / servers / slapd / back-ldap / search.c
index ec68159ccfb714bb0936730e9b653ee4ff670b93..eed46629d365cedddd7e5f4c3efeb0b9174e638d 100644 (file)
@@ -75,7 +75,7 @@ ldap_back_munge_filter(
 
                if ( strncmp( ptr, bv_true.bv_val, bv_true.bv_len ) == 0 ) {
                        oldbv = &bv_true;
-                       if ( li->li_flags & LDAP_BACK_F_SUPPORT_T_F ) {
+                       if ( LDAP_BACK_T_F( li ) ) {
                                newbv = &bv_t;
 
                        } else {
@@ -85,7 +85,7 @@ ldap_back_munge_filter(
                } else if ( strncmp( ptr, bv_false.bv_val, bv_false.bv_len ) == 0 )
                {
                        oldbv = &bv_false;
-                       if ( li->li_flags & LDAP_BACK_F_SUPPORT_T_F ) {
+                       if ( LDAP_BACK_T_F( li ) ) {
                                newbv = &bv_f;
 
                        } else {
@@ -141,6 +141,8 @@ ldap_back_search(
                Operation       *op,
                SlapReply       *rs )
 {
+       ldapinfo_t      *li = (ldapinfo_t *) op->o_bd->be_private;
+
        ldapconn_t      *lc;
        struct timeval  tv;
        time_t          stoptime = (time_t)-1;
@@ -264,7 +266,7 @@ retry:
                        if ( rc > 0 ) {
                                ldap_msgfree( res );
                        }
-                       ldap_abandon_ext( lc->lc_ld, msgid, NULL, NULL );
+                       (void)ldap_back_cancel( lc, op, rs, msgid, LDAP_BACK_DONTSEND );
                        rc = SLAPD_ABANDON;
                        goto finish;
                }
@@ -277,7 +279,7 @@ retry:
                        if ( op->ors_tlimit != SLAP_NO_LIMIT
                                        && slap_get_time() > stoptime )
                        {
-                               ldap_abandon_ext( lc->lc_ld, msgid, NULL, NULL );
+                               (void)ldap_back_cancel( lc, op, rs, msgid, LDAP_BACK_DONTSEND );
                                rc = rs->sr_err = LDAP_TIMELIMIT_EXCEEDED;
                                goto finish;
                        }
@@ -320,7 +322,7 @@ retry:
                                if ( rc == LDAP_UNAVAILABLE ) {
                                        rc = rs->sr_err = LDAP_OTHER;
                                } else {
-                                       ldap_abandon_ext( lc->lc_ld, msgid, NULL, NULL );
+                                       (void)ldap_back_cancel( lc, op, rs, msgid, LDAP_BACK_DONTSEND );
                                }
                                goto finish;
                        }
@@ -464,6 +466,10 @@ retry:
        }
 
 finish:;
+       if ( LDAP_BACK_QUARANTINE( li ) ) {
+               ldap_back_quarantine( op, rs, 1 );
+       }
+
        if ( rc != SLAPD_ABANDON ) {
                send_ldap_result( op, rs );
        }