File Transfer using bytestreams

Version 2

    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"/>