|Summary:||ASTERISK-16516: SIP REFER auth fails, RTP timeout ignored, and other discrepancies between e/ingress calls|
|Reporter:||Kirill Katsnelson (kkm)||Labels:|
|Date Opened:||2010-08-06 01:22:22||Date Closed:|
|Environment:||Attachments:||( 0) 17805-issue-analysis.txt|
|Description:||The following per-peer parameters in sip.conf are ignored for incoming calls, but applied correctly to outgoing calls:|
auth= :: if incoming call is transferred by Transfer() dialplan application, user name and secret not used when constructing the digest in reply to the 407 response.
rtptimeout= :: overrides global value of the same for outgoing calls but not for incoming calls.
****** ADDITIONAL INFORMATION ******
Dialog fields (sip_pvt) are set up by different functions in case of incoming and outgoing INVITEs: incoming dialog is set up in the function check_peer_ok(), and the outgoing one in create_addr_from_peer().
Some fields are set in one but not in another. In particular, the peerauth field is set only in create_addr_from_peer(), and that's the cause for REFER authentication failure. The field rtptimeout is set, and a whole block of RTP setup code is also only in create_addr_from_peer(), and that is the reason for the second one.
I am attaching a file with the synopsys of dialog fields and set up functions called in both and in either of the two. An obvious fix would be to create a common set up function called from both; for someone who understands the code, that's a quarter-hour job. I am not qualified to tell which fields are not correctly set in each of the 2 functions, and which are left out by mistake. Hope my analysis would help someone in fixing that issue.
|Comments:||By: Leif Madsen (lmadsen) 2010-08-06 12:51:22|
Oops, I switched this to IPv6 thinking you meant an IP address of :: -- too much IPv6 lately :)
By: Kirill Katsnelson (kkm) 2010-08-06 18:01:49
I am sorry, that's my bad -- I really chose a confusing separator symbol. No IPv6 around here...