r12429: make static records always active with a max expire time
authorStefan Metzmacher <metze@samba.org>
Thu, 22 Dec 2005 09:56:14 +0000 (09:56 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:47:37 +0000 (13:47 -0500)
metze

source/nbt_server/wins/winsdb.c

index 8ed55dca1a2affc6c2e1dc1483510d7389d9b527..4cdcd592fca01c13759b0c0f93d3429369bd31bb 100644 (file)
@@ -496,6 +496,18 @@ NTSTATUS winsdb_record(struct ldb_message *msg, TALLOC_CTX *mem_ctx, struct wins
        }
        rec->addresses[i] = NULL;
 
+       if (rec->is_static) {
+               if (num_values < 1) {
+                       status = NT_STATUS_INTERNAL_DB_CORRUPTION;
+                       goto failed;
+               }
+               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;
+               }
+       }
+
        *_rec = rec;
        return NT_STATUS_OK;
 failed:
@@ -517,6 +529,14 @@ struct ldb_message *winsdb_message(struct ldb_context *ldb,
        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) {