Merge pull request #29792 from poettering/resolved-monitor-packet
resolved: make sure "resolvectl monitor" can properly deal with stub …
This commit is contained in:
@@ -586,7 +586,7 @@ void dns_query_complete(DnsQuery *q, DnsTransactionState state) {
|
||||
|
||||
q->state = state;
|
||||
|
||||
(void) manager_monitor_send(q->manager, q->state, q->answer_rcode, q->answer_errno, q->question_idna, q->question_utf8, q->collected_questions, q->answer);
|
||||
(void) manager_monitor_send(q->manager, q->state, q->answer_rcode, q->answer_errno, q->question_idna, q->question_utf8, q->question_bypass, q->collected_questions, q->answer);
|
||||
|
||||
dns_query_stop(q);
|
||||
if (q->complete)
|
||||
|
||||
@@ -1105,6 +1105,7 @@ int manager_monitor_send(
|
||||
int error,
|
||||
DnsQuestion *question_idna,
|
||||
DnsQuestion *question_utf8,
|
||||
DnsPacket *question_bypass,
|
||||
DnsQuestion *collected_questions,
|
||||
DnsAnswer *answer) {
|
||||
|
||||
@@ -1119,11 +1120,22 @@ int manager_monitor_send(
|
||||
if (set_isempty(m->varlink_subscription))
|
||||
return 0;
|
||||
|
||||
/* Merge both questions format into one */
|
||||
/* Merge all questions into one */
|
||||
r = dns_question_merge(question_idna, question_utf8, &merged);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to merge UTF8/IDNA questions: %m");
|
||||
|
||||
if (question_bypass) {
|
||||
_cleanup_(dns_question_unrefp) DnsQuestion *merged2 = NULL;
|
||||
|
||||
r = dns_question_merge(merged, question_bypass->question, &merged2);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to merge UTF8/IDNA questions and DNS packet question: %m");
|
||||
|
||||
dns_question_unref(merged);
|
||||
merged = TAKE_PTR(merged2);
|
||||
}
|
||||
|
||||
/* Convert the current primary question to JSON */
|
||||
r = dns_question_to_json(merged, &jquestion);
|
||||
if (r < 0)
|
||||
|
||||
@@ -176,7 +176,7 @@ int manager_start(Manager *m);
|
||||
|
||||
uint32_t manager_find_mtu(Manager *m);
|
||||
|
||||
int manager_monitor_send(Manager *m, int state, int rcode, int error, DnsQuestion *question_idna, DnsQuestion *question_utf8, DnsQuestion *collected_questions, DnsAnswer *answer);
|
||||
int manager_monitor_send(Manager *m, int state, int rcode, int error, DnsQuestion *question_idna, DnsQuestion *question_utf8, DnsPacket *question_bypass, DnsQuestion *collected_questions, DnsAnswer *answer);
|
||||
|
||||
int manager_write(Manager *m, int fd, DnsPacket *p);
|
||||
int manager_send(Manager *m, int fd, int ifindex, int family, const union in_addr_union *destination, uint16_t port, const union in_addr_union *source, DnsPacket *p);
|
||||
|
||||
Reference in New Issue
Block a user