| 123456789101112131415161718192021222324252627282930313233343536373839 |
- From 5040f21cb4ee6ade966e60c6d5a3c270d03de1f1 Mon Sep 17 00:00:00 2001
- From: Matt Johnston <[email protected]>
- Date: Mon, 1 May 2023 22:05:43 +0800
- Subject: Remove SO_LINGER
- It could cause channels to take up to 5 seconds to close(), which would block
- the entire process. On busy TCP forwarding sessions this would result in
- channels seeming stuck and new connections not being accepted.
- We don't need to monitor for flushing failures since we can't report errors, so
- SO_LINGER wasn't useful.
- Thanks to GektorUA for reporting and testing
- Fixes #230
- ---
- netio.c | 4 ----
- 1 file changed, 4 deletions(-)
- --- a/netio.c
- +++ b/netio.c
- @@ -472,7 +472,6 @@ int dropbear_listen(const char* address,
- struct addrinfo hints, *res = NULL, *res0 = NULL;
- int err;
- unsigned int nsock;
- - struct linger linger;
- int val;
- int sock;
- uint16_t *allocated_lport_p = NULL;
- @@ -551,9 +550,6 @@ int dropbear_listen(const char* address,
- val = 1;
- /* set to reuse, quick timeout */
- setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*) &val, sizeof(val));
- - linger.l_onoff = 1;
- - linger.l_linger = 5;
- - setsockopt(sock, SOL_SOCKET, SO_LINGER, (void*)&linger, sizeof(linger));
-
- #if defined(IPPROTO_IPV6) && defined(IPV6_V6ONLY)
- if (res->ai_family == AF_INET6) {
|