Debugging File Transfer using bytestreams where User 1 sends a file to user 2 successfully.
Let’s analyze in deep the packets sent in a file transfer.
1- user 1 ask the file transfer using bystreams or ibb at: 7:32
<iq id="iuUr9-64" to="user1@hostname/spark" from="user2@hostname/spark" type="set">
<si xmlns="http://jabber.org/protocol/si" id="jsi_9214186531132661055" mime-type="application/xml" profile="http://jabber.org/protocol/si/profile/file-transfer">
<file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="build.xml" size="24739">
<desc>Sending file</desc>
</file>
<feature xmlns="http://jabber.org/protocol/feature-neg">
<x xmlns="jabber:x:data" type="form">
<field var="stream-method" type="list-multi">
<option>
<value>http://jabber.org/protocol/bytestreams</value>
</option>
<option>
<value>http://jabber.org/protocol/ibb</value>
</option>
</field>
</x>
</feature>
</si>
</iq>
2- User 2 accept the file transfer supporting bystream and ibb at 06:08
<iq id="iuUr9-64" to="user2@hostname/spark" from="user1@hostname/spark" type="result">
<si xmlns="http://jabber.org/protocol/si">
<feature xmlns="http://jabber.org/protocol/feature-neg">
<x xmlns="jabber:x:data" type="submit">
<field var="stream-method">
<value>http://jabber.org/protocol/bytestreams</value>
<value>http://jabber.org/protocol/ibb</value>
</field>
</x>
</feature>
</si>
</iq>
3- user 1 propose bystream transfer using proxy.hostname at port 7777
<iq id="iuUr9-65" to="user1@hostname/spark" from="user2@hostname/spark" type="set">
<query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_9214186531132661055" mode="tcp">
<streamhost jid="proxy.hostname" host="10.211.167.227" port="7777"></streamhost>
</query>
</iq>
4- user 2 accept it
<iq id="iuUr9-65" to="user2@hostname/spark" from="user1@hostname/spark" type="result">
<query xmlns="http://jabber.org/protocol/bytestreams">
<streamhost-used jid="proxy.hostname"></streamhost-used>
</query>
</iq>
5- User 1 sends the file through the proxy (proxy.hostname) and the proxy notify user 2
<iq id="iuUr9-66" to="proxy.hostname" from="user2@hostname/spark" type="set">
<query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_9214186531132661055">
<activate>user1@hostname/spark</activate>
</query>
</iq>
6- Finally user 2 notify the end of the file transfer
<iq id="iuUr9-66" to="user2@hostname/spark" from="proxy.hostname" type="result"/>