What XMPP server are you using? It may depend on that.
For example if you use Openfire, you need to enable openfire proxy on port 7777, open port 7777 in firewall, and add the following xmpp property:
xmpp.proxy.externalip to match your openfire external ip or hostname
(from here: http://community.igniterealtime.org/thread/35901)
Another glitch that I found is in situation when you edit the Login Dialog/General/Resource text input entry, and you accidentaly add a trailing space at the end, the openfire proxy transfer fails because client DIGEST value does not match the server DIGEST value
the digest is SHA-1 hash of: sessionId+node+@+domain+/+resource. the resource trim() is not similar in smack and openfire and this causes digest missmatch and proxy transfer to fail and falling to IBB transfer type which is the slowest
I think this is what you experience: IBB transfer type.
Plese try enabling openfire proxy as outlined above and make sure client resource does not have trailing spaces.
Also make sure that you don’t have firewals or anything on your computer/laptop that may obstruct acces to port 7777 on openfire
I tested and it looks fine, no problems.
Here is a doc regarding file transfer in general in openfire:
http://www.igniterealtime.org/support/articles/filetransfer.jsp
if computer2 is sending a file to computer3
if Computer 2 can communicate with computer 3, a socket will be opened on computer2_ip:7777 (case 1)
if not, a socket will be opened on openfire.external.ip (whatever is in xmpp.proxy.externalip):7777 (case 2)
If openfire proxy is not set up, will fallback to IBB transfer type
hope this helps