Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iotivity-lite
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
31
Issues
31
List
Boards
Labels
Service Desk
Milestones
Merge Requests
6
Merge Requests
6
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
IoTivity
iotivity-lite
Commits
1160a88e
Commit
1160a88e
authored
Aug 24, 2020
by
Kishen Maloor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oc_tls:fix race between DTLS close and init logic
Signed-off-by:
Kishen Maloor
<
kishen.maloor@intel.com
>
parent
3e0e179c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
2 deletions
+40
-2
security/oc_tls.c
security/oc_tls.c
+40
-2
No files found.
security/oc_tls.c
View file @
1160a88e
...
...
@@ -248,6 +248,35 @@ is_peer_active(oc_tls_peer_t *peer)
static
oc_event_callback_retval_t
oc_tls_inactive
(
void
*
data
);
#ifdef OC_CLIENT
static
void
oc_tls_free_invalid_peer
(
oc_tls_peer_t
*
peer
)
{
OC_DBG
(
"
\n
oc_tls: removing invalid peer"
);
oc_list_remove
(
tls_peers
,
peer
);
oc_ri_remove_timed_event_callback
(
peer
,
oc_tls_inactive
);
mbedtls_ssl_free
(
&
peer
->
ssl_ctx
);
oc_message_t
*
message
=
(
oc_message_t
*
)
oc_list_pop
(
peer
->
send_q
);
while
(
message
!=
NULL
)
{
oc_message_unref
(
message
);
message
=
(
oc_message_t
*
)
oc_list_pop
(
peer
->
send_q
);
}
message
=
(
oc_message_t
*
)
oc_list_pop
(
peer
->
recv_q
);
while
(
message
!=
NULL
)
{
oc_message_unref
(
message
);
message
=
(
oc_message_t
*
)
oc_list_pop
(
peer
->
recv_q
);
}
#ifdef OC_PKI
oc_free_string
(
&
peer
->
public_key
);
#endif
/* OC_PKI */
mbedtls_ssl_config_free
(
&
peer
->
ssl_conf
);
oc_etimer_stop
(
&
peer
->
timer
.
fin_timer
);
oc_memb_free
(
&
tls_peers_s
,
peer
);
}
#endif
/* OC_CLIENT */
static
void
oc_tls_free_peer
(
oc_tls_peer_t
*
peer
,
bool
inactivity_cb
)
{
...
...
@@ -1573,8 +1602,17 @@ write_application_data(oc_tls_peer_t *peer)
static
void
oc_tls_init_connection
(
oc_message_t
*
message
)
{
oc_tls_peer_t
*
peer
=
oc_tls_add_peer
(
&
message
->
endpoint
,
MBEDTLS_SSL_IS_CLIENT
);
oc_tls_peer_t
*
peer
=
oc_tls_get_peer
(
&
message
->
endpoint
);
if
(
peer
&&
peer
->
role
!=
MBEDTLS_SSL_IS_CLIENT
)
{
oc_tls_free_invalid_peer
(
peer
);
peer
=
NULL
;
}
if
(
!
peer
)
{
peer
=
oc_tls_add_peer
(
&
message
->
endpoint
,
MBEDTLS_SSL_IS_CLIENT
);
}
if
(
peer
)
{
oc_message_t
*
duplicate
=
oc_list_head
(
peer
->
send_q
);
while
(
duplicate
!=
NULL
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment