diff options
Diffstat (limited to 'source3/smbd/server.c')
-rw-r--r-- | source3/smbd/server.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 854a61d385..8691603eb3 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -200,10 +200,21 @@ max can be %d\n", memcpy((char *)&lfds, (char *)&listen_set, sizeof(listen_set)); - num = sys_select_intr(FD_SETSIZE,&lfds,NULL); + num = sys_select(FD_SETSIZE,&lfds,NULL); - if (num == -1 && errno == EINTR) + if (num == -1 && errno == EINTR) { + extern VOLATILE SIG_ATOMIC_T reload_after_sighup; + + /* check for sighup processing */ + if (reload_after_sighup) { + unbecome_user(); + DEBUG(1,("Reloading services after SIGHUP\n")); + reload_services(False); + reload_after_sighup = False; + } + continue; + } /* check if we need to reload services */ check_reload(time(NULL)); |