diff options
Diffstat (limited to 'source4/smbd')
-rw-r--r-- | source4/smbd/service_stream.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/source4/smbd/service_stream.c b/source4/smbd/service_stream.c index d238fc4128..517a40a40c 100644 --- a/source4/smbd/service_stream.c +++ b/source4/smbd/service_stream.c @@ -81,12 +81,8 @@ void stream_terminate_connection(struct stream_connection *srv_conn, const char /* the select loop has indicated that a stream is ready for IO */ -static void stream_io_handler(struct event_context *ev, struct fd_event *fde, - uint16_t flags, void *private) +static void stream_io_handler(struct stream_connection *conn, uint16_t flags) { - struct stream_connection *conn = talloc_get_type(private, - struct stream_connection); - conn->processing = True; if (flags & EVENT_FD_WRITE) { conn->ops->send_handler(conn, flags); @@ -100,9 +96,19 @@ static void stream_io_handler(struct event_context *ev, struct fd_event *fde, } } -void stream_io_handler_callback(void *conn, uint16_t flags) +static void stream_io_handler_fde(struct event_context *ev, struct fd_event *fde, + uint16_t flags, void *private) { - stream_io_handler(NULL, NULL, flags, conn); + struct stream_connection *conn = talloc_get_type(private, + struct stream_connection); + stream_io_handler(conn, flags); +} + +void stream_io_handler_callback(void *private, uint16_t flags) +{ + struct stream_connection *conn = talloc_get_type(private, + struct stream_connection); + stream_io_handler(conn, flags); } /* @@ -134,7 +140,7 @@ NTSTATUS stream_new_connection_merge(struct event_context *ev, srv_conn->event.ctx = ev; srv_conn->event.fde = event_add_fd(ev, srv_conn, socket_get_fd(sock), EVENT_FD_READ, - stream_io_handler, srv_conn); + stream_io_handler_fde, srv_conn); *_srv_conn = srv_conn; return NT_STATUS_OK; } @@ -167,7 +173,7 @@ static void stream_new_connection(struct event_context *ev, srv_conn->event.ctx = ev; srv_conn->event.fde = event_add_fd(ev, srv_conn, socket_get_fd(sock), EVENT_FD_READ, - stream_io_handler, srv_conn); + stream_io_handler_fde, srv_conn); if (!socket_check_access(sock, "smbd", lp_hostsallow(-1), lp_hostsdeny(-1))) { stream_terminate_connection(srv_conn, "denied by access rules"); |