[asterisk-bugs] [JIRA] (PRI-173) libpri does not handle keypad facility IE in overlap mode

Gerald Schnabel (JIRA) noreply at issues.asterisk.org
Tue Jul 15 10:02:59 CDT 2014


Gerald Schnabel created PRI-173:
-----------------------------------

             Summary: libpri does not handle keypad facility IE in overlap mode
                 Key: PRI-173
                 URL: https://issues.asterisk.org/jira/browse/PRI-173
             Project: LibPRI
          Issue Type: Bug
      Security Level: None
         Environment: asterisk 11.11.0, libpri-1.4.15, Digium B410P
Span 1 in NT mode, ISDN telephone connected
            Reporter: Gerald Schnabel
            Assignee: Richard Mudgett


libpri does not handle keypad facility IE (44) in overlap mode so it is impossible to dial service codes ("numbers" beginning with star (*) or hash (#)), see [^full_pri_debug-1.txt].

In q931.c#post_handle_q931_message() when a Q931_INFORMATION message was received a PRI_EVENT_KEYPAD_DIGIT is fired only if call state is *not* Q931_CALL_STATE_OVERLAP_RECEIVING.

According to the Q.931 specification "Either the Called party number or the Keypad facility information element is included by the user to transfer called party number information to the network during overlap sending".

This was also discussed here: http://forums.digium.com/viewtopic.php?p=156228

With the following patch

{noformat}
diff -rup libpri-1.4.15.orig/q931.c libpri-1.4.15/q931.c
--- libpri-1.4.15.orig/q931.c   2014-05-13 00:45:13.000000000 +0200
+++ libpri-1.4.15/q931.c        2014-07-15 13:00:00.163751608 +0200
@@ -9170,7 +9170,7 @@ static int post_handle_q931_message(stru
                        q931_release_complete(ctrl, c, newcall_rel_comp_cause(c));
                        break;
                }
-               if (c->ourcallstate != Q931_CALL_STATE_OVERLAP_RECEIVING) {
+               if (strlen(c->keypad_digits)) {
                        ctrl->ev.e = PRI_EVENT_KEYPAD_DIGIT;
                        ctrl->ev.digit.subcmds = &ctrl->subcmds;
                        ctrl->ev.digit.call = c->master_call;
{noformat}

dialing service code works, see [^full_pri_debug-2.txt].




--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list