summaryrefslogtreecommitdiffstats
path: root/src/contrib/conn_pool.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-14 16:17:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-14 16:17:58 +0000
commita04a7c41c9327144cc11ffd030c0efc2a4f85534 (patch)
tree812fe9d19c0c90324f80b838b1b1e2976a416999 /src/contrib/conn_pool.c
parentAdding upstream version 3.3.5. (diff)
downloadknot-0e0a4fde2a7766ddeb07efcb9c1ae6598c7d4efb.tar.xz
knot-0e0a4fde2a7766ddeb07efcb9c1ae6598c7d4efb.zip
Adding upstream version 3.3.6.upstream/3.3.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/contrib/conn_pool.c')
-rw-r--r--src/contrib/conn_pool.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/contrib/conn_pool.c b/src/contrib/conn_pool.c
index a344c57..6f61e09 100644
--- a/src/contrib/conn_pool.c
+++ b/src/contrib/conn_pool.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2023 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2024 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,6 +15,7 @@
*/
#include <assert.h>
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -255,8 +256,9 @@ void conn_pool_close_cb_dflt(conn_pool_fd_t fd)
bool conn_pool_invalid_cb_dflt(conn_pool_fd_t fd)
{
uint8_t unused;
+ errno = 0;
int peek = recv((int)fd, &unused, 1, MSG_PEEK | MSG_DONTWAIT);
- return (peek >= 0); // closed or pending data
+ return (peek == 0 || peek > 0 || errno == ECONNRESET); // closed || pending data || reset (alternative: errno != 0 && errno != EAGAIN)
}
bool conn_pool_invalid_cb_allvalid(conn_pool_fd_t fd)