1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

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@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Volker Lendecke 2015-06-03 13:41:24 +00:00 committed by Jeremy Allison
parent 2f2cdaf644
commit ab26e84da1

View File

@ -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;
}
}