s4:smbd: convert to tevent_* api
authorStefan Metzmacher <metze@samba.org>
Sat, 3 Jan 2009 14:24:31 +0000 (15:24 +0100)
committerStefan Metzmacher <metze@samba.org>
Sat, 3 Jan 2009 18:58:57 +0000 (19:58 +0100)
metze

source4/smbd/config.mk
source4/smbd/server.c
source4/smbd/service_named_pipe.c
source4/smbd/service_stream.c
source4/smbd/service_task.c

index e0b09f4b8c2770957d93b2e305efa78f868f40be..a76d10cbe721e9c274667ae03a6cfa538ab72c46 100644 (file)
@@ -2,7 +2,7 @@
 
 [SUBSYSTEM::service]
 PRIVATE_DEPENDENCIES = \
-               LIBEVENTS MESSAGING samba_socket NDR_NAMED_PIPE_AUTH
+               LIBTEVENT MESSAGING samba_socket NDR_NAMED_PIPE_AUTH
 
 service_OBJ_FILES = $(addprefix $(smbdsrcdir)/, \
                service.o \
@@ -21,6 +21,7 @@ $(eval $(call proto_header_template,$(smbdsrcdir)/pidfile.h,$(PIDFILE_OBJ_FILES:
 [BINARY::samba]
 INSTALLDIR = SBINDIR
 PRIVATE_DEPENDENCIES = \
+               LIBEVENTS \
                process_model \
                service \
                LIBSAMBA-HOSTCONFIG \
index 1eb3e4250154794cbc9a884562745ffd1969bc1e..df970661f17c9b161da632862d409515fcdb3b66 100644 (file)
@@ -323,7 +323,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
 
        if (opt_interactive) {
                /* terminate when stdin goes away */
-               stdin_event_flags = EVENT_FD_READ;
+               stdin_event_flags = TEVENT_FD_READ;
        } else {
                /* stay alive forever */
                stdin_event_flags = 0;
@@ -333,15 +333,15 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
 #ifdef SIGTTIN
        signal(SIGTTIN, SIG_IGN);
 #endif
-       event_add_fd(event_ctx, event_ctx, 0, stdin_event_flags,
-                    server_stdin_handler,
-                    discard_const(binary_name));
+       tevent_add_fd(event_ctx, event_ctx, 0, stdin_event_flags,
+                     server_stdin_handler,
+                     discard_const(binary_name));
 
        if (max_runtime) {
-               event_add_timed(event_ctx, event_ctx, 
-                               timeval_current_ofs(max_runtime, 0), 
-                               max_runtime_handler,
-                               discard_const(binary_name));
+               tevent_add_timer(event_ctx, event_ctx,
+                                timeval_current_ofs(max_runtime, 0),
+                                max_runtime_handler,
+                                discard_const(binary_name));
        }
 
        DEBUG(0,("%s: using '%s' process model\n", binary_name, model));
@@ -354,7 +354,7 @@ static int binary_smbd_main(const char *binary_name, int argc, const char *argv[
 
        /* wait for events - this is where smbd sits for most of its
           life */
-       event_loop_wait(event_ctx);
+       tevent_loop_wait(event_ctx);
 
        /* as everything hangs off this event context, freeing it
           should initiate a clean shutdown of all services */
index 94fd501ffea498e5a241e52ff38ff03399d593ab..02b71de7c3f17231c0261b93e69550c67b237814 100644 (file)
@@ -20,7 +20,7 @@
 */
 
 #include "includes.h"
-#include "lib/events/events.h"
+#include <tevent.h>
 #include "lib/socket/socket.h"
 #include "smbd/service.h"
 #include "param/param.h"
@@ -49,7 +49,7 @@ static void named_pipe_handover_connection(void *private_data)
                private_data, struct named_pipe_connection);
        struct stream_connection *conn = pipe_conn->connection;
 
-       EVENT_FD_NOT_WRITEABLE(conn->event.fde);
+       TEVENT_FD_NOT_WRITEABLE(conn->event.fde);
 
        if (!NT_STATUS_IS_OK(pipe_conn->status)) {
                stream_terminate_connection(conn, nt_errstr(pipe_conn->status));
@@ -64,7 +64,7 @@ static void named_pipe_handover_connection(void *private_data)
        talloc_free(pipe_conn);
 
        /* we're now ready to start receiving events on this stream */
-       EVENT_FD_READABLE(conn->event.fde);
+       TEVENT_FD_READABLE(conn->event.fde);
 
        /*
         * hand over to the real pipe implementation,
index a5642c258ff159d1d86f1ab970b0451a0dd3bf55..6dff01f4f357163323e51e15328eadc4ddc074d2 100644 (file)
@@ -21,8 +21,8 @@
 */
 
 #include "includes.h"
+#include <tevent.h>
 #include "process_model.h"
-#include "lib/events/events.h"
 #include "lib/socket/socket.h"
 #include "smbd/service.h"
 #include "smbd/service_stream.h"
@@ -72,7 +72,7 @@ void stream_terminate_connection(struct stream_connection *srv_conn, const char
                 *
                 * and we don't want to read or write to the connection...
                 */
-               event_set_fd_flags(srv_conn->event.fde, 0);
+               tevent_fd_set_flags(srv_conn->event.fde, 0);
                return;
        }
 
@@ -88,9 +88,9 @@ void stream_terminate_connection(struct stream_connection *srv_conn, const char
 static void stream_io_handler(struct stream_connection *conn, uint16_t flags)
 {
        conn->processing++;
-       if (flags & EVENT_FD_WRITE) {
+       if (flags & TEVENT_FD_WRITE) {
                conn->ops->send_handler(conn, flags);
-       } else if (flags & EVENT_FD_READ) {
+       } else if (flags & TEVENT_FD_READ) {
                conn->ops->recv_handler(conn, flags);
        }
        conn->processing--;
@@ -144,9 +144,14 @@ NTSTATUS stream_new_connection_merge(struct tevent_context *ev,
        srv_conn->msg_ctx       = msg_ctx;
        srv_conn->event.ctx     = ev;
        srv_conn->lp_ctx        = lp_ctx;
-       srv_conn->event.fde     = event_add_fd(ev, srv_conn, socket_get_fd(sock),
-                                              EVENT_FD_READ, 
-                                              stream_io_handler_fde, srv_conn);
+       srv_conn->event.fde     = tevent_add_fd(ev, srv_conn, socket_get_fd(sock),
+                                               TEVENT_FD_READ,
+                                               stream_io_handler_fde, srv_conn);
+       if (!srv_conn->event.fde) {
+               talloc_free(srv_conn);
+               return NT_STATUS_NO_MEMORY;
+       }
+
        *_srv_conn = srv_conn;
        return NT_STATUS_OK;
 }
@@ -179,14 +184,19 @@ static void stream_new_connection(struct tevent_context *ev,
        srv_conn->ops           = stream_socket->ops;
        srv_conn->event.ctx     = ev;
        srv_conn->lp_ctx        = lp_ctx;
-       srv_conn->event.fde     = event_add_fd(ev, srv_conn, socket_get_fd(sock),
-                                              0, stream_io_handler_fde, srv_conn);
 
        if (!socket_check_access(sock, "smbd", lp_hostsallow(NULL, lp_default_service(lp_ctx)), lp_hostsdeny(NULL, lp_default_service(lp_ctx)))) {
                stream_terminate_connection(srv_conn, "denied by access rules");
                return;
        }
 
+       srv_conn->event.fde     = tevent_add_fd(ev, srv_conn, socket_get_fd(sock),
+                                               0, stream_io_handler_fde, srv_conn);
+       if (!srv_conn->event.fde) {
+               stream_terminate_connection(srv_conn, "tevent_add_fd() failed");
+               return;
+       }
+
        /* setup to receive internal messages on this connection */
        srv_conn->msg_ctx = messaging_init(srv_conn, 
                                           lp_messaging_path(srv_conn, lp_ctx),
@@ -214,7 +224,7 @@ static void stream_new_connection(struct tevent_context *ev,
        talloc_free(s);
 
        /* we're now ready to start receiving events on this stream */
-       EVENT_FD_READABLE(srv_conn->event.fde);
+       TEVENT_FD_READABLE(srv_conn->event.fde);
 
        /* call the server specific accept code */
        stream_socket->ops->accept_connection(srv_conn);
index 34ce755b9316f48af773704937eb1ca4c72b192c..d3951a4a9ab8ecaedc8ea0972480d085a2c815be 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "includes.h"
 #include "process_model.h"
-#include "lib/events/events.h"
 #include "smbd/service.h"
 #include "smbd/service_task.h"
 #include "lib/messaging/irpc.h"