summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-04-06 14:06:39 +0200
committerKarolin Seeger <kseeger@samba.org>2010-05-06 14:08:35 +0200
commitdb29ba6c5e6ede7bd94368f2cc66ac0647b86d6a (patch)
tree926eae6bb3571ebb8ce01eaab62652afb7d299a7
parent9c056c0afbc824f179fdb3dbbac6babed9130e63 (diff)
downloadsamba-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.c4
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;
}