[PATCH] tstream: Make socketpair nonblocking
Jeremy Allison
jra at samba.org
Wed Jun 3 10:25:58 MDT 2015
On Wed, Jun 03, 2015 at 04:43:43PM +0200, Volker Lendecke wrote:
> Hi!
>
> According to https://bugzilla.samba.org/show_bug.cgi?id=11061#c20 this
> *MIGHT* also fix that bug.
>
> Volker
Now that is a really *interesting* fix ! However did you find
that ? Customer with 1000+ shares ? :-).
Reviewed-by: Jeremy Allison <jra at samba.org>
+ pushed.
> From 703bc3db6098676e6fbadaa07b7632cbdbe92571 Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Wed, 3 Jun 2015 13:41:24 +0000
> Subject: [PATCH] tstream: Make socketpair nonblocking
>
> When we have a large RPC reply, we can't block in the RPC server.
>
> Test: Do rpcclient netshareenumall with a thousand shares defined
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> libcli/named_pipe_auth/npa_tstream.c | 25 ++++++++++++++++++++-----
> 1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/libcli/named_pipe_auth/npa_tstream.c b/libcli/named_pipe_auth/npa_tstream.c
> index 3d3f55e..3539202 100644
> --- a/libcli/named_pipe_auth/npa_tstream.c
> +++ b/libcli/named_pipe_auth/npa_tstream.c
> @@ -1468,17 +1468,23 @@ int _tstream_npa_socketpair(uint16_t file_type,
> fd1 = fds[0];
> fd2 = fds[1];
>
> + rc = set_blocking(fd1, false);
> + if (rc == -1) {
> + goto close_fail;
> + }
> +
> + rc = set_blocking(fd2, false);
> + if (rc == -1) {
> + goto close_fail;
> + }
> +
> rc = _tstream_npa_existing_socket(mem_ctx1,
> fd1,
> file_type,
> &stream1,
> location);
> if (rc == -1) {
> - int sys_errno = errno;
> - close(fd1);
> - close(fd2);
> - errno = sys_errno;
> - return -1;
> + goto close_fail;
> }
>
> rc = _tstream_npa_existing_socket(mem_ctx2,
> @@ -1498,4 +1504,13 @@ int _tstream_npa_socketpair(uint16_t file_type,
> *pstream2 = stream2;
>
> return 0;
> +
> +close_fail:
> + {
> + int sys_errno = errno;
> + close(fd1);
> + close(fd2);
> + errno = sys_errno;
> + return -1;
> + }
> }
> --
> 1.9.1
>
More information about the samba-technical
mailing list