diff options
author | Andrew Tridgell <tridge@samba.org> | 1996-06-08 04:41:51 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1996-06-08 04:41:51 +0000 |
commit | bfbca5ac7706d03056366b84b679faeab904ecae (patch) | |
tree | 76245c69b26accaa49216a8b7e343888d48b6d05 /source3/nmbd | |
parent | b1228b7dcf5257534109fdaefb40c67645bc2a4a (diff) | |
download | samba-bfbca5ac7706d03056366b84b679faeab904ecae.tar.gz samba-bfbca5ac7706d03056366b84b679faeab904ecae.tar.xz samba-bfbca5ac7706d03056366b84b679faeab904ecae.zip |
changes from Luke
(This used to be commit 5269aa277c635cfda65a27fd1b2e587ac181e1c3)
Diffstat (limited to 'source3/nmbd')
-rw-r--r-- | source3/nmbd/nmbd.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index cd2ebb0521..8ab9f528ef 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/nmbd/nmbd.c @@ -55,6 +55,28 @@ time_t StartupTime =0; extern struct in_addr ipzero; + /**************************************************************************** +catch a sigterm +****************************************************************************/ +static int sig_term() +{ + BlockSignals(True); + + DEBUG(0,("Got SIGTERM: going down...\n")); + + dump_names(); + reload_services(True); + + /* remove all samba names, with wins server if necessary. */ + remove_my_names(); + + /* XXXX don't care if we never receive a response back... yet */ + /* XXXX other things: if we are a master browser, force an election? */ + + exit(0); +} + + /**************************************************************************** catch a sighup ****************************************************************************/ @@ -267,7 +289,7 @@ static void load_hosts_file(char *fname) if (group) { add_domain_entry(ipaddr, ipmask, name, True); } else { - add_netbios_entry(name,0x20,NB_ACTIVE,0,source,ipaddr,False); + add_netbios_entry(name,0x20,NB_ACTIVE,0,source,ipaddr); } } } @@ -426,8 +448,9 @@ static void usage(char *pname) fault_setup(fault_continue); signal(SIGHUP,SIGNAL_CAST sig_hup); + signal(SIGTERM,SIGNAL_CAST sig_term); - while ((opt = getopt (argc, argv, "s:T:I:C:bAi:B:N:Rn:l:d:Dp:hSH:G:")) != EOF) + while ((opt = getopt(argc, argv, "s:T:I:C:bAi:B:N:Rn:l:d:Dp:hSH:G:")) != EOF) { switch (opt) { |