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
.

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?

Many thanks in advance, regards.

-------------------------------------------------------------------------
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