Clarify nomaclature of socket names in process_single and process_prefork
authorAndrew Bartlett <abartlet@samba.org>
Tue, 5 Feb 2008 03:51:01 +0000 (14:51 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 5 Feb 2008 03:51:01 +0000 (14:51 +1100)
Fix talloc_steal in both cases to steal connected socket (from accept)
onto it's private structure, rather than stealing the bound socket.

Remove termination code from the prefork modal, we want the process to
still stay around, to serve future clients.

Andrew Bartlett and David Disseldorp
(This used to be commit 07590d893e993919cf6cb7582310777f534e756f)

source4/smbd/process_prefork.c
source4/smbd/process_single.c

index 9f975b46410ad09bcb9e36ea96b3b943a4805b54..ab4a89bd26216351fef8d9b76e416a970e474cde 100644 (file)
@@ -58,26 +58,26 @@ static void prefork_model_init(struct event_context *ev)
   called when a listening socket becomes readable. 
 */
 static void prefork_accept_connection(struct event_context *ev, 
   called when a listening socket becomes readable. 
 */
 static void prefork_accept_connection(struct event_context *ev, 
-                                      struct loadparm_context *lp_ctx,
-                                      struct socket_context *sock, 
+                                     struct loadparm_context *lp_ctx,
+                                     struct socket_context *listen_socket,
                                       void (*new_conn)(struct event_context *,
                                                        struct loadparm_context *, struct socket_context *, 
                                                        struct server_id , void *), 
                                       void *private)
 {
        NTSTATUS status;
                                       void (*new_conn)(struct event_context *,
                                                        struct loadparm_context *, struct socket_context *, 
                                                        struct server_id , void *), 
                                       void *private)
 {
        NTSTATUS status;
-       struct socket_context *sock2;
+       struct socket_context *connected_socket;
        pid_t pid = getpid();
 
        /* accept an incoming connection. */
        pid_t pid = getpid();
 
        /* accept an incoming connection. */
-       status = socket_accept(sock, &sock2);
+       status = socket_accept(listen_socket, &connected_socket);
        if (!NT_STATUS_IS_OK(status)) {
                return;
        }
 
        if (!NT_STATUS_IS_OK(status)) {
                return;
        }
 
-       talloc_steal(private, sock);
+       talloc_steal(private, connected_socket);
 
 
-       new_conn(ev, lp_ctx, sock2, cluster_id(pid, socket_get_fd(sock2)), private);
+       new_conn(ev, lp_ctx, connected_socket, cluster_id(pid, socket_get_fd(connected_socket)), private);
 }
 
 /*
 }
 
 /*
@@ -184,18 +184,6 @@ static void prefork_new_task(struct event_context *ev,
 _NORETURN_ static void prefork_terminate(struct event_context *ev, const char *reason) 
 {
        DEBUG(2,("prefork_terminate: reason[%s]\n",reason));
 _NORETURN_ static void prefork_terminate(struct event_context *ev, const char *reason) 
 {
        DEBUG(2,("prefork_terminate: reason[%s]\n",reason));
-
-       /* this reload_charcnv() has the effect of freeing the iconv context memory,
-          which makes leak checking easier */
-       reload_charcnv(global_loadparm);
-
-       /* the secrets db should really hang off the connection structure */
-       secrets_shutdown();
-
-       talloc_free(ev);
-
-       /* terminate this process */
-       exit(0);
 }
 
 /* called to set a title of a task or connection */
 }
 
 /* called to set a title of a task or connection */
index 2d3c94ca6dda436f0925c813f8d1ce54bd63ec73..a7a27ef9e0a5f34b713c7aab1a331bf80e0c6497 100644 (file)
@@ -38,7 +38,7 @@ static void single_model_init(struct event_context *ev)
 */
 static void single_accept_connection(struct event_context *ev, 
                                     struct loadparm_context *lp_ctx,
 */
 static void single_accept_connection(struct event_context *ev, 
                                     struct loadparm_context *lp_ctx,
-                                    struct socket_context *sock,
+                                    struct socket_context *listen_socket,
                                     void (*new_conn)(struct event_context *, 
                                                      struct loadparm_context *,
                                                      struct socket_context *, 
                                     void (*new_conn)(struct event_context *, 
                                                      struct loadparm_context *,
                                                      struct socket_context *, 
@@ -46,10 +46,10 @@ static void single_accept_connection(struct event_context *ev,
                                     void *private)
 {
        NTSTATUS status;
                                     void *private)
 {
        NTSTATUS status;
-       struct socket_context *sock2;
+       struct socket_context *connected_socket;
 
        /* accept an incoming connection. */
 
        /* accept an incoming connection. */
-       status = socket_accept(sock, &sock2);
+       status = socket_accept(listen_socket, &connected_socket);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0,("single_accept_connection: accept: %s\n", nt_errstr(status)));
                /* this looks strange, but is correct. 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0,("single_accept_connection: accept: %s\n", nt_errstr(status)));
                /* this looks strange, but is correct. 
@@ -67,11 +67,12 @@ static void single_accept_connection(struct event_context *ev,
                return;
        }
 
                return;
        }
 
-       talloc_steal(private, sock);
+       talloc_steal(private, connected_socket);
 
        /* The cluster_id(0, fd) cannot collide with the incrementing
         * task below, as the first component is 0, not 1 */
 
        /* The cluster_id(0, fd) cannot collide with the incrementing
         * task below, as the first component is 0, not 1 */
-       new_conn(ev, lp_ctx, sock2, cluster_id(0, socket_get_fd(sock2)), private);
+       new_conn(ev, lp_ctx, connected_socket, 
+                cluster_id(0, socket_get_fd(connected_socket)), private);
 }
 
 /*
 }
 
 /*