More spelling fixes across source4/
[samba.git] / source4 / smbd / process_single.c
index 221cfb780746d5c51da4d27feba9dacde55c1c24..ec5f529aa172f9cf308f0f96fbe44c78d39d4ce4 100644 (file)
@@ -9,7 +9,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -18,8 +18,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
 /*
   called when the process model is selected
 */
-static void single_model_init(struct event_context *ev)
+static void single_model_init(struct tevent_context *ev)
 {
 }
 
 /*
   called when a listening socket becomes readable. 
 */
-static void single_accept_connection(struct event_context *ev, 
-                                    struct socket_context *sock,
-                                    void (*new_conn)(struct event_context *, struct socket_context *, 
+static void single_accept_connection(struct tevent_context *ev, 
+                                    struct loadparm_context *lp_ctx,
+                                    struct socket_context *listen_socket,
+                                    void (*new_conn)(struct tevent_context *, 
+                                                     struct loadparm_context *,
+                                                     struct socket_context *, 
                                                      struct server_id , void *), 
-                                    void *private)
+                                    void *private_data)
 {
        NTSTATUS status;
-       struct socket_context *sock2;
+       struct socket_context *connected_socket;
 
        /* 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. We need to
-                  throttle things until the system clears enough
-                  resources to handle this new socket. If we don't
-                  then we will spin filling the log and causing more
-                  problems. We don't panic as this is probably a
-                  temporary resource constraint */
+               /* this looks strange, but is correct. 
+
+                  We can only be here if woken up from select, due to
+                  an incoming connection.
+
+                  We need to throttle things until the system clears
+                  enough resources to handle this new socket. 
+
+                  If we don't then we will spin filling the log and
+                  causing more problems. We don't panic as this is
+                  probably a temporary resource constraint */
                sleep(1);
                return;
        }
 
-       talloc_steal(private, sock);
+       talloc_steal(private_data, connected_socket);
 
-       new_conn(ev, sock2, cluster_id(socket_get_fd(sock2)), private);
+       /* 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, connected_socket, 
+                cluster_id(0, socket_get_fd(connected_socket)), private_data);
 }
 
 /*
   called to startup a new task
 */
-static void single_new_task(struct event_context *ev, 
-                           void (*new_task)(struct event_context *, struct server_id, void *), 
-                           void *private)
+static void single_new_task(struct tevent_context *ev, 
+                           struct loadparm_context *lp_ctx, 
+                           const char *service_name,
+                           void (*new_task)(struct tevent_context *, struct loadparm_context *, struct server_id, void *), 
+                           void *private_data)
 {
-       static uint32_t taskid = 0x10000000;
-       new_task(ev, cluster_id(taskid++), private);
+       /* start our taskids at 1, zero is reserved for the top
+          level samba task */
+       static uint32_t taskid = 1;
+       
+       /* We use 1 so we cannot collide in with cluster ids generated
+        * in the accept connection above, and unlikly to collide with
+        * PIDs from process modal standard (don't run samba as
+        * init) */
+       new_task(ev, lp_ctx, cluster_id(1, taskid++), private_data);
 }
 
 
 /* called when a task goes down */
-static void single_terminate(struct event_context *ev, const char *reason) 
+static void single_terminate(struct tevent_context *ev, struct loadparm_context *lp_ctx, const char *reason) 
 {
-       DEBUG(2,("single_terminate: reason[%s]\n",reason));
+       DEBUG(3,("single_terminate: reason[%s]\n",reason));
 }
 
 /* called to set a title of a task or connection */
-static void single_set_title(struct event_context *ev, const char *title) 
+static void single_set_title(struct tevent_context *ev, const char *title) 
 {
 }
 
-static const struct model_ops single_ops = {
+const struct model_ops single_ops = {
        .name                   = "single",
        .model_init             = single_model_init,
        .new_task               = single_new_task,