powered by Jive Software

Understanding File Transfer with different clients: Inband and Proxy

Hi there,

I’‘m currently having problems with Files Transfer between clients other than Spark, and I’‘m confusing myself as to what is happening behind the scenes. My problem is that I have tried several clients such as Psi, Gaim, Jeti, Spark etc and there doesn’'t seem to be any consistency between transferring files. What I mean by that: if I transfer a file between Psi and Spark, the transfer will be successful, however if I do the reverse and transfer between Spark to Psi, the transfer will be immediately cancelled without even asking if I will accept the file. Similarly between two clients running Gaim 2.0 Beta 3, the client will receive a request to accept, but if you accept it will stay on “Waiting for file to be transferred…” forever. BUT if you transfer between two Gaim 1.5 clients the transfer will be successful. Similarly if you transfer between Gaim 2.0 and Gaim 1.5, no request to accept the file even occurs and the list goes on…

I’‘ve searched these forums and found several threads that have improved my understanding slightly, but I can’‘t resolve my issue. From my understanding, the possible issues I’‘m having, are that my Wildfire server’‘s proxy file transfer is not working. The reason I say that, is that Spark uses inband file transfer and is the only one to do so (according to the thread http://www.jivesoftware.org/community/thread.jspa?messageID=117762&) and Spark to Spark file transfer always succeeds. BUT according to the thread (http://www.jivesoftware.org/community/thread.jspa?messageID=120468&#120468) Psi doesn’‘t use inband file transfer, yet Psi is the only client that successfully works consistently for accepting and sending files to clients other than itself, which suggests to me that the proxy file transfer is working. I suspect that the Gaim 2.0 Beta 3 file transfer is broken (although I haven’‘t investigated it on their forums yet) and as a result file transfer isn’'t working.

I’‘ve also seen the thread http://www.jivesoftware.org/community/thread.jspa?messageID=116612&#116612, which tells me that there are others with the issue. Really I just want to know if this is a known issue and it is because the Jabber Software Foundation haven’'t come up with a standard? and I want to improve my own understanding of the wildfire server with regard to other clients file transfer mechanism. ( I have read this article http://www.jivesoftware.org/articles/filetransfer.jsp regarding file transfer for Spark which has improved my understanding, but for Spark only)

I’‘m running Wildfire 2.6.2 using MySQL 4.1.19, using OpenLDAP as a backend for authentication. I’‘ve set my File Transfer Proxy to 7777 and has all the default configurations. I hope I’'ve provided enough information for someone to help me answer these questions.


File transfer can be a bit confusing at times. PSI and Spark use JEP-0096 to negotiate the stream method to be used to transfer files. The problems arrise as both Spark and PSI deviate slightly from the JEP. Spark deviates by sending that it supports multiple stream types, PSI doesn’'t like this which is why it immediatly appears that your transfer was cancled. PSI to Spark works because PSI sets up a direct stream with Spark via JEP-0065, PSI only works with the Proxy in WIldfire if it is configured especially to do so. Spark is set up to discover file transfer proxys automatically.

PSI deviates slightly from th JEP as IBB is required in the JEP as a backup protocol, and they do not have it implemented it. This was due to concerns of the authors of PSI on the amount of traffic that IBB generates, very legitamate cocerns in my mind as well.

The reason Spark deviates from the JEP is that we at Jive wanted a more fault tolerant file transfer. To accomplish this we decided it should be possible for file transfer participants to offer multiple stream methods, so they can fall back to another if one method fails. We had thought that clients that didn’‘t support this wouldn’'t care but that is exactly where we ran into the problem with PSI. We have submitted our modifications as suggestions to the JSF but have recieved little response.

I have not used the file transfer in GAIM so I cannot comment on how or why that isn’'t working.

Hope that helps to clear things up a bit,


This is realy confusing I have Wildfire 2.6 and about 50 PSI clients running and I arrive at the conclusion that outbound filetransfer won’'t work with this configuration.


Wow, thanks for explaining that. As complicated as it sounded, I actually understood what you were talking about… I’'m really getting into this Jabber/Wildfire thing.

Thanks again for your help so that I understand. Much appreciated!

You should be able to get it to work as PSI can use a proxy to transfer a file you just need to enter the proxy under the account settings but that will need to be explained to each of the 50 users using your client. I am not sure why they don’'t use auto-discovery like Spark does.

auto-discovery would be great for a default.

It needs to still be specifiable, however. For example, one of the xmpp servers that I log into has a proxy component configured, but using that component would only work for people using that server, because the DNS isn’‘t set up properly for external people to poke at it. On that account, auto-discovery would result in a proxy server that I largely couldn’'t use, but with psi, I configure proxy.jabber.org so that I can do reliable (relatively) file transfers.

Just a use case where auto-discovery doesn’'t always work…but I do definitely think it would be great for a default.


I tried everything to get one PSI client working - but no way. The filetransfer proxy of Wildfire 2.6 is enabled on port 7777, firewall is open and the PSI clients are properly configured. I have no idea why it doesn’'t work.

By the way, distributing for 50 clients is no problem, I have a Web Administration where company Admins can add company and department data, the departments are Shared Groups in Wildfire, the users can add themselves to the selected department over the Web interface, the JID is automaticly created with the company number together with a user ID. All users in the company can see each other and they don’‘t have to authorise themselves. At the end the employees can download a pre-configured PSI client and they just have to login with the username and password, that’‘s it. Very comfortable way to deploy a Jabber business network. The whole project is in Beta stage, and - it’'s only in German You may take a look at http://www.OpenMessenger.de.

I’‘d like to say thanks to the development guys from Wildfire, they do a great job and I can’'t think of a better Jabber Server, without the genious Shared Group function there would be no easy way to pre-configure company users and departments.


Well, in that case we could setup some sort of conditional service discovery where autodiscovery will point them to another server if they can’'t access it.



One thing it seems you haven’'t configured is:

{xmpp.proxy.externalip} it is the ip or domain address where your proxy can be accessed. Your deployment scheme sounds very intresting.