Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿啄debugIT
libfastcommon
提交
722a9442
L
libfastcommon
项目概览
阿啄debugIT
/
libfastcommon
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libfastcommon
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
722a9442
编写于
7月 31, 2018
作者:
Y
yuqing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sockopt.c: add global variable try_again_when_interrupt
上级
4ae9c8f5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
10 deletion
+25
-10
HISTORY
HISTORY
+2
-1
src/sockopt.c
src/sockopt.c
+16
-9
src/sockopt.h
src/sockopt.h
+7
-0
未找到文件。
HISTORY
浏览文件 @
722a9442
Version 1.39 2018-07-
26
Version 1.39 2018-07-
31
* add #@function REPLACE_VARS
* #@set value can embed %{VARIABLE}
* shared_func.h: add function starts_with and ends_with
...
...
@@ -7,6 +7,7 @@ Version 1.39 2018-07-26
* sched_thread.c: fix first schedule time
* ini_file_reader add function iniGetRequiredStrValueEx
* add file fc_list.h
* sockopt.c: add global variable try_again_when_interrupt
Version 1.38 2018-06-26
* connection_pool.c: set err_no to 0 when success
...
...
src/sockopt.c
浏览文件 @
722a9442
...
...
@@ -70,6 +70,13 @@
#endif
#endif
static
bool
try_again_when_interrupt
=
true
;
void
tcp_set_try_again_when_interrupt
(
const
bool
value
)
{
try_again_when_interrupt
=
value
;
}
int
tcpgets
(
int
sock
,
char
*
s
,
const
int
size
,
const
int
timeout
)
{
int
result
;
...
...
@@ -163,7 +170,7 @@ int tcprecvdata_ex(int sock, void *data, const int size, \
if
(
res
<
0
)
{
if
(
errno
==
EINTR
)
if
(
errno
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -179,7 +186,7 @@ int tcprecvdata_ex(int sock, void *data, const int size, \
read_bytes
=
recv
(
sock
,
p
,
left_bytes
,
0
);
if
(
read_bytes
<
0
)
{
if
(
errno
==
EINTR
)
if
(
errno
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -250,7 +257,7 @@ int tcpsenddata(int sock, void* data, const int size, const int timeout)
if
(
result
<
0
)
{
if
(
errno
==
EINTR
)
if
(
errno
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -264,7 +271,7 @@ int tcpsenddata(int sock, void* data, const int size, const int timeout)
write_bytes
=
send
(
sock
,
p
,
left_bytes
,
0
);
if
(
write_bytes
<
0
)
{
if
(
errno
==
EINTR
)
if
(
errno
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -357,7 +364,7 @@ int tcprecvdata_nb_ms(int sock, void *data, const int size, \
if
(
res
<
0
)
{
if
(
errno
==
EINTR
)
if
(
errno
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -440,7 +447,7 @@ int tcpsenddata_nb(int sock, void* data, const int size, const int timeout)
if
(
result
<
0
)
{
if
(
errno
==
EINTR
)
if
(
errno
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -1287,7 +1294,7 @@ int tcpsendfile_ex(int sock, const char *filename, const int64_t file_offset, \
if
(
send_bytes
<=
0
)
{
result
=
errno
!=
0
?
errno
:
EIO
;
if
(
result
==
EINTR
)
if
(
result
==
EINTR
&&
try_again_when_interrupt
)
{
continue
;
}
...
...
@@ -1309,7 +1316,7 @@ int tcpsendfile_ex(int sock, const char *filename, const int64_t file_offset, \
len
=
remain_bytes
;
if
(
sendfile
(
fd
,
sock
,
offset
,
&
len
,
NULL
,
0
)
!=
0
)
{
result
=
errno
!=
0
?
errno
:
EIO
;
if
(
result
!=
EINTR
)
if
(
!
(
result
==
EINTR
&&
try_again_when_interrupt
)
)
{
break
;
}
...
...
@@ -1326,7 +1333,7 @@ int tcpsendfile_ex(int sock, const char *filename, const int64_t file_offset, \
if
(
sendfile
(
fd
,
sock
,
offset
,
remain_bytes
,
NULL
,
&
sbytes
,
0
)
!=
0
)
{
result
=
errno
!=
0
?
errno
:
EIO
;
if
(
result
!=
EINTR
)
if
(
!
(
result
==
EINTR
&&
try_again_when_interrupt
)
)
{
break
;
}
...
...
src/sockopt.h
浏览文件 @
722a9442
...
...
@@ -392,6 +392,13 @@ static inline bool is_ipv6_addr(const char *ip)
return
(
*
ip
==
':'
||
strchr
(
ip
,
':'
)
!=
NULL
);
//ipv6
}
void
tcp_set_try_again_when_interrupt
(
const
bool
value
);
static
inline
void
tcp_dont_try_again_when_interrupt
()
{
tcp_set_try_again_when_interrupt
(
false
);
}
#ifdef __cplusplus
}
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录