3pcc proxy, INVITE w/o SDP
Hi guys, I have a few problems with invites w/o sdp. Given scenario: FS: global_codec_prefs=PCMU,PCMA,G729,G723,GSM A: G711 / G729 / G723 B: G729 only Call from A->FS->B: 1) A->FS invite w/o sdp 2) FS->B invite w/ sdp (PCMU PCMA G729 G723 GSM, global_codec_prefs) 3) B->FS 180 ring 4) FS->A 180 ring 5) B->FS 200 ok w/ sdp (G729) 6) FS->A 200 ok w/ sdp (PCMU PCMA G729 G723 GSM, global_codec_prefs again!) 7) A->FS ACK w/ sdp (PCMU) The result: TRANSCODING_NECESSARY, but G729 only passthrough, call cleared! Changing the global_codec_prefs to G729 PCMU PCMA, the leg A<>FS will be negotiated to G729 and it will work, but that's just a workaround. (another dirty fix was to add sofia_glue_tech_set_local_sdp(tech_pvt, b_sdp, 0); in mod_sofia.c line 482 code block 478-507, that will pass B sdp to A so the call will use the same codec on both legs and will be half proxied rtp from A goes directly to B, but if A has PCMU and B PCMA the call is dropped without transcoding) As long as leg FS<>B is already using G729, FS should advertise to A G729 first, then all others. The right setup should be: 1) A->FS invite w/o sdp 2) FS->B invite w/ sdp (global_codec_prefs) 3) B->FS 180 ring 4) FS->A 180 ring 5) B->FS 200 ok w/ sdp (codecX ) 6) FS->A 200 ok w/ sdp (codecX global_codec_prefs-codecX ) 7) A->FS ACK w/ sdp (codecX) More than that, if B has early media and step 3) is 183 ring w/ sdp, the result is " freeswitch: sofia_glue.c:2745: sofia_glue_tech_media: Assertion `r_sdp != ((void *)0)' failed. Aborted (core dumped) " but I'll post that on jira. Best regards, Claudiu Filip
When you INVITE w/o sdp to 3pcc that's the correct behavior to 200ok with all the codecs. The seg was fixed in trunk. if you want to discuss it more come to irc cos it may be easier to communicate. On Fri, Oct 23, 2009 at 7:24 AM, Claudiu Filip <claudiu@globtel.ro> wrote:
Hi guys,
I have a few problems with invites w/o sdp.
Given scenario: FS: global_codec_prefs=PCMU,PCMA,G729,G723,GSM A: G711 / G729 / G723 B: G729 only
Call from A->FS->B:
1) A->FS invite w/o sdp 2) FS->B invite w/ sdp (PCMU PCMA G729 G723 GSM, global_codec_prefs) 3) B->FS 180 ring 4) FS->A 180 ring 5) B->FS 200 ok w/ sdp (G729) 6) FS->A 200 ok w/ sdp (PCMU PCMA G729 G723 GSM, global_codec_prefs again!) 7) A->FS ACK w/ sdp (PCMU)
The result: TRANSCODING_NECESSARY, but G729 only passthrough, call cleared! Changing the global_codec_prefs to G729 PCMU PCMA, the leg A<>FS will be negotiated to G729 and it will work, but that's just a workaround. (another dirty fix was to add sofia_glue_tech_set_local_sdp(tech_pvt, b_sdp, 0); in mod_sofia.c line 482 code block 478-507, that will pass B sdp to A so the call will use the same codec on both legs and will be half proxied rtp from A goes directly to B, but if A has PCMU and B PCMA the call is dropped without transcoding)
As long as leg FS<>B is already using G729, FS should advertise to A G729 first, then all others.
The right setup should be: 1) A->FS invite w/o sdp 2) FS->B invite w/ sdp (global_codec_prefs) 3) B->FS 180 ring 4) FS->A 180 ring 5) B->FS 200 ok w/ sdp (codecX ) 6) FS->A 200 ok w/ sdp (codecX global_codec_prefs-codecX ) 7) A->FS ACK w/ sdp (codecX)
More than that, if B has early media and step 3) is 183 ring w/ sdp, the result is " freeswitch: sofia_glue.c:2745: sofia_glue_tech_media: Assertion `r_sdp != ((void *)0)' failed. Aborted (core dumped) " but I'll post that on jira.
Best regards,
Claudiu Filip
_______________________________________________ FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com <MSN%3Aanthony_minessale@hotmail.com> GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com<PAYPAL%3Aanthony.minessale@gmail.com> IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org <sip%3A888@conference.freeswitch.org> iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org<googletalk%3Aconf%2B888@conference.freeswitch.org> pstn:213-799-1400
participants (2)
-
Anthony Minessale
-
Claudiu Filip