Reinitialize verto after creating worker child
authorGreg Hudson <ghudson@mit.edu>
Wed, 14 Sep 2011 16:12:29 +0000 (16:12 +0000)
committerGreg Hudson <ghudson@mit.edu>
Wed, 14 Sep 2011 16:12:29 +0000 (16:12 +0000)
Also mark fd events as reinitiable so they survive the fork.  From
npmccallum@redhat.com.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25175 dc483132-0cff-0310-8789-dd5450dbe970

src/kdc/main.c
src/lib/apputils/net-server.c

index 979c2173a00e3cd72d79384047667e8dec256206..c978a77a9c69a6a8428ad6b740a932ebf4707bc2 100644 (file)
@@ -550,6 +550,8 @@ create_workers(verto_ctx *ctx, int num)
     for (i = 0; i < num; i++) {
         pid = fork();
         if (pid == 0) {
+            verto_reinitialize(ctx);
+
             /* Return control to main() in the new worker process. */
             free(pids);
             return 0;
index fc6d6e7c48b2d27a391e295f69092055f506f053..546ed769ea2ffd7bfa00c5a66237653e9cafbc14 100644 (file)
@@ -580,7 +580,9 @@ static verto_ev *
 add_udp_fd(struct socksetup *data, int sock, int pktinfo)
 {
     return add_fd(data, sock, pktinfo ? CONN_UDP_PKTINFO : CONN_UDP,
-                  VERTO_EV_FLAG_IO_READ | VERTO_EV_FLAG_PERSIST,
+                  VERTO_EV_FLAG_IO_READ |
+                  VERTO_EV_FLAG_PERSIST |
+                  VERTO_EV_FLAG_REINITIABLE,
                   process_packet, 1);
 }
 
@@ -588,7 +590,9 @@ static verto_ev *
 add_tcp_listener_fd(struct socksetup *data, int sock)
 {
     return add_fd(data, sock, CONN_TCP_LISTENER,
-                  VERTO_EV_FLAG_IO_READ | VERTO_EV_FLAG_PERSIST,
+                  VERTO_EV_FLAG_IO_READ |
+                  VERTO_EV_FLAG_PERSIST |
+                  VERTO_EV_FLAG_REINITIABLE,
                   accept_tcp_connection, 1);
 }
 
@@ -666,7 +670,9 @@ add_rpc_listener_fd(struct socksetup *data, struct rpc_svc_data *svc, int sock)
     verto_ev *ev;
 
     ev = add_fd(data, sock, CONN_RPC_LISTENER,
-                VERTO_EV_FLAG_IO_READ | VERTO_EV_FLAG_PERSIST,
+                VERTO_EV_FLAG_IO_READ |
+                VERTO_EV_FLAG_PERSIST |
+                VERTO_EV_FLAG_REINITIABLE,
                 accept_rpc_connection, 1);
     if (ev == NULL)
         return NULL;