smartdns: fix compile warnings for gcc 11.

This commit is contained in:
Nick Peng
2023-02-17 21:51:17 +08:00
parent 464bf28601
commit 694d093fc4
6 changed files with 21 additions and 1 deletions

View File

@@ -329,7 +329,7 @@ static void _dns_cache_remove_by_domain(struct dns_cache_key *cache_key)
continue; continue;
} }
if (strncmp(dns_cache->info.dns_group_name, cache_key->dns_group_name, DNS_MAX_CNAME_LEN) != 0) { if (strncmp(dns_cache->info.dns_group_name, cache_key->dns_group_name, DNS_GROUP_NAME_LEN) != 0) {
continue; continue;
} }

View File

@@ -97,6 +97,7 @@ struct dns_server_info {
/* server type */ /* server type */
dns_server_type_t type; dns_server_type_t type;
long long so_mark; long long so_mark;
int drop_packet_latency_ms;
/* client socket */ /* client socket */
int fd; int fd;
@@ -118,6 +119,7 @@ struct dns_server_info {
time_t last_send; time_t last_send;
time_t last_recv; time_t last_recv;
unsigned long send_tick;
int prohibit; int prohibit;
/* server addr info */ /* server addr info */
@@ -1056,6 +1058,7 @@ static int _dns_client_server_add(char *server_ip, char *server_host, int port,
server_info->skip_check_cert = skip_check_cert; server_info->skip_check_cert = skip_check_cert;
server_info->prohibit = 0; server_info->prohibit = 0;
server_info->so_mark = flags->set_mark; server_info->so_mark = flags->set_mark;
server_info->drop_packet_latency_ms = flags->drop_packet_latency_ms;
safe_strncpy(server_info->proxy_name, flags->proxyname, sizeof(server_info->proxy_name)); safe_strncpy(server_info->proxy_name, flags->proxyname, sizeof(server_info->proxy_name));
pthread_mutex_init(&server_info->lock, NULL); pthread_mutex_init(&server_info->lock, NULL);
memcpy(&server_info->flags, flags, sizeof(server_info->flags)); memcpy(&server_info->flags, flags, sizeof(server_info->flags));
@@ -2261,6 +2264,11 @@ static int _dns_client_process_udp(struct dns_server_info *server_info, struct e
/* update recv time */ /* update recv time */
time(&server_info->last_recv); time(&server_info->last_recv);
int latency = get_tick_count() - server_info->send_tick;
if (latency < server_info->drop_packet_latency_ms) {
return 0;
}
/* processing dns packet */ /* processing dns packet */
if (_dns_client_recv(server_info, inpacket, len, (struct sockaddr *)&from, from_len) != 0) { if (_dns_client_recv(server_info, inpacket, len, (struct sockaddr *)&from, from_len) != 0) {
return -1; return -1;
@@ -3326,6 +3334,7 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet,
continue; continue;
} }
time(&server_info->last_send); time(&server_info->last_send);
server_info->send_tick = get_tick_count();
} }
pthread_mutex_unlock(&client.server_list_lock); pthread_mutex_unlock(&client.server_list_lock);

View File

@@ -113,6 +113,7 @@ struct client_dns_server_flags {
unsigned int server_flag; unsigned int server_flag;
unsigned int result_flag; unsigned int result_flag;
long long set_mark; long long set_mark;
int drop_packet_latency_ms;
char proxyname[DNS_MAX_CNAME_LEN]; char proxyname[DNS_MAX_CNAME_LEN];
union { union {
struct client_dns_server_flag_udp udp; struct client_dns_server_flag_udp udp;

View File

@@ -462,6 +462,7 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
unsigned int result_flag = 0; unsigned int result_flag = 0;
unsigned int server_flag = 0; unsigned int server_flag = 0;
unsigned char *spki = NULL; unsigned char *spki = NULL;
int drop_packet_latency_ms = 0;
int ttl = 0; int ttl = 0;
/* clang-format off */ /* clang-format off */
@@ -472,6 +473,7 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
/* experimental feature */ /* experimental feature */
{"check-edns", no_argument, NULL, 'e'}, /* check edns */ {"check-edns", no_argument, NULL, 'e'}, /* check edns */
#endif #endif
{"drop-packet-latency", required_argument, NULL, 'D'},
{"spki-pin", required_argument, NULL, 'p'}, /* check SPKI pin */ {"spki-pin", required_argument, NULL, 'p'}, /* check SPKI pin */
{"host-name", required_argument, NULL, 'h'}, /* host name */ {"host-name", required_argument, NULL, 'h'}, /* host name */
{"http-host", required_argument, NULL, 'H'}, /* http host */ {"http-host", required_argument, NULL, 'H'}, /* http host */
@@ -503,6 +505,7 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
server->tls_host_verify[0] = '\0'; server->tls_host_verify[0] = '\0';
server->proxyname[0] = '\0'; server->proxyname[0] = '\0';
server->set_mark = -1; server->set_mark = -1;
server->drop_packet_latency_ms = drop_packet_latency_ms;
if (parse_uri(ip, scheme, server->server, &port, server->path) != 0) { if (parse_uri(ip, scheme, server->server, &port, server->path) != 0) {
return -1; return -1;
@@ -572,6 +575,10 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
safe_strncpy(server->httphost, optarg, DNS_MAX_CNAME_LEN); safe_strncpy(server->httphost, optarg, DNS_MAX_CNAME_LEN);
break; break;
} }
case 'D': {
drop_packet_latency_ms = atoi(optarg);
break;
}
case 'E': { case 'E': {
server_flag |= SERVER_FLAG_EXCLUDE_DEFAULT; server_flag |= SERVER_FLAG_EXCLUDE_DEFAULT;
break; break;
@@ -618,6 +625,7 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
server->result_flag = result_flag; server->result_flag = result_flag;
server->server_flag = server_flag; server->server_flag = server_flag;
server->ttl = ttl; server->ttl = ttl;
server->drop_packet_latency_ms = drop_packet_latency_ms;
dns_conf_server_num++; dns_conf_server_num++;
tlog(TLOG_DEBUG, "add server %s, flag: %X, ttl: %d", ip, result_flag, ttl); tlog(TLOG_DEBUG, "add server %s, flag: %X, ttl: %d", ip, result_flag, ttl);

View File

@@ -282,6 +282,7 @@ struct dns_servers {
int ttl; int ttl;
dns_server_type_t type; dns_server_type_t type;
long long set_mark; long long set_mark;
unsigned int drop_packet_latency_ms;
char skip_check_cert; char skip_check_cert;
char spki[DNS_MAX_SPKI_LEN]; char spki[DNS_MAX_SPKI_LEN];
char hostname[DNS_MAX_CNAME_LEN]; char hostname[DNS_MAX_CNAME_LEN];

View File

@@ -269,6 +269,7 @@ static int _smartdns_add_servers(void)
flags.server_flag = dns_conf_servers[i].server_flag; flags.server_flag = dns_conf_servers[i].server_flag;
flags.result_flag = dns_conf_servers[i].result_flag; flags.result_flag = dns_conf_servers[i].result_flag;
flags.set_mark = dns_conf_servers[i].set_mark; flags.set_mark = dns_conf_servers[i].set_mark;
flags.drop_packet_latency_ms = dns_conf_servers[i].drop_packet_latency_ms;
safe_strncpy(flags.proxyname, dns_conf_servers[i].proxyname, sizeof(flags.proxyname)); safe_strncpy(flags.proxyname, dns_conf_servers[i].proxyname, sizeof(flags.proxyname));
ret = dns_client_add_server(dns_conf_servers[i].server, dns_conf_servers[i].port, dns_conf_servers[i].type, ret = dns_client_add_server(dns_conf_servers[i].server, dns_conf_servers[i].port, dns_conf_servers[i].type,
&flags); &flags);