From ca931dfbce1f53aa510e4974fbcc584ee4d8744e Mon Sep 17 00:00:00 2001 From: Masaq- <tilt@techie.com> Date: Thu, 28 Feb 2019 02:18:15 +0000 Subject: realloc rings for larger window size --- src/pkt.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/pkt.c') diff --git a/src/pkt.c b/src/pkt.c index beb6291..aa295fd 100644 --- a/src/pkt.c +++ b/src/pkt.c @@ -430,10 +430,14 @@ void handle_extended_options(void *vcur) { proxy_desc_t *cur = (proxy_desc_t *)vcur; if (cur->extended_options[0] > 0) { - remove_proxy_desc_rings(cur); + if (cur->extended_options[0] > cur->window_size) { + size_t extend = cur->extended_options[0] - cur->window_size; + cur->send_ring = realloc(cur->send_ring, cur->extended_options[0] * sizeof(icmp_desc_t)); + cur->recv_ring = realloc(cur->recv_ring, cur->extended_options[0] * sizeof(forward_desc_t *)); + memset(cur->send_ring + cur->window_size, 0, extend * sizeof(icmp_desc_t)); + memset(cur->recv_ring + cur->window_size, 0, extend * sizeof(forward_desc_t *)); + } cur->window_size = cur->extended_options[0]; - cur->send_ring = calloc(cur->window_size, sizeof(icmp_desc_t)); - cur->recv_ring = calloc(cur->window_size, sizeof(forward_desc_t *)); pt_log(kLog_verbose, "Received extended option for window size %d \n", cur->window_size); } if (cur->extended_options[1] > 0) { -- cgit v1.2.3