From: Jeremy Allison Date: Tue, 5 Jun 2007 01:59:37 +0000 (+0000) Subject: r23349: Fix from Steve Langasek to X-Git-Tag: samba-misc-tags/initial-v3-0-unstable~267 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9ee310f3d68426da552f084ebcffef6b8ebbf612;p=thirdparty%2Fsamba.git r23349: Fix from Steve Langasek to allow SIGTERM to cause nmbd to exit on awaiting an interface to come up. Debian bug #168079 Jeremy. --- diff --git a/source/nmbd/nmbd_subnetdb.c b/source/nmbd/nmbd_subnetdb.c index 4b04751235d..398119cc829 100644 --- a/source/nmbd/nmbd_subnetdb.c +++ b/source/nmbd/nmbd_subnetdb.c @@ -185,12 +185,28 @@ BOOL create_subnets(void) struct in_addr unicast_ip, ipzero; if(num_interfaces == 0) { + void (*saved_handler)(int); + DEBUG(0,("create_subnets: No local interfaces !\n")); DEBUG(0,("create_subnets: Waiting for an interface to appear ...\n")); + + /* + * Whilst we're waiting for an interface, allow SIGTERM to + * cause us to exit. + */ + + saved_handler = CatchSignal( SIGTERM, SIGNAL_CAST SIG_DFL ); + while (iface_count() == 0) { sleep(5); load_interfaces(); } + + /* + * We got an interface, restore our normal term handler. + */ + + CatchSignal( SIGTERM, SIGNAL_CAST saved_handler ); } num_interfaces = iface_count();