mirror of
https://github.com/NLnetLabs/unbound.git
synced 2026-01-31 18:59:27 -05:00
Fix for tcp outgoing to have local address logged
This commit is contained in:
parent
af96ff157e
commit
9ea58b5bc0
2 changed files with 38 additions and 8 deletions
|
|
@ -717,6 +717,9 @@ use_free_buffer(struct outside_network* outnet)
|
||||||
struct waiting_tcp* w;
|
struct waiting_tcp* w;
|
||||||
while(outnet->tcp_free && outnet->tcp_wait_first
|
while(outnet->tcp_free && outnet->tcp_wait_first
|
||||||
&& !outnet->want_to_quit) {
|
&& !outnet->want_to_quit) {
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
struct pending_tcp* pend_tcp = NULL;
|
||||||
|
#endif
|
||||||
struct reuse_tcp* reuse = NULL;
|
struct reuse_tcp* reuse = NULL;
|
||||||
w = outnet->tcp_wait_first;
|
w = outnet->tcp_wait_first;
|
||||||
outnet->tcp_wait_first = w->next_waiting;
|
outnet->tcp_wait_first = w->next_waiting;
|
||||||
|
|
@ -728,6 +731,9 @@ use_free_buffer(struct outside_network* outnet)
|
||||||
if(reuse) {
|
if(reuse) {
|
||||||
log_reuse_tcp(VERB_CLIENT, "use free buffer for waiting tcp: "
|
log_reuse_tcp(VERB_CLIENT, "use free buffer for waiting tcp: "
|
||||||
"found reuse", reuse);
|
"found reuse", reuse);
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
pend_tcp = reuse->pending;
|
||||||
|
#endif
|
||||||
reuse_tcp_lru_touch(outnet, reuse);
|
reuse_tcp_lru_touch(outnet, reuse);
|
||||||
comm_timer_disable(w->timer);
|
comm_timer_disable(w->timer);
|
||||||
w->next_waiting = (void*)reuse->pending;
|
w->next_waiting = (void*)reuse->pending;
|
||||||
|
|
@ -755,7 +761,21 @@ use_free_buffer(struct outside_network* outnet)
|
||||||
NULL);
|
NULL);
|
||||||
waiting_tcp_delete(w);
|
waiting_tcp_delete(w);
|
||||||
}
|
}
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
pend_tcp = pend;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
if(outnet->dtenv && pend_tcp && w->sq &&
|
||||||
|
(outnet->dtenv->log_resolver_query_messages ||
|
||||||
|
outnet->dtenv->log_forwarder_query_messages)) {
|
||||||
|
sldns_buffer tmp;
|
||||||
|
sldns_buffer_init_frm_data(&tmp, w->pkt, w->pkt_len);
|
||||||
|
dt_msg_send_outside_query(outnet->dtenv, &w->sq->addr,
|
||||||
|
&pend_tcp->pi->addr, comm_tcp, w->sq->zone,
|
||||||
|
w->sq->zonelen, &tmp);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2169,6 +2189,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet,
|
||||||
w->write_wait_next = NULL;
|
w->write_wait_next = NULL;
|
||||||
w->write_wait_queued = 0;
|
w->write_wait_queued = 0;
|
||||||
w->error_count = 0;
|
w->error_count = 0;
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
w->sq = NULL;
|
||||||
|
#endif
|
||||||
if(pend) {
|
if(pend) {
|
||||||
/* we have a buffer available right now */
|
/* we have a buffer available right now */
|
||||||
if(reuse) {
|
if(reuse) {
|
||||||
|
|
@ -2203,21 +2226,24 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
if(sq->outnet->dtenv &&
|
||||||
|
(sq->outnet->dtenv->log_resolver_query_messages ||
|
||||||
|
sq->outnet->dtenv->log_forwarder_query_messages))
|
||||||
|
dt_msg_send_outside_query(sq->outnet->dtenv, &sq->addr,
|
||||||
|
&pend->pi->addr, comm_tcp, sq->zone,
|
||||||
|
sq->zonelen, packet);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
/* queue up */
|
/* queue up */
|
||||||
/* waiting for a buffer on the outside network buffer wait
|
/* waiting for a buffer on the outside network buffer wait
|
||||||
* list */
|
* list */
|
||||||
verbose(VERB_CLIENT, "pending_tcp_query: queue to wait");
|
verbose(VERB_CLIENT, "pending_tcp_query: queue to wait");
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
w->sq = sq;
|
||||||
|
#endif
|
||||||
outnet_add_tcp_waiting(sq->outnet, w);
|
outnet_add_tcp_waiting(sq->outnet, w);
|
||||||
}
|
}
|
||||||
#ifdef USE_DNSTAP
|
|
||||||
if(sq->outnet->dtenv &&
|
|
||||||
(sq->outnet->dtenv->log_resolver_query_messages ||
|
|
||||||
sq->outnet->dtenv->log_forwarder_query_messages))
|
|
||||||
dt_msg_send_outside_query(sq->outnet->dtenv, &sq->addr,
|
|
||||||
(pend?&pend->pi->addr:NULL), comm_tcp, sq->zone,
|
|
||||||
sq->zonelen, packet);
|
|
||||||
#endif
|
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -410,6 +410,10 @@ struct waiting_tcp {
|
||||||
char* tls_auth_name;
|
char* tls_auth_name;
|
||||||
/** the packet was involved in an error, to stop looping errors */
|
/** the packet was involved in an error, to stop looping errors */
|
||||||
int error_count;
|
int error_count;
|
||||||
|
#ifdef USE_DNSTAP
|
||||||
|
/** serviced query pointer for dnstap to get logging info, if nonNULL*/
|
||||||
|
struct serviced_query* sq;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue