Hi Youness<div><br></div><div>Thanks for a prompt reply!</div><div><br></div><div>Basically, I started debugging when my Empathy client is not being able to send files with large size</div><div>(I tried sending a 3.5 MB file to another friend within the NAT), to a Pidgin client. Then we tried transfer</div>
<div>using both Empathy clients, then it worked... In due course, I was stuck with many doubts...</div><div><br></div><div><b>Doubt 1 :</b></div><div><br></div><div>What am keen to know, is according to which XEP is the current &#39;file transfer&#39; implemented in latest</div>
<div>telepathy-gabble ? I can&#39;t assume it is XEP - 0234 ... since from whatever XML stanzas are exchanged,</div><div>between the two clients, no &#39;Jingle&#39; namespace is found. </div><div><br></div><div>Moreover, &#39;candidates exchange&#39; is also done differently</div>
<div>compared to what XEP 234 mentions... (candidates are informed in the session-initiate stanza itself). Is it because</div><div>this XEP doesn&#39;t talk about the NAT problem ?</div><div><br></div><div>XEP 176 talks about Jingle &amp; ICE-UDP transport, but telepathy-gabble doesn&#39;t follow that either...</div>
<div><br></div><div>I see stanzas as below :</div><div><br></div><div>&lt;iq type=&quot;set&quot; to=&quot;<a href="http://my_friend@gmail.com/7e4881de">my_friend@gmail.com/7e4881de</a>&quot; id=&quot;2196244687&quot;&gt;&lt;session initiator=&quot;<meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="http://my_username@gmail.com/16b4cb7b">my_username@gmail.com/16b4cb7b</a>&quot; id=&quot;1515877176&quot; type=&quot;initiate&quot; xmlns=&quot;<a href="http://www.google.com/session">http://www.google.com/session</a>&quot;&gt;&lt;description xmlns=&quot;<a href="http://www.google.com/session/share">http://www.google.com/session/share</a>&quot;&gt;&lt;manifest&gt;&lt;file size=&quot;3629067&quot;&gt;&lt;name&gt;mybook.pdf&lt;/name&gt;&lt;/file&gt;&lt;/manifest&gt;&lt;protocol&gt;&lt;http&gt;&lt;url name=&quot;source-path&quot;&gt;/temporary/72864f06-f547-48fb-8116-3a21ac78de20/&lt;/url&gt;&lt;url name=&quot;preview-path&quot;&gt;/temporary/7c887282-e7e1-4beb-820f-f0421d66c693/&lt;/url&gt;&lt;/http&gt;&lt;/protocol&gt;&lt;/description&gt;&lt;transport xmlns=&quot;<a href="http://www.google.com/transport/p2p">http://www.google.com/transport/p2p</a>&quot;/&gt;&lt;/session&gt;&lt;/iq&gt;</div>
<div><br></div><div>In a series of function calls, I saw that <a href="http://relay.google.com:80">relay.google.com:80</a> has been used. But according to which XEP/Standard</div><div>published, this kind of methodology is used ? Or is it Google&#39;s prescribed way at present, which will soon be standardized ?</div>
<div>Because, until you had explained very vividly, I couldn&#39;t find that info in any XEP or document related to XMPP.</div><div><br></div><div><b>Doubt 2 :</b></div><div><br></div><div>If Pidgin is not able to do accept file transfer (for large file sizes), am assuming it is because, for an Empathy to Pidgin,</div>
<div>SOCKS5 is used and in that case &#39;no candidates exchange&#39; happens, so NAT problem isn&#39;t solved. And thus directly, the socket</div><div>establishment fails, thereby failing the file transfer (Please correct my understanding)</div>
<div><br></div><div>Thus, Pidgin has not implemented the &#39;<a href="http://relay.google.com:80">relay.google.com:80</a>&#39; style, for fetching credentials &amp; stun ip/ports etc. So this</div><div>implementation isn&#39;t a standard right ?</div>
<div><br></div><div><br></div><div>Sorry for pressing on the same topic... jus wanted to clear if I had missed any crucial info on this forum... had been following</div><div>it regularly, but didn&#39;t find any post related to file transfer...</div>
<div><br></div><div>Best regards</div><div>Uday Kiran<br><div><br></div><div><br></div><div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br><br>---------- Forwarded message ----------<br>From: Youness Alaoui &lt;<a href="mailto:youness.alaoui@collabora.co.uk">youness.alaoui@collabora.co.uk</a>&gt;<br>To: <a href="mailto:telepathy@lists.freedesktop.org">telepathy@lists.freedesktop.org</a><br>
Date: Wed, 20 Oct 2010 17:09:02 -0400<br>Subject: Re: [Telepathy] Doubt regarding Jingle file transfer over ICE<br>On 10/20/2010 10:10 AM, <a href="mailto:udayjandhyala@gmail.com">udayjandhyala@gmail.com</a> wrote:<br>
&gt; Hi all,<br>
&gt;<br>
&gt; I have a doubt about the way telepathy-gabble implements jingle file<br>
&gt; transfer.<br>
&gt; Please correct me if my below understanding is wrong :<br>
&gt;<br>
&gt; - Basically for solving NAT problem, libnice is used<br>
&gt; - As part of ICE protocol, for gathering &#39;candidate&#39; transport<br>
&gt; addresses, we need STUN / TURN servers<br>
&gt; - for this purpose, why should telepathy-gabble trigger &quot;<br>
&gt; <a href="http://relay.google.com:80/create_session" target="_blank">http://relay.google.com:80/create_session</a> &quot; ??<br>
&gt;<br>
&gt; inside jingle-factory.c , libsoup APIs are used to make a HTTP GET<br>
&gt; request to the above URL, with headers &quot;X-Talk-Google-Relay-Auth&quot; &amp;<br>
&gt; &quot;X-Google-Relay-Auth&quot;<br>
&gt;<br>
&gt; In response, we get a list of TURN/STUN server IPs &amp; Ports etc.<br>
You&#39;re right so far.<br>
Although we need STUN for candidate gathering, TURN is only necessary if there<br>
is no way to connect directly (both peers on symmetric NATs).<br>
<br>
&gt;<br>
&gt; Instead of this method, why can&#39;t we use what the below XML Stanza returns :<br>
&gt;<br>
&gt; Request stanza :<br>
&gt; &lt;iq type=&quot;get&quot; to=&quot;<a href="mailto:user@gmail.com">user@gmail.com</a> &lt;mailto:<a href="mailto:user@gmail.com">user@gmail.com</a>&gt;&quot;<br>
&gt; id=&quot;135485202046&quot;&gt;&lt;query xmlns=&quot;google:jingleinfo&quot;/&gt;&lt;/iq&gt;<br>
&gt;<br>
&gt; Response stanza :<br>
&gt; &lt;iq to=&quot;<a href="http://user@gmail.com/16b4cb7b" target="_blank">user@gmail.com/16b4cb7b</a> &lt;<a href="http://user" target="_blank">http://user</a>@<a href="http://gmail.com/16b4cb7b" target="_blank">gmail.com/16b4cb7b</a>&gt;&quot;<br>

