summaryrefslogtreecommitdiff
path: root/source4/smbd
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-10-17 10:04:49 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:59:57 -0500
commit6591a226144d371a6b68fc5e7201a90a77dc9153 (patch)
tree072ee4cbf33f0469f23e424517d17b79c750852d /source4/smbd
parent844de2b65c931120a2408365c00fa80cb65959fc (diff)
downloadsamba-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.mk2
-rw-r--r--source4/smbd/process_thread.c3
-rw-r--r--source4/smbd/service.c5
-rw-r--r--source4/smbd/service.h2
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 */