[asterisk-dev] SIP/TDM interworking, and RTP on CALL PROCEEDING
Gianluca Merlo
gianluca.merlo at gmail.com
Fri Feb 22 08:05:10 CST 2013
On Thu, Feb 21, 2013 at 12:52:13PM -0600, Richard Mudgett wrote:
>> I am sorry for the delay in providing a feedback, which is due to the
>> tests I
>> have made on this matter.
>>
>> Unfortunately, your suggestion does affect the behaviour of Asterisk
>> upon
>> receiving PROGRESS, and in the test scenario we are discussing this
>> only leads
>> to having the SIP 183 delayed until an ALERTING with progress
>> indicator 8 comes
>> in. The RTP sent after call proceeding is not affected by this
>> modification.
>>
>> As I said, not to bother you too much, and following my initial
>> research path,
>> I went back with the help of a friend and colleague to verify the
>> part of the
>> code you pointed out in your patch, and more specifically the
>> handling of
>> PRI_EVENT_PROCEEDING immediately after the part you suggested to
>> patch.
>> After some trial and error, I seem to trace the origin of the
>> behaviour to the
>> call to sig_pri_set_dialing(), which is performed right before
>> sig_pri_unlock_private() and breaking out of the case statement
>> (channels/sig_pri.c:5671 in 1.8.19.1). It seems that the "dialing"
>> member of
>> the DAHDI private struct (which is set to 0 by this call) affects
>> subsequent
>> calls to dahdi_read(), leading it to return voice frames when it
>> (imho) should
>> not, which in turn get sent over to the SIP channel.
>>
>> Apart from this description, I hope that you can answer some
>> questions
>> regarding these parameters and calls:
>>
>> - What is the expected role of the "dialing" dahdi private struct
>> member? Are
>> my assumptions, by your advice, correct?
>
>For sig_pri that flag is really a Rx squelch. The flag originally
>comes from POTS support for when the line is dialing. Even there I
>think it was really for Rx squelch. It is poorly named.
>
>> - I see that apparently calls to sig_pri_set_dialing() like the one
>> I am
>> supposing as the origin of my issue generally come when you call
>> sig_pri_open_media() and when there is a progress indication which
>> suggests
>> that inband information is available on the channel. You
>> explicitly comment
>> many parts like these in the code with the comment "Bring voice
>> path up". Is
>> it correct that the handling of PRI_EVENT_PROCEEDING is seemingly
>> the only
>> exception, having a call to sig_pri_set_dialing() irregardless of
>> the
>> presence of a progress indication in Q.931 signalling, and of a
>> call to
>> sig_pri_open_media()?
>
>Yes and it is because of the issue you point out next.
>
>> - This is partly related to my previous question, but is it correct
>> that all
>> this is related to the issue in:
>>
>> https://issues.asterisk.org/jira/browse/ASTERISK-17834
>>
>> and that it seems that the call to sig_pri_set_dialing() was moved
>> to be
>> made even without a proper progress indication (and a call to
>> sig_pri_open_media()) to accomodate the scenario in this issue?
>
>Yes, you are correct in your analysis. If you move the line back to
>before the sig_pri_open_media() call does it clear up your issue?
>
>Further history is with ASTERISK-12346 where the dialing flag was
>originally misplaced in the provided patch that was committed.
>
>Q.931 Section 5.1.2 says when we should attach in this paragraph:
>
> "The user need not attach until receiving a CALL PROCEEDING/SETUP
> ACKNOWLEDGE/PROGRESS/ALERTING message with the progress indicator
> No. 8, in-band information or appropriate pattern is now available,
> or progress indicator No. 1, call is not end-to-end ISDN; further
> call progress information may be available in-band. Prior to this
> time, the network cannot assume that the user has attached to the
> B-channel. After this time, the user shall be connected to the
> B-channel, provided the equipment does not generate local tone.
> Upon receipt of the CONNECT message, the user shall attach to the
> B-channel (if it has not already done so)."
>
>I am now thinking ASTERISK-17834 was really to accommodate a broken peer
>and should have been handled as a config option instead. I think
>an option like force_early_media with a chan_dahdi.conf.sample
>description saying that in-band information is assumed when a
>PROCEEDING message is received.
>
>Please create a JIRA issue for this.
>
>Thanks.
>
>Richard
Hello Richard,
thanks for your assistance. I confirm that moving back the call to
sig_pri_set_dialing() restores the behaviour I expected. I opened
ASTERISK-21151
https://issues.asterisk.org/jira/browse/ASTERISK-21151
for more systematic considerations and inclusion in Asterisk.
Best regards
Gianluca
More information about the asterisk-dev
mailing list