summaryrefslogtreecommitdiff
path: root/pjnath/src/pjnath/turn_sock.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjnath/src/pjnath/turn_sock.c')
-rw-r--r--pjnath/src/pjnath/turn_sock.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/pjnath/src/pjnath/turn_sock.c b/pjnath/src/pjnath/turn_sock.c
index 541175c6..20ddb0a7 100644
--- a/pjnath/src/pjnath/turn_sock.c
+++ b/pjnath/src/pjnath/turn_sock.c
@@ -737,6 +737,16 @@ static void turn_on_state(pj_turn_session *sess,
return;
}
+ if (old_state == PJ_TURN_STATE_ALLOCATING &&
+ new_state == PJ_TURN_STATE_RESOLVED)
+ {
+ /* TURN session won't destroy itself upon allocation failure, it will
+ * just revert back TURN state to PJ_TURN_STATE_RESOLVED. So, let's
+ * avoid infinite loop here (see ticket #1942).
+ */
+ return;
+ }
+
/* Notify app first */
if (turn_sock->cb.on_state) {
(*turn_sock->cb.on_state)(turn_sock, old_state, new_state);