summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2013-02-27 10:14:23 +0000
committerNanang Izzuddin <nanang@teluu.com>2013-02-27 10:14:23 +0000
commit1703f7d9893e43ae31e81cb9de5b26420e2f6857 (patch)
tree5f8ab627fc3b45ff195dffb69f0fdbd834e03adf
parent0989c73839be15a18033ef0573f775dc86d39e06 (diff)
Re #1557: backported to 1.x
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@4386 74dad513-b988-da41-8d7b-12977e46ad98
-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 e841af2c..443954c3 100644
--- a/pjnath/src/pjnath/turn_sock.c
+++ b/pjnath/src/pjnath/turn_sock.c
@@ -210,6 +210,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;
}
@@ -462,6 +463,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);