Andreas Greulich
2004-Oct-10 03:22 UTC
[Asterisk-Users] Why does incoming SIP call match a "peer" context in sip.conf?
Hi all, I got the problem that my voip provider (Sipgate) is using a differnet codec for vm than for normal calls. So I setup it such that incoming calls should find their way into the context [Sipgate], while outgoing calls are directed to [Sipgate] and [Sipgate-vm] depending on the dialplan. Consequently, I set up [Sipgate] as "friend" (calls come in and go out), while [Sipgate-vm] is set up as "peer" (it shoudl not get any incoming calls). The relevant parts look like that: sip.conf: [Sipgate] type=friend username=1838074 secret=### host=sipgate.de fromuser=1838074 fromdomain=sipgate.de nat=no dtmfmode=info canreinvite=no insecure=very disallow=all ; Disallow all codecs allow=ilbc [Sipgate-vm] type=peer username=1838074 secret=### host=sipgate.de fromuser=1838074 fromdomain=sipgate.de nat=no dtmfmode=info canreinvite=no disallow=all ; Disallow all codecs allow=g726 extensions.conf: [intern] ... include => sipgate-vm include => sipgate-out ... include => sip [sipgate-vm] exten => h,1,Hangup exten => 50000,1,SetCallerID(${SIPGATEID}) exten => 50000,2,SetVar(SIP_CODEC=g726) exten => 50000,3,Dial(SIP/50000@Sipgate-vm,60,) [sipgate-out] exten => h,1,Hangup exten => _X.,1,SetCallerID(${SIPGATEID}) exten => _X.,2,SetVar(SIP_CODEC=ilbc) exten => _X.,3,Dial(SIP/${EXTEN}@Sipgate,60,) It works perfectly for outgoing calls and sets codecs to g726 for both my local phone and Sipgate. If I am called though, * seems to choose [Sipgate-vm] context instead of [Sipgate]! In my understanding, this should not happen as Sipagte-vm is defined as peer and not as user or friend? I thought incoming calls should only match againt "friend" and "user" contexts... The following sip debug (shortened) output shows what's happening on an incoming call: INVITE sip:1838074@217.162.36.14:5060 SIP/2.0 Record-Route: <sip:1838074@217.10.79.9;ftag=as2317ebbc;lr=on> Max-Forwards: 9 Record-Route: <sip:4991130838074@217.10.79.8;ftag=as2317ebbc;lr=on> Via: SIP/2.0/UDP 217.10.79.9;branch=z9hG4bK66f7.0c523115.1 Via: SIP/2.0/UDP 217.10.79.8;branch=z9hG4bK66f7.8b995de6.0 Via: SIP/2.0/UDP 217.10.66.11:5060;branch=z9hG4bK0e7c88f6 From: "0" <sip:0@217.10.66.11>;tag=as2317ebbc To: <sip:4991130838074@sipgate.net> Contact: <sip:0@217.10.66.11> Call-ID: 21e41c1b763e327e5b99540e171566ff@217.10.66.11 CSeq: 102 INVITE User-Agent: Asterisk PBX Date: Sun, 10 Oct 2004 09:44:09 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Content-Type: application/sdp Content-Length: 343 Sipgate-Authentication: accepted ... Found description format PCMA Found description format PCMU Found description format GSM Found description format L16 Found description format iLBC Found description format G729 Found description format G726-32 Found description format DVI4 Capabilities: us - 0x51c(ULAW|ALAW|G726|G729A|ILBC), peer - audio=0x57e(GSM|ULAW|ALAW|G726|ADPCM|SLINR|G729A|ILBC)/video=0x0(EMPTY), combined - 0x51c(ULAW|ALAW|G726|G729A|ILBC) Non-codec capabilities: us - 0x1(G723), peer - 0x0(EMPTY), combined - 0x0(EMPTY) Found peer 'Sipgate-vm' <<<<<<<<<<<< !!!!!!!!!!!! I found no way to prevent this behavious (not even commenting out username fields). Finally, I just reversed the order of the contexts in sip.conf ([Sipgate.vm] before [Sipgate]), and now it is working, as the later context seems to have precedence. But of course this is not a documented feature, so I'd like a more robust way to do this. Did I miss there something? Is there any otehr way than using different contexts for outgoing calls to the same provider that should use different codecs? Or is it a bug in *? Thanks in advance, Andy -- Andreas Greulich E-Mail: andreas.greulich@spl.ch Skype: klaymen-neverhood Sermo datur cunctis, animi sapientia paucis.