diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-10-17 10:04:49 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:59:57 -0500 |
commit | 6591a226144d371a6b68fc5e7201a90a77dc9153 (patch) | |
tree | 072ee4cbf33f0469f23e424517d17b79c750852d /source4/smbd | |
parent | 844de2b65c931120a2408365c00fa80cb65959fc (diff) | |
download | samba-6591a226144d371a6b68fc5e7201a90a77dc9153.tar.gz samba-6591a226144d371a6b68fc5e7201a90a77dc9153.tar.bz2 samba-6591a226144d371a6b68fc5e7201a90a77dc9153.zip |
r3016: - converted the events code to talloc
- added the new messaging system, based on unix domain sockets. It
gets over 10k messages/second on my laptop without any socket
cacheing, which is better than I expected.
- added a LOCAL-MESSAGING torture test
(This used to be commit 3af06478da7ab34a272226d8d9ac87e0a4940cfb)
Diffstat (limited to 'source4/smbd')
-rw-r--r-- | source4/smbd/config.mk | 2 | ||||
-rw-r--r-- | source4/smbd/process_thread.c | 3 | ||||
-rw-r--r-- | source4/smbd/service.c | 5 | ||||
-rw-r--r-- | source4/smbd/service.h | 2 |
4 files changed, 10 insertions, 2 deletions
diff --git a/source4/smbd/config.mk b/source4/smbd/config.mk index 5aa04725b4..55f040f805 100644 --- a/source4/smbd/config.mk +++ b/source4/smbd/config.mk @@ -37,6 +37,8 @@ REQUIRED_SUBSYSTEMS = \ [SUBSYSTEM::SERVER_SERVICE] INIT_OBJ_FILES = \ smbd/service.o +REQUIRED_SUBSYSTEMS = \ + MESSAGING # End SUBSYSTEM SERVER ####################### diff --git a/source4/smbd/process_thread.c b/source4/smbd/process_thread.c index 85f30c9ddd..108b098b8a 100644 --- a/source4/smbd/process_thread.c +++ b/source4/smbd/process_thread.c @@ -72,7 +72,7 @@ static void thread_accept_connection(struct event_context *ev, struct fd_event * main event_context is continued. */ - ev = event_context_init(); + ev = event_context_init(server_socket); if (!ev) { DEBUG(0,("thread_accept_connection: failed to create event_context!\n")); socket_destroy(sock); @@ -87,6 +87,7 @@ static void thread_accept_connection(struct event_context *ev, struct fd_event * return; } + talloc_steal(conn, ev); talloc_steal(conn, sock); /* TODO: is this MUTEX_LOCK in the right place here? diff --git a/source4/smbd/service.c b/source4/smbd/service.c index 9a7ac73559..d4ba9c990c 100644 --- a/source4/smbd/service.c +++ b/source4/smbd/service.c @@ -48,7 +48,7 @@ struct server_context *server_service_startup(const char *model) ZERO_STRUCTP(srv_ctx); - srv_ctx->events = event_context_init(); + srv_ctx->events = event_context_init(srv_ctx); if (!srv_ctx->events) { DEBUG(0,("event_context_init() failed\n")); return NULL; @@ -247,6 +247,9 @@ struct server_connection *server_setup_connection(struct event_context *ev, return NULL; } + /* setup to receive internal messages on this connection */ + srv_conn->messaging_ctx = messaging_init(srv_conn, srv_conn->server_id, ev); + return srv_conn; } diff --git a/source4/smbd/service.h b/source4/smbd/service.h index e9ef0bff06..93f24a34f9 100644 --- a/source4/smbd/service.h +++ b/source4/smbd/service.h @@ -124,6 +124,8 @@ struct server_connection { struct server_socket *server_socket; struct server_service *service; + + void *messaging_ctx; }; #endif /* _SERVER_SERVICE_H */ |