code: cleanup lint and extra compile warnings

This commit is contained in:
Nick Peng
2022-07-10 10:32:01 +08:00
parent 4e2161c6fc
commit a83818c094
22 changed files with 695 additions and 574 deletions

View File

@@ -72,7 +72,7 @@ struct dns_client_ecs {
/* TCP/TLS buffer */
struct dns_server_buff {
unsigned char data[DNS_TCP_BUFFER];
unsigned short len;
int len;
};
typedef enum dns_server_status {
@@ -172,7 +172,7 @@ struct dns_server_group {
/* dns client */
struct dns_client {
pthread_t tid;
int run;
atomic_t run;
int epoll_fd;
/* dns server list */
@@ -252,9 +252,9 @@ static LIST_HEAD(pending_servers);
static pthread_mutex_t pending_server_mutex = PTHREAD_MUTEX_INITIALIZER;
static int dns_client_has_bootstrap_dns = 0;
int _ssl_read(struct dns_server_info *server, void *buff, int num)
static ssize_t _ssl_read(struct dns_server_info *server, void *buff, int num)
{
int ret = 0;
ssize_t ret = 0;
if (server == NULL || buff == NULL) {
return SSL_ERROR_SYSCALL;
}
@@ -264,9 +264,9 @@ int _ssl_read(struct dns_server_info *server, void *buff, int num)
return ret;
}
int _ssl_write(struct dns_server_info *server, const void *buff, int num)
static ssize_t _ssl_write(struct dns_server_info *server, const void *buff, int num)
{
int ret = 0;
ssize_t ret = 0;
if (server == NULL || buff == NULL || server->ssl == NULL) {
return SSL_ERROR_SYSCALL;
}
@@ -277,7 +277,7 @@ int _ssl_write(struct dns_server_info *server, const void *buff, int num)
return ret;
}
int _ssl_shutdown(struct dns_server_info *server)
static int _ssl_shutdown(struct dns_server_info *server)
{
int ret = 0;
if (server == NULL || server->ssl == NULL) {
@@ -290,7 +290,7 @@ int _ssl_shutdown(struct dns_server_info *server)
return ret;
}
int _ssl_get_error(struct dns_server_info *server, int ret)
static int _ssl_get_error(struct dns_server_info *server, int ret)
{
int err = 0;
if (server == NULL || server->ssl == NULL) {
@@ -303,7 +303,7 @@ int _ssl_get_error(struct dns_server_info *server, int ret)
return err;
}
int _ssl_do_handshake(struct dns_server_info *server)
static int _ssl_do_handshake(struct dns_server_info *server)
{
int err = 0;
if (server == NULL || server->ssl == NULL) {
@@ -316,7 +316,7 @@ int _ssl_do_handshake(struct dns_server_info *server)
return err;
}
int _ssl_session_reused(struct dns_server_info *server)
static int _ssl_session_reused(struct dns_server_info *server)
{
int err = 0;
if (server == NULL || server->ssl == NULL) {
@@ -329,9 +329,9 @@ int _ssl_session_reused(struct dns_server_info *server)
return err;
}
SSL_SESSION *_ssl_get1_session(struct dns_server_info *server)
static SSL_SESSION *_ssl_get1_session(struct dns_server_info *server)
{
SSL_SESSION *ret = 0;
SSL_SESSION *ret = NULL;
if (server == NULL || server->ssl == NULL) {
return NULL;
}
@@ -378,7 +378,7 @@ dns_server_type_t dns_client_get_server_type(struct dns_server_info *server_info
return server_info->type;
}
const char *_dns_server_get_type_string(dns_server_type_t type)
static const char *_dns_server_get_type_string(dns_server_type_t type)
{
const char *type_str = "";
@@ -432,7 +432,8 @@ errout:
/* check whether server exists */
static int _dns_client_server_exist(const char *server_ip, int port, dns_server_type_t server_type)
{
struct dns_server_info *server_info, *tmp;
struct dns_server_info *server_info = NULL;
struct dns_server_info *tmp = NULL;
pthread_mutex_lock(&client.server_list_lock);
list_for_each_entry_safe(server_info, tmp, &client.dns_server_list, list)
{
@@ -440,7 +441,7 @@ static int _dns_client_server_exist(const char *server_ip, int port, dns_server_
continue;
}
if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN)) {
if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN) != 0) {
continue;
}
@@ -469,7 +470,8 @@ static void _dns_client_server_update_ttl(struct ping_host_struct *ping_host, co
/* get server control block by ip and port, type */
static struct dns_server_info *_dns_client_get_server(char *server_ip, int port, dns_server_type_t server_type)
{
struct dns_server_info *server_info, *tmp;
struct dns_server_info *server_info = NULL;
struct dns_server_info *tmp = NULL;
struct dns_server_info *server_info_return = NULL;
if (server_ip == NULL) {
@@ -483,7 +485,7 @@ static struct dns_server_info *_dns_client_get_server(char *server_ip, int port,
continue;
}
if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN)) {
if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN) != 0) {
continue;
}
@@ -500,7 +502,7 @@ static struct dns_server_info *_dns_client_get_server(char *server_ip, int port,
/* get server group by name */
static struct dns_server_group *_dns_client_get_group(const char *group_name)
{
unsigned long key;
uint32_t key = 0;
struct dns_server_group *group = NULL;
struct hlist_node *tmp = NULL;
@@ -542,7 +544,7 @@ static struct dns_server_group *_dns_client_get_dnsserver_group(const char *grou
}
/* add server to group */
static int _dns_client_add_to_group(char *group_name, struct dns_server_info *server_info)
static int _dns_client_add_to_group(const char *group_name, struct dns_server_info *server_info)
{
struct dns_server_group *group = NULL;
struct dns_server_group_member *group_member = NULL;
@@ -572,9 +574,10 @@ errout:
return -1;
}
static int _dns_client_add_to_pending_group(char *group_name, char *server_ip, int port, dns_server_type_t server_type)
static int _dns_client_add_to_pending_group(const char *group_name, char *server_ip, int port, dns_server_type_t server_type)
{
struct dns_server_pending *item, *tmp;
struct dns_server_pending *item = NULL;
struct dns_server_pending *tmp = NULL;
struct dns_server_pending *pending = NULL;
struct dns_server_pending_group *group = NULL;
@@ -618,7 +621,7 @@ errout:
}
/* add server to group */
static int _dns_client_add_to_group_pending(char *group_name, char *server_ip, int port, dns_server_type_t server_type,
static int _dns_client_add_to_group_pending(const char *group_name, char *server_ip, int port, dns_server_type_t server_type,
int ispending)
{
struct dns_server_info *server_info = NULL;
@@ -639,7 +642,7 @@ static int _dns_client_add_to_group_pending(char *group_name, char *server_ip, i
return _dns_client_add_to_group(group_name, server_info);
}
int dns_client_add_to_group(char *group_name, char *server_ip, int port, dns_server_type_t server_type)
int dns_client_add_to_group(const char *group_name, char *server_ip, int port, dns_server_type_t server_type)
{
return _dns_client_add_to_group_pending(group_name, server_ip, port, server_type, 1);
}
@@ -655,8 +658,8 @@ static int _dns_client_remove_member(struct dns_server_group_member *group_membe
static int _dns_client_remove_from_group(struct dns_server_group *group, struct dns_server_info *server_info)
{
struct dns_server_group_member *group_member;
struct dns_server_group_member *tmp;
struct dns_server_group_member *group_member = NULL;
struct dns_server_group_member *tmp = NULL;
list_for_each_entry_safe(group_member, tmp, &group->head, list)
{
@@ -672,9 +675,9 @@ static int _dns_client_remove_from_group(struct dns_server_group *group, struct
static int _dns_client_remove_server_from_groups(struct dns_server_info *server_info)
{
struct dns_server_group *group;
struct dns_server_group *group = NULL;
struct hlist_node *tmp = NULL;
int i = 0;
unsigned long i = 0;
hash_for_each_safe(client.group, i, tmp, group, node)
{
@@ -684,7 +687,7 @@ static int _dns_client_remove_server_from_groups(struct dns_server_info *server_
return 0;
}
int dns_client_remove_from_group(char *group_name, char *server_ip, int port, dns_server_type_t server_type)
int dns_client_remove_from_group(const char *group_name, char *server_ip, int port, dns_server_type_t server_type)
{
struct dns_server_info *server_info = NULL;
struct dns_server_group *group = NULL;
@@ -702,9 +705,9 @@ int dns_client_remove_from_group(char *group_name, char *server_ip, int port, dn
return _dns_client_remove_from_group(group, server_info);
}
int dns_client_add_group(char *group_name)
int dns_client_add_group(const char *group_name)
{
unsigned long key;
uint32_t key = 0;
struct dns_server_group *group = NULL;
if (group_name == NULL) {
@@ -739,8 +742,8 @@ errout:
static int _dns_client_remove_group(struct dns_server_group *group)
{
struct dns_server_group_member *group_member;
struct dns_server_group_member *tmp;
struct dns_server_group_member *group_member = NULL;
struct dns_server_group_member *tmp = NULL;
if (group == NULL) {
return 0;
@@ -757,9 +760,9 @@ static int _dns_client_remove_group(struct dns_server_group *group)
return 0;
}
int dns_client_remove_group(char *group_name)
int dns_client_remove_group(const char *group_name)
{
unsigned long key;
uint32_t key = 0;
struct dns_server_group *group = NULL;
struct hlist_node *tmp = NULL;
@@ -784,9 +787,9 @@ int dns_client_remove_group(char *group_name)
static void _dns_client_group_remove_all(void)
{
struct dns_server_group *group;
struct dns_server_group *group = NULL;
struct hlist_node *tmp = NULL;
int i = 0;
unsigned long i = 0;
hash_for_each_safe(client.group, i, tmp, group, node)
{
@@ -910,7 +913,7 @@ static int _dns_client_set_trusted_cert(SSL_CTX *ssl_ctx)
return 0;
}
SSL_CTX *_ssl_ctx_get(void)
static SSL_CTX *_ssl_ctx_get(void)
{
pthread_mutex_lock(&client.server_list_lock);
SSL_CTX *ssl_ctx = client.ssl_ctx;
@@ -960,7 +963,7 @@ static int _dns_client_server_add(char *server_ip, char *server_host, int port,
int spki_data_len = 0;
int ttl = 0;
char port_s[8];
int sock_type;
int sock_type = 0;
char skip_check_cert = 0;
switch (server_type) {
@@ -1196,7 +1199,8 @@ static void _dns_client_server_close(struct dns_server_info *server_info)
/* remove all servers information */
static void _dns_client_server_remove_all(void)
{
struct dns_server_info *server_info, *tmp;
struct dns_server_info *server_info = NULL;
struct dns_server_info *tmp = NULL;
pthread_mutex_lock(&client.server_list_lock);
list_for_each_entry_safe(server_info, tmp, &client.dns_server_list, list)
{
@@ -1211,7 +1215,8 @@ static void _dns_client_server_remove_all(void)
/* remove single server */
static int _dns_client_server_remove(char *server_ip, int port, dns_server_type_t server_type)
{
struct dns_server_info *server_info, *tmp;
struct dns_server_info *server_info = NULL;
struct dns_server_info *tmp = NULL;
/* find server and remove */
pthread_mutex_lock(&client.server_list_lock);
@@ -1221,7 +1226,7 @@ static int _dns_client_server_remove(char *server_ip, int port, dns_server_type_
continue;
}
if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN)) {
if (strncmp(server_info->ip, server_ip, DNS_HOSTNAME_LEN) != 0) {
continue;
}
@@ -1237,7 +1242,7 @@ static int _dns_client_server_remove(char *server_ip, int port, dns_server_type_
return -1;
}
void _dns_client_server_pending_get(struct dns_server_pending *pending)
static void _dns_client_server_pending_get(struct dns_server_pending *pending)
{
if (atomic_inc_return(&pending->refcnt) <= 0) {
tlog(TLOG_ERROR, "BUG: pending ref is invalid");
@@ -1245,9 +1250,10 @@ void _dns_client_server_pending_get(struct dns_server_pending *pending)
}
}
void _dns_client_server_pending_release(struct dns_server_pending *pending)
static void _dns_client_server_pending_release(struct dns_server_pending *pending)
{
struct dns_server_pending_group *group, *tmp;
struct dns_server_pending_group *group = NULL;
struct dns_server_pending_group *tmp = NULL;
int refcnt = atomic_dec_return(&pending->refcnt);
@@ -1271,7 +1277,7 @@ void _dns_client_server_pending_release(struct dns_server_pending *pending)
free(pending);
}
void _dns_client_server_pending_remove(struct dns_server_pending *pending)
static void _dns_client_server_pending_remove(struct dns_server_pending *pending)
{
pthread_mutex_lock(&pending_server_mutex);
list_del_init(&pending->list);
@@ -1320,7 +1326,7 @@ errout:
static int _dns_client_add_server_pending(char *server_ip, char *server_host, int port, dns_server_type_t server_type,
struct client_dns_server_flags *flags, int ispending)
{
int ret;
int ret = 0;
if (server_type >= DNS_SERVER_TYPE_END) {
tlog(TLOG_ERROR, "server type is invalid.");
@@ -1375,9 +1381,9 @@ static void _dns_client_query_get(struct dns_query_struct *query)
static void _dns_client_query_release(struct dns_query_struct *query)
{
int refcnt = atomic_dec_return(&query->refcnt);
int bucket = 0;
struct dns_query_replied *replied_map;
struct hlist_node *tmp;
unsigned long bucket = 0;
struct dns_query_replied *replied_map = NULL;
struct hlist_node *tmp = NULL;
if (refcnt) {
if (refcnt < 0) {
@@ -1391,7 +1397,7 @@ static void _dns_client_query_release(struct dns_query_struct *query)
if (query->callback) {
tlog(TLOG_DEBUG, "result: %s, qtype: %d, hasresult: %d, id %d", query->domain, query->qtype, query->has_result,
query->sid);
query->callback(query->domain, DNS_QUERY_END, 0, NULL, NULL, 0, query->user_ptr);
query->callback(query->domain, DNS_QUERY_END, NULL, NULL, NULL, 0, query->user_ptr);
}
/* free resource */
@@ -1426,7 +1432,8 @@ static void _dns_client_query_remove(struct dns_query_struct *query)
static void _dns_client_query_remove_all(void)
{
struct dns_query_struct *query, *tmp;
struct dns_query_struct *query = NULL;
struct dns_query_struct *tmp = NULL;
LIST_HEAD(check_list);
pthread_mutex_lock(&client.domain_map_lock);
@@ -1441,8 +1448,6 @@ static void _dns_client_query_remove_all(void)
list_del_init(&query->period_list);
_dns_client_query_remove(query);
}
return;
}
static void _dns_client_check_udp_nat(struct dns_query_struct *query)
@@ -1475,8 +1480,8 @@ static void _dns_client_check_udp_nat(struct dns_query_struct *query)
static void _dns_client_check_tcp(void)
{
struct dns_server_info *server_info;
time_t now;
struct dns_server_info *server_info = NULL;
time_t now = 0;
time(&now);
@@ -1510,7 +1515,7 @@ static struct dns_query_struct *_dns_client_get_request(unsigned short sid, char
struct dns_query_struct *query = NULL;
struct dns_query_struct *query_result = NULL;
struct hlist_node *tmp = NULL;
uint32_t key;
uint32_t key = 0;
/* get query by hash key : id + domain */
key = hash_string(domain);
@@ -1570,17 +1575,17 @@ static int _dns_replied_check_add(struct dns_query_struct *dns_query, struct soc
static int _dns_client_recv(struct dns_server_info *server_info, unsigned char *inpacket, int inpacket_len,
struct sockaddr *from, socklen_t from_len)
{
int len;
int i;
int qtype;
int qclass;
int len = 0;
int i = 0;
int qtype = 0;
int qclass = 0;
char domain[DNS_MAX_CNAME_LEN];
int rr_count;
int rr_count = 0;
struct dns_rrs *rrs = NULL;
unsigned char packet_buff[DNS_PACKSIZE];
struct dns_packet *packet = (struct dns_packet *)packet_buff;
int ret = 0;
struct dns_query_struct *query;
struct dns_query_struct *query = NULL;
int request_num = 0;
int has_opt = 0;
@@ -1631,7 +1636,7 @@ static int _dns_client_recv(struct dns_server_info *server_info, unsigned char *
}
/* avoid multiple replies */
if (_dns_replied_check_add(query, (struct sockaddr *)from, from_len) != 0) {
if (_dns_replied_check_add(query, from, from_len) != 0) {
_dns_client_query_release(query);
return 0;
}
@@ -1676,6 +1681,9 @@ static int _dns_client_create_socket_udp(struct dns_server_info *server_info)
goto errout;
}
server_info->fd = fd;
server_info->status = DNS_SERVER_STATUS_CONNECTIONLESS;
memset(&event, 0, sizeof(event));
event.events = EPOLLIN;
event.data.ptr = server_info;
@@ -1684,8 +1692,6 @@ static int _dns_client_create_socket_udp(struct dns_server_info *server_info)
return -1;
}
server_info->fd = fd;
server_info->status = DNS_SERVER_STATUS_CONNECTIONLESS;
setsockopt(server_info->fd, IPPROTO_IP, IP_RECVTTL, &on, sizeof(on));
setsockopt(server_info->fd, SOL_IP, IP_TTL, &val, sizeof(val));
setsockopt(server_info->fd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
@@ -1703,6 +1709,9 @@ errout:
close(fd);
}
server_info->fd = -1;
server_info->status = DNS_SERVER_STATUS_DISCONNECTED;
return -1;
}
@@ -1737,7 +1746,7 @@ static int _DNS_client_create_socket_tcp(struct dns_server_info *server_info)
setsockopt(fd, IPPROTO_TCP, TCP_THIN_LINEAR_TIMEOUTS, &yes, sizeof(yes));
set_sock_keepalive(fd, 15, 3, 4);
if (connect(fd, (struct sockaddr *)&server_info->addr, server_info->ai_addrlen) != 0) {
if (connect(fd, &server_info->addr, server_info->ai_addrlen) != 0) {
if (errno == ENETUNREACH) {
tlog(TLOG_DEBUG, "connect %s failed, %s", server_info->ip, strerror(errno));
goto errout;
@@ -1819,7 +1828,7 @@ static int _DNS_client_create_socket_tls(struct dns_server_info *server_info, ch
setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
setsockopt(fd, IPPROTO_IP, IP_TOS, &ip_tos, sizeof(ip_tos));
if (connect(fd, (struct sockaddr *)&server_info->addr, server_info->ai_addrlen) != 0) {
if (connect(fd, &server_info->addr, server_info->ai_addrlen) != 0) {
if (errno == ENETUNREACH) {
tlog(TLOG_DEBUG, "connect %s failed, %s", server_info->ip, strerror(errno));
goto errout;
@@ -1899,11 +1908,11 @@ static int _dns_client_create_socket(struct dns_server_info *server_info)
} else if (server_info->type == DNS_SERVER_TCP) {
return _DNS_client_create_socket_tcp(server_info);
} else if (server_info->type == DNS_SERVER_TLS) {
struct client_dns_server_flag_tls *flag_tls;
struct client_dns_server_flag_tls *flag_tls = NULL;
flag_tls = &server_info->flags.tls;
return _DNS_client_create_socket_tls(server_info, flag_tls->hostname);
} else if (server_info->type == DNS_SERVER_HTTPS) {
struct client_dns_server_flag_https *flag_https;
struct client_dns_server_flag_https *flag_https = NULL;
flag_https = &server_info->flags.https;
return _DNS_client_create_socket_tls(server_info, flag_https->hostname);
} else {
@@ -1915,7 +1924,7 @@ static int _dns_client_create_socket(struct dns_server_info *server_info)
static int _dns_client_process_udp(struct dns_server_info *server_info, struct epoll_event *event, unsigned long now)
{
int len;
int len = 0;
unsigned char inpacket[DNS_IN_PACKSIZE];
struct sockaddr_storage from;
socklen_t from_len = sizeof(from);
@@ -1924,7 +1933,7 @@ static int _dns_client_process_udp(struct dns_server_info *server_info, struct e
struct iovec iov;
char ans_data[4096];
int ttl = 0;
struct cmsghdr *cmsg;
struct cmsghdr *cmsg = NULL;
memset(&msg, 0, sizeof(msg));
iov.iov_base = (char *)inpacket;
@@ -2030,7 +2039,7 @@ static int _dns_client_socket_ssl_send(struct dns_server_info *server, const voi
static int _dns_client_socket_ssl_recv(struct dns_server_info *server, void *buf, int num)
{
int ret = 0;
ssize_t ret = 0;
int ssl_ret = 0;
unsigned long ssl_err = 0;
@@ -2227,7 +2236,7 @@ out:
static int _dns_client_process_tcp(struct dns_server_info *server_info, struct epoll_event *event, unsigned long now)
{
int len;
int len = 0;
int ret = -1;
if (event->events & EPOLLIN) {
@@ -2282,8 +2291,6 @@ static int _dns_client_process_tcp(struct dns_server_info *server_info, struct e
/* when connected */
if (event->events & EPOLLOUT) {
struct epoll_event event;
if (server_info->status == DNS_SERVER_STATUS_CONNECTING) {
server_info->status = DNS_SERVER_STATUS_CONNECTED;
tlog(TLOG_DEBUG, "tcp server %s connected", server_info->ip);
@@ -2319,10 +2326,11 @@ static int _dns_client_process_tcp(struct dns_server_info *server_info, struct e
}
/* clear epllout event */
memset(&event, 0, sizeof(event));
event.events = EPOLLIN;
event.data.ptr = server_info;
if (epoll_ctl(client.epoll_fd, EPOLL_CTL_MOD, server_info->fd, &event) != 0) {
struct epoll_event mod_event;
memset(&mod_event, 0, sizeof(mod_event));
mod_event.events = EPOLLIN;
mod_event.data.ptr = server_info;
if (epoll_ctl(client.epoll_fd, EPOLL_CTL_MOD, server_info->fd, &mod_event) != 0) {
tlog(TLOG_ERROR, "epoll ctl failed, %s", strerror(errno));
goto errout;
}
@@ -2344,15 +2352,16 @@ static inline int _dns_client_to_hex(int c)
{
if (c > 0x9) {
return 'A' + c - 0xA;
} else {
return '0' + c;
}
return '0' + c;
}
static int _dns_client_tls_matchName(const char *host, const char *pattern, int size)
{
int match = -1;
int i = 0, j = 0;
int i = 0;
int j = 0;
while (i < size && host[j] != '\0') {
if (toupper(pattern[i]) == toupper(host[j])) {
@@ -2526,7 +2535,7 @@ static int _dns_client_process_tls(struct dns_server_info *server_info, struct e
{
int ret = -1;
struct epoll_event fd_event;
int ssl_ret;
int ssl_ret = 0;
if (unlikely(server_info->ssl == NULL)) {
tlog(TLOG_ERROR, "ssl is invalid.");
@@ -2637,7 +2646,7 @@ static int _dns_client_send_udp(struct dns_server_info *server_info, void *packe
return -1;
}
send_len = sendto(server_info->fd, packet, len, 0, (struct sockaddr *)&server_info->addr, server_info->ai_addrlen);
send_len = sendto(server_info->fd, packet, len, 0, &server_info->addr, server_info->ai_addrlen);
if (send_len != len) {
return -1;
}
@@ -2826,7 +2835,7 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet,
{
server_info = group_member->server;
if (server_info->prohibit) {
time_t now;
time_t now = 0;
time(&now);
if ((now - 60 < server_info->last_send) && (now - 5 > server_info->last_recv)) {
continue;
@@ -2881,7 +2890,7 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet,
tlog(TLOG_DEBUG, "send query to %s failed, %s, type: %d", server_info->ip, strerror(send_err),
server_info->type);
time_t now;
time_t now = 0;
time(&now);
if (now - 5 > server_info->last_recv || send_err != ENOMEM) {
server_info->prohibit = 1;
@@ -2918,12 +2927,12 @@ static int _dns_client_dns_add_ecs(struct dns_query_struct *query, struct dns_pa
return dns_add_OPT_ECS(packet, &query->ecs.ecs);
}
static int _dns_client_send_query(struct dns_query_struct *query, char *doamin)
static int _dns_client_send_query(struct dns_query_struct *query, const char *doamin)
{
unsigned char packet_buff[DNS_PACKSIZE];
unsigned char inpacket[DNS_IN_PACKSIZE];
struct dns_packet *packet = (struct dns_packet *)packet_buff;
int encode_len;
int encode_len = 0;
/* init dns packet head */
struct dns_head head;
@@ -2971,7 +2980,7 @@ static int _dns_client_send_query(struct dns_query_struct *query, char *doamin)
return _dns_client_send_packet(query, inpacket, encode_len);
}
int _dns_client_query_setup_default_ecs(struct dns_query_struct *query)
static int _dns_client_query_setup_default_ecs(struct dns_query_struct *query)
{
int add_ipv4_ecs = 0;
int add_ipv6_ecs = 0;
@@ -3001,7 +3010,7 @@ int _dns_client_query_setup_default_ecs(struct dns_query_struct *query)
return 0;
}
int _dns_client_query_parser_options(struct dns_query_struct *query, struct dns_query_options *options)
static int _dns_client_query_parser_options(struct dns_query_struct *query, struct dns_query_options *options)
{
if (options == NULL) {
_dns_client_query_setup_default_ecs(query);
@@ -3011,7 +3020,7 @@ int _dns_client_query_parser_options(struct dns_query_struct *query, struct dns_
if (options->enable_flag & DNS_QUEY_OPTION_ECS_IP) {
struct sockaddr_storage addr;
socklen_t addr_len = sizeof(addr);
struct dns_opt_ecs *ecs;
struct dns_opt_ecs *ecs = NULL;
ecs = &query->ecs.ecs;
getaddr_by_host(options->ecs_ip.ip, (struct sockaddr *)&addr, &addr_len);
@@ -3022,13 +3031,13 @@ int _dns_client_query_parser_options(struct dns_query_struct *query, struct dns_
switch (addr.ss_family) {
case AF_INET: {
struct sockaddr_in *addr_in;
struct sockaddr_in *addr_in = NULL;
addr_in = (struct sockaddr_in *)&addr;
ecs->family = DNS_OPT_ECS_FAMILY_IPV4;
memcpy(&ecs->addr, &addr_in->sin_addr.s_addr, 4);
} break;
case AF_INET6: {
struct sockaddr_in6 *addr_in6;
struct sockaddr_in6 *addr_in6 = NULL;
addr_in6 = (struct sockaddr_in6 *)&addr;
if (IN6_IS_ADDR_V4MAPPED(&addr_in6->sin6_addr)) {
memcpy(&ecs->addr, addr_in6->sin6_addr.s6_addr + 12, 4);
@@ -3065,8 +3074,8 @@ int _dns_client_query_parser_options(struct dns_query_struct *query, struct dns_
return 0;
}
int dns_client_query(char *domain, int qtype, dns_client_callback callback, void *user_ptr, const char *group_name,
struct dns_query_options *options)
int dns_client_query(const char *domain, int qtype, dns_client_callback callback, void *user_ptr,
const char *group_name, struct dns_query_options *options)
{
struct dns_query_struct *query = NULL;
int ret = 0;
@@ -3143,7 +3152,8 @@ errout:
static void _dns_client_check_servers(void)
{
struct dns_server_info *server_info, *tmp;
struct dns_server_info *server_info = NULL;
struct dns_server_info *tmp = NULL;
static unsigned int second_count = 0;
second_count++;
@@ -3168,7 +3178,7 @@ static void _dns_client_check_servers(void)
pthread_mutex_unlock(&client.server_list_lock);
}
static int _dns_client_pending_server_resolve(char *domain, dns_rtcode_t rtcode, dns_type_t addr_type, char *ip,
static int _dns_client_pending_server_resolve(const char *domain, dns_rtcode_t rtcode, dns_type_t addr_type, char *ip,
unsigned int ping_time, void *user_ptr)
{
struct dns_server_pending *pending = user_ptr;
@@ -3198,7 +3208,8 @@ static int _dns_client_pending_server_resolve(char *domain, dns_rtcode_t rtcode,
static int _dns_client_add_pendings(struct dns_server_pending *pending, char *ip)
{
struct dns_server_pending_group *group, *tmp;
struct dns_server_pending_group *group = NULL;
struct dns_server_pending_group *tmp = NULL;
if (_dns_client_add_server_pending(ip, pending->host, pending->port, pending->type, &pending->flags, 0) != 0) {
return -1;
@@ -3219,7 +3230,8 @@ static int _dns_client_add_pendings(struct dns_server_pending *pending, char *ip
static void _dns_client_remove_all_pending_servers(void)
{
struct dns_server_pending *pending, *tmp;
struct dns_server_pending *pending = NULL;
struct dns_server_pending *tmp = NULL;
LIST_HEAD(remove_list);
pthread_mutex_lock(&pending_server_mutex);
@@ -3241,7 +3253,8 @@ static void _dns_client_remove_all_pending_servers(void)
static void _dns_client_add_pending_servers(void)
{
struct dns_server_pending *pending, *tmp;
struct dns_server_pending *pending = NULL;
struct dns_server_pending *tmp = NULL;
static int dely = 0;
LIST_HEAD(retry_list);
@@ -3344,7 +3357,8 @@ static void _dns_client_period_run_second(void)
static void _dns_client_period_run(void)
{
struct dns_query_struct *query, *tmp;
struct dns_query_struct *query = NULL;
struct dns_query_struct *tmp = NULL;
static unsigned int msec = 0;
msec++;
@@ -3383,24 +3397,22 @@ static void _dns_client_period_run(void)
if (msec % 10 == 0) {
_dns_client_period_run_second();
}
return;
}
static void *_dns_client_work(void *arg)
{
struct epoll_event events[DNS_MAX_EVENTS + 1];
int num;
int i;
int num = 0;
int i = 0;
unsigned long now = {0};
unsigned int sleep = 100;
int sleep_time;
int sleep_time = 0;
unsigned long expect_time = 0;
sleep_time = sleep;
now = get_tick_count() - sleep;
expect_time = now + sleep;
while (client.run) {
while (atomic_read(&client.run)) {
now = get_tick_count();
if (now >= expect_time) {
_dns_client_period_run();
@@ -3444,7 +3456,7 @@ int dns_client_set_ecs(char *ip, int subnet)
switch (addr.ss_family) {
case AF_INET: {
struct sockaddr_in *addr_in;
struct sockaddr_in *addr_in = NULL;
addr_in = (struct sockaddr_in *)&addr;
memcpy(&client.ecs_ipv4.ecs.addr, &addr_in->sin_addr.s_addr, 4);
client.ecs_ipv4.ecs.source_prefix = subnet;
@@ -3453,7 +3465,7 @@ int dns_client_set_ecs(char *ip, int subnet)
client.ecs_ipv4.enable = 1;
} break;
case AF_INET6: {
struct sockaddr_in6 *addr_in6;
struct sockaddr_in6 *addr_in6 = NULL;
addr_in6 = (struct sockaddr_in6 *)&addr;
if (IN6_IS_ADDR_V4MAPPED(&addr_in6->sin6_addr)) {
client.ecs_ipv4.ecs.source_prefix = subnet;
@@ -3478,7 +3490,7 @@ int dns_client_init(void)
{
pthread_attr_t attr;
int epollfd = -1;
int ret;
int ret = 0;
if (client.epoll_fd > 0) {
return -1;
@@ -3509,7 +3521,7 @@ int dns_client_init(void)
client.default_group = _dns_client_get_group(DNS_SERVER_GROUP_DEFAULT);
client.epoll_fd = epollfd;
client.run = 1;
atomic_set(&client.run, 1);
/* start work task */
ret = pthread_create(&client.tid, &attr, _dns_client_work, NULL);
@@ -3520,10 +3532,11 @@ int dns_client_init(void)
return 0;
errout:
if (client.tid > 0) {
if (client.tid) {
void *retval = NULL;
client.run = 0;
atomic_set(&client.run, 0);
pthread_join(client.tid, &retval);
client.tid = 0;
}
if (epollfd) {
@@ -3538,10 +3551,11 @@ errout:
void dns_client_exit(void)
{
if (client.tid > 0) {
if (client.tid) {
void *ret = NULL;
client.run = 0;
atomic_set(&client.run, 0);
pthread_join(client.tid, &ret);
client.tid = 0;
}
/* free all resouces */