Thanks a lot for the explanation Richard - I was able to get things working by patching q931.c to my needs based on your answer. <div><br></div><div>Abhinav<br><br><div class="gmail_quote">On Tue, Nov 23, 2010 at 10:29 PM, Richard Mudgett <span dir="ltr">&lt;<a href="mailto:rmudgett@digium.com">rmudgett@digium.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5"><br>
<br>
----- Original Message -----<br>
&gt; Richard,<br>
&gt;<br>
&gt;<br>
&gt; Thanks your reply - it clarified things. However, now I have a bigger<br>
&gt; problem with libpri, the following :<br>
&gt;<br>
&gt;<br>
&gt; Normally, with most providers, I get a q931 RESTART message when I<br>
&gt; restart my application ( here FreeSWITCH ) - this RESTART message<br>
&gt; contains the message to reset a single DS1 facility. Things work fine<br>
&gt; here.<br>
&gt;<br>
&gt;<br>
&gt; However, with this one provider, ,I get a q931 RESTART message<br>
&gt; containing the following :<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Informational<br>
&gt; frame:<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; SAPI: 00 C/R:<br>
&gt; 1 EA: 0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; TEI: 000 EA: 1<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; N(S): 000 0: 0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; N(R): 000 P: 0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; 42 bytes of<br>
&gt; data<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Protocol<br>
&gt; Discriminator: Q.931 (8) len=42<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; TEI=0 Call<br>
&gt; Ref: len= 2 (reference 0/0x0) (Sent from originator)<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Message Type:<br>
&gt; RESTART (70)<br>
&gt; 2010-11-23 02:18:12.161997 [ERR] ftmod_libpri.c:131 len: 37 ie-&gt;ie :<br>
&gt; 24<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; [18 20 a9 83<br>
&gt; 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 11 12 13 14 15 16 17 18<br>
&gt; 19 1a 1b 1c 1d 1e 9f]<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Channel ID<br>
&gt; (len=34) [ Ext: 1 IntID: Implicit Other(PRI) Spare: 0 Exclusive Dchan:<br>
&gt; 0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; ChanSel: As<br>
&gt; indicated in following octets<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 1 Coding:<br>
&gt; 0 Number Specified Channel Type: 3<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 1 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 2 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 3 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 4 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 5 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 6 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 7 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 8 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 9 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 10 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 11 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 12 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 13 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 14 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 15 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 17 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 18 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 19 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 20 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 21 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 22 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 23 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 24 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 25 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 26 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 27 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 28 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 29 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 0<br>
&gt; Channel: 30 Type: CPE<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Ext: 1<br>
&gt; Channel: 31 Type: CPE]<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; [79 01 80]<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &lt; Restart<br>
&gt; Indentifier (len= 3) [ Ext: 1 Spare: 0 Resetting Indicated Channel (0)<br>
&gt; ]<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 -- Making new<br>
&gt; call for cref 0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 Received message<br>
&gt; for call 0xddcb80 on 0xdb25b0 TEI/SAPI 0/0, call-&gt;pri is 0xdb25b0<br>
&gt; TEI/SAPI 0/0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 -- Processing<br>
&gt; Q.931 Restart<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 XXXX Beginning<br>
&gt; IE handling: len = 37, step = 34<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 XXX Processing<br>
&gt; IEs: cur_codeset = 0, IE 24. Switchtype: 5<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 -- Processing IE<br>
&gt; 24 (cs0, Channel Identification)<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 XXX Processing<br>
&gt; IEs: cur_codeset = 0, IE 121. Switchtype: 5<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 -- Processing IE<br>
&gt; 121 (cs0, Restart Indicator)<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 q931.c:6863<br>
&gt; post_handle_q931_message: Call 0 enters state 62 (Restart). Hold<br>
&gt; state: Idle<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 q931.c:4363<br>
&gt; restart_ack: Call 0 enters state 0 (Null). Hold state: Idle<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; DL-DATA<br>
&gt; request<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; Protocol<br>
&gt; Discriminator: Q.931 (8) len=13<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; TEI=0 Call<br>
&gt; Ref: len= 2 (reference 0/0x0) (Sent to originator)<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; Message Type:<br>
&gt; RESTART ACKNOWLEDGE (78)<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 TEI=0<br>
&gt; Transmitting N(S)=0, window is open V(A)=0 K=7<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; TEI: 0 State<br>
&gt; 7(Multi-frame established)<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; V(A)=0,<br>
&gt; V(S)=0, V(R)=1<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; K=7, RC=0,<br>
&gt; l3initiated=0, reject_except=0, ack_pend=0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; T200_id=0,<br>
&gt; N200=3, T203_id=1<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; [ 00 01 00 02<br>
&gt; 08 02 80 00 4e 18 03 a9 83 81 79 01 80 ]<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; Informational<br>
&gt; frame:<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; SAPI: 00 C/R:<br>
&gt; 0 EA: 0<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; TEI: 000 EA: 1<br>
&gt; 2010-11-23 02:18:12.161997 [DEBUG] ftmod_libpri.c:149 &gt; N(S): 000 0: 0<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; N(R): 001 P: 0<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; 13 bytes of<br>
&gt; data<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; Protocol<br>
&gt; Discriminator: Q.931 (8) len=13<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; TEI=0 Call<br>
&gt; Ref: len= 2 (reference 0/0x0) (Sent to originator)<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; Message Type:<br>
&gt; RESTART ACKNOWLEDGE (78)<br>
&gt; 2010-11-23 02:18:12.163006 [ERR] ftmod_libpri.c:131 len: 8 ie-&gt;ie : 24<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; [18 03 a9 83<br>
&gt; 81]<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; Channel ID<br>
&gt; (len= 5) [ Ext: 1 IntID: Implicit Other(PRI) Spare: 0 Exclusive Dchan:<br>
&gt; 0<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; ChanSel: As<br>
&gt; indicated in following octets<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; Ext: 1 Coding:<br>
&gt; 0 Number Specified Channel Type: 3<br>
&gt; 2010-11-23 02:18:12.163006 [DEBUG] ftmod_libpri.c:149 &gt; Ext: 1<br>
&gt; Channel: 1 Type: CPE]<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; As can be seen above, the RESTART message contains a message with all<br>
&gt; the channels Number Specified ( as opposed to slot map specified, I<br>
&gt; think ? ). However, the RESTART ACKNOWLEDGE for this message only<br>
&gt; shows one channel being restarted.<br>
&gt;<br>
&gt;<br>
&gt; Shouldn&#39;t all the channels specified by the RESTART message be<br>
&gt; RESTARTED ?<br>
&gt;<br>
&gt;<br>
&gt; If I&#39;m not mistaken, this is causing the rest of my channels to not<br>
&gt; accept calls at all, and post an application restart, only the first<br>
&gt; channel of every span(line) takes calls - the rest just hangup and get<br>
&gt; a RELEASE ACKNOWLEDGE.<br>
&gt;<br>
&gt;<br>
&gt; How to fix this ?<br>
&gt;<br>
</div></div>Libpri simply does not handle repeated ies very well.  In this case libpri is only setup to handle one channel at a time or the entire span (i.e., no channel specified).  The upper layer is only notified to restart a single channel or the entire span.<br>

<div><div></div><div class="h5"><br>
Richard<br>
<br>
--<br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br>
</div></div></blockquote></div><br></div>