Network request submission and callback reporting

This commit is contained in:
Willem Toorop 2017-04-05 22:43:27 +02:00
parent 2220c1a48d
commit f8c7d8b5d5
3 changed files with 31 additions and 1 deletions

View File

@ -691,6 +691,7 @@ _getdns_upstreams_dereference(getdns_upstreams *upstreams)
while (upstream->finished_dnsreqs) { while (upstream->finished_dnsreqs) {
dnsreq = upstream->finished_dnsreqs; dnsreq = upstream->finished_dnsreqs;
upstream->finished_dnsreqs = dnsreq->finished_next; upstream->finished_dnsreqs = dnsreq->finished_next;
debug_req("Destroy ", *dnsreq->netreqs);
_getdns_context_cancel_request(dnsreq); _getdns_context_cancel_request(dnsreq);
} }
if (upstream->tls_session != NULL) if (upstream->tls_session != NULL)
@ -3080,6 +3081,7 @@ getdns_cancel_callback(getdns_context *context,
getdns_context_request_count_changed(context); getdns_context_request_count_changed(context);
debug_req("CB Cancel ", *dnsreq->netreqs);
if (dnsreq->user_callback) { if (dnsreq->user_callback) {
dnsreq->context->processing = 1; dnsreq->context->processing = 1;
dnsreq->user_callback(dnsreq->context, GETDNS_CALLBACK_CANCEL, 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_SCHED("%s(%p)\n", __FUNC__, (void *)dnsreq);
debug_req("CB Timeout ", *dnsreq->netreqs);
if (dnsreq->user_callback) { if (dnsreq->user_callback) {
dnsreq->context->processing = 1; dnsreq->context->processing = 1;
dnsreq->user_callback(dnsreq->context, GETDNS_CALLBACK_TIMEOUT, dnsreq->user_callback(dnsreq->context, GETDNS_CALLBACK_TIMEOUT,

View File

@ -36,7 +36,6 @@
#define DEBUG_H #define DEBUG_H
#include "config.h" #include "config.h"
#define STUB_DEBUG_ENTRY "=> ENTRY: " #define STUB_DEBUG_ENTRY "=> ENTRY: "
#define STUB_DEBUG_SETUP "--- SETUP: " #define STUB_DEBUG_SETUP "--- SETUP: "
#define STUB_DEBUG_SETUP_TLS "--- SETUP(TLS): " #define STUB_DEBUG_SETUP_TLS "--- SETUP(TLS): "
@ -94,8 +93,26 @@
#if defined(REQ_DEBUG) && REQ_DEBUG #if defined(REQ_DEBUG) && REQ_DEBUG
#include <time.h> #include <time.h>
#define DEBUG_REQ(...) DEBUG_ON(__VA_ARGS__) #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 #else
#define DEBUG_REQ(...) DEBUG_OFF(__VA_ARGS__) #define DEBUG_REQ(...) DEBUG_OFF(__VA_ARGS__)
#define debug_req(...) DEBUG_OFF(__VA_ARGS__)
#endif #endif
#if defined(SCHED_DEBUG) && SCHED_DEBUG #if defined(SCHED_DEBUG) && SCHED_DEBUG

View File

@ -186,6 +186,14 @@ _getdns_check_dns_req_complete(getdns_dns_req *dns_req)
return; 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) { if (dns_req->internal_cb) {
_getdns_context_clear_outbound_request(dns_req); _getdns_context_clear_outbound_request(dns_req);
dns_req->internal_cb(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); _getdns_netreq_change_state(netreq, NET_REQ_IN_FLIGHT);
debug_req("Submitting ", netreq);
#ifdef STUB_NATIVE_DNSSEC #ifdef STUB_NATIVE_DNSSEC
# ifdef DNSSEC_ROADBLOCK_AVOIDANCE # ifdef DNSSEC_ROADBLOCK_AVOIDANCE