s3:smbd: use tevent_loop_once() in the parent event loop
authorStefan Metzmacher <metze@samba.org>
Mon, 16 Mar 2009 14:55:39 +0000 (15:55 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 18 Mar 2009 06:00:40 +0000 (07:00 +0100)
metze

source3/smbd/server.c

index 2400b5c104e4a3faf6fcdcb715770f407b35702c..d27f98281b388c527638eef087137a9be55f7731 100644 (file)
@@ -654,45 +654,16 @@ static void smbd_parent_loop(struct smbd_parent_context *parent)
 {
        /* now accept incoming connections - forking a new process
           for each incoming connection */
-       DEBUG(2,("waiting for a connection\n"));
+       DEBUG(2,("waiting for connections\n"));
        while (1) {
-               struct timeval now, idle_timeout;
-               fd_set r_fds, w_fds;
-               int maxfd = 0;
-               int num;
+               int ret;
                TALLOC_CTX *frame = talloc_stackframe();
 
-               if (run_events(smbd_event_context(), 0, NULL, NULL)) {
-                       TALLOC_FREE(frame);
-                       continue;
-               }
-
-               idle_timeout = timeval_zero();
-
-               FD_ZERO(&w_fds);
-               FD_ZERO(&r_fds);
-               GetTimeOfDay(&now);
-
-               event_add_to_select_args(smbd_event_context(), &now,
-                                        &r_fds, &w_fds, &idle_timeout,
-                                        &maxfd);
-
-               num = sys_select(maxfd+1,&r_fds,&w_fds,NULL,
-                                timeval_is_zero(&idle_timeout) ?
-                                NULL : &idle_timeout);
-
-               /* check if we need to reload services */
-               check_reload(time(NULL));
-
-               if (run_events(smbd_event_context(), num, &r_fds, &w_fds)) {
-                       TALLOC_FREE(frame);
-                       continue;
+               ret = tevent_loop_once(smbd_event_context());
+               if (ret != 0) {
+                       exit_server_cleanly("tevent_loop_once() error");
                }
 
-               /* socket error */
-               if (num < 0)
-                       exit_server_cleanly("socket error");
-
                TALLOC_FREE(frame);
        } /* end while 1 */