[PATCH] tstream: Make socketpair nonblocking
Christof Schmitt
cs at samba.org
Wed Jun 3 17:06:10 MDT 2015
On Wed, Jun 03, 2015 at 09:25:58AM -0700, Jeremy Allison wrote:
> 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.
Actually, 600 shares is sufficient to trigger this problem :-)
I opened a bugzilla to backport this patch. Can you include
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11312
before pushing again?
Christof
>
> > 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