fixed a bug in the wins database writer that caused the database to be
authorAndrew Tridgell <tridge@samba.org>
Thu, 10 Sep 1998 04:00:09 +0000 (04:00 +0000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 10 Sep 1998 04:00:09 +0000 (04:00 +0000)
written continuously rather than once every 5 seconds (at most).

also changed it to 20 seconds :)
(This used to be commit 1b07de7079e81da9c0b930bdc30ae0451b57d53a)

source3/nmbd/nmbd_winsserver.c

index 48d27f7bae96d35a78ab13c2c967debcb52ece3b..1502dd8155d7912d250eb32c9aa2f5e9a7f9f18b 100644 (file)
@@ -1524,9 +1524,11 @@ void initiate_wins_processing(time_t t)
 
   if (!lasttime)
     lasttime = t;
-  if (t - lasttime < 5)
+  if (t - lasttime < 20)
     return;
 
+  lasttime = t;
+
   if(!lp_we_are_a_wins_server())
     return;
 
@@ -1541,17 +1543,23 @@ void initiate_wins_processing(time_t t)
 /*******************************************************************
  Write out the current WINS database.
 ******************************************************************/
-
 void wins_write_database(void)
 {
   struct name_record *namerec;
   pstring fname, fnamenew;
-   
+  static int child_pid;
+
   FILE *fp;
    
   if(!lp_we_are_a_wins_server())
     return;
 
+  /* we will do the writing in a child process to ensure that the parent
+     doesn't block while this is done */
+  if ((child_pid=fork())) {
+         return;
+  }
+
   pstrcpy(fname,lp_lockdir());
   trim_string(fname,NULL,"/");
   pstrcat(fname,"/");