summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2023-03-01 14:42:00 +0100
committerJule Anger <janger@samba.org>2023-03-08 10:15:09 +0000
commit501ae551da9c49047a2f67e9fec8732aa32309b1 (patch)
treea340a1802f582f3363420b59d40bdabdd4f4e101
parent06483b02e9db952a17b0590a3ec8d0fe2d132b3e (diff)
downloadsamba-501ae551da9c49047a2f67e9fec8732aa32309b1.tar.gz
rpcd: Do blocking connects to local pipes
We don't have real async callers yet, and this is the simplest way to fix our missing light-weight deterministic async fallback mechanism. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15310 Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit 0ab7b84ccbd383bb2f696ce258438d4af57fe6f0)
-rw-r--r--source3/rpc_client/local_np.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/source3/rpc_client/local_np.c b/source3/rpc_client/local_np.c
index 5b1a818c88d..f1d61a09ee3 100644
--- a/source3/rpc_client/local_np.c
+++ b/source3/rpc_client/local_np.c
@@ -101,7 +101,7 @@ static struct tevent_req *np_sock_connect_send(
return tevent_req_post(req, ev);
}
- ret = set_blocking(state->sock, false);
+ ret = set_blocking(state->sock, true);
if (ret == -1) {
tevent_req_error(req, errno);
return tevent_req_post(req, ev);
@@ -174,6 +174,18 @@ static void np_sock_connect_connected(struct tevent_req *subreq)
return;
}
+ /*
+ * As a quick workaround for bug 15310 we have done the
+ * connect in blocking mode (see np_sock_connect_send()). The
+ * rest of our code expects a nonblocking socket, activate
+ * this after the connect succeeded.
+ */
+ ret = set_blocking(state->sock, false);
+ if (ret == -1) {
+ tevent_req_error(req, errno);
+ return;
+ }
+
ret = tstream_bsd_existing_socket(
state, state->sock, &state->transport);
if (ret == -1) {