diff options
-rw-r--r-- | source4/dsdb/repl/drepl_partitions.c | 37 | ||||
-rw-r--r-- | source4/rpc_server/drsuapi/getncchanges.c | 37 |
2 files changed, 3 insertions, 71 deletions
diff --git a/source4/dsdb/repl/drepl_partitions.c b/source4/dsdb/repl/drepl_partitions.c index 6687effe6d..b57a5c81c0 100644 --- a/source4/dsdb/repl/drepl_partitions.c +++ b/source4/dsdb/repl/drepl_partitions.c @@ -212,40 +212,6 @@ static WERROR udv_convert(TALLOC_CTX *mem_ctx, return WERR_OK; } -/* - add our local UDV element for the partition - */ -static WERROR add_local_udv(struct dreplsrv_service *s, - struct dreplsrv_partition *p, - const struct GUID *our_invocation_id, - struct drsuapi_DsReplicaCursorCtrEx *udv) -{ - int ret; - uint64_t highest_usn; - int i; - - ret = dsdb_load_partition_usn(s->samdb, p->dn, &highest_usn, NULL); - if (ret != LDB_SUCCESS) { - /* nothing to add */ - return WERR_OK; - } - - for (i=0; i<udv->count; i++) { - if (GUID_equal(our_invocation_id, &udv->cursors[i].source_dsa_invocation_id)) { - udv->cursors[i].highest_usn = highest_usn; - return WERR_OK; - } - } - - udv->cursors = talloc_realloc(p, udv->cursors, struct drsuapi_DsReplicaCursor, udv->count+1); - W_ERROR_HAVE_NO_MEMORY(udv->cursors); - - udv->cursors[udv->count].source_dsa_invocation_id = *our_invocation_id; - udv->cursors[udv->count].highest_usn = highest_usn; - udv->count++; - - return WERR_OK; -} static WERROR dreplsrv_refresh_partition(struct dreplsrv_service *s, struct dreplsrv_partition *p) @@ -296,9 +262,6 @@ static WERROR dreplsrv_refresh_partition(struct dreplsrv_service *s, W_ERROR_NOT_OK_RETURN(status); } - status = add_local_udv(s, p, samdb_ntds_invocation_id(s->samdb), &p->uptodatevector_ex); - W_ERROR_NOT_OK_RETURN(status); - orf_el = ldb_msg_find_element(r->msgs[0], "repsFrom"); if (orf_el) { for (i=0; i < orf_el->num_values; i++) { diff --git a/source4/rpc_server/drsuapi/getncchanges.c b/source4/rpc_server/drsuapi/getncchanges.c index afa1bba3ee..74c5d4aa95 100644 --- a/source4/rpc_server/drsuapi/getncchanges.c +++ b/source4/rpc_server/drsuapi/getncchanges.c @@ -417,13 +417,9 @@ static WERROR get_nc_changes_add_links(struct ldb_context *sam_ctx, */ static WERROR get_nc_changes_udv(struct ldb_context *sam_ctx, struct ldb_dn *ncRoot_dn, - struct drsuapi_DsReplicaCursor2CtrEx *udv, - uint64_t highestUSN) + struct drsuapi_DsReplicaCursor2CtrEx *udv) { - struct drsuapi_DsReplicaCursor2 *tmp_cursor; - NTTIME now; - time_t t = time(NULL); - int i, ret; + int ret; udv->version = 2; udv->reserved1 = 0; @@ -436,32 +432,6 @@ static WERROR get_nc_changes_udv(struct ldb_context *sam_ctx, return WERR_DS_DRA_INTERNAL_ERROR; } - tmp_cursor = talloc(udv, struct drsuapi_DsReplicaCursor2); - tmp_cursor->source_dsa_invocation_id = *(samdb_ntds_invocation_id(sam_ctx)); - tmp_cursor->highest_usn = highestUSN; - unix_to_nt_time(&now, t); - tmp_cursor->last_sync_success = now; - - for (i=0; i<udv->count; i++) { - if (GUID_equal(&tmp_cursor->source_dsa_invocation_id, - &udv->cursors[i].source_dsa_invocation_id)) { - udv->cursors[i] = *tmp_cursor; - break; - } - } - if (i == udv->count) { - udv->cursors = talloc_realloc(udv, udv->cursors, struct drsuapi_DsReplicaCursor2, udv->count+1); - if (!udv->cursors) { - return WERR_DS_DRA_INTERNAL_ERROR; - } - udv->cursors[udv->count] = *tmp_cursor; - udv->count++; - } - - qsort(udv->cursors, udv->count, - sizeof(struct drsuapi_DsReplicaCursor2), - (comparison_fn_t)drsuapi_DsReplicaCursor2_compare); - return WERR_OK; } @@ -1030,8 +1000,7 @@ WERROR dcesrv_drsuapi_DsGetNCChanges(struct dcesrv_call_state *dce_call, TALLOC_ r->out.ctr->ctr6.new_highwatermark.highest_usn = r->out.ctr->ctr6.new_highwatermark.tmp_highest_usn; werr = get_nc_changes_udv(b_state->sam_ctx, getnc_state->ncRoot_dn, - r->out.ctr->ctr6.uptodateness_vector, - getnc_state->highest_usn); + r->out.ctr->ctr6.uptodateness_vector); if (!W_ERROR_IS_OK(werr)) { return werr; } |