ICE Invite with problem (ICE-MISMATCH)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Benny Prijono wrote:
>
> On Wed, Sep 10, 2008 at 11:02 AM, Pedro Gon?alves 
> <pedro.pandre at gmail.com <mailto:pedro.pandre at gmail.com>> wrote:
>
>     Hi!
>
>     With PJSUA such problem does not occour, which leads me to
>     conclude that it must be some problem in my application, somewhere
>     around the area where the INVITE is built / sent.
>
>
> Yeah that's what I thought.
>  
>
>     With your experience, do you have any idea why in this case the
>     candidates in use are not some of the candidates included in SDP
>     and why they are always 4000 (RTP) and 4001(RTCP)?
>
>
> The default candidates (the c= and a=rtcp lines) are written to SDP by 
> pjmedia_endpt_create_sdp(), using the information from the sock_info 
> parameter. The sock_info normally comes from pjmedia_transport_get_info().
>
> Looking at your log, I remember that I saw you call 
> pjmedia_endpt_create_sdp() in the beginning of the call, before the 
> ICE transport initialization completes. Or perhaps even before the ICE 
> transport is created at all! I suspect it's the later case, and in 
> this case, you need to check where do you get the sock_info from. It 
> could be that you put some hardcoded values there.
>
> The correct steps should be like this:
>  - create the ICE media transport
>  - wait until initialization completes (STUN resolution and TURN 
> allocation completes)
>  - call pjmedia_transport_get_info() to get the sock_info (the default 
> address)
>  - call pjmedia_endpt_create_sdp()
>  - then proceed with the rest as usual 
> (pjmedia_transport_media_create(), pjmedia_transport_encode_sdp(), 
> send the INVITE, etc.)
Hi again!

With your help, I solved the other problems I was talking about.
However, I am now experiencing some problems when the answerer is 
sending the initial answer.
Can you provide a similar description of the steps to perform, like in 
your answer above?
At the moment I am doing the following:
pjsip_tx_data *tdata;
status = pjsip_inv_answer(SIPEngine::instance->g_inv, 200, NULL, NULL, 
&tdata);
const pjmedia_sdp_session *remote_sdp;
status = pjmedia_sdp_neg_get_active_remote(inv->neg, &remote_sdp);
[steps similar to the ones you mentioned above]
status = pjsip_inv_send_msg(inv, tdata);
status = pjmedia_transport_media_start(my_transport, my_pool, local_sdp, 
remote_sdp, 0);

Note: the local_sdp is obtained in a similar way to the one you described

Is this correct?

Many thanks
Pedro Gon?alves



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux