summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/server.c15
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));