summaryrefslogtreecommitdiff
path: root/pjnath
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2012-07-17 12:45:39 +0000
committerLiong Sauw Ming <ming@teluu.com>2012-07-17 12:45:39 +0000
commitbf66ba19d4ad1a3ccfd3e8a5e68c62b82a56a037 (patch)
tree678b359270b6bb2b908449c23eacf0483744ac1e /pjnath
parentf73554968e203926a07a4088cb8458531de2be6b (diff)
Fixed #1577: assertion when TURN session is already destroyed
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4207 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r--pjnath/src/pjnath/turn_sock.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/pjnath/src/pjnath/turn_sock.c b/pjnath/src/pjnath/turn_sock.c
index 131c433d..919c0839 100644
--- a/pjnath/src/pjnath/turn_sock.c
+++ b/pjnath/src/pjnath/turn_sock.c
@@ -211,6 +211,7 @@ static void destroy(pj_turn_sock *turn_sock)
}
if (turn_sock->active_sock) {
+ pj_activesock_set_user_data(turn_sock->active_sock, NULL);
pj_activesock_close(turn_sock->active_sock);
turn_sock->active_sock = NULL;
}
@@ -463,6 +464,16 @@ static pj_bool_t on_connect_complete(pj_activesock_t *asock,
pj_turn_sock *turn_sock;
turn_sock = (pj_turn_sock*) pj_activesock_get_user_data(asock);
+ if (!turn_sock)
+ return PJ_FALSE;
+
+ /* TURN session may have already been destroyed here.
+ * See ticket #1557 (http://trac.pjsip.org/repos/ticket/1557).
+ */
+ if (!turn_sock->sess) {
+ sess_fail(turn_sock, "TURN session already destroyed", status);
+ return PJ_FALSE;
+ }
if (status != PJ_SUCCESS) {
sess_fail(turn_sock, "TCP connect() error", status);