if(!ssl_printf(ssl, "%s.num.recursivereplies"SQ"%lu\n", nm,
(unsigned long)s->mesh_replies_sent)) return 0;
#ifdef USE_DNSCRYPT
- if(!ssl_printf(ssl, "%s.num.dnscrypt.crypted"SQ"%lu\n", nm,
- (unsigned long)s->svr.num_query_dnscrypt_crypted)) return 0;
- if(!ssl_printf(ssl, "%s.num.dnscrypt.cert"SQ"%lu\n", nm,
- (unsigned long)s->svr.num_query_dnscrypt_cert)) return 0;
- if(!ssl_printf(ssl, "%s.num.dnscrypt.cleartext"SQ"%lu\n", nm,
- (unsigned long)s->svr.num_query_dnscrypt_cleartext)) return 0;
- if(!ssl_printf(ssl, "%s.num.dnscrypt.malformed"SQ"%lu\n", nm,
- (unsigned long)s->svr.num_query_dnscrypt_crypted_malformed)) return 0;
+ if(!ssl_printf(ssl, "%s.num.dnscrypt.crypted"SQ"%lu\n", nm,
+ (unsigned long)s->svr.num_query_dnscrypt_crypted)) return 0;
+ if(!ssl_printf(ssl, "%s.num.dnscrypt.cert"SQ"%lu\n", nm,
+ (unsigned long)s->svr.num_query_dnscrypt_cert)) return 0;
+ if(!ssl_printf(ssl, "%s.num.dnscrypt.cleartext"SQ"%lu\n", nm,
+ (unsigned long)s->svr.num_query_dnscrypt_cleartext)) return 0;
+ if(!ssl_printf(ssl, "%s.num.dnscrypt.malformed"SQ"%lu\n", nm,
+ (unsigned long)s->svr.num_query_dnscrypt_crypted_malformed)) return 0;
#endif
if(!ssl_printf(ssl, "%s.requestlist.avg"SQ"%g\n", nm,
(s->svr.num_queries_missed_cache+s->svr.num_queries_prefetch)?
return 0;
}
#ifdef USE_DNSCRYPT
- repinfo->max_udp_size = worker->daemon->cfg->max_udp_size;
- if(!dnsc_handle_curved_request(worker->daemon->dnscenv, repinfo)) {
- worker->stats.num_query_dnscrypt_crypted_malformed++;
- return 0;
- }
- if(c->dnscrypt && !repinfo->is_dnscrypted) {
- char buf[LDNS_MAX_DOMAINLEN+1];
- // Check if this is unencrypted and asking for certs
- if(worker_check_request(c->buffer, worker) != 0) {
- verbose(VERB_ALGO, "dnscrypt: worker check request: bad query.");
- log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
- comm_point_drop_reply(repinfo);
- return 0;
- }
- if(!query_info_parse(&qinfo, c->buffer)) {
- verbose(VERB_ALGO, "dnscrypt: worker parse request: formerror.");
- log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen);
- comm_point_drop_reply(repinfo);
- return 0;
- }
- dname_str(qinfo.qname, buf);
- if(!(qinfo.qtype == LDNS_RR_TYPE_TXT &&
- strcasecmp(buf, worker->daemon->dnscenv->provider_name) == 0)) {
- verbose(VERB_ALGO,
- "dnscrypt: not TXT %s. Receive: %s %s",
- worker->daemon->dnscenv->provider_name,
- sldns_rr_descript(qinfo.qtype)->_name,
- buf);
- comm_point_drop_reply(repinfo);
- worker->stats.num_query_dnscrypt_cleartext++;
- return 0;
- }
- worker->stats.num_query_dnscrypt_cert++;
- sldns_buffer_rewind(c->buffer);
- } else if(c->dnscrypt && repinfo->is_dnscrypted) {
- worker->stats.num_query_dnscrypt_crypted++;
- }
+ repinfo->max_udp_size = worker->daemon->cfg->max_udp_size;
+ if(!dnsc_handle_curved_request(worker->daemon->dnscenv, repinfo)) {
+ worker->stats.num_query_dnscrypt_crypted_malformed++;
+ return 0;
+ }
+ if(c->dnscrypt && !repinfo->is_dnscrypted) {
+ char buf[LDNS_MAX_DOMAINLEN+1];
+ /* Check if this is unencrypted and asking for certs */
+ if(worker_check_request(c->buffer, worker) != 0) {
+ verbose(VERB_ALGO,
+ "dnscrypt: worker check request: bad query.");
+ log_addr(VERB_CLIENT,"from",&repinfo->addr,
+ repinfo->addrlen);
+ comm_point_drop_reply(repinfo);
+ return 0;
+ }
+ if(!query_info_parse(&qinfo, c->buffer)) {
+ verbose(VERB_ALGO,
+ "dnscrypt: worker parse request: formerror.");
+ log_addr(VERB_CLIENT, "from", &repinfo->addr,
+ repinfo->addrlen);
+ comm_point_drop_reply(repinfo);
+ return 0;
+ }
+ dname_str(qinfo.qname, buf);
+ if(!(qinfo.qtype == LDNS_RR_TYPE_TXT &&
+ strcasecmp(buf,
+ worker->daemon->dnscenv->provider_name) == 0)) {
+ verbose(VERB_ALGO,
+ "dnscrypt: not TXT %s. Receive: %s %s",
+ worker->daemon->dnscenv->provider_name,
+ sldns_rr_descript(qinfo.qtype)->_name,
+ buf);
+ comm_point_drop_reply(repinfo);
+ worker->stats.num_query_dnscrypt_cleartext++;
+ return 0;
+ }
+ worker->stats.num_query_dnscrypt_cert++;
+ sldns_buffer_rewind(c->buffer);
+ } else if(c->dnscrypt && repinfo->is_dnscrypted) {
+ worker->stats.num_query_dnscrypt_crypted++;
+ }
#endif
#ifdef USE_DNSTAP
if(worker->dtenv.log_client_query_messages)
tv, 1, c->buffer);
}
#ifdef USE_DNSCRYPT
- if(!dnsc_handle_uncurved_request(repinfo)) {
- return 0;
- }
+ if(!dnsc_handle_uncurved_request(repinfo)) {
+ return 0;
+ }
#endif
return rc;
}
+18 April 2017: Ralph
+ - Fix #1252: more indentation inconsistencies.
+
13 April 2017: Ralph
- Added ECS unit test (from Manu Bretelle).
- ECS documentation fix (from Manu Bretelle).
ports->ftype == listen_type_tcp_dnscrypt ||
ports->ftype == listen_type_udpancil_dnscrypt) {
cp->dnscrypt = 1;
- cp->dnscrypt_buffer = sldns_buffer_new(bufsize);
- if(!cp->dnscrypt_buffer) {
- log_err("can't alloc dnscrypt_buffer");
- comm_point_delete(cp);
- listen_delete(front);
- return NULL;
- }
- front->dnscrypt_udp_buff = cp->dnscrypt_buffer;
- }
+ cp->dnscrypt_buffer = sldns_buffer_new(bufsize);
+ if(!cp->dnscrypt_buffer) {
+ log_err("can't alloc dnscrypt_buffer");
+ comm_point_delete(cp);
+ listen_delete(front);
+ return NULL;
+ }
+ front->dnscrypt_udp_buff = cp->dnscrypt_buffer;
+ }
#endif
if(!listen_cp_insert(cp, front)) {
log_err("malloc failed");
return;
listen_list_delete(front->cps);
#ifdef USE_DNSCRYPT
- if(front->dnscrypt_udp_buff &&
- front->udp_buff != front->dnscrypt_udp_buff) {
- sldns_buffer_free(front->dnscrypt_udp_buff);
- }
+ if(front->dnscrypt_udp_buff &&
+ front->udp_buff != front->dnscrypt_udp_buff) {
+ sldns_buffer_free(front->dnscrypt_udp_buff);
+ }
#endif
sldns_buffer_free(front->udp_buff);
free(front);
* but we check that just in case. */
if(ci_a->respip_set != ci_b->respip_set)
return ci_a->respip_set < ci_b->respip_set ? -1 : 1;
- return 0;
+ return 0;
}
int
fatal_exit("Could not create respip set: out of memory");
if(!views_apply_cfg(views, cfg))
fatal_exit("Could not set up views");
- if(!respip_global_apply_cfg(respip, cfg))
+ if(!respip_global_apply_cfg(respip, cfg))
fatal_exit("Could not setup respip set");
- if(!respip_views_apply_cfg(views, cfg, &ignored))
+ if(!respip_views_apply_cfg(views, cfg, &ignored))
fatal_exit("Could not setup per-view respip sets");
views_delete(views);
respip_set_delete(respip);
struct comm_reply rep;
ssize_t rcv;
int i;
- struct sldns_buffer *buffer;
+ struct sldns_buffer *buffer;
rep.c = (struct comm_point*)arg;
log_assert(rep.c->type == comm_udp);
if((*rep.c->callback)(rep.c, rep.c->cb_arg, NETEVENT_NOERROR, &rep)) {
/* send back immediate reply */
#ifdef USE_DNSCRYPT
- buffer = rep.c->dnscrypt_buffer;
+ buffer = rep.c->dnscrypt_buffer;
#else
- buffer = rep.c->buffer;
+ buffer = rep.c->buffer;
#endif
(void)comm_point_send_udp_msg(rep.c, buffer,
(struct sockaddr*)&rep.addr, rep.addrlen);
log_assert(c->fd == -1);
sldns_buffer_clear(c->buffer);
#ifdef USE_DNSCRYPT
- if (c->dnscrypt)
- sldns_buffer_clear(c->dnscrypt_buffer);
+ if (c->dnscrypt)
+ sldns_buffer_clear(c->dnscrypt_buffer);
#endif
c->tcp_is_reading = 1;
c->tcp_byte_count = 0;
if(c->tcp_parent) {
c->dnscrypt = c->tcp_parent->dnscrypt;
}
- if(c->dnscrypt && c->dnscrypt_buffer == c->buffer) {
- c->dnscrypt_buffer = sldns_buffer_new(sldns_buffer_capacity(c->buffer));
- if(!c->dnscrypt_buffer) {
- log_err("Could not allocate dnscrypt buffer");
- return;
- }
- }
+ if(c->dnscrypt && c->dnscrypt_buffer == c->buffer) {
+ c->dnscrypt_buffer = sldns_buffer_new(sldns_buffer_capacity(c->buffer));
+ if(!c->dnscrypt_buffer) {
+ log_err("Could not allocate dnscrypt buffer");
+ return;
+ }
+ }
#endif
if(event&UB_EV_READ) {
c->tcp_do_close = 0;
c->do_not_close = 0;
#ifdef USE_DNSCRYPT
- c->dnscrypt = 0;
- c->dnscrypt_buffer = buffer;
+ c->dnscrypt = 0;
+ c->dnscrypt_buffer = buffer;
#endif
c->inuse = 0;
c->tcp_do_toggle_rw = 0;
c->tcp_do_fastopen = 0;
#endif
#ifdef USE_DNSCRYPT
- c->dnscrypt = 0;
- // We don't know just yet if this is a dnscrypt channel. Allocation
- // will be done when handling the callback.
- c->dnscrypt_buffer = c->buffer;
+ c->dnscrypt = 0;
+ /* We don't know just yet if this is a dnscrypt channel. Allocation
+ * will be done when handling the callback. */
+ c->dnscrypt_buffer = c->buffer;
#endif
c->repinfo.c = c;
c->callback = callback;
if(c->type == comm_tcp || c->type == comm_local) {
sldns_buffer_free(c->buffer);
#ifdef USE_DNSCRYPT
- if(c->dnscrypt && c->dnscrypt_buffer != c->buffer) {
- sldns_buffer_free(c->dnscrypt_buffer);
- }
+ if(c->dnscrypt && c->dnscrypt_buffer != c->buffer) {
+ sldns_buffer_free(c->dnscrypt_buffer);
+ }
#endif
- }
+ }
ub_event_free(c->ev->ev);
free(c->ev);
free(c);
log_assert(repinfo && repinfo->c);
#ifdef USE_DNSCRYPT
buffer = repinfo->c->dnscrypt_buffer;
- if(!dnsc_handle_uncurved_request(repinfo)) {
+ if(!dnsc_handle_uncurved_request(repinfo)) {
return;
}
#else
if(c->type == comm_tcp || c->type == comm_local) {
s += sizeof(*c->buffer) + sldns_buffer_capacity(c->buffer);
#ifdef USE_DNSCRYPT
- s += sizeof(*c->dnscrypt_buffer);
- if(c->buffer != c->dnscrypt_buffer) {
- s += sldns_buffer_capacity(c->dnscrypt_buffer);
- }
+ s += sizeof(*c->dnscrypt_buffer);
+ if(c->buffer != c->dnscrypt_buffer) {
+ s += sldns_buffer_capacity(c->dnscrypt_buffer);
+ }
#endif
- }
+ }
if(c->type == comm_tcp_accept) {
int i;
for(i=0; i<c->max_tcp_count; i++)
#elif defined(IP_RECVDSTADDR)
struct in_addr v4addr;
#endif
- }
+ }
/** variable with return source data */
pktinfo;
- /** max udp size for udp packets */
- size_t max_udp_size;
+ /** max udp size for udp packets */
+ size_t max_udp_size;
};
/**
#endif
#ifdef USE_DNSCRYPT
- /** Is this a dnscrypt channel */
+ /** Is this a dnscrypt channel */
int dnscrypt;
/** encrypted buffer pointer. Either to perthread, or own buffer or NULL */
struct sldns_buffer* dnscrypt_buffer;