s4-dreplsrv: Call dreplsrv_out_operation::callback in case we fail to even run the...
authorKamen Mazdrashki <kamenim@samba.org>
Tue, 7 Sep 2010 22:07:44 +0000 (01:07 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Thu, 9 Sep 2010 15:26:51 +0000 (18:26 +0300)
Operation was scheduled already, so we need to call
the callback function for it to be able to do its job.

For instance, if we are blocking an rpc call until an
operation is completed and there is no memory, then
client will be blocked without knowing what is going on
with the server.

source4/dsdb/repl/drepl_out_pull.c

index a4a00b48e7449d0fbdfef8050050b69dbe61062e..21f986ad7b41e5d178866a36a2f658b17c040cdb 100644 (file)
@@ -163,6 +163,14 @@ void dreplsrv_run_pending_ops(struct dreplsrv_service *s)
                rf->consecutive_sync_failures++;
                s->ops.current = NULL;
 
+               /*
+                * call the callback (if any) so it gets the chance
+                * to do its job just like in any other failure situation
+                */
+               if (op->callback) {
+                       op->callback(s, rf->result_last_attempt, op->extended_ret, op->cb_data);
+               }
+
                DEBUG(1,("dreplsrv_op_pull_source(%s/%s) failures[%u]\n",
                        win_errstr(rf->result_last_attempt),
                        nt_errstr(werror_to_ntstatus(rf->result_last_attempt)),