2008/8/6 Stefano Sabatini <[EMAIL PROTECTED]>:
> In other words I would like to override the default behaviour, which
> consists in sending immediately the ACK for the remote SDP offer,
> when I would like to keep continuing with the S/O negotiation.
>
> Can you give me some indication regarding how to achieve that?

You have to do a re-INVITE after the ACK, it is not possible to
initiate another offer-answer round in the original INVITE
transaction.

But why do you want to do that? The answer just indicates that
answerer supports both your codecs. Do you want to make sure that the
A-law codec 8 is never used?

--Pekka


> Hi all,
>
> I'm sending an invite with this function:
> ---------------------------8<------------------------------------
>
> void si_invite(si_t *si, const char* destination)
> {
>    si_oper_t* op = si_oper_create(si, SIP_METHOD_INVITE, destination,
> TAG_END());
>
>    if (!op) {
>        printf("%s: failed to create an operation\n", si->name);
>        return;
>    }
>
>    printf("%s: sending the invite to %s...\n", si->name, destination);
>    nua_invite(op->handle)
>               NUTAG_MEDIA_ENABLE(1),
>               SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"),
>               TAG_END());
> }
> ---------------------------8<------------------------------------
>
> I have this handler called by the nua event callback function:
> ---------------------------------8<-------------------------------
> void app_i_state(int           status,
>                 char const   *phrase,
>                 nua_t        *nua,
>                 nua_magic_t  *magic,
>                 nua_handle_t *nh,
>                 nua_hmagic_t *hmagic,
>                 sip_t const  *sip,
>                 tagi_t        tags[])
> {
>    char const *l_sdp = NULL, *r_sdp = NULL;
>    int audio = nua_active_inactive, video = nua_active_inactive, chat
> = nua_active_inactive;
>    int offer_recv = 0, answer_recv = 0, offer_sent = 0, answer_sent = 0;
>    int state = nua_callstate_init;
>
>    tl_gets(tags,
>            NUTAG_CALLSTATE_REF(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),
>            SOATAG_LOCAL_SDP_STR_REF(l_sdp),
>            SOATAG_REMOTE_SDP_STR_REF(r_sdp),
>            TAG_END());
>
>    printf("Call-State: '%s'\n", nua_callstate_name(state));
>
>  if (l_sdp) {
>      printf("local SDP updated:\n%s\n", l_sdp);
>  }
>
>  if (r_sdp) {
>      printf("remote SDP updated:\n%s\n", r_sdp);
>  }
> }
> ---------------------------------8<-------------------------------
>
> I'm seeing this dialog:
> SIP/SDP -->
> <--- SIP 180 Ringing
> <---- SIP/SDP 200 OK
> ---> SIP ACK 200 OK
>
> Since I'm receiving this SDP message:
> v=0
>
> o=MxSIP 0 312671187 IN IP4 10.88.3.204
>
> s=SIP Call
>
> c=IN IP4 10.XX.X.204
>
> t=0 0
>
> m=audio 3000 RTP/AVP 0 8
>
> a=rtpmap:0 PCMU/8000
>
> a=rtpmap:8 PCMA/8000
>
>
> I would like to be able to disable one of the above two possible
> streams, for example selecting just one with
> an SDP like this:
>
> v=0
>
> o=- 7540392608856471085 7407346358474901725 IN IP4 10.XX.X.67
>
> s=-
>
> c=IN IP4 10.XX.X.67
>
> t=0 0
>
> m=audio 5004 RTP/AVP 0
> a=rtpmap: 0 PCMU/8000
> a=sendrcv
> .


-- 
Pekka.Pessi mail at nokia.com

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel

Reply via email to