Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
cb2ce7ab
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cb2ce7ab
编写于
2月 03, 2015
作者:
M
Matt Caswell
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Moved processed_rcds and unprocessed_rcds from s->d1 to s->rlayer.d
Reviewed-by:
N
Richard Levitte
<
levitte@openssl.org
>
上级
91f93f69
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
64 addition
and
47 deletion
+64
-47
ssl/d1_lib.c
ssl/d1_lib.c
+1
-34
ssl/record/d1_pkt.c
ssl/record/d1_pkt.c
+52
-8
ssl/record/rec_layer.h
ssl/record/rec_layer.h
+8
-0
ssl/record/ssl3_record.c
ssl/record/ssl3_record.c
+3
-2
ssl/ssl_locl.h
ssl/ssl_locl.h
+0
-3
未找到文件。
ssl/d1_lib.c
浏览文件 @
cb2ce7ab
...
...
@@ -138,8 +138,6 @@ int dtls1_new(SSL *s)
return
0
;
}
d1
->
unprocessed_rcds
.
q
=
pqueue_new
();
d1
->
processed_rcds
.
q
=
pqueue_new
();
d1
->
buffered_messages
=
pqueue_new
();
d1
->
sent_messages
=
pqueue_new
();
d1
->
buffered_app_data
.
q
=
pqueue_new
();
...
...
@@ -151,13 +149,8 @@ int dtls1_new(SSL *s)
d1
->
link_mtu
=
0
;
d1
->
mtu
=
0
;
if
(
!
d1
->
unprocessed_rcds
.
q
||
!
d1
->
processed_rcds
.
q
||
!
d1
->
buffered_messages
||
!
d1
->
sent_messages
if
(
!
d1
->
buffered_messages
||
!
d1
->
sent_messages
||
!
d1
->
buffered_app_data
.
q
)
{
if
(
d1
->
unprocessed_rcds
.
q
)
pqueue_free
(
d1
->
unprocessed_rcds
.
q
);
if
(
d1
->
processed_rcds
.
q
)
pqueue_free
(
d1
->
processed_rcds
.
q
);
if
(
d1
->
buffered_messages
)
pqueue_free
(
d1
->
buffered_messages
);
if
(
d1
->
sent_messages
)
...
...
@@ -180,24 +173,6 @@ static void dtls1_clear_queues(SSL *s)
hm_fragment
*
frag
=
NULL
;
DTLS1_RECORD_DATA
*
rdata
;
while
((
item
=
pqueue_pop
(
s
->
d1
->
unprocessed_rcds
.
q
))
!=
NULL
)
{
rdata
=
(
DTLS1_RECORD_DATA
*
)
item
->
data
;
if
(
rdata
->
rbuf
.
buf
)
{
OPENSSL_free
(
rdata
->
rbuf
.
buf
);
}
OPENSSL_free
(
item
->
data
);
pitem_free
(
item
);
}
while
((
item
=
pqueue_pop
(
s
->
d1
->
processed_rcds
.
q
))
!=
NULL
)
{
rdata
=
(
DTLS1_RECORD_DATA
*
)
item
->
data
;
if
(
rdata
->
rbuf
.
buf
)
{
OPENSSL_free
(
rdata
->
rbuf
.
buf
);
}
OPENSSL_free
(
item
->
data
);
pitem_free
(
item
);
}
while
((
item
=
pqueue_pop
(
s
->
d1
->
buffered_messages
))
!=
NULL
)
{
frag
=
(
hm_fragment
*
)
item
->
data
;
dtls1_hm_fragment_free
(
frag
);
...
...
@@ -228,8 +203,6 @@ void dtls1_free(SSL *s)
dtls1_clear_queues
(
s
);
pqueue_free
(
s
->
d1
->
unprocessed_rcds
.
q
);
pqueue_free
(
s
->
d1
->
processed_rcds
.
q
);
pqueue_free
(
s
->
d1
->
buffered_messages
);
pqueue_free
(
s
->
d1
->
sent_messages
);
pqueue_free
(
s
->
d1
->
buffered_app_data
.
q
);
...
...
@@ -240,8 +213,6 @@ void dtls1_free(SSL *s)
void
dtls1_clear
(
SSL
*
s
)
{
pqueue
unprocessed_rcds
;
pqueue
processed_rcds
;
pqueue
buffered_messages
;
pqueue
sent_messages
;
pqueue
buffered_app_data
;
...
...
@@ -251,8 +222,6 @@ void dtls1_clear(SSL *s)
DTLS_RECORD_LAYER_clear
(
&
s
->
rlayer
);
if
(
s
->
d1
)
{
unprocessed_rcds
=
s
->
d1
->
unprocessed_rcds
.
q
;
processed_rcds
=
s
->
d1
->
processed_rcds
.
q
;
buffered_messages
=
s
->
d1
->
buffered_messages
;
sent_messages
=
s
->
d1
->
sent_messages
;
buffered_app_data
=
s
->
d1
->
buffered_app_data
.
q
;
...
...
@@ -272,8 +241,6 @@ void dtls1_clear(SSL *s)
s
->
d1
->
link_mtu
=
link_mtu
;
}
s
->
d1
->
unprocessed_rcds
.
q
=
unprocessed_rcds
;
s
->
d1
->
processed_rcds
.
q
=
processed_rcds
;
s
->
d1
->
buffered_messages
=
buffered_messages
;
s
->
d1
->
sent_messages
=
sent_messages
;
s
->
d1
->
buffered_app_data
.
q
=
buffered_app_data
;
...
...
ssl/record/d1_pkt.c
浏览文件 @
cb2ce7ab
...
...
@@ -131,14 +131,31 @@ int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl)
return
(
0
);
}
rl
->
d
=
d
;
DTLS_RECORD_LAYER_clear
(
rl
);
d
->
unprocessed_rcds
.
q
=
pqueue_new
();
d
->
processed_rcds
.
q
=
pqueue_new
();
if
(
!
d
->
unprocessed_rcds
.
q
||
!
d
->
processed_rcds
.
q
)
{
if
(
d
->
unprocessed_rcds
.
q
)
pqueue_free
(
d
->
unprocessed_rcds
.
q
);
if
(
d
->
processed_rcds
.
q
)
pqueue_free
(
d
->
processed_rcds
.
q
);
OPENSSL_free
(
d
);
rl
->
d
=
NULL
;
return
(
0
);
}
return
1
;
}
void
DTLS_RECORD_LAYER_free
(
RECORD_LAYER
*
rl
)
{
DTLS_RECORD_LAYER_clear
(
rl
);
pqueue_free
(
rl
->
d
->
unprocessed_rcds
.
q
);
pqueue_free
(
rl
->
d
->
processed_rcds
.
q
);
OPENSSL_free
(
rl
->
d
);
rl
->
d
=
NULL
;
}
...
...
@@ -146,9 +163,36 @@ void DTLS_RECORD_LAYER_free(RECORD_LAYER *rl)
void
DTLS_RECORD_LAYER_clear
(
RECORD_LAYER
*
rl
)
{
DTLS_RECORD_LAYER
*
d
;
pitem
*
item
=
NULL
;
DTLS1_RECORD_DATA
*
rdata
;
pqueue
unprocessed_rcds
;
pqueue
processed_rcds
;
d
=
rl
->
d
;
while
((
item
=
pqueue_pop
(
d
->
unprocessed_rcds
.
q
))
!=
NULL
)
{
rdata
=
(
DTLS1_RECORD_DATA
*
)
item
->
data
;
if
(
rdata
->
rbuf
.
buf
)
{
OPENSSL_free
(
rdata
->
rbuf
.
buf
);
}
OPENSSL_free
(
item
->
data
);
pitem_free
(
item
);
}
while
((
item
=
pqueue_pop
(
d
->
processed_rcds
.
q
))
!=
NULL
)
{
rdata
=
(
DTLS1_RECORD_DATA
*
)
item
->
data
;
if
(
rdata
->
rbuf
.
buf
)
{
OPENSSL_free
(
rdata
->
rbuf
.
buf
);
}
OPENSSL_free
(
item
->
data
);
pitem_free
(
item
);
}
unprocessed_rcds
=
d
->
unprocessed_rcds
.
q
;
processed_rcds
=
d
->
processed_rcds
.
q
;
memset
(
d
,
0
,
sizeof
*
d
);
d
->
unprocessed_rcds
.
q
=
unprocessed_rcds
;
d
->
processed_rcds
.
q
=
processed_rcds
;
}
static
int
have_handshake_fragment
(
SSL
*
s
,
int
type
,
unsigned
char
*
buf
,
...
...
@@ -263,25 +307,25 @@ int dtls1_retrieve_buffered_record(SSL *s, record_pqueue *queue)
*/
#define dtls1_get_unprocessed_record(s) \
dtls1_retrieve_buffered_record((s), \
&((s)->
d1
->unprocessed_rcds))
&((s)->
rlayer.d
->unprocessed_rcds))
int
dtls1_process_buffered_records
(
SSL
*
s
)
{
pitem
*
item
;
item
=
pqueue_peek
(
s
->
d1
->
unprocessed_rcds
.
q
);
item
=
pqueue_peek
(
s
->
rlayer
.
d
->
unprocessed_rcds
.
q
);
if
(
item
)
{
/* Check if epoch is current. */
if
(
s
->
d1
->
unprocessed_rcds
.
epoch
!=
s
->
rlayer
.
d
->
r_epoch
)
if
(
s
->
rlayer
.
d
->
unprocessed_rcds
.
epoch
!=
s
->
rlayer
.
d
->
r_epoch
)
return
(
1
);
/* Nothing to do. */
/* Process all the records. */
while
(
pqueue_peek
(
s
->
d1
->
unprocessed_rcds
.
q
))
{
while
(
pqueue_peek
(
s
->
rlayer
.
d
->
unprocessed_rcds
.
q
))
{
dtls1_get_unprocessed_record
(
s
);
if
(
!
dtls1_process_record
(
s
))
return
(
0
);
if
(
dtls1_buffer_record
(
s
,
&
(
s
->
d1
->
processed_rcds
),
if
(
dtls1_buffer_record
(
s
,
&
(
s
->
rlayer
.
d
->
processed_rcds
),
SSL3_RECORD_get_seq_num
(
&
s
->
rlayer
.
rrec
))
<
0
)
return
-
1
;
}
...
...
@@ -291,8 +335,8 @@ int dtls1_process_buffered_records(SSL *s)
* sync epoch numbers once all the unprocessed records have been
* processed
*/
s
->
d1
->
processed_rcds
.
epoch
=
s
->
rlayer
.
d
->
r_epoch
;
s
->
d1
->
unprocessed_rcds
.
epoch
=
s
->
rlayer
.
d
->
r_epoch
+
1
;
s
->
rlayer
.
d
->
processed_rcds
.
epoch
=
s
->
rlayer
.
d
->
r_epoch
;
s
->
rlayer
.
d
->
unprocessed_rcds
.
epoch
=
s
->
rlayer
.
d
->
r_epoch
+
1
;
return
(
1
);
}
...
...
ssl/record/rec_layer.h
浏览文件 @
cb2ce7ab
...
...
@@ -147,6 +147,10 @@ typedef struct dtls_record_layer_st {
DTLS1_BITMAP
bitmap
;
/* renegotiation starts a new set of sequence numbers */
DTLS1_BITMAP
next_bitmap
;
/* Received handshake records (processed and unprocessed) */
record_pqueue
unprocessed_rcds
;
record_pqueue
processed_rcds
;
}
DTLS_RECORD_LAYER
;
typedef
struct
record_layer_st
{
...
...
@@ -216,6 +220,10 @@ typedef struct record_layer_st {
#define RECORD_LAYER_get_write_sequence(rl) ((rl)->write_sequence)
#define DTLS_RECORD_LAYER_get_w_epoch(rl) ((rl)->d->w_epoch)
#define DTLS_RECORD_LAYER_set_w_epoch(rl, e) ((rl)->d->w_epoch = (e))
#define DTLS_RECORD_LAYER_get_processed_rcds(rl) \
((rl)->d->processed_rcds)
#define DTLS_RECORD_LAYER_get_unprocessed_rcds(rl) \
((rl)->d->unprocessed_rcds)
void
RECORD_LAYER_init
(
RECORD_LAYER
*
rl
,
SSL
*
s
);
void
RECORD_LAYER_clear
(
RECORD_LAYER
*
rl
);
...
...
ssl/record/ssl3_record.c
浏览文件 @
cb2ce7ab
...
...
@@ -1366,7 +1366,7 @@ int dtls1_process_record(SSL *s)
*/
#define dtls1_get_processed_record(s) \
dtls1_retrieve_buffered_record((s), \
&(
(s)->d1->processed_rcds
))
&(
DTLS_RECORD_LAYER_get_processed_rcds(&s->rlayer)
))
/*-
* Call this to get a new input record.
...
...
@@ -1533,7 +1533,8 @@ int dtls1_get_record(SSL *s)
if
(
is_next_epoch
)
{
if
((
SSL_in_init
(
s
)
||
s
->
in_handshake
)
&&
!
s
->
d1
->
listen
)
{
if
(
dtls1_buffer_record
(
s
,
&
(
s
->
d1
->
unprocessed_rcds
),
rr
->
seq_num
)
<
0
)
(
s
,
&
(
DTLS_RECORD_LAYER_get_unprocessed_rcds
(
&
s
->
rlayer
)),
rr
->
seq_num
)
<
0
)
return
-
1
;
/* Mark receipt of record. */
dtls1_record_bitmap_update
(
s
,
bitmap
);
...
...
ssl/ssl_locl.h
浏览文件 @
cb2ce7ab
...
...
@@ -1411,9 +1411,6 @@ typedef struct dtls1_state_st {
unsigned
short
handshake_read_seq
;
/* save last sequence number for retransmissions */
unsigned
char
last_write_sequence
[
8
];
/* Received handshake records (processed and unprocessed) */
record_pqueue
unprocessed_rcds
;
record_pqueue
processed_rcds
;
/* Buffered handshake messages */
pqueue
buffered_messages
;
/* Buffered (sent) handshake records */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录