summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@sernet.de>2008-03-25 17:30:52 +0100
committerStefan Metzmacher <metze@samba.org>2009-01-19 07:05:52 +0100
commitfb64b12be5c347645976f8000a79f2d31c9a5c79 (patch)
tree6026a38f73bfff4baecb5b444ac2450ca16d0e01
parent81a2a43a5a3c13d08ed458d861d47f63a15ceac9 (diff)
downloadsamba-fb64b12be5c347645976f8000a79f2d31c9a5c79.tar.gz
samba-fb64b12be5c347645976f8000a79f2d31c9a5c79.tar.bz2
samba-fb64b12be5c347645976f8000a79f2d31c9a5c79.zip
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)
-rw-r--r--source4/nbt_server/wins/winsserver.c13
1 files changed, 12 insertions, 1 deletions
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