}
free(q->request_address_string);
+ free(q->request_name);
if (q->manager) {
LIST_REMOVE(queries, q->manager->dns_queries, q);
q->state = state;
+ if (state == DNS_TRANSACTION_SUCCESS && set_size(q->manager->varlink_subscription) > 0) {
+ DnsQuestion *question = q->request_packet ? q->request_packet->question : NULL;
+ const char *query_name = question ? dns_question_first_name(question) : q->request_name;
+ if (query_name)
+ (void) send_dns_notification(q->manager, q->answer, query_name);
+ }
+
dns_query_stop(q);
if (q->complete)
q->complete(q);
}
static int on_query_timeout(sd_event_source *s, usec_t usec, void *userdata) {
- DnsQuery *q = userdata;
+ DnsQuery *q = ASSERT_PTR(userdata);
assert(s);
- assert(q);
dns_query_complete(q, DNS_TRANSACTION_TIMEOUT);
return 0;