]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
If ANI ton is not interpreted correctly by libpri,
authorMatteo Brancaleoni <mbrancaleoni@voismart.it>
Wed, 28 Jan 2015 10:13:37 +0000 (11:13 +0100)
committerMatteo Brancaleoni <mbrancaleoni@voismart.it>
Wed, 28 Jan 2015 10:13:37 +0000 (11:13 +0100)
fallback to calling ton/type.

libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c

index c8259aa6a2ded0f042ea6744f9c933c9c39a9ac8..ea94ce0de0e7defefdbbcf08a0f8d7b2e4193c4c 100644 (file)
@@ -1915,8 +1915,16 @@ static int on_ring(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_event
        ftdm_set_string(caller_data->dnis.digits, (char *)pevent->ring.callednum);
        ftdm_set_string(caller_data->rdnis.digits, (char *)pevent->ring.redirectingnum);
 
-       caller_data->ani.type = pevent->ring.callingplanani >> 4;
-       caller_data->ani.plan = pevent->ring.callingplanani & 0x0F;
+       if (pevent->ring.callingplanani != -1) {
+               caller_data->ani.type = pevent->ring.callingplanani >> 4;
+               caller_data->ani.plan = pevent->ring.callingplanani & 0x0F;
+       } else {
+               /* the remote party did not sent a valid (according to libpri) ANI ton,
+                * so let's use the callingplan ton/type and hope is correct.
+                */
+               caller_data->ani.type = pevent->ring.callingplan >> 4;
+               caller_data->ani.plan = pevent->ring.callingplan & 0x0F;
+       }
        
        caller_data->cid_num.type = pevent->ring.callingplan >> 4;
        caller_data->cid_num.plan = pevent->ring.callingplan & 0x0F;