From 8201d1422b26e68d546f630659fece41ec025032 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 15:35:32 +0200 Subject: [PATCH] stream reuse, fix to put id number in waiting tcp packet. --- services/outside_network.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 548ce682e..78e6bef4f 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1962,6 +1962,11 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct waiting_tcp* w; verbose(5, "pending_tcp_query"); + if(sldns_buffer_limit(packet) < sizeof(uint16_t)) { + verbose(4, "pending tcp query with too short buffer < 2"); + return NULL; + } + /* find out if a reused stream to the target exists */ /* if so, take it into use */ reuse = reuse_tcp_find(sq->outnet, &sq->addr, sq->addrlen, @@ -1997,7 +2002,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(reuse) w->id = reuse_tcp_select_id(reuse, sq->outnet); else w->id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; - LDNS_ID_SET(sldns_buffer_begin(packet), w->id); + LDNS_ID_SET(w->pkt, w->id); memcpy(&w->addr, &sq->addr, sq->addrlen); w->addrlen = sq->addrlen; w->outnet = sq->outnet; -- 2.47.3