mirror of https://github.com/getdnsapi/getdns.git
Allow truncated answers to be returned
This commit is contained in:
parent
ee2a1fbfe6
commit
0a809cb7d8
13
src/stub.c
13
src/stub.c
|
@ -1276,17 +1276,19 @@ stub_udp_read_cb(void *userarg)
|
||||||
return; /* Client cookie didn't match? */
|
return; /* Client cookie didn't match? */
|
||||||
|
|
||||||
close(netreq->fd);
|
close(netreq->fd);
|
||||||
if (GLDNS_TC_WIRE(netreq->response)) {
|
while (GLDNS_TC_WIRE(netreq->response)) {
|
||||||
|
DEBUG_STUB("TC bit set\n");
|
||||||
if (!(netreq->transport_current < netreq->transport_count))
|
if (!(netreq->transport_current < netreq->transport_count))
|
||||||
goto done;
|
break;
|
||||||
getdns_transport_list_t next_transport =
|
getdns_transport_list_t next_transport =
|
||||||
netreq->transports[++netreq->transport_current];
|
netreq->transports[++netreq->transport_current];
|
||||||
if (next_transport != GETDNS_TRANSPORT_TCP)
|
if (next_transport != GETDNS_TRANSPORT_TCP &&
|
||||||
goto done;
|
next_transport != GETDNS_TRANSPORT_TLS)
|
||||||
|
break;
|
||||||
/* For now, special case where fallback should be on the same upstream*/
|
/* For now, special case where fallback should be on the same upstream*/
|
||||||
if ((netreq->fd = upstream_connect(upstream, next_transport,
|
if ((netreq->fd = upstream_connect(upstream, next_transport,
|
||||||
dnsreq)) == -1)
|
dnsreq)) == -1)
|
||||||
goto done;
|
break;
|
||||||
upstream_schedule_netreq(netreq->upstream, netreq);
|
upstream_schedule_netreq(netreq->upstream, netreq);
|
||||||
GETDNS_SCHEDULE_EVENT(
|
GETDNS_SCHEDULE_EVENT(
|
||||||
dnsreq->loop, netreq->upstream->fd, dnsreq->context->timeout,
|
dnsreq->loop, netreq->upstream->fd, dnsreq->context->timeout,
|
||||||
|
@ -1298,7 +1300,6 @@ stub_udp_read_cb(void *userarg)
|
||||||
}
|
}
|
||||||
netreq->response_len = read;
|
netreq->response_len = read;
|
||||||
dnsreq->upstreams->current = 0;
|
dnsreq->upstreams->current = 0;
|
||||||
done:
|
|
||||||
netreq->debug_end_time = _getdns_get_time_as_uintt64();
|
netreq->debug_end_time = _getdns_get_time_as_uintt64();
|
||||||
netreq->state = NET_REQ_FINISHED;
|
netreq->state = NET_REQ_FINISHED;
|
||||||
_getdns_check_dns_req_complete(dnsreq);
|
_getdns_check_dns_req_complete(dnsreq);
|
||||||
|
|
Loading…
Reference in New Issue