This is actually Jeremy, working as Herb :-).
authorHerb Lewis <herb@samba.org>
Wed, 24 Dec 1997 15:42:14 +0000 (15:42 +0000)
committerHerb Lewis <herb@samba.org>
Wed, 24 Dec 1997 15:42:14 +0000 (15:42 +0000)
Fixed bug where, when server is shut down it would always
do a lm announce broadcast of shutdown. This could cause other
nmbd's to think that they have seen an lm announce broadcast and
start doing it themselves.
Changed to only send lm announce shutdown if admin configured it
or one was seen on the subnet.
Jeremy.

source/nmbd/nmbd_sendannounce.c

index aac3dad3662ed4c58c7fbc9ab922ff171c2792cd..e859ff6bb70cbdaffd41f01da8a0ef116622eb37 100644 (file)
@@ -430,7 +430,10 @@ This must *only* be called on shutdown.
 
 void announce_my_servers_removed(void)
 {
+  int announce_interval = lp_lm_interval();
+  int lm_announce = lp_lm_announce();
   struct subnet_record *subrec; 
+
   for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec))
   {
     struct work_record *work;
@@ -447,6 +450,25 @@ void announce_my_servers_removed(void)
         if(AM_LOCAL_MASTER_BROWSER(work))
           send_local_master_announcement(subrec, work, servrec);
         send_host_announcement(subrec, work, servrec);
+
+
+        if ((announce_interval <= 0) || (lm_announce <= 0))
+        {
+          /* user absolutely does not want LM announcements to be sent. */
+          continue;
+        }
+
+        if ((lm_announce >= 2) && (!found_lm_clients))
+        {
+          /* has been set to 2 (Auto) but no LM clients detected (yet). */
+          continue;
+        }
+
+        /* 
+         * lm announce was set or we have seen lm announcements, so do
+         * a lm announcement of host removed.
+         */
+
         send_lm_host_announcement(subrec, work, servrec, 0);
       }
     }