Compare commits

...

3 Commits

Author SHA1 Message Date
Hongcai Deng 8fbcc79c8c
Merge a16fde8070 into 70f6ad56ed 2025-06-29 23:20:58 +08:00
YuQing 70f6ad56ed getIpaddrByName: normalize ip addr when input addr is IPv4 or IPv6 2025-06-19 16:13:10 +08:00
Hongcai Deng a16fde8070 fix: compile error when build .so using .a
```
src/libfastcommon.a(hash.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
```

env: Ubuntu 14.04, gcc 4.8
2017-01-29 14:20:18 +08:00
3 changed files with 27 additions and 15 deletions

View File

@ -1,4 +1,7 @@
Version 1.78 2025-06-19
* getIpaddrByName: normalize ip addr when input addr is IPv4 or IPv6
Version 1.77 2025-03-18 Version 1.77 2025-03-18
* impl. shorten_path for /./ and /../ * impl. shorten_path for /./ and /../
* add function fc_compare_int64_ptr * add function fc_compare_int64_ptr

View File

@ -66,7 +66,7 @@ libfastcommon.a: $(FAST_STATIC_OBJS)
.c: .c:
$(COMPILE) -o $@ $< $(FAST_STATIC_OBJS) $(LIB_PATH) $(INC_PATH) $(COMPILE) -o $@ $< $(FAST_STATIC_OBJS) $(LIB_PATH) $(INC_PATH)
.c.o: .c.o:
$(COMPILE) -c -o $@ $< $(INC_PATH) $(COMPILE) -c -fPIC -o $@ $< $(INC_PATH)
.c.lo: .c.lo:
$(COMPILE) -c -fPIC -o $@ $< $(INC_PATH) $(COMPILE) -c -fPIC -o $@ $< $(INC_PATH)
install: install:

View File

@ -1208,26 +1208,35 @@ in_addr_64_t getIpaddrByNameEx(const char *name, char *buff,
struct in6_addr addr6; struct in6_addr addr6;
in_addr_64_t ip_addr; in_addr_64_t ip_addr;
if ((*name >= '0' && *name <= '9') && if (strchr(name, ':') != NULL) //IPv6
{
if (strchr(name, '%') == NULL &&
inet_pton(AF_INET6, name, &addr6) == 1)
{
if (buff != NULL)
{
if (inet_ntop(AF_INET6, &addr6, buff, bufferSize) == NULL)
{
*buff = '\0';
}
}
*af = AF_INET6;
return *((in_addr_64_t *)((char *)&addr6 + 8));
}
}
else if ((*name >= '0' && *name <= '9') &&
inet_pton(AF_INET, name, &addr4) == 1) inet_pton(AF_INET, name, &addr4) == 1)
{ {
if (buff != NULL) if (buff != NULL)
{ {
snprintf(buff, bufferSize, "%s", name); if (inet_ntop(AF_INET, &addr4, buff, bufferSize) == NULL)
{
*buff = '\0';
}
} }
*af = AF_INET; *af = AF_INET;
return addr4.s_addr; return addr4.s_addr;
} }
if (strchr(name, ':') != NULL && inet_pton(
AF_INET6, name, &addr6) == 1)
{
if (buff != NULL)
{
snprintf(buff, bufferSize, "%s", name);
}
*af = AF_INET6;
return *((in_addr_64_t *)((char *)&addr6 + 8));
}
memset(&hints, 0, sizeof hints); memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // 支持IPv4和IPv6 hints.ai_family = AF_UNSPEC; // 支持IPv4和IPv6
@ -2180,10 +2189,10 @@ int tcpprintkeepalive(int fd)
return errno != 0 ? errno : EINVAL; return errno != 0 ? errno : EINVAL;
} }
logInfo("keepAlive=%d, keepIdle=%d, keepInterval=%d, keepCount=%d", logDebug("keepAlive=%d, keepIdle=%d, keepInterval=%d, keepCount=%d",
keepAlive, keepIdle, keepInterval, keepCount); keepAlive, keepIdle, keepInterval, keepCount);
#else #else
logInfo("keepAlive=%d", keepAlive); logDebug("keepAlive=%d", keepAlive);
#endif #endif
return 0; return 0;