speed-check: fix domain-rule speed check memleak issue
This commit is contained in:
110
src/dns_conf.c
110
src/dns_conf.c
@@ -21,6 +21,7 @@
|
|||||||
#include "rbtree.h"
|
#include "rbtree.h"
|
||||||
#include "tlog.h"
|
#include "tlog.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include <errno.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -28,7 +29,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#define DEFAULT_DNS_CACHE_SIZE 512
|
#define DEFAULT_DNS_CACHE_SIZE 512
|
||||||
#define DNS_MAX_REPLY_IP_NUM 8
|
#define DNS_MAX_REPLY_IP_NUM 8
|
||||||
@@ -71,10 +71,13 @@ struct dns_servers dns_conf_servers[DNS_MAX_SERVERS];
|
|||||||
char dns_conf_server_name[DNS_MAX_SERVER_NAME_LEN];
|
char dns_conf_server_name[DNS_MAX_SERVER_NAME_LEN];
|
||||||
int dns_conf_server_num;
|
int dns_conf_server_num;
|
||||||
|
|
||||||
struct dns_domain_check_order dns_conf_check_order[DOMAIN_CHECK_NUM] = {
|
struct dns_domain_check_orders dns_conf_check_orders = {
|
||||||
{.type = DOMAIN_CHECK_ICMP, .tcp_port = 0},
|
.orders =
|
||||||
{.type = DOMAIN_CHECK_TCP, .tcp_port = 80},
|
{
|
||||||
{.type = DOMAIN_CHECK_TCP, .tcp_port = 443},
|
{.type = DOMAIN_CHECK_ICMP, .tcp_port = 0},
|
||||||
|
{.type = DOMAIN_CHECK_TCP, .tcp_port = 80},
|
||||||
|
{.type = DOMAIN_CHECK_TCP, .tcp_port = 443},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
int dns_has_cap_ping = 0;
|
int dns_has_cap_ping = 0;
|
||||||
|
|
||||||
@@ -826,7 +829,7 @@ errout:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _config_speed_check_mode_parser(struct dns_domain_check_order check_order[], const char *mode)
|
static int _config_speed_check_mode_parser(struct dns_domain_check_orders *check_orders, const char *mode)
|
||||||
{
|
{
|
||||||
char tmpbuff[DNS_MAX_OPT_LEN];
|
char tmpbuff[DNS_MAX_OPT_LEN];
|
||||||
char *field;
|
char *field;
|
||||||
@@ -836,7 +839,7 @@ static int _config_speed_check_mode_parser(struct dns_domain_check_order check_o
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
safe_strncpy(tmpbuff, mode, DNS_MAX_OPT_LEN);
|
safe_strncpy(tmpbuff, mode, DNS_MAX_OPT_LEN);
|
||||||
memset(check_order, 0, sizeof(*check_order));
|
memset(check_orders, 0, sizeof(*check_orders));
|
||||||
|
|
||||||
ptr = tmpbuff;
|
ptr = tmpbuff;
|
||||||
do {
|
do {
|
||||||
@@ -857,8 +860,8 @@ static int _config_speed_check_mode_parser(struct dns_domain_check_order check_o
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
check_order[order].type = DOMAIN_CHECK_ICMP;
|
check_orders->orders[order].type = DOMAIN_CHECK_ICMP;
|
||||||
check_order[order].tcp_port = 0;
|
check_orders->orders[order].tcp_port = 0;
|
||||||
} else if (strstr(field, "tcp") == field) {
|
} else if (strstr(field, "tcp") == field) {
|
||||||
char *port_str = strstr(field, ":");
|
char *port_str = strstr(field, ":");
|
||||||
if (port_str) {
|
if (port_str) {
|
||||||
@@ -868,12 +871,12 @@ static int _config_speed_check_mode_parser(struct dns_domain_check_order check_o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
check_order[order].type = DOMAIN_CHECK_TCP;
|
check_orders->orders[order].type = DOMAIN_CHECK_TCP;
|
||||||
check_order[order].tcp_port = port;
|
check_orders->orders[order].tcp_port = port;
|
||||||
} else if (strncmp(field, "none", sizeof("none")) == 0) {
|
} else if (strncmp(field, "none", sizeof("none")) == 0) {
|
||||||
for (i = order; i < DOMAIN_CHECK_NUM; i++) {
|
for (i = order; i < DOMAIN_CHECK_NUM; i++) {
|
||||||
check_order[i].type = DOMAIN_CHECK_NONE;
|
check_orders->orders[i].type = DOMAIN_CHECK_NONE;
|
||||||
check_order[i].tcp_port = 0;
|
check_orders->orders[i].tcp_port = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -897,7 +900,7 @@ static int _config_speed_check_mode(void *data, int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
safe_strncpy(mode, argv[1], sizeof(mode));
|
safe_strncpy(mode, argv[1], sizeof(mode));
|
||||||
return _config_speed_check_mode_parser(dns_conf_check_order, mode);
|
return _config_speed_check_mode_parser(&dns_conf_check_orders, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _config_bind_ip(int argc, char *argv[], DNS_BIND_TYPE type)
|
static int _config_bind_ip(int argc, char *argv[], DNS_BIND_TYPE type)
|
||||||
@@ -1317,25 +1320,26 @@ errout:
|
|||||||
|
|
||||||
static int _conf_domain_rule_speed_check(char *domain, const char *mode)
|
static int _conf_domain_rule_speed_check(char *domain, const char *mode)
|
||||||
{
|
{
|
||||||
struct dns_domain_check_order *check_order;
|
struct dns_domain_check_orders *check_orders = NULL;
|
||||||
|
|
||||||
check_order = malloc(sizeof(*check_order));
|
check_orders = malloc(sizeof(*check_orders) * DOMAIN_CHECK_NUM);
|
||||||
if (check_order == NULL) {
|
if (check_orders == NULL) {
|
||||||
|
goto errout;
|
||||||
|
}
|
||||||
|
memset(check_orders, 0, sizeof(*check_orders));
|
||||||
|
|
||||||
|
if (_config_speed_check_mode_parser(check_orders, mode) != 0) {
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_config_speed_check_mode_parser(check_order, mode) != 0) {
|
if (_config_domain_rule_add(domain, DOMAIN_RULE_CHECKSPEED, check_orders) != 0) {
|
||||||
goto errout;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_config_domain_rule_add(domain, DOMAIN_RULE_CHECKSPEED, check_order) != 0) {
|
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
errout:
|
errout:
|
||||||
if (check_order) {
|
if (check_orders) {
|
||||||
free(check_order);
|
free(check_orders);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1495,34 +1499,29 @@ static int _conf_ptr_add(const char *hostname, const char *ip)
|
|||||||
struct sockaddr_in *addr_in;
|
struct sockaddr_in *addr_in;
|
||||||
addr_in = (struct sockaddr_in *)&addr;
|
addr_in = (struct sockaddr_in *)&addr;
|
||||||
paddr = (unsigned char *)&(addr_in->sin_addr.s_addr);
|
paddr = (unsigned char *)&(addr_in->sin_addr.s_addr);
|
||||||
snprintf(ptr_domain, sizeof(ptr_domain), "%d.%d.%d.%d.in-addr.arpa",
|
snprintf(ptr_domain, sizeof(ptr_domain), "%d.%d.%d.%d.in-addr.arpa", paddr[3], paddr[2], paddr[1], paddr[0]);
|
||||||
paddr[3], paddr[2], paddr[1], paddr[0]);
|
|
||||||
} break;
|
} break;
|
||||||
case AF_INET6: {
|
case AF_INET6: {
|
||||||
struct sockaddr_in6 *addr_in6;
|
struct sockaddr_in6 *addr_in6;
|
||||||
addr_in6 = (struct sockaddr_in6 *)&addr;
|
addr_in6 = (struct sockaddr_in6 *)&addr;
|
||||||
if (IN6_IS_ADDR_V4MAPPED(&addr_in6->sin6_addr)) {
|
if (IN6_IS_ADDR_V4MAPPED(&addr_in6->sin6_addr)) {
|
||||||
paddr = addr_in6->sin6_addr.s6_addr + 12;
|
paddr = addr_in6->sin6_addr.s6_addr + 12;
|
||||||
snprintf(ptr_domain, sizeof(ptr_domain), "%d.%d.%d.%d.in-addr.arpa",
|
snprintf(ptr_domain, sizeof(ptr_domain), "%d.%d.%d.%d.in-addr.arpa", paddr[3], paddr[2], paddr[1],
|
||||||
paddr[3], paddr[2], paddr[1], paddr[0]);
|
paddr[0]);
|
||||||
} else {
|
} else {
|
||||||
paddr = addr_in6->sin6_addr.s6_addr;
|
paddr = addr_in6->sin6_addr.s6_addr;
|
||||||
snprintf(
|
snprintf(ptr_domain, sizeof(ptr_domain),
|
||||||
ptr_domain, sizeof(ptr_domain),
|
"%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
|
||||||
"%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
|
"%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
|
||||||
"%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
|
"%x.ip6.arpa",
|
||||||
"%x.ip6.arpa",
|
paddr[15] & 0xF, (paddr[15] >> 4) & 0xF, paddr[14] & 0xF, (paddr[14] >> 4) & 0xF, paddr[13] & 0xF,
|
||||||
paddr[15] & 0xF, (paddr[15] >> 4) & 0xF, paddr[14] & 0xF,
|
(paddr[13] >> 4) & 0xF, paddr[12] & 0xF, (paddr[12] >> 4) & 0xF, paddr[11] & 0xF,
|
||||||
(paddr[14] >> 4) & 0xF, paddr[13] & 0xF, (paddr[13] >> 4) & 0xF,
|
(paddr[11] >> 4) & 0xF, paddr[10] & 0xF, (paddr[10] >> 4) & 0xF, paddr[9] & 0xF,
|
||||||
paddr[12] & 0xF, (paddr[12] >> 4) & 0xF, paddr[11] & 0xF,
|
(paddr[9] >> 4) & 0xF, paddr[8] & 0xF, (paddr[8] >> 4) & 0xF, paddr[7] & 0xF,
|
||||||
(paddr[11] >> 4) & 0xF, paddr[10] & 0xF, (paddr[10] >> 4) & 0xF,
|
(paddr[7] >> 4) & 0xF, paddr[6] & 0xF, (paddr[6] >> 4) & 0xF, paddr[5] & 0xF,
|
||||||
paddr[9] & 0xF, (paddr[9] >> 4) & 0xF, paddr[8] & 0xF,
|
(paddr[5] >> 4) & 0xF, paddr[4] & 0xF, (paddr[4] >> 4) & 0xF, paddr[3] & 0xF,
|
||||||
(paddr[8] >> 4) & 0xF, paddr[7] & 0xF, (paddr[7] >> 4) & 0xF,
|
(paddr[3] >> 4) & 0xF, paddr[2] & 0xF, (paddr[2] >> 4) & 0xF, paddr[1] & 0xF,
|
||||||
paddr[6] & 0xF, (paddr[6] >> 4) & 0xF, paddr[5] & 0xF,
|
(paddr[1] >> 4) & 0xF, paddr[0] & 0xF, (paddr[0] >> 4) & 0xF);
|
||||||
(paddr[5] >> 4) & 0xF, paddr[4] & 0xF, (paddr[4] >> 4) & 0xF,
|
|
||||||
paddr[3] & 0xF, (paddr[3] >> 4) & 0xF, paddr[2] & 0xF,
|
|
||||||
(paddr[2] >> 4) & 0xF, paddr[1] & 0xF, (paddr[1] >> 4) & 0xF,
|
|
||||||
paddr[0] & 0xF, (paddr[0] >> 4) & 0xF);
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
default:
|
default:
|
||||||
@@ -1598,7 +1597,8 @@ errout:
|
|||||||
static int _conf_host_add(const char *hostname, const char *ip, dns_hosts_type host_type)
|
static int _conf_host_add(const char *hostname, const char *ip, dns_hosts_type host_type)
|
||||||
{
|
{
|
||||||
struct dns_hosts *host = NULL;
|
struct dns_hosts *host = NULL;
|
||||||
struct dns_hosts *host_other __attribute__((unused));;
|
struct dns_hosts *host_other __attribute__((unused));
|
||||||
|
;
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
socklen_t addr_len = sizeof(addr);
|
socklen_t addr_len = sizeof(addr);
|
||||||
int dns_type = 0;
|
int dns_type = 0;
|
||||||
@@ -1636,7 +1636,7 @@ static int _conf_host_add(const char *hostname, const char *ip, dns_hosts_type h
|
|||||||
|
|
||||||
/* add this to return SOA when addr is not exist */
|
/* add this to return SOA when addr is not exist */
|
||||||
host_other = _dns_conf_get_hosts(hostname, dns_type_other);
|
host_other = _dns_conf_get_hosts(hostname, dns_type_other);
|
||||||
|
|
||||||
host->host_type = host_type;
|
host->host_type = host_type;
|
||||||
|
|
||||||
switch (addr.ss_family) {
|
switch (addr.ss_family) {
|
||||||
@@ -1667,7 +1667,7 @@ errout:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _conf_dhcp_lease_dnsmasq_add(const char *file)
|
static int _conf_dhcp_lease_dnsmasq_add(const char *file)
|
||||||
{
|
{
|
||||||
FILE *fp = NULL;
|
FILE *fp = NULL;
|
||||||
char line[MAX_LINE_LEN];
|
char line[MAX_LINE_LEN];
|
||||||
@@ -1709,7 +1709,7 @@ static int _conf_dhcp_lease_dnsmasq_add(const char *file)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _conf_dhcp_lease_dnsmasq_file(void *data, int argc, char *argv[])
|
static int _conf_dhcp_lease_dnsmasq_file(void *data, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -1752,7 +1752,7 @@ static void _config_host_table_destroy(void)
|
|||||||
dns_hosts_record_num = 0;
|
dns_hosts_record_num = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dns_server_check_update_hosts(void)
|
int dns_server_check_update_hosts(void)
|
||||||
{
|
{
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
time_t now;
|
time_t now;
|
||||||
@@ -1810,7 +1810,7 @@ static int _config_log_level(void *data, int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _config_setup_smartdns_domain(void)
|
static void _config_setup_smartdns_domain(void)
|
||||||
{
|
{
|
||||||
char hostname[DNS_MAX_CNAME_LEN];
|
char hostname[DNS_MAX_CNAME_LEN];
|
||||||
/* get local host name */
|
/* get local host name */
|
||||||
@@ -1988,13 +1988,13 @@ static int _dns_conf_speed_check_mode_verify(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < DOMAIN_CHECK_NUM; i++) {
|
for (i = 0; i < DOMAIN_CHECK_NUM; i++) {
|
||||||
if (dns_conf_check_order[i].type == DOMAIN_CHECK_ICMP) {
|
if (dns_conf_check_orders.orders[i].type == DOMAIN_CHECK_ICMP) {
|
||||||
for (j = i + 1; j < DOMAIN_CHECK_NUM; j++) {
|
for (j = i + 1; j < DOMAIN_CHECK_NUM; j++) {
|
||||||
dns_conf_check_order[j - 1].type = dns_conf_check_order[j].type;
|
dns_conf_check_orders.orders[j - 1].type = dns_conf_check_orders.orders[j].type;
|
||||||
dns_conf_check_order[j - 1].tcp_port = dns_conf_check_order[j].tcp_port;
|
dns_conf_check_orders.orders[j - 1].tcp_port = dns_conf_check_orders.orders[j].tcp_port;
|
||||||
}
|
}
|
||||||
dns_conf_check_order[j - 1].type = DOMAIN_CHECK_NONE;
|
dns_conf_check_orders.orders[j - 1].type = DOMAIN_CHECK_NONE;
|
||||||
dns_conf_check_order[j - 1].tcp_port = 0;
|
dns_conf_check_orders.orders[j - 1].tcp_port = 0;
|
||||||
print_log = 1;
|
print_log = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,6 +142,10 @@ struct dns_domain_check_order {
|
|||||||
unsigned short tcp_port;
|
unsigned short tcp_port;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct dns_domain_check_orders {
|
||||||
|
struct dns_domain_check_order orders[DOMAIN_CHECK_NUM];
|
||||||
|
};
|
||||||
|
|
||||||
struct dns_group_table {
|
struct dns_group_table {
|
||||||
DECLARE_HASHTABLE(group, 8);
|
DECLARE_HASHTABLE(group, 8);
|
||||||
};
|
};
|
||||||
@@ -272,7 +276,7 @@ extern char dns_conf_ca_path[DNS_MAX_PATH];
|
|||||||
extern char dns_conf_cache_file[DNS_MAX_PATH];
|
extern char dns_conf_cache_file[DNS_MAX_PATH];
|
||||||
extern int dns_conf_cache_persist;
|
extern int dns_conf_cache_persist;
|
||||||
|
|
||||||
extern struct dns_domain_check_order dns_conf_check_order[DOMAIN_CHECK_NUM];
|
extern struct dns_domain_check_orders dns_conf_check_orders;
|
||||||
|
|
||||||
extern struct dns_server_groups dns_conf_server_groups[DNS_NAX_GROUP_NUMBER];
|
extern struct dns_server_groups dns_conf_server_groups[DNS_NAX_GROUP_NUMBER];
|
||||||
extern int dns_conf_server_group_num;
|
extern int dns_conf_server_group_num;
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ struct dns_request {
|
|||||||
DECLARE_HASHTABLE(ip_map, 4);
|
DECLARE_HASHTABLE(ip_map, 4);
|
||||||
|
|
||||||
struct dns_domain_rule domain_rule;
|
struct dns_domain_rule domain_rule;
|
||||||
struct dns_domain_check_order *check_order_list;
|
struct dns_domain_check_orders *check_order_list;
|
||||||
int check_order;
|
int check_order;
|
||||||
|
|
||||||
struct dns_request_pending_list *request_pending_list;
|
struct dns_request_pending_list *request_pending_list;
|
||||||
@@ -1850,7 +1850,7 @@ static struct dns_request *_dns_server_new_request(void)
|
|||||||
request->rcode = DNS_RC_SERVFAIL;
|
request->rcode = DNS_RC_SERVFAIL;
|
||||||
request->conn = NULL;
|
request->conn = NULL;
|
||||||
request->result_callback = NULL;
|
request->result_callback = NULL;
|
||||||
request->check_order_list = dns_conf_check_order;
|
request->check_order_list = &dns_conf_check_orders;
|
||||||
INIT_LIST_HEAD(&request->list);
|
INIT_LIST_HEAD(&request->list);
|
||||||
hash_init(request->ip_map);
|
hash_init(request->ip_map);
|
||||||
_dns_server_request_get(request);
|
_dns_server_request_get(request);
|
||||||
@@ -2030,8 +2030,8 @@ static int _dns_server_check_speed(struct dns_request *request, char *ip)
|
|||||||
ping_timeout = 10;
|
ping_timeout = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
port = request->check_order_list[order].tcp_port;
|
port = request->check_order_list->orders[order].tcp_port;
|
||||||
type = request->check_order_list[order].type;
|
type = request->check_order_list->orders[order].type;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case DOMAIN_CHECK_ICMP:
|
case DOMAIN_CHECK_ICMP:
|
||||||
tlog(TLOG_DEBUG, "ping %s with icmp, order: %d, timeout: %d", ip, order, ping_timeout);
|
tlog(TLOG_DEBUG, "ping %s with icmp, order: %d, timeout: %d", ip, order, ping_timeout);
|
||||||
@@ -3242,7 +3242,7 @@ static int _dns_server_qtype_soa(struct dns_request *request)
|
|||||||
|
|
||||||
static void _dns_server_process_speed_check_rule(struct dns_request *request)
|
static void _dns_server_process_speed_check_rule(struct dns_request *request)
|
||||||
{
|
{
|
||||||
struct dns_domain_check_order *check_order = NULL;
|
struct dns_domain_check_orders *check_order = NULL;
|
||||||
|
|
||||||
/* get domain rule flag */
|
/* get domain rule flag */
|
||||||
check_order = request->domain_rule.rules[DOMAIN_RULE_CHECKSPEED];
|
check_order = request->domain_rule.rules[DOMAIN_RULE_CHECKSPEED];
|
||||||
@@ -3475,11 +3475,11 @@ void _dns_server_check_ipv6_ready(void)
|
|||||||
|
|
||||||
if (do_get_conf == 0) {
|
if (do_get_conf == 0) {
|
||||||
for (i = 0; i < DOMAIN_CHECK_NUM; i++) {
|
for (i = 0; i < DOMAIN_CHECK_NUM; i++) {
|
||||||
if (dns_conf_check_order[i].type == DOMAIN_CHECK_ICMP) {
|
if (dns_conf_check_orders.orders[i].type == DOMAIN_CHECK_ICMP) {
|
||||||
is_icmp_check_set = 1;
|
is_icmp_check_set = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dns_conf_check_order[i].type == DOMAIN_CHECK_TCP) {
|
if (dns_conf_check_orders.orders[i].type == DOMAIN_CHECK_TCP) {
|
||||||
is_tcp_check_set = 1;
|
is_tcp_check_set = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3640,7 +3640,7 @@ static const char *_dns_server_get_request_groupname(struct dns_request *request
|
|||||||
|
|
||||||
static void _dns_server_check_set_passthrough(struct dns_request *request)
|
static void _dns_server_check_set_passthrough(struct dns_request *request)
|
||||||
{
|
{
|
||||||
if (request->check_order_list[0].type == DOMAIN_CHECK_NONE) {
|
if (request->check_order_list->orders[0].type == DOMAIN_CHECK_NONE) {
|
||||||
request->passthrough = 1;
|
request->passthrough = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user