diff options
author | Liong Sauw Ming <ming@teluu.com> | 2012-07-17 12:45:39 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2012-07-17 12:45:39 +0000 |
commit | bf66ba19d4ad1a3ccfd3e8a5e68c62b82a56a037 (patch) | |
tree | 678b359270b6bb2b908449c23eacf0483744ac1e /pjnath | |
parent | f73554968e203926a07a4088cb8458531de2be6b (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.c | 11 |
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); |