Philippe Sultan
2011-Nov-02 14:06 UTC
[asterisk-users] libpri : Q.931 Called Party Number interpreted as empty
Hi, I'm running an Asterisk server connected to a carrier over 2 E1 cards. From time to time, the Called Number Party presented by the carrier changes a bit (for some reason I don't know) and is prefixed with a byte string (e.g. : 00 34 34 39 ), which furtherly prevents libpri from getting the Called Number properly. I've managed to catch the log from libpri when that happened today. In this excerpt, 951693203 is calling 90020361589425. It shows that the Called Party Number IE actually contains the number, prefixed with a NULL byte, then 449. PRI Span: 1 PRI Span: 1 < Protocol Discriminator: Q.931 (8) len=71 PRI Span: 1 < TEI=0 Call Ref: len= 2 (reference 66/0x42) (Sent from originator) PRI Span: 1 < Message Type: SETUP (5) PRI Span: 1 < [a1] PRI Span: 1 < Sending Complete (len= 1) PRI Span: 1 < [04 03 90 90 a3] PRI Span: 1 < Bearer Capability (len= 5) [ Ext: 1 Q.931 Std: 0 Info transfer capability: 3.1kHz audio (16) PRI Span: 1 < Ext: 1 Trans mode/rate: 64kbps, circuit-mode (16) PRI Span: 1 < User information layer 1: A-Law (35) PRI Span: 1 < [18 03 a9 83 8c] PRI Span: 1 < Channel ID (len= 5) [ Ext: 1 IntID: Implicit Other(PRI) Spare: 0 Exclusive Dchan: 0 PRI Span: 1 < ChanSel: As indicated in following octets PRI Span: 1 < Ext: 1 Coding: 0 Number Specified Channel Type: 3 PRI Span: 1 < Ext: 1 Channel: 12 Type: CPE] PRI Span: 1 < [1e 02 84 83] PRI Span: 1 < Progress Indicator (len= 4) [ Ext: 1 Coding: CCITT (ITU) standard (0) 0: 0 Location: Public network serving the remote user (4) PRI Span: 1 < Ext: 1 Progress Description: Calling equipment is non-ISDN. (3) ] PRI Span: 1 < [28 0f 53 75 6c 74 61 6e 20 50 68 69 6c 69 70 70 65] PRI Span: 1 < Display (len=15) [ Sultan Philippe ] PRI Span: 1 < [6c 0b 21 83 39 35 31 36 39 33 32 30 33] PRI Span: 1 < Calling Number (len=13) [ Ext: 0 TON: National Number (2) NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1) PRI Span: 1 < Presentation: Presentation allowed of network provided number (3) '951693203' ] PRI Span: 1 < [70 13 a1 00 34 34 39 39 30 30 32 30 33 36 31 35 38 39 34 32 35] PRI Span: 1 < Called Number (len=21) [ Ext: 1 TON: National Number (2) NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1) '' ] PRI Span: 1 -- Making new call for cref 66 PRI Span: 1 Received message for call 0xb755f2f0 on 0x9bc3c10 TEI/SAPI 0/0, call->pri is 0x9bc3c10 TEI/SAPI 0/0 PRI Span: 1 -- Processing Q.931 Call Setup PRI Span: 1 -- Processing IE 161 (cs0, Sending Complete) PRI Span: 1 -- Processing IE 4 (cs0, Bearer Capability) PRI Span: 1 -- Processing IE 24 (cs0, Channel Identification) PRI Span: 1 -- Processing IE 30 (cs0, Progress Indicator) PRI Span: 1 -- Processing IE 40 (cs0, Display) PRI Span: 1 -- Processing IE 108 (cs0, Calling Party Number) PRI Span: 1 -- Processing IE 112 (cs0, Called Party Number) PRI Span: 1 q931.c:6871 post_handle_q931_message: Call 66 enters state 6 (Call Present). Hold state: Idle Span: 1 Processing event: PRI_EVENT_RING -- Going to extension s|1 because of Complete received -- Span 1: Extension s at from-pstn does not exist. Rejecting call from '951693203'. I believe the NULL byte at the beginning of the Called Party Number IE sent by the carrier causes the problem. I'd like to know if someone had a hack to solve that issue. More information regarding my setup : 2 E1 cards : Digium Wildcard TE205P (5th Gen) Asterisk version : Asterisk 1.8.6.0 built by root @ asterisk-t2 on a i686 running Linux on 2011-09-15 13:26:08 UTC libpri version: 1.4.11.4 DAHDI Version: 2.3.0.1 Echo Canceller: OSLEC Thanks for your help! Philippe -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20111102/28e63ff4/attachment.htm>
giovanni.v
2011-Nov-02 16:29 UTC
[asterisk-users] libpri : Q.931 Called Party Number interpreted as empty
Il 02/11/2011 15.06, Philippe Sultan ha scritto:> PRI Span: 1 < [70 13 a1 00 34 34 39 39 30 30 32 30 33 36 31 35 38 39 34 > 32 35]Yes, like you guessed the third bit (wich is part of the called number i.e.) is a NUL... but Q.931 allows any IA5 (ISO 646) character so it's a bug in libpri not in your telco side. 70|01110000 I-Element: Called party number 13|00010011 Length = 19 a1|0------- Extension Bit = with extension |-001---- Type of number: international number |----0001 Numbering Plan: ISDN/telephony 00|0------- Spare |-0000000 Number digits: NUL 34|0------- Spare |-0110100 Number digits: 4 34|0------- Spare |-0110100 Number digits: 4 39|0------- Spare |-0111001 Number digits: 9 39|0------- Spare |-0111001 Number digits: 9 30|0------- Spare |-0110000 Number digits: 0 [...]> a hack to solve that issue.Why not an 's' in your incoming context to workaround the issue?