[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-2937-g4ac537d
Jeremy Allison
jra at samba.org
Wed Aug 20 00:32:50 GMT 2008
The branch, v3-2-test has been updated
via 4ac537d1b78c915fe25c219958312cf22f3cba80 (commit)
from 7401c6a5b74c9c82c02923e6eafa6072a5d5678f (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 4ac537d1b78c915fe25c219958312cf22f3cba80
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 19 17:31:46 2008 -0700
Fix bug 5697 nmbd spins in reload_interfaces when only loopback has an IPv4 address
reported by Ted Percival <ted at midg3t.net>.
Jeremy.
-----------------------------------------------------------------------
Summary of changes:
source/lib/interface.c | 7 +++++--
source/nmbd/nmbd.c | 4 ++--
source/nmbd/nmbd_subnetdb.c | 11 ++++++-----
3 files changed, 13 insertions(+), 9 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/lib/interface.c b/source/lib/interface.c
index eb0af9e..2e7c270 100644
--- a/source/lib/interface.c
+++ b/source/lib/interface.c
@@ -131,15 +131,18 @@ int iface_count(void)
}
/****************************************************************************
- How many interfaces do we have (v4 only) ?
+ How many non-loopback IPv4 interfaces do we have ?
**************************************************************************/
-int iface_count_v4(void)
+int iface_count_v4_nl(void)
{
int ret = 0;
struct interface *i;
for (i=local_interfaces;i;i=i->next) {
+ if (is_loopback_addr(&i->ip)) {
+ continue;
+ }
if (i->ip.ss_family == AF_INET) {
ret++;
}
diff --git a/source/nmbd/nmbd.c b/source/nmbd/nmbd.c
index af4acc8..b72be2b 100644
--- a/source/nmbd/nmbd.c
+++ b/source/nmbd/nmbd.c
@@ -293,8 +293,8 @@ static void reload_interfaces(time_t t)
BlockSignals(false, SIGTERM);
- /* We only count IPv4 interfaces here. */
- while (iface_count_v4() == 0 && !got_sig_term) {
+ /* We only count IPv4, non-loopback interfaces here. */
+ while (iface_count_v4_nl() == 0 && !got_sig_term) {
sleep(5);
load_interfaces();
}
diff --git a/source/nmbd/nmbd_subnetdb.c b/source/nmbd/nmbd_subnetdb.c
index a4422d2..225def5 100644
--- a/source/nmbd/nmbd_subnetdb.c
+++ b/source/nmbd/nmbd_subnetdb.c
@@ -195,19 +195,20 @@ struct subnet_record *make_normal_subnet(const struct interface *iface)
bool create_subnets(void)
{
/* We only count IPv4 interfaces whilst we're waiting. */
- int num_interfaces = iface_count_v4();
+ int num_interfaces;
int i;
struct in_addr unicast_ip, ipzero;
try_interfaces_again:
- if (iface_count_v4() == 0) {
- DEBUG(0,("create_subnets: No local interfaces !\n"));
+ /* Only count IPv4, non-loopback interfaces. */
+ if (iface_count_v4_nl() == 0) {
+ DEBUG(0,("create_subnets: No local IPv4 non-loopback interfaces !\n"));
DEBUG(0,("create_subnets: Waiting for an interface to appear ...\n"));
}
- /* We only count IPv4 interfaces here. */
- while (iface_count_v4() == 0) {
+ /* We only count IPv4, non-loopback interfaces here. */
+ while (iface_count_v4_nl() == 0) {
void (*saved_handler)(int);
/*
--
Samba Shared Repository
More information about the samba-cvs
mailing list