From 5c332f6e9d27c6cdaa885a52312d90ac3835c90b Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 17 Jun 2005 00:09:17 +0000 Subject: r7659: fixup the ordering of socket destruction for ncacn_ip_tcp so we don't try and remove an epoll descriptor for a closed fd (This used to be commit bec5e9f80a934e6472e8d227214a9baba4f15054) --- source4/librpc/rpc/dcerpc_sock.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'source4/librpc/rpc/dcerpc_sock.c') diff --git a/source4/librpc/rpc/dcerpc_sock.c b/source4/librpc/rpc/dcerpc_sock.c index e309c2720c..d7f87e9706 100644 --- a/source4/librpc/rpc/dcerpc_sock.c +++ b/source4/librpc/rpc/dcerpc_sock.c @@ -58,6 +58,7 @@ static void sock_dead(struct dcerpc_connection *p, NTSTATUS status) struct sock_private *sock = p->transport.private; if (sock && sock->sock != NULL) { + talloc_free(sock->fde); talloc_free(sock->sock); sock->sock = NULL; } @@ -72,8 +73,6 @@ static void sock_dead(struct dcerpc_connection *p, NTSTATUS status) if (!NT_STATUS_IS_OK(status)) { p->transport.recv_data(p, NULL, status); } - - talloc_free(sock->fde); } /* @@ -107,7 +106,7 @@ static void sock_process_send(struct dcerpc_connection *p) talloc_free(blob); } - if (sock->pending_send == NULL) { + if (sock->pending_send == NULL && sock->sock) { EVENT_FD_NOT_WRITEABLE(sock->fde); } } @@ -332,7 +331,7 @@ static NTSTATUS dcerpc_pipe_open_socket(struct dcerpc_connection *c, sock->recv.data = data_blob(NULL, 0); sock->recv.pending_count = 0; - sock->fde = event_add_fd(c->event_ctx, sock, socket_get_fd(sock->sock), + sock->fde = event_add_fd(c->event_ctx, sock->sock, socket_get_fd(sock->sock), 0, sock_io_handler, c); c->transport.private = sock; -- cgit