s4-drs-fsmo: try to dispatch ops in queue as soon as possible
authorKamen Mazdrashki <kamenim@samba.org>
Thu, 9 Sep 2010 22:58:07 +0000 (01:58 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Fri, 10 Sep 2010 10:08:22 +0000 (13:08 +0300)
In most cases this will transfer of schema master role to
look like a synchronous operation.

source4/dsdb/repl/drepl_fsmo.c

index 8719967d1628af15cce54067f1ccbc95600bb84f..941ad6771bb9244416aca46456fc83268a149983 100644 (file)
@@ -126,12 +126,20 @@ WERROR dreplsrv_fsmo_role_check(struct dreplsrv_service *service,
                        return WERR_DS_DRA_INTERNAL_ERROR;
                }
                if (!fsmo_master_cmp(ntds_dn, fsmo_role_dn)) {
-                       return drepl_request_extended_op(service,
+                       WERROR werr;
+                       werr = drepl_request_extended_op(service,
                                                         role_owner_dn,
                                                         fsmo_role_dn,
                                                         DRSUAPI_EXOP_FSMO_REQ_ROLE,
                                                         alloc_pool,
                                                         drepl_role_callback);
+                       if (W_ERROR_IS_OK(werr)) {
+                               dreplsrv_run_pending_ops(service);
+                       } else {
+                               DEBUG(0,("%s: drepl_request_extended_op() failed with %s",
+                                                __FUNCTION__, win_errstr(werr)));
+                       }
+                       return werr;
                }
                break;
        case DREPL_PDC_MASTER: