diff options
| author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2015-12-12 22:18:57 +0000 | 
|---|---|---|
| committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2015-12-12 22:18:57 +0000 | 
| commit | a7af7146c91c816cb83e0c5812eca7019531acb5 (patch) | |
| tree | 6e64b645522115b817ba7eabd4e4ce58f129e8c7 /daemon/worker.c | |
| parent | 835a7e7a4dd68819f7610dafdf9277d3852aef6a (diff) | |
Diffstat (limited to 'daemon/worker.c')
| -rw-r--r-- | daemon/worker.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/daemon/worker.c b/daemon/worker.c index 79aec4d3a4b2..c90a65998bec 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -866,11 +866,16 @@ worker_handle_request(struct comm_point* c, void* arg, int error,  		goto send_reply;  	}  	if((ret=parse_edns_from_pkt(c->buffer, &edns)) != 0) { +		struct edns_data reply_edns;  		verbose(VERB_ALGO, "worker parse edns: formerror.");  		log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); -		sldns_buffer_rewind(c->buffer); -		LDNS_QR_SET(sldns_buffer_begin(c->buffer)); +		memset(&reply_edns, 0, sizeof(reply_edns)); +		reply_edns.edns_present = 1; +		reply_edns.udp_size = EDNS_ADVERTISED_SIZE;  		LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), ret); +		error_encode(c->buffer, ret, &qinfo, +			*(uint16_t*)(void *)sldns_buffer_begin(c->buffer), +			sldns_buffer_read_u16_at(c->buffer, 2), &reply_edns);  		server_stats_insrcode(&worker->stats, c->buffer);  		goto send_reply;  	} | 
