[Freeswitch-dev] 3pcc proxy, INVITE w/o SDP

Claudiu Filip claudiu at globtel.ro
Fri Oct 23 05:24:57 PDT 2009


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





More information about the FreeSWITCH-dev mailing list