ICE: Media not starting in caller

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

 



Hi!

I already managed to use ICE to establish a call between a client behind 
symmetric NAT and a client directly (no NAT) connected to my SIP Server, 
which proves that ICE is working fine :)

However, I have a problem when ICE can't establish a connection (ex: 
Port Restricted Cone NAT to Symmetric NAT).
I think I am missing something, because the media (RTP and RTCP) is not 
starting in caller when the initial answer (200 OK INVITE) is received 
by the caller.

As I am using PJSIP at a low level, the process flow is like this:
[When starting a call]

== Caller ==
pjmedia_ice_create()
pjmedia_transport_media_create()
pjmedia_transport_encode_sdp()
pjsip_inv_create_uac()
pjsip_inv_invite()
pjsip_inv_send_msg()

[INVITE goes to answerer]

== Answerer ==
pjsip_inv_answer()
pjmedia_ice_create()
pjmedia_transport_media_create()
pjmedia_transport_encode_sdp()
pjsip_inv_send_msg()
pjmedia_transport_media_start()

[200 OK goes to caller]

== Caller ==
on_media_update():
   pjmedia_transport_media_start()

on_ice_complete():
   pjmedia_endpt_create_sdp()
   pjmedia_transport_encode_sdp()
   pjsip_inv_reinvite()
   pjsip_inv_send_msg()
(...)

With this process flow, I can see that the default candidates (relayed 
candidates) are chosen and negotiated; I can even see the media flow 
going from answerer to relay sever to caller, but not the other way 
around (caller to relay server to answerer).
Any idea why?

Am I missing something?

Cheers
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