code adjust for pull request #47

use_iouring
YuQing 2023-11-23 15:40:58 +08:00
parent 06f0ce67fd
commit 4eb30adb1a
7 changed files with 99 additions and 97 deletions

View File

@ -49,11 +49,7 @@ typedef DWORD (WINAPI *ThreadEntranceFunc)(LPVOID lpThreadParameter);
#endif
/* Internet address (兼容IPv6长度). */
typedef unsigned long int in_addr_64_t;
struct in_addr_64
{
in_addr_64_t s_addr;
};
typedef uint64_t in_addr_64_t;
#define FILE_SEPERATOR "/"
typedef int SOCKET;

View File

@ -698,8 +698,7 @@ int conn_pool_parse_server_info(const char *pServerStr,
count = parseAddress(server_info, parts);
if (count == 1) {
pServerInfo->port = default_port;
}
else {
} else {
char *endptr = NULL;
pServerInfo->port = (int)strtol(parts[1], &endptr, 10);
if ((endptr != NULL && *endptr != '\0') || pServerInfo->port <= 0) {

View File

@ -182,6 +182,17 @@ static inline int free_queue_init_ex(struct fast_task_queue *queue,
arg_size, NULL);
}
static inline int free_queue_init(struct fast_task_queue *queue,
const int max_connections, const int alloc_task_once,
const int min_buff_size, const int max_buff_size)
{
const char *name = "";
const bool double_buffers = false;
const int arg_size = 0;
return free_queue_init_ex(queue, name, double_buffers, max_connections,
alloc_task_once, min_buff_size, max_buff_size, arg_size);
}
static inline void free_queue_set_release_callback(
struct fast_task_queue *queue,
TaskReleaseCallback callback)

View File

@ -85,7 +85,6 @@ int id_generator_init_extra_ex(struct idg_context *context, const char *filename
const char *private_ip;
struct in_addr ip_addr;
struct in6_addr ip6_addr;
bool is_local_ip_ok = false;
private_ip = get_first_local_private_ip();
if (private_ip != NULL)
@ -104,23 +103,26 @@ int id_generator_init_extra_ex(struct idg_context *context, const char *filename
}
else if (strcmp(local_ip, LOCAL_LOOPBACK_IPv4) == 0)
{
// 注意当系统存在IPv6回环地址时为了简化系统的改动会将IPv6回环地址修改成IPv4回环地址返回
// 此处错误打印时需要带上IPv6回环地址
/* 注意当系统存在IPv6回环地址时为了简化系统的改动
IPv6IPv4
IPv6
*/
logWarning("file: "__FILE__", line: %d, "
"can't get local ip address, set to %s or %s",
__LINE__, LOCAL_LOOPBACK_IPv4, LOCAL_LOOPBACK_IPv6);
}
}
if (inet_pton(AF_INET, local_ip, &ip_addr) != 1)
if (inet_pton(AF_INET, local_ip, &ip_addr) == 1)
{
is_local_ip_ok = true;
}else if(inet_pton(AF_INET6, local_ip, &ip6_addr) != 1)
{
is_local_ip_ok = true;
//do nothing
}
if(is_local_ip_ok){
else if(inet_pton(AF_INET6, local_ip, &ip6_addr) == 1)
{
ip_addr.s_addr = *((in_addr_64_t *)&ip6_addr);
}
else
{
logError("file: "__FILE__", line: %d, "
"invalid local ip address: %s",
__LINE__, local_ip);

View File

@ -83,7 +83,7 @@ const char *local_host_ip_addrs_to_string(char *buff, const int size)
void log_local_host_ip_addrs()
{
char buff[512];
char buff[1024];
logInfo("%s", local_host_ip_addrs_to_string(buff, sizeof(buff)));
}
@ -188,7 +188,9 @@ const char *get_first_local_ip()
}
else
{
// 注意当系统存在IPv6回环地址时为了简化系统的改动会将IPv6回环地址修改成IPv4回环地址返回
/* 注意当系统存在IPv6回环地址时为了简化系统的改动
IPv6IPv4
*/
return LOCAL_LOOPBACK_IPv4;
}
}

View File

@ -2829,34 +2829,26 @@ bool is_private_ip(const char* ip)
return false;
}
int parseAddress(char *src, char *parts[2]){
char *ip = NULL;
char *port = NULL;
int parseAddress(char *src, char *parts[2])
{
char *ip;
char *port;
// 检查输入字符串是否为IPv6地址格式
if (src[0] == '[') {
ip = strtok(src, "[]");
parts[0] = ip;
port = strtok(NULL, ":");
if(port=='\0'){
return 1;
}else{
parts[1]=port;
return 2;
}
} else {
ip = strtok(src, ":");
}
parts[0] = ip;
port = strtok(NULL, ":");
if(port=='\0'){
if (port == NULL) {
return 1;
} else {
parts[1] = port;
return 2;
}
}
}
int64_t get_current_time_ns()
{

View File

@ -1092,7 +1092,7 @@ const char *fc_inet_ntop(const struct sockaddr *addr,
return output;
}
in_addr_64_t getIpaddr(getnamefunc getname, int sock, \
in_addr_64_t getIpaddr(getnamefunc getname, int sock,
char *buff, const int bufferSize)
{
sockaddr_convert_t convert;
@ -1117,9 +1117,7 @@ in_addr_64_t getIpaddr(getnamefunc getname, int sock, \
if (convert.sa.addr.sa_family == AF_INET) {
return convert.sa.addr4.sin_addr.s_addr;
} else {
in_addr_64_t ip_addr = 0;
memcpy(&ip_addr, &((struct sockaddr_in6 *)&convert.sa.addr)->sin6_addr, sizeof(in_addr_64_t));
return ip_addr;
return *((in_addr_64_t *)&convert.sa.addr6.sin6_addr);
}
}
@ -1182,6 +1180,8 @@ in_addr_64_t getIpaddrByName(const char *name, char *buff, const int bufferSize)
{
struct addrinfo hints, *res, *p;
int status;
in_addr_64_t ip_addr;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // 支持IPv4和IPv6
status = getaddrinfo(name, NULL, &hints, &res);
@ -1203,8 +1203,9 @@ in_addr_64_t getIpaddrByName(const char *name, char *buff, const int bufferSize)
}
}
ip_addr = ipv4->sin_addr.s_addr;
freeaddrinfo(res);
return ipv4->sin_addr.s_addr;
return ip_addr;
}
else if (p->ai_family == AF_INET6) // 处理IPv6地址
{
@ -1217,14 +1218,13 @@ in_addr_64_t getIpaddrByName(const char *name, char *buff, const int bufferSize)
}
}
in_addr_64_t ip_addr = 0;
memcpy(&ip_addr, &ipv6->sin6_addr, sizeof(in_addr_64_t));
ip_addr = *((in_addr_64_t *)&ipv6->sin6_addr);
freeaddrinfo(res);
return ip_addr;
}
}
freeaddrinfo(res);
return INADDR_NONE;
}
@ -2189,6 +2189,7 @@ int getlocaladdrs(char ip_addrs[][IP_ADDRESS_SIZE], \
while (NULL != ifc)
{
if (NULL == ifc->ifa_addr ) {
ifc = ifc->ifa_next;
continue;
}
@ -2201,9 +2202,9 @@ int getlocaladdrs(char ip_addrs[][IP_ADDRESS_SIZE], \
return ENOSPC;
}
if (AF_INET == ifc->ifa_addr->sa_family)
if (ifc->ifa_addr->sa_family == AF_INET)
{
if (inet_ntop(AF_INET, &((struct sockaddr_in *)ifc->ifa_addr)-> \
if (inet_ntop(AF_INET, &((struct sockaddr_in *)ifc->ifa_addr)->
sin_addr, ip_addrs[*count], IP_ADDRESS_SIZE) != NULL)
{
(*count)++;
@ -2216,10 +2217,9 @@ int getlocaladdrs(char ip_addrs[][IP_ADDRESS_SIZE], \
__LINE__, errno, STRERROR(errno));
}
}
if (AF_INET6 == ifc->ifa_addr->sa_family)
else if (ifc->ifa_addr->sa_family == AF_INET6)
{
if (inet_ntop(AF_INET6, &((struct sockaddr_in6 *)ifc->ifa_addr)-> \
if (inet_ntop(AF_INET6, &((struct sockaddr_in6 *)ifc->ifa_addr)->
sin6_addr, ip_addrs[*count], IP_ADDRESS_SIZE) != NULL)
{
(*count)++;