diff --git a/src/context.c b/src/context.c index 0748f40c..ca3603cf 100644 --- a/src/context.c +++ b/src/context.c @@ -691,6 +691,7 @@ _getdns_upstreams_dereference(getdns_upstreams *upstreams) while (upstream->finished_dnsreqs) { dnsreq = upstream->finished_dnsreqs; upstream->finished_dnsreqs = dnsreq->finished_next; + debug_req("Destroy ", *dnsreq->netreqs); _getdns_context_cancel_request(dnsreq); } if (upstream->tls_session != NULL) @@ -3080,6 +3081,7 @@ getdns_cancel_callback(getdns_context *context, getdns_context_request_count_changed(context); + debug_req("CB Cancel ", *dnsreq->netreqs); if (dnsreq->user_callback) { dnsreq->context->processing = 1; dnsreq->user_callback(dnsreq->context, GETDNS_CALLBACK_CANCEL, @@ -3095,6 +3097,7 @@ _getdns_context_request_timed_out(getdns_dns_req *dnsreq) { DEBUG_SCHED("%s(%p)\n", __FUNC__, (void *)dnsreq); + debug_req("CB Timeout ", *dnsreq->netreqs); if (dnsreq->user_callback) { dnsreq->context->processing = 1; dnsreq->user_callback(dnsreq->context, GETDNS_CALLBACK_TIMEOUT, diff --git a/src/debug.h b/src/debug.h index fff6b0cd..fb74527c 100644 --- a/src/debug.h +++ b/src/debug.h @@ -36,7 +36,6 @@ #define DEBUG_H #include "config.h" - #define STUB_DEBUG_ENTRY "=> ENTRY: " #define STUB_DEBUG_SETUP "--- SETUP: " #define STUB_DEBUG_SETUP_TLS "--- SETUP(TLS): " @@ -94,8 +93,26 @@ #if defined(REQ_DEBUG) && REQ_DEBUG #include #define DEBUG_REQ(...) DEBUG_ON(__VA_ARGS__) +#include "gldns/wire2str.h" +#include "rr-dict.h" +#include "types-internal.h" +static inline void debug_req(const char *msg, getdns_network_req *netreq) +{ + char str[1024]; + struct timeval tv; + uint64_t t; + + (void) gettimeofday(&tv, NULL); + t = tv.tv_sec * 1000 + tv.tv_usec / 1000; + t = t >= netreq->owner->expires ? 0 : netreq->owner->expires - t; + (void) gldns_wire2str_dname_buf(netreq->owner->name, + netreq->owner->name_len, str, sizeof(str)); + DEBUG_REQ("NETREQ %s %4"PRIu64" %s %s\n", msg, t, + str, _getdns_rr_type_name(netreq->request_type)); +} #else #define DEBUG_REQ(...) DEBUG_OFF(__VA_ARGS__) +#define debug_req(...) DEBUG_OFF(__VA_ARGS__) #endif #if defined(SCHED_DEBUG) && SCHED_DEBUG diff --git a/src/general.c b/src/general.c index cc6e1fe9..4ac4e3f2 100644 --- a/src/general.c +++ b/src/general.c @@ -186,6 +186,14 @@ _getdns_check_dns_req_complete(getdns_dns_req *dns_req) return; } } +#if defined(REQ_DEBUG) && REQ_DEBUG + if (dns_req->internal_cb) + debug_req("CB Internal", *dns_req->netreqs); + else if (results_found) + debug_req("CB Complete", *dns_req->netreqs); + else + debug_req("CB Error ", *dns_req->netreqs); +#endif if (dns_req->internal_cb) { _getdns_context_clear_outbound_request(dns_req); dns_req->internal_cb(dns_req); @@ -373,6 +381,8 @@ _getdns_submit_netreq(getdns_network_req *netreq, uint64_t *now_ms) } _getdns_netreq_change_state(netreq, NET_REQ_IN_FLIGHT); + debug_req("Submitting ", netreq); + #ifdef STUB_NATIVE_DNSSEC # ifdef DNSSEC_ROADBLOCK_AVOIDANCE