The branch, v3-0-test has been updated
       via  6acd5c086b0019f54749a67756975b3c0ba35ac0 (commit)
      from  d29db976dcffef772044b1e5246ec6715d6afbbb (commit)

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


- Log -----------------------------------------------------------------
commit 6acd5c086b0019f54749a67756975b3c0ba35ac0
Author: Jeremy Allison <[EMAIL PROTECTED]>
Date:   Tue Aug 19 18:13:25 2008 -0700

    Fix bug 5697 nmbd spins in reload_interfaces when only loopback exists.
    Reported by Ted Percival <[EMAIL PROTECTED]>.
    Jeremy.

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

Summary of changes:
 source/lib/interface.c      |   17 +++++++++++++++++
 source/nmbd/nmbd.c          |    2 +-
 source/nmbd/nmbd_subnetdb.c |    6 +++---
 3 files changed, 21 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/interface.c b/source/lib/interface.c
index e2c9294..32a53f2 100644
--- a/source/lib/interface.c
+++ b/source/lib/interface.c
@@ -301,6 +301,23 @@ int iface_count(void)
 }
 
 /****************************************************************************
+  how many non-loopback interfaces do we have
+  **************************************************************************/
+int iface_count_nl(void)
+{
+       int ret = 0;
+       struct interface *i;
+
+       for (i=local_interfaces;i;i=i->next) {
+               if (ip_equal(i->ip, loopback_ip)) {
+                       continue;
+               }
+               ret++;
+       }
+       return ret;
+}
+
+/****************************************************************************
   return the Nth interface
   **************************************************************************/
 struct interface *get_interface(int n)
diff --git a/source/nmbd/nmbd.c b/source/nmbd/nmbd.c
index df38399..7daf62a 100644
--- a/source/nmbd/nmbd.c
+++ b/source/nmbd/nmbd.c
@@ -248,7 +248,7 @@ static void reload_interfaces(time_t t)
 
                BlockSignals(false, SIGTERM);
 
-                while (iface_count() == 0 && !got_sig_term) {
+                while (iface_count_nl() == 0 && !got_sig_term) {
                        sleep(5);
                        load_interfaces();
                }
diff --git a/source/nmbd/nmbd_subnetdb.c b/source/nmbd/nmbd_subnetdb.c
index 61db70f..3732407 100644
--- a/source/nmbd/nmbd_subnetdb.c
+++ b/source/nmbd/nmbd_subnetdb.c
@@ -186,12 +186,12 @@ BOOL create_subnets(void)
 
   try_interfaces_again:
 
-       if (iface_count() == 0) {
-               DEBUG(0,("create_subnets: No local interfaces !\n"));
+       if (iface_count_nl() == 0) {
+               DEBUG(0,("create_subnets: No non-loopback local interfaces 
!\n"));
                DEBUG(0,("create_subnets: Waiting for an interface to appear 
...\n"));
        }
 
-       while (iface_count() == 0) {
+       while (iface_count_nl() == 0) {
                void (*saved_handler)(int);
 
                /* 


-- 
Samba Shared Repository

Reply via email to