s4-drs: update highwatermark after successfully encoding the object
authorAndrew Tridgell <tridge@samba.org>
Mon, 21 Dec 2009 10:16:35 +0000 (21:16 +1100)
committerAndrew Tridgell <tridge@samba.org>
Fri, 1 Jan 2010 21:16:52 +0000 (08:16 +1100)
source4/rpc_server/drsuapi/getncchanges.c

index 8ff5de5dc030f12dec66632c1143e636f224dcfc..cf4b637c0c6740bfc4f9b8915af16b545c911331 100644 (file)
@@ -768,14 +768,6 @@ WERROR dcesrv_drsuapi_DsGetNCChanges(struct dcesrv_call_state *dce_call, TALLOC_
 
                obj = talloc_zero(mem_ctx, struct drsuapi_DsReplicaObjectListItemEx);
 
-               uSN = ldb_msg_find_attr_as_int(msg, "uSNChanged", -1);
-               if (uSN > r->out.ctr->ctr6.new_highwatermark.tmp_highest_usn) {
-                       r->out.ctr->ctr6.new_highwatermark.tmp_highest_usn = uSN;
-               }
-               if (uSN > getnc_state->highest_usn) {
-                       getnc_state->highest_usn = uSN;
-               }
-
                werr = get_nc_changes_build_object(obj, msg,
                                                   b_state->sam_ctx, getnc_state->ncRoot_dn, 
                                                   schema, &session_key, getnc_state->min_usn,
@@ -795,6 +787,14 @@ WERROR dcesrv_drsuapi_DsGetNCChanges(struct dcesrv_call_state *dce_call, TALLOC_
                        return werr;
                }
 
+               uSN = ldb_msg_find_attr_as_int(msg, "uSNChanged", -1);
+               if (uSN > r->out.ctr->ctr6.new_highwatermark.tmp_highest_usn) {
+                       r->out.ctr->ctr6.new_highwatermark.tmp_highest_usn = uSN;
+               }
+               if (uSN > getnc_state->highest_usn) {
+                       getnc_state->highest_usn = uSN;
+               }
+
                if (obj->meta_data_ctr == NULL) {
                        DEBUG(0,(__location__ ": getncchanges skipping send of object %s\n",
                                 ldb_dn_get_linearized(msg->dn)));