> I found a work around after looking > at the NUA code. > > For the INVITE: > > char empty = '\0'; > > nua_invite(tech_pvt->nh, > > NUTAG_AUTOANSWER(0), > > NUTAG_SESSION_TIMER(session_timeout), > > TAG_IF(tech_pvt->redirected, > NUTAG_URL(tech_pvt->redirected)), > > TAG_IF(!zstr(tech_pvt->user_via), > SIPTAG_VIA_STR(tech_pvt->user_via)), > > TAG_IF(!zstr(tech_pvt->rpid), > SIPTAG_REMOTE_PARTY_ID_STR(tech_pvt->rpid)), > > TAG_IF(!zstr(tech_pvt->preferred_id), > SIPTAG_P_PREFERRED_IDENTITY_STR(tech_pvt->preferred_id)), > > TAG_IF(!zstr(tech_pvt->asserted_id), > SIPTAG_P_ASSERTED_IDENTITY_STR(tech_pvt->asserted_id)), > > TAG_IF(!zstr(tech_pvt->privacy), > SIPTAG_PRIVACY_STR(tech_pvt->privacy)), > > TAG_IF(!zstr(alert_info), > SIPTAG_HEADER_STR(alert_info)), > > TAG_IF(!zstr(extra_headers), > SIPTAG_HEADER_STR(extra_headers)), > > TAG_IF(sofia_test_pflag(tech_pvt->profile, > PFLAG_PASS_CALLEE_ID), SIPTAG_HEADER_STR("X-FS-Support: > "FREESWITCH_SUPPORT)), > > TAG_IF(!zstr(max_forwards), > SIPTAG_MAX_FORWARDS_STR(max_forwards)), > > TAG_IF(!zstr(route_uri), > NUTAG_PROXY(route_uri)), > > TAG_IF(!zstr(route), > SIPTAG_ROUTE_STR(route)), > > TAG_IF(tech_pvt->profile->minimum_session_expires, > NUTAG_MIN_SE(tech_pvt->profile->minimum_session_expires)), > > SIPTAG_PAYLOAD_STR(&empty), // see > nua_session.c:803 > > TAG_END()); > > There is a line in nua_session.c, in the > nua_invite_client_request function: > > if (sip->sip_payload) > > offer_sent = 0; > /* XXX - kludge */ > > That allows you to set the payload in the INVITE instead of > an offer, I just passed a NIL string in as the payload. > > > In the sofia_handle_sip_i_state function you can get the > remote SDP from the OK by doing the following: > > tl_gets(tags, > > NUTAG_CALLSTATE_REF(ss_state), > > NUTAG_OFFER_RECV_REF(offer_recv), > > NUTAG_ANSWER_RECV_REF(answer_recv), > > NUTAG_OFFER_SENT_REF(offer_sent), > > NUTAG_ANSWER_SENT_REF(answer_sent), > > SIPTAG_REPLACES_STR_REF(replaces_str), > SOATAG_LOCAL_SDP_STR_REF(l_sdp), > SOATAG_REMOTE_SDP_STR_REF(r_sdp), TAG_END()); > > > When I got the nua_callstate_completing event/state, > I sent the ACK using this: > > nua_ack(nh, > > > SIPTAG_CONTACT_STR(tech_pvt->reply_contact), > > > SOATAG_USER_SDP_STR(tech_pvt->local_sdp_str), > > SOATAG_REUSE_REJECTED(1), > > SOATAG_ORDERED_USER(1), > SOATAG_AUDIO_AUX("cn telephone-event"), > > TAG_IF(sofia_test_pflag(profile, > PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), > TAG_END()); > > > It is an ugly work around, but it works for me. > > Hope this helps. > > Sandeep
Thanks Sandeep. Yes, it works. It is a piece of code of the freeswitch 1.0.6 release. But it seems like soa does not handle the 3rd party call model because freeswitch does sdp control in application layer instead of using soa (searh for sofia_use_soa() in the freeswitch code, that disable soa with the tag NUTAG_MEDIA_ENABLE(0)). So the question about soa and 3rd party call control remains. Thanks, Daniel. > > On 2010-04-09, at 8:46 AM, Daniel Eli wrote: > > > > >>> I was able to generate an INVITE without an > SDP by using the > >>> NUTAG_MEDIA_ENABLE(0) tag when I call > nua_invite. The downside > >>> of doing that is the soa is disabled. > > > >>> Does anyone know of a better way to start a > call with no SDP? > > > > I have the same problem. Following the NUA call mode > > [http://sofia-sip.sourceforge.net/refdocs/nua/nua_call_model.html], > I've also used the tag NUTAG_MEDIA_ENABLE(0) in nua_invite() > to disable sdp, but I can't include SDP in the ACK. When I > try to do that, an internal error occurs. > > > > My attempt is something like this: > > ... > > nua_ack(nh, > > TAG_IF(tpcc, > NUTAG_MEDIA_ENABLE(1)), > > > TAG_IF(tpcc,SOATAG_USER_SDP_STR(loc_sdp)), > > TAG_END()); > > ... > > > > So, is there any way to perform the Third Party Call > Control mode ? > > > > Thanks, > > Daniel. > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > Download Intel® Parallel Studio Eval > > Try the new software tools for yourself. Speed > compiling, find bugs > > proactively, and fine-tune applications for parallel > performance. > > See why Intel Parallel Studio got high marks during > beta. > > http://p.sf.net/sfu/intel-sw-dev > > _______________________________________________ > > Sofia-sip-devel mailing list > > Sofia-sip-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, > find bugs > proactively, and fine-tune applications for parallel > performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Sofia-sip-devel mailing list > Sofia-sip-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel > ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Sofia-sip-devel mailing list Sofia-sip-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel