ICE Question

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

 



On Fri, Jun 27, 2008 at 7:11 PM, Pedro Gon?alves <pedro.pandre at gmail.com> wrote:
> Hi again.
>
> I managed to solve that specific problem, but however I am noticing these
> issues (I've updated PJSIP from SVN this morning):
> 1) When creating the initial answer, the callee does not include candidates
> for component 2 in SDP; even thought this does not happen when generating
> the initial offer, and the code is the same. I've attached the log for that
> part: we can see that 8 candidates are being gathered, 4 for component 1 and
> 4 for component 2. However, only component 1's candidates go  into the SDP.
> Why? Is it because the server is removing the a=rtcp line as the RTCP port
> is equal to the RTP port + 1, and so the callee receives the initial offer
> without a=rtcp?
>

Something like that. If the offer only has 1 component, then pjsip
will answer with 1 component too.

I suspect the offer doesn't have both the a=rtcp and a=candidate for
the second component (otherwise if a=candidate is present for the
second component, but a=rtcp doesn't exist, pjsip will answer with
a=ice-mismatch).

What user agent do you use for the other side?


> 2) When sending the re-INVITE, its SDP is somewhat strange:
> o=- 3423579320 3423579321 IN IP4 172.18.0.212
> s=pjmedia
> c=IN IP4 192.168.1.91
> t=0 0
> m=audio 5030 RTP/AVP 3 101
> a=rtpmap:3 GSM/8000
> a=sendrecv
> a=rtpmap:101 telephone-event/8000
> a=fmtp:101 0-15
> a=ice-ufrag:39b32d12
> a=ice-pwd:074d4dc8
> a=candidate:S 1 UDP 31 77.54.250.64 1122 typ srflx raddr 172.18.0.212 rport
> 1122
> a=candidate:H 1 UDP 23 172.18.0.212 1122 typ host
> a=candidate:S 2 UDP 30 77.54.250.64 1123 typ srflx raddr 172.18.0.212 rport
> 1123
> a=candidate:H 2 UDP 22 172.18.0.212 1123 typ host
> a=ice-ufrag:39b32d12
> a=ice-pwd:074d4dc8
> a=candidate:H 1 UDP 23 172.18.0.212 1122 typ host
> a=remote-candidates:1 172.18.2.117 62562
> a=candidate:Rac1200d4 1 UDP 0 192.168.1.91 5030 typ relay raddr 172.18.0.212
> 1122
> a=candidate:Rac1200d4 2 UDP 0 192.168.1.91 5031 typ relay raddr 172.18.0.212
> 5028
>
> As we can see, only candidates for component 1 are sent ( this may be
> related with the issue related in 1) ). Furthermore, ice-ufrag and ice-pwd
> are included twice. Is all this ok?
>

No it's not okay. Although it probably won't cause failure since (I
presume) that does not cause ICE negotiation to restart, it's still
not correct.

I could not reproduce this with pjsua. Are you sure
pjmedia_transport_encode_sdp() is not called twice? Because that will
explain it.


> 3) Lastly, the most important: when receiving the re-INVITE in the callee,
> on "on_rx_request" callback, I call *pjmedia_transport_encode_sdp*,
> *pjmedia_sdp_neg_set_remote_offer* and *pjsip_int_set_sdp_answer*. They all
> succeed, but however the response is not sent. Do I have to call any send
> method?
>

I don't think on_rx_request() is the right callback to receive
re-INVITE, please (re-)read my email (*and* the documentation, *and*
the source). If I have to (re)explain every step of the way then that
will take toooo long. :)

Cheers
 Benny



[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