Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
03a1c850
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
接近 2 年 前同步成功
通知
12
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
03a1c850
编写于
6月 20, 2015
作者:
K
Kurt Roeckx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Check BIO_dgram_sctp_wait_for_dry() return value for error
Reviewed-by:
N
Rich Salz
<
rsalz@openssl.org
>
上级
13cbe5e7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
29 addition
and
10 deletion
+29
-10
crypto/bio/bss_dgram.c
crypto/bio/bss_dgram.c
+29
-10
未找到文件。
crypto/bio/bss_dgram.c
浏览文件 @
03a1c850
...
...
@@ -1404,18 +1404,24 @@ static int dgram_sctp_write(BIO *b, const char *in, int inl)
* If we have to send a shutdown alert message and the socket is not dry
* yet, we have to save it and send it as soon as the socket gets dry.
*/
if
(
data
->
save_shutdown
&&
!
BIO_dgram_sctp_wait_for_dry
(
b
))
{
char
*
tmp
;
data
->
saved_message
.
bio
=
b
;
if
((
tmp
=
OPENSSL_malloc
(
inl
))
==
NULL
)
{
BIOerr
(
BIO_F_DGRAM_SCTP_WRITE
,
ERR_R_MALLOC_FAILURE
);
if
(
data
->
save_shutdown
)
{
ret
=
BIO_dgram_sctp_wait_for_dry
(
b
);
if
(
ret
<
0
)
{
return
-
1
;
}
OPENSSL_free
(
data
->
saved_message
.
data
);
data
->
saved_message
.
data
=
tmp
;
memcpy
(
data
->
saved_message
.
data
,
in
,
inl
);
data
->
saved_message
.
length
=
inl
;
return
inl
;
if
(
ret
==
0
)
{
char
*
tmp
;
data
->
saved_message
.
bio
=
b
;
if
((
tmp
=
OPENSSL_malloc
(
inl
))
==
NULL
)
{
BIOerr
(
BIO_F_DGRAM_SCTP_WRITE
,
ERR_R_MALLOC_FAILURE
);
return
-
1
;
}
OPENSSL_free
(
data
->
saved_message
.
data
);
data
->
saved_message
.
data
=
tmp
;
memcpy
(
data
->
saved_message
.
data
,
in
,
inl
);
data
->
saved_message
.
length
=
inl
;
return
inl
;
}
}
iov
[
0
].
iov_base
=
(
char
*
)
in
;
...
...
@@ -1733,6 +1739,19 @@ int BIO_dgram_sctp_notification_cb(BIO *b,
return
0
;
}
/*
* BIO_dgram_sctp_wait_for_dry - Wait for SCTP SENDER_DRY event
* @b: The BIO to check for the dry event
*
* Wait until the peer confirms all packets have been received, and so that
* our kernel doesn't have anything to send anymore. This is only received by
* the peer's kernel, not the application.
*
* Returns:
* -1 on error
* 0 when not dry yet
* 1 when dry
*/
int
BIO_dgram_sctp_wait_for_dry
(
BIO
*
b
)
{
int
is_dry
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录