svn commit: samba r13087 - in branches/SAMBA_4_0/source/nbt_server/wins: .

metze at samba.org metze at samba.org
Mon Jan 23 14:54:10 GMT 2006


Author: metze
Date: 2006-01-23 14:54:10 +0000 (Mon, 23 Jan 2006)
New Revision: 13087

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13087

Log:
don't store timestamps for static records
(only a per record timestamp when it's not active)

metze
Modified:
   branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c


Changeset:
Modified: branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c
===================================================================
--- branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c	2006-01-23 14:47:55 UTC (rev 13086)
+++ branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c	2006-01-23 14:54:10 UTC (rev 13087)
@@ -310,22 +310,30 @@
 
 /*
  encode the winsdb_addr("address") attribute like this:
+ non-static record:
  "172.31.1.1;winsOwner:172.31.9.202;expireTime:20050923032330.0Z;"
+ static record:
+ "172.31.1.1"
 */
-static int ldb_msg_add_winsdb_addr(struct ldb_message *msg, 
+static int ldb_msg_add_winsdb_addr(struct ldb_message *msg, struct winsdb_record *rec,
 				   const char *attr_name, struct winsdb_addr *addr)
 {
 	struct ldb_val val;
 	const char *str;
-	char *expire_time;
 
-	expire_time = ldb_timestring(msg, addr->expire_time);
-	if (!expire_time) return -1;
-	str = talloc_asprintf(msg, "%s;winsOwner:%s;expireTime:%s;",
-			      addr->address, addr->wins_owner,
-			      expire_time);
-	talloc_free(expire_time);
-	if (!str) return -1;
+	if (rec->is_static) {
+		str = talloc_strdup(msg, addr->address);
+		if (!str) return -1;
+	} else {
+		char *expire_time;
+		expire_time = ldb_timestring(msg, addr->expire_time);
+		if (!expire_time) return -1;
+		str = talloc_asprintf(msg, "%s;winsOwner:%s;expireTime:%s;",
+				      addr->address, addr->wins_owner,
+				      expire_time);
+		talloc_free(expire_time);
+		if (!str) return -1;
+	}
 
 	val.data = discard_const_p(uint8_t, str);
 	val.length = strlen(str);
@@ -617,13 +625,6 @@
 	struct ldb_message *msg = ldb_msg_new(mem_ctx);
 	if (msg == NULL) goto failed;
 
-	if (rec->is_static && rec->state == WREPL_STATE_ACTIVE) {
-		rec->expire_time = get_time_t_max();
-		for (i=0;rec->addresses[i];i++) {
-			rec->addresses[i]->expire_time = rec->expire_time;
-		}
-	}
-
 	/* make sure we don't put in corrupted records */
 	addr_count = winsdb_addr_list_length(rec->addresses);
 	if (rec->state == WREPL_STATE_ACTIVE && addr_count == 0) {
@@ -652,12 +653,15 @@
 	ret |= ldb_msg_add_fmt(msg, "recordState", "%u", rec->state);
 	ret |= ldb_msg_add_fmt(msg, "nodeType", "%u", rec->node);
 	ret |= ldb_msg_add_fmt(msg, "isStatic", "%u", rec->is_static);
-	ret |= ldb_msg_add_string(msg, "expireTime", expire_time);
+	ret |= ldb_msg_add_empty(msg, "expireTime", 0);
+	if (!(rec->is_static && rec->state == WREPL_STATE_ACTIVE)) {
+		ret |= ldb_msg_add_string(msg, "expireTime", expire_time);
+	}
 	ret |= ldb_msg_add_fmt(msg, "versionID", "%llu", (long long)rec->version);
 	ret |= ldb_msg_add_string(msg, "winsOwner", rec->wins_owner);
 	ret |= ldb_msg_add_empty(msg, "address", 0);
 	for (i=0;rec->addresses[i];i++) {
-		ret |= ldb_msg_add_winsdb_addr(msg, "address", rec->addresses[i]);
+		ret |= ldb_msg_add_winsdb_addr(msg, rec, "address", rec->addresses[i]);
 	}
 	ret |= ldb_msg_add_empty(msg, "registeredBy", 0);
 	if (rec->registered_by) {



More information about the samba-cvs mailing list