How does the file transfer in jabber work?
Generally, there always are problems with file transfer – proxies, firewalls. The original way uses an intermediate/proxy webserver that supports PUT command; the whole process of transmission is a 2-stage process: sender puts a file on the server and sends an URL (in form of jabber:iq:oob) to an addressee who, in turn, downloads the file from the proxy webserver. More about the file transfer in jabber can be found on http://www.jabber.org/protocol/filetransfer.html (currently saying: “Informational documentation of the old jabber:iq:oob namespace (used for primitive file transfer) is now contained in JEP-0066. A more modern protocol is defined in the combination of JEP-0095 and JEP-0096.”).