From de2e0b1157efe7d3bbab45a3df2f32c91932d0e3 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 3 Feb 2015 11:23:30 +0100 Subject: [PATCH] transfer wiredata with unbound requests too --- src/util-internal.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/util-internal.c b/src/util-internal.c index 74925a6b..2e656bba 100644 --- a/src/util-internal.c +++ b/src/util-internal.c @@ -871,12 +871,16 @@ getdns_apply_network_result(getdns_network_req* netreq, netreq->request_class,LDNS_QR|LDNS_RD|LDNS_RA); ldns_pkt_set_rcode(netreq->result, ub_res->rcode); } - } else { - ldns_status r = - ldns_wire2pkt(&(netreq->result), ub_res->answer_packet, ub_res->answer_len); - if (r != LDNS_STATUS_OK) { + } else { + if (netreq->max_udp_payload_size < ub_res->answer_len) + netreq->response = GETDNS_XMALLOC( + netreq->owner->context->mf, uint8_t, ub_res->answer_len); + (void) memcpy(netreq->response, ub_res->answer_packet, + (netreq->max_udp_payload_size = ub_res->answer_len)); + ldns_status r = ldns_wire2pkt(&(netreq->result), + netreq->response, netreq->max_udp_payload_size); + if (r != LDNS_STATUS_OK) return GETDNS_RETURN_GENERIC_ERROR; - } } netreq->secure = ub_res->secure; netreq->bogus = ub_res->bogus;