&gt; from=&quot;<a href="mailto:user@gmail.com">user@gmail.com</a> &lt;mailto:<a href="mailto:user@gmail.com">user@gmail.com</a>&gt;&quot; id=&quot;135485202046&quot;<br>
&gt; type=&quot;result&quot;&gt;&lt;query xmlns=&quot;google:jingleinfo&quot;&gt;&lt;stun&gt;&lt;server<br>
&gt; host=&quot;<a href="http://stun.l.google.com" target="_blank">stun.l.google.com</a> &lt;<a href="http://stun.l.google.com" target="_blank">http://stun.l.google.com</a>&gt;&quot; udp=&quot;19302&quot;/&gt;&lt;server<br>

&gt; host=&quot;<a href="http://stun3.l.google.com" target="_blank">stun3.l.google.com</a> &lt;<a href="http://stun3.l.google.com" target="_blank">http://stun3.l.google.com</a>&gt;&quot;<br>
&gt; udp=&quot;19302&quot;/&gt;&lt;server host=&quot;<a href="http://stun2.l.google.com" target="_blank">stun2.l.google.com</a><br>
&gt; &lt;<a href="http://stun2.l.google.com" target="_blank">http://stun2.l.google.com</a>&gt;&quot; udp=&quot;19302&quot;/&gt;&lt;server<br>
&gt; host=&quot;<a href="http://stun1.l.google.com" target="_blank">stun1.l.google.com</a> &lt;<a href="http://stun1.l.google.com" target="_blank">http://stun1.l.google.com</a>&gt;&quot;<br>
&gt; udp=&quot;19302&quot;/&gt;&lt;server host=&quot;<a href="http://stun4.l.google.com" target="_blank">stun4.l.google.com</a><br>
&gt; &lt;<a href="http://stun4.l.google.com" target="_blank">http://stun4.l.google.com</a>&gt;&quot;<br>
&gt; udp=&quot;19302&quot;/&gt;&lt;/stun&gt;&lt;relay&gt;&lt;token&gt;CAESGwoSZjIwMDEwNjdAZ21haWwuY29tENbv0dG8JRoQmHtoMHjFafn/K0opvlnb0A==&lt;/token&gt;&lt;server<br>
&gt; host=&quot;<a href="http://relay.google.com" target="_blank">relay.google.com</a> &lt;<a href="http://relay.google.com" target="_blank">http://relay.google.com</a>&gt;&quot; udp=&quot;19295&quot;<br>
&gt; tcp=&quot;19294&quot; tcpssl=&quot;443&quot;/&gt;&lt;/relay&gt;&lt;/query&gt;&lt;/iq&gt;<br>
<br>
That does give us the ip/port for the STUN and TURN servers, yes.. but the TURN<br>
server isn&#39;t a &quot;free for all&quot; server, it&#39;s a google server and only google users<br>
can use it. In order to use TURN, one must always authenticate to it first. It<br>
is done by adding a username/password to the STUN messages sent to the TURN server.<br>
For security reasons, the username and passwords to be sent must be randomly<br>
generated and have a short life (in short-term credentials mode, which is the<br>
only mode supported by google servers).<br>
In the XML stanza, there is no username/password, so the HTTP request being sent<br>
is in order to get that username/password needed to authenticate with the TURN<br>
server.<br>
If you look at the response we get, it doesn&#39;t only include stun and turn<br>
ip/ports, it also includes a username and a password. That U/P combination will<br>
only be valid if the &quot;X-Talk-Google-Relay-Auth&quot; header contains a valid<br>
authentication token (which is the one received in that stanza you mentioned).<br>
That U/P combination will also only be valid for 30 seconds, that&#39;s why it needs<br>
to be done right before requesting the TURN server to allocate a port for us.<br>
<br>
&gt;<br>
&gt; Kindly point to me, if there is a different way to understand...<br>
<br>
I hope it answers your question. You can&#39;t do any different way to achieve this<br>
(the stanza contains the token to be used for the HTTP request, so it is the<br>
normal/expected/only way of doing it). Unless you set up a non-google TURN<br>
server (don&#39;t know if it&#39;s possible) and configure a username/password and have<br>
the server support long-term credentials authentication methods.<br>
<br>
p.s: why is it bothering you by the way ?<br>
<br>
Youness.<br>
<br>
&gt;<br>
&gt; Regards<br>
&gt; Uday Kiran<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; telepathy mailing list<br>
&gt; <a href="mailto:telepathy@lists.freedesktop.org">telepathy@lists.freedesktop.org</a><br>
&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/telepathy" target="_blank">http://lists.freedesktop.org/mailman/listinfo/telepathy</a><br>
<br>
<br>
<br>_______________________________________________<br>
telepathy mailing list<br>
<a href="mailto:telepathy@lists.freedesktop.org">telepathy@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/telepathy" target="_blank">http://lists.freedesktop.org/mailman/listinfo/telepathy</a><br>
<br></blockquote></div><br></div></div>