<div dir="ltr"><br><div>Hi,</div><div><br></div><div>The first thing I notice is that you say you send data on transport_writable signal. I hoep you know/understand that transport_writable will only be signaled IF you do a send which returns less than the number of bytes you wanted to send.. So if for example you want to send 1000 bytes, and the nice_agent_send returned 1000, then transport_writable will not be signaled. </div>
<div>Either way, it doesn't seem to be your problem since you say you used a packet sniffer and all the packets got sent.</div><div>Which version of libnice are you using? I think it would be important to know. I believe there was an email recently on the mailing list about the recv() function only returning when the entire recv buffer is filled, instead of returning whatever data is available. I'm not sure, but this could be related. I think Olivier might be able to help, but knowing the version of libnice you are using will be required before he can determine the cause.</div>
<div>If you have a way to reproduce the problem, that would be helpful too.</div><div><br></div><div>Thanks,</div><div>Youness.</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 10, 2014 at 11:51 AM, Francesco Massei <span dir="ltr"><<a href="mailto:fmassei@gmail.com" target="_blank">fmassei@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I'm facing a strange issue with libnice that maybe you can help me solve.<br>
<br>
I have two peers that, using a reliable agent<br>
(nice_agent_new_reliable()), communicate between themselves. The first<br>
(let's call him "A") sends some data using nice_agent_send() on each<br>
transport_writable signal, the second (let's call him "B") receives<br>
the data in the callback set with nice_agent_attach_recv().<br>
"A" always manages to send all the data, while "B", for some reason,<br>
receives only part of it: sometimes just the initial frames, sometimes<br>
nearly all of them, but it never manages to get them all.<br>
Right now I'm making tests running both A and B on the same machine,<br>
with a packet sniffer open, and:<br>
- "A" and "B" are both up and running, as I see they keep sending STUN<br>
messages to each other every now and then.<br>
- All the packets "A" sends are on the wire<br>
- If I try to send much more data from "A" (like streaming endlessly<br>
gibberish) eventually "B" will get everything<br>
- Waiting for a long time (even minutes) doesn't help<br>
<br>
The only hypothesis I can advance is that, for some reason, B waits<br>
some kind of ACK or SYN that will never arrive as long as A is not<br>
sending anything.<br>
<br>
Any idea on why is this happening and how could I solve it?<br>
<br>
Thank you very much!<br>
Francesco<br>
_______________________________________________<br>
nice mailing list<br>
<a href="mailto:nice@lists.freedesktop.org">nice@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/nice" target="_blank">http://lists.freedesktop.org/mailman/listinfo/nice</a><br>
</blockquote></div><br></div>