From fb64b12be5c347645976f8000a79f2d31c9a5c79 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 25 Mar 2008 17:30:52 +0100 Subject: 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) --- source4/nbt_server/wins/winsserver.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'source4/nbt_server') diff --git a/source4/nbt_server/wins/winsserver.c b/source4/nbt_server/wins/winsserver.c index c9d19936ed..464bf804a7 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 -- cgit