Diff for /servers/slapd/overlays/syncprov.c between versions 1.159 and 1.160

version 1.159, 2006/08/28 23:43:25 version 1.160, 2006/09/21 07:42:40
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.158 2006/08/15 19:41:14 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.159 2006/08/28 23:43:25 hyc Exp $ */
 /* syncprov.c - syncrepl provider */  /* syncprov.c - syncrepl provider */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
Line 774  syncprov_sendresp( Operation *op, opcook Line 774  syncprov_sendresp( Operation *op, opcook
                         rs.sr_flags = REP_ENTRY_MUSTRELEASE;                          rs.sr_flags = REP_ENTRY_MUSTRELEASE;
                 if ( opc->sreference ) {                  if ( opc->sreference ) {
                         rs.sr_ref = get_entry_referrals( op, rs.sr_entry );                          rs.sr_ref = get_entry_referrals( op, rs.sr_entry );
                         send_search_reference( op, &rs );                          rs.sr_err = send_search_reference( op, &rs );
                         ber_bvarray_free( rs.sr_ref );                          ber_bvarray_free( rs.sr_ref );
                         if ( !rs.sr_entry )                          if ( !rs.sr_entry )
                                 *e = NULL;                                  *e = NULL;
Line 786  syncprov_sendresp( Operation *op, opcook Line 786  syncprov_sendresp( Operation *op, opcook
                 if ( rs.sr_entry->e_private )                  if ( rs.sr_entry->e_private )
                         rs.sr_flags = REP_ENTRY_MUSTRELEASE;                          rs.sr_flags = REP_ENTRY_MUSTRELEASE;
                 rs.sr_attrs = op->ors_attrs;                  rs.sr_attrs = op->ors_attrs;
                 send_search_entry( op, &rs );                  rs.sr_err = send_search_entry( op, &rs );
                 if ( !rs.sr_entry )                  if ( !rs.sr_entry )
                         *e = NULL;                          *e = NULL;
                 break;                  break;
Line 798  syncprov_sendresp( Operation *op, opcook Line 798  syncprov_sendresp( Operation *op, opcook
                 if ( opc->sreference ) {                  if ( opc->sreference ) {
                         struct berval bv = BER_BVNULL;                          struct berval bv = BER_BVNULL;
                         rs.sr_ref = &bv;                          rs.sr_ref = &bv;
                         send_search_reference( op, &rs );                          rs.sr_err = send_search_reference( op, &rs );
                 } else {                  } else {
                         send_search_entry( op, &rs );                          rs.sr_err = send_search_entry( op, &rs );
                 }                  }
                 break;                  break;
         default:          default:
Line 878  syncprov_qtask( void *ctx, void *arg ) Line 878  syncprov_qtask( void *ctx, void *arg )
         OperationBuffer opbuf;          OperationBuffer opbuf;
         Operation *op;          Operation *op;
         BackendDB be;          BackendDB be;
           int rc;
   
         op = (Operation *) &opbuf;          op = (Operation *) &opbuf;
         *op = *so->s_op;          *op = *so->s_op;
Line 898  syncprov_qtask( void *ctx, void *arg ) Line 899  syncprov_qtask( void *ctx, void *arg )
         op->o_private = NULL;          op->o_private = NULL;
         op->o_callback = NULL;          op->o_callback = NULL;
   
         (void)syncprov_qplay( op, on, so );          rc = syncprov_qplay( op, on, so );
   
         /* decrement use count... */          /* decrement use count... */
         syncprov_free_syncop( so );          syncprov_free_syncop( so );
Line 906  syncprov_qtask( void *ctx, void *arg ) Line 907  syncprov_qtask( void *ctx, void *arg )
         /* wait until we get explicitly scheduled again */          /* wait until we get explicitly scheduled again */
         ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex );          ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex );
         ldap_pvt_runqueue_stoptask( &slapd_rq, so->s_qtask );          ldap_pvt_runqueue_stoptask( &slapd_rq, so->s_qtask );
         ldap_pvt_runqueue_resched( &slapd_rq, so->s_qtask, 1 );          if ( rc == 0 ) {
                   ldap_pvt_runqueue_resched( &slapd_rq, so->s_qtask, 1 );
           } else {
                   /* bail out on any error */
                   ldap_pvt_runqueue_remove( &slapd_rq, rtask );
           }
         ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );          ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
   
   #if 0   /* FIXME: connection_close isn't exported from slapd.
                    * should it be?
                    */
           if ( rc ) {
                   ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
                   if ( connection_state_closing( op->o_conn )) {
                           connection_close( op->o_conn );
                   }
                   ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
           }
   #endif
         return NULL;          return NULL;
 }  }
   

Removed from v.1.159  
changed lines
  Added in v.1.160


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org