conf: some minor fix

This commit is contained in:
Nick Peng
2023-04-13 23:05:56 +08:00
parent 0e6eeefe5e
commit 6ca3bfdf36
5 changed files with 55 additions and 5 deletions

View File

@@ -1843,7 +1843,8 @@ static int _dns_client_create_socket_udp(struct dns_server_info *server_info)
server_info->status = DNS_SERVER_STATUS_CONNECTIONLESS;
if (connect(fd, &server_info->addr, server_info->ai_addrlen) != 0) {
if (errno == ENETUNREACH || errno == EHOSTUNREACH || errno == ECONNREFUSED) {
if (errno == ENETUNREACH || errno == EHOSTUNREACH || errno == ECONNREFUSED || errno == EPERM ||
errno == EACCES) {
tlog(TLOG_INFO, "connect %s failed, %s", server_info->ip, strerror(errno));
goto errout;
}
@@ -3567,7 +3568,8 @@ static int _dns_client_send_packet(struct dns_query_struct *query, void *packet,
time(&now);
if (now - lastlog > 120) {
lastlog = now;
tlog(TLOG_WARN, "Send query %s to upstream server failed, total server number %d", query->domain, total_server);
tlog(TLOG_WARN, "Send query %s to upstream server failed, total server number %d", query->domain,
total_server);
}
return -1;
}

View File

@@ -83,7 +83,7 @@ static struct config_enum_list dns_conf_response_mode_enum[] = {
enum response_mode_type dns_conf_response_mode;
/* cache */
int dns_conf_cachesize = -1;
ssize_t dns_conf_cachesize = -1;
int dns_conf_prefetch = 0;
int dns_conf_serve_expired = 1;
int dns_conf_serve_expired_ttl = 24 * 3600 * 3; /* 3 days */
@@ -3250,7 +3250,7 @@ static struct config_item _config_item[] = {
CONF_CUSTOM("nftset-no-speed", _config_nftset_no_speed, NULL),
CONF_CUSTOM("speed-check-mode", _config_speed_check_mode, NULL),
CONF_INT("tcp-idle-time", &dns_conf_tcp_idle_time, 0, 3600),
CONF_INT("cache-size", &dns_conf_cachesize, 0, CONF_INT_MAX),
CONF_SSIZE("cache-size", &dns_conf_cachesize, 0, CONF_INT_MAX),
CONF_CUSTOM("cache-file", _config_option_parser_filepath, (char *)&dns_conf_cache_file),
CONF_YESNO("cache-persist", &dns_conf_cache_persist),
CONF_YESNO("prefetch-domain", &dns_conf_prefetch),

View File

@@ -434,7 +434,7 @@ extern char dns_conf_bind_ca_key_pass[DNS_MAX_PATH];
extern char dns_conf_need_cert;
extern int dns_conf_tcp_idle_time;
extern int dns_conf_cachesize;
extern ssize_t dns_conf_cachesize;
extern int dns_conf_prefetch;
extern int dns_conf_serve_expired;
extern int dns_conf_serve_expired_ttl;

View File

@@ -71,6 +71,12 @@ struct config_item_size {
size_t max;
};
struct config_item_ssize {
ssize_t *data;
ssize_t min;
ssize_t max;
};
struct config_enum_list {
char *name;
int id;
@@ -116,6 +122,13 @@ struct config_enum {
.data = value, .min = min_value, .max = max_value \
} \
}
#define CONF_SSIZE(key, value, min_value, max_value) \
{ \
key, conf_ssize, &(struct config_item_ssize) \
{ \
.data = value, .min = min_value, .max = max_value \
} \
}
#define CONF_ENUM(key, value, enum) \
{ \
@@ -153,6 +166,8 @@ extern int conf_yesno(const char *item, void *data, int argc, char *argv[]);
extern int conf_size(const char *item, void *data, int argc, char *argv[]);
extern int conf_ssize(const char *item, void *data, int argc, char *argv[]);
extern int conf_enum(const char *item, void *data, int argc, char *argv[]);
/*

View File

@@ -189,6 +189,39 @@ int conf_size(const char *item, void *data, int argc, char *argv[])
return 0;
}
int conf_ssize(const char *item, void *data, int argc, char *argv[])
{
int base = 1;
ssize_t size = 0;
int num = 0;
struct config_item_ssize *item_size = data;
char *value = argv[1];
if (strstr(value, "k") || strstr(value, "K")) {
base = 1024;
} else if (strstr(value, "m") || strstr(value, "M")) {
base = 1024 * 1024;
} else if (strstr(value, "g") || strstr(value, "G")) {
base = 1024 * 1024 * 1024;
}
num = atoi(value);
if (num < 0) {
return -1;
}
size = num * base;
if (size > item_size->max) {
size = item_size->max;
} else if (size < item_size->min) {
size = item_size->min;
}
*(item_size->data) = size;
return 0;
}
int conf_enum(const char *item, void *data, int argc, char *argv[])
{
struct config_enum *item_enum = data;