+dns_stats_results_callback(const char *callid, const char *status, int resc, const char *resv[])
+{
+ struct dnsstatreq *req;
+ uint32_t qid;
+ int st;
+ long lqid = strtol(callid, NULL, 16);
+
+ if(lqid > UINT32_MAX)
+ return;
+
+ qid = (uint32_t)lqid;
+ req = rb_dictionary_retrieve(stat_dict, RB_UINT_TO_POINTER(qid));
+
+ s_assert(req);
+ if (req == NULL)
+ return;
+
+ if(req->callback == NULL)
+ {
+ req->data = NULL;
+ return;
+ }
+
+ switch(*status)
+ {
+ case 'Y':
+ st = 0;
+ break;
+ case 'X':
+ /* Error */
+ st = 1;
+ break;
+ default:
+ /* Shouldn't happen... */
+ return;
+ }
+
+ /* Query complete */
+ req->callback(resc, resv, st, req->data);
+
+ rb_free(req);
+ rb_dictionary_delete(stat_dict, RB_UINT_TO_POINTER(qid));
+}
+
+static void
+stats_results_callback(int resc, const char *resv[], int status, void *data)