static int dns_transaction_make_packet(DnsTransaction *t) { _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL; int r; assert(t); if (t->sent) return 0; r = dns_packet_new_query(&p, t->scope->protocol, 0); if (r < 0) return r; r = dns_scope_good_key(t->scope, t->key); if (r < 0) return r; if (r == 0) return -EDOM; r = dns_packet_append_key(p, t->key, NULL); if (r < 0) return r; DNS_PACKET_HEADER(p)->qdcount = htobe16(1); DNS_PACKET_HEADER(p)->id = t->id; t->sent = p; p = NULL; return 0; }
static int dns_transaction_make_packet(DnsTransaction *t) { _cleanup_(dns_packet_unrefp) DnsPacket *p = NULL; unsigned n, added = 0; int r; assert(t); if (t->sent) return 0; r = dns_packet_new_query(&p, t->scope->protocol, 0); if (r < 0) return r; for (n = 0; n < t->question->n_keys; n++) { r = dns_scope_good_key(t->scope, t->question->keys[n]); if (r < 0) return r; if (r == 0) continue; r = dns_packet_append_key(p, t->question->keys[n], NULL); if (r < 0) return r; added++; } if (added <= 0) return -EDOM; DNS_PACKET_HEADER(p)->qdcount = htobe16(added); DNS_PACKET_HEADER(p)->id = t->id; t->sent = p; p = NULL; return 0; }