summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-04-22 18:32:16 +0000
committerBenny Prijono <bennylp@teluu.com>2008-04-22 18:32:16 +0000
commit56e13a2ee2d08c46cf873e907139ea0d6cfb984a (patch)
treee27f4ae5564841ac0c9b284654f4c98fae2751c6
parent2db61b49e4a45ea4f65371a7d3b5d8244809058f (diff)
Report NAT type as unknown rather than UDP blocked when test 1B failed (could happen when port 3479 is blocked). Thanks Helmut Wolf for the info.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1936 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjnath/src/pjnath/nat_detect.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/pjnath/src/pjnath/nat_detect.c b/pjnath/src/pjnath/nat_detect.c
index 7eef39ec..cbe10503 100644
--- a/pjnath/src/pjnath/nat_detect.c
+++ b/pjnath/src/pjnath/nat_detect.c
@@ -734,9 +734,26 @@ static void on_request_complete(pj_stun_session *stun_sess,
case PJNATH_ESTUNTIMEDOUT:
/*
* Strangely test 1B has failed. Maybe connectivity was
- * lost?
+ * lost? Or perhaps port 3489 (the usual port number in
+ * CHANGED-ADDRESS) is blocked?
*/
- end_session(sess, PJ_SUCCESS, PJ_STUN_NAT_TYPE_BLOCKED);
+ switch (sess->result[ST_TEST_3].status) {
+ case PJ_SUCCESS:
+ /* Although test 1B failed, test 3 was successful.
+ * It could be that port 3489 is blocked, while the
+ * NAT itself looks to be a Restricted one.
+ */
+ end_session(sess, PJ_SUCCESS,
+ PJ_STUN_NAT_TYPE_RESTRICTED);
+ break;
+ default:
+ /* Can't distinguish between Symmetric and Port
+ * Restricted, so set the type to Unknown
+ */
+ end_session(sess, PJ_SUCCESS,
+ PJ_STUN_NAT_TYPE_ERR_UNKNOWN);
+ break;
+ }
break;
default:
/*