From: Stefan Metzmacher Date: Tue, 25 Mar 2008 16:30:52 +0000 (+0100) Subject: winsserver_release: update the expire time if only one address is released X-Git-Tag: samba-4.0.0alpha6~16 X-Git-Url: http://git.samba.org/?p=samba.git;a=commitdiff_plain;h=fb64b12be5c347645976f8000a79f2d31c9a5c79 winsserver_release: update the expire time if only one address is released We also take the ownership if the record isn't owned. This matches windows... metze (from samba4wins tree d7b19339c0444cbe0989fcfa91a22323215d2f6b) --- diff --git a/source4/nbt_server/wins/winsserver.c b/source4/nbt_server/wins/winsserver.c index c9d19936ed2..464bf804a70 100644 --- a/source4/nbt_server/wins/winsserver.c +++ b/source4/nbt_server/wins/winsserver.c @@ -939,7 +939,18 @@ static void nbtd_winsserver_release(struct nbt_name_socket *nbtsock, break; } - if (rec->state == WREPL_STATE_RELEASED) { + if (rec->state == WREPL_STATE_ACTIVE) { + /* + * If the record is still active, we need to update the + * expire_time. + * + * if we're not the owner, we need to take the ownership. + */ + rec->expire_time= time(NULL) + winssrv->config.max_renew_interval; + if (strcmp(rec->wins_owner, winssrv->wins_db->local_owner) != 0) { + modify_flags = WINSDB_FLAG_ALLOC_VERSION | WINSDB_FLAG_TAKE_OWNERSHIP; + } + } else if (rec->state == WREPL_STATE_RELEASED) { /* * if we're not the owner, we need to take the owner ship * and make the record tombstone, but expire after