From 526d687cbbdf323dc883bb1298dfd2dc952fecc6 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 15 Jul 2004 10:16:40 +0000 Subject: r1520: only call write handler or read handler, not both. This copes with the connection being removed between calls. (This used to be commit 446306f054b27e903c50e1d96d23041e3a8e5705) --- source4/smbd/service.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4') diff --git a/source4/smbd/service.c b/source4/smbd/service.c index c90792e452..270eeb4f22 100644 --- a/source4/smbd/service.c +++ b/source4/smbd/service.c @@ -249,7 +249,9 @@ void server_destroy_connection(struct server_connection *srv_conn) close(srv_conn->event.fde->fd); event_remove_fd(srv_conn->event.ctx, srv_conn->event.fde); + srv_conn->event.fde = NULL; event_remove_timed(srv_conn->event.ctx, srv_conn->event.idle); + srv_conn->event.idle = NULL; talloc_destroy(srv_conn->mem_ctx); } @@ -262,6 +264,7 @@ void server_io_handler(struct event_context *ev, struct fd_event *fde, time_t t, if (flags & EVENT_FD_WRITE) { conn->service->ops->send_handler(conn, t, flags); + return; } if (flags & EVENT_FD_READ) { -- cgit