Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
54e947e3
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
54e947e3
编写于
6月 07, 2020
作者:
S
Shengliang Guan
提交者:
GitHub
6月 07, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2170 from freemine/with-getaddrinfo
replace gethostbyname with getaddrinfo
上级
606dc06d
fe22eb50
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
27 deletion
+21
-27
src/util/src/tsocket.c
src/util/src/tsocket.c
+21
-27
未找到文件。
src/util/src/tsocket.c
浏览文件 @
54e947e3
...
...
@@ -24,43 +24,37 @@ int taosGetFqdn(char *fqdn) {
hostname
[
1023
]
=
'\0'
;
gethostname
(
hostname
,
1023
);
struct
hostent
*
h
;
h
=
gethostbyname
(
hostname
);
if
(
h
!=
NULL
)
{
strcpy
(
fqdn
,
h
->
h_name
);
struct
addrinfo
hints
=
{
0
};
struct
addrinfo
*
result
=
NULL
;
hints
.
ai_flags
=
AI_CANONNAME
;
getaddrinfo
(
hostname
,
NULL
,
&
hints
,
&
result
);
if
(
result
)
{
strcpy
(
fqdn
,
result
->
ai_canonname
);
freeaddrinfo
(
result
);
}
else
{
uError
(
"failed to get host name(%s)"
,
strerror
(
errno
));
code
=
-
1
;
}
// to do: free the resources
// free(h);
return
code
;
}
uint32_t
taosGetIpFromFqdn
(
const
char
*
fqdn
)
{
struct
addrinfo
hints
,
*
servinfo
,
*
p
;
struct
sockaddr_in
*
h
;
uint32_t
ip
=
-
1
;
memset
(
&
hints
,
0
,
sizeof
hints
);
hints
.
ai_family
=
AF_UNSPEC
;
// use AF_INET6 to force IPv6
hints
.
ai_socktype
=
SOCK_STREAM
;
if
(
getaddrinfo
(
fqdn
,
"http"
,
&
hints
,
&
servinfo
)
!=
0
)
{
uError
(
"failed to get IP from %s(%s)"
,
fqdn
,
strerror
(
errno
));
struct
addrinfo
hints
=
{
0
};
struct
addrinfo
*
result
=
NULL
;
getaddrinfo
(
fqdn
,
NULL
,
&
hints
,
&
result
);
if
(
result
)
{
struct
sockaddr
*
sa
=
result
->
ai_addr
;
struct
sockaddr_in
*
si
=
(
struct
sockaddr_in
*
)
sa
;
struct
in_addr
ia
=
si
->
sin_addr
;
uint32_t
ip
=
ia
.
s_addr
;
freeaddrinfo
(
result
);
return
ip
;
}
else
{
return
-
1
;
}
// to do: loop through all the results and connect to the first we can
for
(
p
=
servinfo
;
p
!=
NULL
;
p
=
p
->
ai_next
)
{
h
=
(
struct
sockaddr_in
*
)
p
->
ai_addr
;
ip
=
h
->
sin_addr
.
s_addr
;
}
freeaddrinfo
(
servinfo
);
// all done with this structure
return
ip
;
}
// Function converting an IP address string to an unsigned int.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录