[PATCH] Fix two bugs in the limit of large numbers of sockets:
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Nov 7 15:11:00 GMT 2017
On Nov 7 14:44, Erik M. Bray wrote:
> * Fix the maximum number of sockets allowed in the session to 2048,
> instead of making it relative to sizeof(wsa_event).
>
> The original choice of 2048 was in order to fit the wsa_events array
> in the .cygwin_dll_common shared section, but there is still enough
> room to grow there to have 2048 sockets on 64-bit as well.
>
> * Return an error and set errno=ENOBUF if a socket can't be created
> due to this limit being reached.
> ---
> winsup/cygwin/fhandler_socket.cc | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc
> index 7a6dbdc..b8eda57 100644
> --- a/winsup/cygwin/fhandler_socket.cc
> +++ b/winsup/cygwin/fhandler_socket.cc
> @@ -496,7 +496,7 @@ fhandler_socket::af_local_set_secret (char *buf)
> /* Maximum number of concurrently opened sockets from all Cygwin processes
> per session. Note that shared sockets (through dup/fork/exec) are
> counted as one socket. */
> -#define NUM_SOCKS (32768 / sizeof (wsa_event))
> +#define NUM_SOCKS ((unsigned int) 2048)
>
> #define LOCK_EVENTS \
> if (wsock_mtx && \
> @@ -623,7 +623,14 @@ fhandler_socket::init_events ()
> NtClose (wsock_mtx);
> return false;
> }
> - wsock_events = search_wsa_event_slot (new_serial_number);
> + if (!(wsock_events = search_wsa_event_slot (new_serial_number)));
> + {
> + set_errno (ENOBUFS);
> + NtClose (wsock_evt);
> + NtClose (wsock_mtx);
> + return false;
> + }
> +
> /* sock type not yet set here. */
> if (pc.dev == FH_UDP || pc.dev == FH_DGRAM)
> wsock_events->events = FD_WRITE;
> --
> 2.8.3
Pushed. I just changed
#define NUM_SOCKS ((unsigned int) 2048)
to
#define NUM_SOCKS 2048U
Thanks,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20171107/585ffd1b/attachment.sig>
More information about the Cygwin-patches
mailing list