From f140bf2e6578e45b8603d4a6c5feef9a3b735804 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 18 May 2009 07:08:34 +0200 Subject: Fix broken pipe handling Metze is right: If we have *any* error at the socket level, we just can not continue. Also, apply some defensive programming: With this async stuff someone else might already have closed the socket. --- source3/rpc_client/rpc_transport_sock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source3/rpc_client/rpc_transport_sock.c') diff --git a/source3/rpc_client/rpc_transport_sock.c b/source3/rpc_client/rpc_transport_sock.c index 3756f73e50..4ab6500900 100644 --- a/source3/rpc_client/rpc_transport_sock.c +++ b/source3/rpc_client/rpc_transport_sock.c @@ -82,7 +82,7 @@ static void rpc_sock_read_done(struct tevent_req *subreq) state->received = async_recv_recv(subreq, &err); if (state->received == -1) { - if (err == EPIPE) { + if (state->transp->fd != -1) { close(state->transp->fd); state->transp->fd = -1; } @@ -152,7 +152,7 @@ static void rpc_sock_write_done(struct tevent_req *subreq) state->sent = async_send_recv(subreq, &err); if (state->sent == -1) { - if (err == EPIPE) { + if (state->transp->fd != -1) { close(state->transp->fd); state->transp->fd = -1; } -- cgit