From: Libor Peltan Date: Thu, 11 Nov 2021 17:25:32 +0000 (+0100) Subject: xdp-tcp: bugfix 1 X-Git-Tag: v3.3.dev~171^2~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ff42ad0105b8802bd04a79fc22792dbfeae99f5;p=thirdparty%2Fknot-dns.git xdp-tcp: bugfix 1 --- diff --git a/src/libknot/xdp/tcp.c b/src/libknot/xdp/tcp.c index 0d698ce7ba..e65c0cee95 100644 --- a/src/libknot/xdp/tcp.c +++ b/src/libknot/xdp/tcp.c @@ -605,6 +605,10 @@ void sweep_reset(knot_tcp_table_t *tcp_table, knot_tcp_relay_t *rl, } } +#ifndef SSIZE_MAX +#define SSIZE_MAX ((SIZE_MAX - 2) / 2) +#endif + _public_ int knot_tcp_sweep(knot_tcp_table_t *tcp_table, uint32_t close_timeout, uint32_t reset_timeout, @@ -622,8 +626,8 @@ int knot_tcp_sweep(knot_tcp_table_t *tcp_table, knot_tcp_relay_t *rl = relays, *rl_max = rl + max_relays; ssize_t free_conns = (ssize_t)tcp_table->usage - limit_n_conn; - ssize_t free_inbuf = (ssize_t)tcp_table->inbufs_total - limit_ibuf_size; - ssize_t free_outbuf = (ssize_t)tcp_table->outbufs_total - limit_obuf_size; + ssize_t free_inbuf = (ssize_t)tcp_table->inbufs_total - MIN(limit_ibuf_size, SSIZE_MAX); + ssize_t free_outbuf = (ssize_t)tcp_table->outbufs_total - MIN(limit_ibuf_size, SSIZE_MAX); // reset connections to free ibufs while (free_inbuf > 0 && rl != rl_max) {