diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-04-06 14:06:39 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2010-05-06 14:08:35 +0200 |
commit | db29ba6c5e6ede7bd94368f2cc66ac0647b86d6a (patch) | |
tree | 926eae6bb3571ebb8ce01eaab62652afb7d299a7 | |
parent | 9c056c0afbc824f179fdb3dbbac6babed9130e63 (diff) | |
download | samba-db29ba6c5e6ede7bd94368f2cc66ac0647b86d6a.tar.gz |
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.
(cherry picked from commit f140bf2e6578e45b8603d4a6c5feef9a3b735804)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit 67b51cc9e773fcbbc2b942a1de256e2c5b695008)
-rw-r--r-- | source3/rpc_client/rpc_transport_sock.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source3/rpc_client/rpc_transport_sock.c b/source3/rpc_client/rpc_transport_sock.c index 0e9706d74e4..d61f4e9ab81 100644 --- a/source3/rpc_client/rpc_transport_sock.c +++ b/source3/rpc_client/rpc_transport_sock.c @@ -89,7 +89,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; } @@ -168,7 +168,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; } |