s_socket: naccept: close listening socket after accepting clients
When `-naccept` is passed (i.e with `s_server`), the listening socket remains open while handling
client, even after `naccept` is supposed to reach `0`.
This is caused to to the decrementation of `naccept` and closing of the socket
happening a little too late in the `do_server` function.
Signed-off-by: Nadav Tasher <tashernadav@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26228)
(cherry picked from commit 113c12ee8c
)
This commit is contained in:
parent
4f7d8b2724
commit
bc2c1fd194
1 changed files with 9 additions and 2 deletions
|
@ -410,6 +410,12 @@ int do_server(int *accept_sock, const char *host, const char *port,
|
|||
BIO_closesocket(asock);
|
||||
break;
|
||||
}
|
||||
|
||||
if (naccept != -1)
|
||||
naccept--;
|
||||
if (naccept == 0)
|
||||
BIO_closesocket(asock);
|
||||
|
||||
BIO_set_tcp_ndelay(sock, 1);
|
||||
i = (*cb)(sock, type, protocol, context);
|
||||
|
||||
|
@ -440,11 +446,12 @@ int do_server(int *accept_sock, const char *host, const char *port,
|
|||
|
||||
BIO_closesocket(sock);
|
||||
} else {
|
||||
if (naccept != -1)
|
||||
naccept--;
|
||||
|
||||
i = (*cb)(asock, type, protocol, context);
|
||||
}
|
||||
|
||||
if (naccept != -1)
|
||||
naccept--;
|
||||
if (i < 0 || naccept == 0) {
|
||||
BIO_closesocket(asock);
|
||||
ret = i;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue