summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/rpc_client/rpc_transport_tstream.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/source3/rpc_client/rpc_transport_tstream.c b/source3/rpc_client/rpc_transport_tstream.c
index 01e7a5edc8..11cd8d44eb 100644
--- a/source3/rpc_client/rpc_transport_tstream.c
+++ b/source3/rpc_client/rpc_transport_tstream.c
@@ -186,7 +186,11 @@ static struct tevent_req *rpc_tstream_read_send(TALLOC_CTX *mem_ctx,
return NULL;
}
if (!rpc_tstream_is_connected(transp)) {
- tevent_req_nterror(req, NT_STATUS_CONNECTION_DISCONNECTED);
+ NTSTATUS status = NT_STATUS_CONNECTION_DISCONNECTED;
+ if (tstream_is_cli_np(transp->stream)) {
+ status = NT_STATUS_PIPE_DISCONNECTED;
+ }
+ tevent_req_nterror(req, status);
return tevent_req_post(req, ev);
}
state->transp = transp;
@@ -270,7 +274,11 @@ static struct tevent_req *rpc_tstream_write_send(TALLOC_CTX *mem_ctx,
return NULL;
}
if (!rpc_tstream_is_connected(transp)) {
- tevent_req_nterror(req, NT_STATUS_CONNECTION_DISCONNECTED);
+ NTSTATUS status = NT_STATUS_CONNECTION_DISCONNECTED;
+ if (tstream_is_cli_np(transp->stream)) {
+ status = NT_STATUS_PIPE_DISCONNECTED;
+ }
+ tevent_req_nterror(req, status);
return tevent_req_post(req, ev);
}
state->ev = ev;
@@ -366,7 +374,11 @@ static struct tevent_req *rpc_tstream_trans_send(TALLOC_CTX *mem_ctx,
}
if (!rpc_tstream_is_connected(transp)) {
- tevent_req_nterror(req, NT_STATUS_CONNECTION_DISCONNECTED);
+ NTSTATUS status = NT_STATUS_CONNECTION_DISCONNECTED;
+ if (tstream_is_cli_np(transp->stream)) {
+ status = NT_STATUS_PIPE_DISCONNECTED;
+ }
+ tevent_req_nterror(req, status);
return tevent_req_post(req, ev);
}
state->ev = ev;