static int dns_query_candidate_go(DnsQueryCandidate *c) {
DnsTransaction *t;
- Iterator i;
int r;
unsigned n = 0;
assert(c);
/* Start the transactions that are not started yet */
- SET_FOREACH(t, c->transactions, i) {
+ SET_FOREACH(t, c->transactions) {
if (t->state != DNS_TRANSACTION_NULL)
continue;
static DnsTransactionState dns_query_candidate_state(DnsQueryCandidate *c) {
DnsTransactionState state = DNS_TRANSACTION_NO_SERVERS;
DnsTransaction *t;
- Iterator i;
assert(c);
if (c->error_code != 0)
return DNS_TRANSACTION_ERRNO;
- SET_FOREACH(t, c->transactions, i) {
+ SET_FOREACH(t, c->transactions) {
switch (t->state) {
dns_query_reset_answer(q);
- sd_bus_message_unref(q->request);
+ sd_bus_message_unref(q->bus_request);
sd_bus_track_unref(q->bus_track);
+ if (q->varlink_request) {
+ varlink_set_userdata(q->varlink_request, NULL);
+ varlink_unref(q->varlink_request);
+ }
+
dns_packet_unref(q->request_dns_packet);
dns_packet_unref(q->reply_dns_packet);
return 0;
}
-static void dns_query_complete(DnsQuery *q, DnsTransactionState state) {
+void dns_query_complete(DnsQuery *q, DnsTransactionState state) {
assert(q);
assert(!DNS_TRANSACTION_IS_LIVE(state));
assert(DNS_TRANSACTION_IS_LIVE(q->state));
- /* Note that this call might invalidate the query. Callers
- * should hence not attempt to access the query or transaction
- * after calling this function. */
+ /* Note that this call might invalidate the query. Callers should hence not attempt to access the
+ * query or transaction after calling this function. */
q->state = state;
bool has_authenticated = false, has_non_authenticated = false;
DnssecResult dnssec_result_authenticated = _DNSSEC_RESULT_INVALID, dnssec_result_non_authenticated = _DNSSEC_RESULT_INVALID;
DnsTransaction *t;
- Iterator i;
int r;
assert(q);
q->answer_errno = c->error_code;
}
- SET_FOREACH(t, c->transactions, i) {
+ SET_FOREACH(t, c->transactions) {
switch (t->state) {
return DNS_QUERY_RESTARTED; /* We restarted the query for a new cname */
}
-static int on_bus_track(sd_bus_track *t, void *userdata) {
- DnsQuery *q = userdata;
-
- assert(t);
- assert(q);
-
- log_debug("Client of active query vanished, aborting query.");
- dns_query_complete(q, DNS_TRANSACTION_ABORTED);
- return 0;
-}
-
-int dns_query_bus_track(DnsQuery *q, sd_bus_message *m) {
- int r;
-
- assert(q);
- assert(m);
-
- if (!q->bus_track) {
- r = sd_bus_track_new(sd_bus_message_get_bus(m), &q->bus_track, on_bus_track, q);
- if (r < 0)
- return r;
- }
-
- r = sd_bus_track_add_sender(q->bus_track, m);
- if (r < 0)
- return r;
-
- return 0;
-}
-
DnsQuestion* dns_query_question_for_protocol(DnsQuery *q, DnsProtocol protocol) {
assert(q);