+4 May 2021: George
+ - Fix for #367: only attempt to get the interface for queries that are no
+ longer on the tcp_waiting_list.
+
4 May 2021: Wouter
- Merge #478: Allow configuration of TCP timeout while waiting for
response.
struct comm_reply r2;
#ifdef USE_DNSTAP
struct waiting_tcp* w = (struct waiting_tcp*)sq->pending;
- struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting;
- struct port_if* pi = pend_tcp->pi;
+ struct pending_tcp* pend_tcp = NULL;
+ struct port_if* pi = NULL;
+ if(!w->on_tcp_waiting_list && w->next_waiting) {
+ pend_tcp = (struct pending_tcp*)w->next_waiting;
+ pi = pend_tcp->pi;
+ }
#endif
sq->pending = NULL; /* removed after this callback */
if(error != NETEVENT_NOERROR)
/*
* sending src (local service)/dst (upstream) addresses over DNSTAP
*/
- if(error==NETEVENT_NOERROR && sq->outnet->dtenv &&
+ if(error==NETEVENT_NOERROR && pi && sq->outnet->dtenv &&
(sq->outnet->dtenv->log_resolver_response_messages ||
sq->outnet->dtenv->log_forwarder_response_messages)) {
log_addr(VERB_ALGO, "response from upstream", &sq->addr, sq->addrlen);