diff options
author | Stefan Metzmacher <metze@sernet.de> | 2008-03-20 13:27:13 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2009-01-19 07:05:51 +0100 |
commit | bbe4785f342d6513fd001fdde94a945b2f2b654a (patch) | |
tree | 2160d50cee12e0d499a9a75f560a8327737eb978 /source4/wrepl_server | |
parent | c4402e3fde823a1984cc10f390d09c0ef9c8af0d (diff) | |
download | samba-bbe4785f342d6513fd001fdde94a945b2f2b654a.tar.gz samba-bbe4785f342d6513fd001fdde94a945b2f2b654a.tar.xz samba-bbe4785f342d6513fd001fdde94a945b2f2b654a.zip |
wrepl_server: fix the record expire time of sgroup merges
if we're the owner, the expire time becomes the highest
expire time of owned addresses
metze
(from samba4wins tree 024f439db45046c7c0bb4759c75877462405baec)
Diffstat (limited to 'source4/wrepl_server')
-rw-r--r-- | source4/wrepl_server/wrepl_apply_records.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source4/wrepl_server/wrepl_apply_records.c b/source4/wrepl_server/wrepl_apply_records.c index 17777f4dcff..6db093b619f 100644 --- a/source4/wrepl_server/wrepl_apply_records.c +++ b/source4/wrepl_server/wrepl_apply_records.c @@ -1283,7 +1283,25 @@ static NTSTATUS r_do_sgroup_merge(struct wreplsrv_partner *partner, * will be owner of the merge result, otherwise we take the ownership */ if (become_owner) { + time_t lh = 0; + modify_flags = WINSDB_FLAG_ALLOC_VERSION | WINSDB_FLAG_TAKE_OWNERSHIP; + + /* + * if we're the owner, the expire time becomes the highest + * expire time of owned addresses + */ + len = winsdb_addr_list_length(merge->addresses); + + for (i=0; i < len; i++) { + if (strcmp(merge->addresses[i]->wins_owner, local_owner)==0) { + lh = MAX(lh, merge->addresses[i]->expire_time); + } + } + + if (lh != 0) { + merge->expire_time = lh; + } } ret = winsdb_modify(partner->service->wins_db, merge, modify_flags); |