The branch, v3-2-test has been updated
       via  59a2f0873c789822d46f862042921a8ba8f2bd28 (commit)
      from  641b5e3fecfce9581536de8daf6d7e6ecbefaf34 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 59a2f0873c789822d46f862042921a8ba8f2bd28
Author: Jeremy Allison <[EMAIL PROTECTED]>
Date:   Thu Apr 10 08:56:34 2008 -0700

    Fix the last reported debian problem with nmbd not waiting
    until interfaces come up.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/nmbd/nmbd_subnetdb.c |   32 ++++++++++++++++++++++----------
 1 files changed, 22 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/nmbd/nmbd_subnetdb.c b/source/nmbd/nmbd_subnetdb.c
index d100ad4..a4422d2 100644
--- a/source/nmbd/nmbd_subnetdb.c
+++ b/source/nmbd/nmbd_subnetdb.c
@@ -199,11 +199,16 @@ bool create_subnets(void)
        int i;
        struct in_addr unicast_ip, ipzero;
 
-       if(num_interfaces == 0) {
-               void (*saved_handler)(int);
+  try_interfaces_again:
 
+       if (iface_count_v4() == 0) {
                DEBUG(0,("create_subnets: No local interfaces !\n"));
                DEBUG(0,("create_subnets: Waiting for an interface to appear 
...\n"));
+       }
+
+       /* We only count IPv4 interfaces here. */
+       while (iface_count_v4() == 0) {
+               void (*saved_handler)(int);
 
                /*
                 * Whilst we're waiting for an interface, allow SIGTERM to
@@ -212,11 +217,8 @@ bool create_subnets(void)
 
                saved_handler = CatchSignal( SIGTERM, SIGNAL_CAST SIG_DFL );
 
-               /* We only count IPv4 interfaces here. */
-               while (iface_count_v4() == 0) {
-                       sleep(5);
-                       load_interfaces();
-               }
+               sleep(5);
+               load_interfaces();
 
                /*
                 * We got an interface, restore our normal term handler.
@@ -268,9 +270,19 @@ bool create_subnets(void)
 
         /* We must have at least one subnet. */
        if (subnetlist == NULL) {
-               DEBUG(0,("create_subnets: unable to create any subnet from "
-                               "given interfaces. nmbd is terminating\n"));
-               return False;
+               void (*saved_handler)(int);
+
+               DEBUG(0,("create_subnets: Unable to create any subnet from "
+                               "given interfaces. Is your interface line in "
+                               "smb.conf correct ?\n"));
+
+               saved_handler = CatchSignal( SIGTERM, SIGNAL_CAST SIG_DFL );
+
+               sleep(5);
+               load_interfaces();
+
+               CatchSignal( SIGTERM, SIGNAL_CAST saved_handler );
+               goto try_interfaces_again;
        }
 
        if (lp_we_are_a_wins_server()) {


-- 
Samba Shared Repository

Reply via email to