s4-repl: make sure we marshal the replPropertyMetaData after the last change
authorAndrew Tridgell <tridge@samba.org>
Tue, 15 Sep 2009 18:46:59 +0000 (11:46 -0700)
committerAndrew Tridgell <tridge@samba.org>
Wed, 16 Sep 2009 01:45:42 +0000 (18:45 -0700)
we were setting local_usn after the marshall, so it wasn't going into
the object

source4/dsdb/samdb/ldb_modules/repl_meta_data.c

index f9411fe95f2993a25328ca77fb285a6ef838b319..26703528a7f32c4ea355f15629cd6ee884aabcf8 100644 (file)
@@ -1352,16 +1352,6 @@ static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
                replmd_replPropertyMetaDataCtr1_sort(&nmd.ctr.ctr1, &rdn_p->attid);
        }
 
-       /* create the meta data value */
-       ndr_err = ndr_push_struct_blob(&nmd_value, msg, 
-                                      lp_iconv_convenience(ldb_get_opaque(ldb, "loadparm")),
-                                      &nmd,
-                                      (ndr_push_flags_fn_t)ndr_push_replPropertyMetaDataBlob);
-       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-               NTSTATUS nt_status = ndr_map_error2ntstatus(ndr_err);
-               return replmd_replicated_request_werror(ar, ntstatus_to_werror(nt_status));
-       }
-
        /*
         * check if some replicated attributes left, otherwise skip the ldb_modify() call
         */
@@ -1385,6 +1375,16 @@ static int replmd_replicated_apply_merge(struct replmd_replicated_request *ar)
                nmd.ctr.ctr1.array[i].local_usn = seq_num;
        }
 
+       /* create the meta data value */
+       ndr_err = ndr_push_struct_blob(&nmd_value, msg, 
+                                      lp_iconv_convenience(ldb_get_opaque(ldb, "loadparm")),
+                                      &nmd,
+                                      (ndr_push_flags_fn_t)ndr_push_replPropertyMetaDataBlob);
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               NTSTATUS nt_status = ndr_map_error2ntstatus(ndr_err);
+               return replmd_replicated_request_werror(ar, ntstatus_to_werror(nt_status));
+       }
+
        /*
         * when we know that we'll modify the record, add the whenChanged, uSNChanged
         * and replPopertyMetaData attributes