powered by Jive Software

File Tranfer Problems

Dear Sirs,

we are developing an IM client based on Xmpp running the lastest version of Wildfire Server.

Currently we are stuck with file transfers.

We have implemented the full Jep065,jep 096 and jep 095 features (auto discovery, proxied transfered etc).

My problem is that i cannot send or receive a file and i try to figure out the problem.

I have tried with the following clients Miranda, Spark and PSI.

I have tested all these clients and they are able to tranfer files between them.

Not even one can transfer files with my app.

I use the SOCKS5 protocol as Jep0065 proposes.

I have the following questions:

Jep 0065 says that the SOCKS5 server will send to the Target the Status ‘‘00’’ only after the Inittiator activates the stream. Is that right?

The Target should not wait to return from the CONNECT SOCKS5 command, but should send to the Initator the StreamHost used right after he Authenticates with the server. Is that right?

In the CONNECT command both initiator and Target send the SHA1(SIDInitiatorTarget) byte array.Should I follow the full SOCKS5 RFC and the first octet of the address be the size of the address?

I do all these and when i am the Initiator and send the Activate Xmpp command to the PROXY server (which is Wildfire) it returns me not-allowed error which means that someone has not been conencted to the server. I suppose this is not right as the Target of course will not be fully connected as he is waiting the response from the CONNECT command. This responce according to jep0065 will come only AFTER the Initiator Activates the stream.

I really need some help!

Thanks in advance.


Hey Mayprog,

You have run into an issue that I queried the JStandards-jig list about a few months ago. I was told that they were going to confirm but have not recieved a resposne yet. My initial reading led me to believe that the ‘‘00’’ is sent after the target successfully conencts and authenticates. But I later noticed the passage that you are refering to, where there is another ‘‘00’’ refered to after the stream is activated. Pending a response from them i am not willing to make any changes as it would require changes to both Wildfire and Smack to correct this.

What is even more confusing is that it doesn’'t seem as though any clients are hung up on this, either waiting for a second ‘‘00’’ from the server after the stream is activated or having only one ‘‘00’’ after it is activated. So I am afraid if I make either of the changes to move in line with the JEP, whichever it is, then I will break the compatibility with these clients.




the jep0065 also says that the Target should respond to the Initiator just after the correct authentication and not waiting to be fully connected.

Althougth at the paragraph it says about SHA1 and CONNECT it says that after the Initiator is Authenticated it should send the CONNECT command, later it says:

4.7 Target Acknowledges SOCKS5 Connection

After the Target has authenticated[/b] with the StreamHost, it MUST send an IQ-result to the Initiator indicating which StreamHost was used[/i]

I am really confused right now.Indeed how are the other clients handle this?

Well anyway i want it to work (like you said) even if it doesn’'t conform to the fully (incomprehensive) Jep0065.

In what way should i implement my App in order to talk right with Wildfire and all the other apps?Wildfire is and will BE our Xmpp server and Proxy server, so this is my working context.

How is this handled now?

Thanks Alex

Message was edited by: mayprog


Currently, the ‘‘00’’ is returned immediatly after the target connects and authenticates. They should then forward the used stream hosts to the intiator, the initiator connects to the proxy and then after successfully connecting sends the activate.

If you need more information on how this works it is implemented this way in Smack currently.



Thanks Alex!

I will check it on the Smack code.

Hope to find a way out.