File Transfer Problems

Hello,

I’'m having problems with the file transfer feature in Spark. We are using Spark within our company on about 30 computers in a mixed environment (Windows, Mac OS X and Linux clients). All clients are running Spark 1.1.4. We are using Wildfire 2.6.2 on a Debian Linux. The proxy feature is disabled, because all clients are inside our company LAN.

Everything works great so far, except the file transfer. File transfer between Windows clients doesn’‘t work at all. On the other hand a Linux client is able to receive a file from a Windows client. It’'s not a problem with the Windows Firewall. I noticed the same behaviour no matter whether the firewall was enabled or disabled.

Thanks for your help,

Lars

I need two things:

Are there any errors in your log files?

hit F12 and post the packet traffic going between the two clients.

Thanks,

Alex

Hi Alex,

thanks for your reply. That is a typical error log during a file transfer. This entry is also logged after a correct transfer:

2006.06.19 10:06:40 org.jivesoftware.util.Cache.calculateSize(Cache.java:541)

java.io.NotSerializableException: org.jivesoftware.wildfire.filetransfer.FileTransfer

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)

at org.jivesoftware.util.Cache.calculateSize(Cache.java:537)

at org.jivesoftware.util.Cache.put(Cache.java:120)

at org.jivesoftware.wildfire.filetransfer.AbstractFileTransferManager.cacheFileTra nsfer(AbstractFileTransferManager.java:54)

at org.jivesoftware.wildfire.filetransfer.spi.DefaultFileTransferManager.acceptInc omingFileTransferRequest(DefaultFileTransferManager.java:40)

at org.jivesoftware.wildfire.filetransfer.FileTransferProxy$FileTransferIntercepto r.interceptPacket(FileTransferProxy.java:331)

at org.jivesoftware.wildfire.interceptor.InterceptorManager.invokeInterceptors(Int erceptorManager.java:227)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:394)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:50)

at org.jivesoftware.wildfire.net.SocketReader.readStream(SocketReader.java:264)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:119)

at java.lang.Thread.run(Thread.java:595)

That are the messages from the sender:

Lars

Hey Lars,

Whats occuring is that there is an exception when the file transfer is added into Wildfire causing it not to be added. This problem has been fixed in the latest builds of Wildfire.

Hope that helps,

Alex

Hi Alex,

we are already running Wildfire 2.6.2 which is the latest stable version. If the problem has been fixed in a specific nightly build, it would be great if you could tell me which one I should get. Thanks.

Lars

Hi Alex,

I just upgraded to the latest Nightly Build Wildfire 3.0.0 Beta (2006-06-20) and file transfer still doesn’'t work correctly.

Lars

Hey Lars,

Thanks for your paitence. Are you seeing the same errors in the wildfire logs?

Thanks,

Alex

Hey Alex,

I still have the same exception in the Wildfire error log:

2006.06.21 09:22:44 org.jivesoftware.util.Cache.calculateSize(Cache.java:545)

java.io.NotSerializableException: org.jivesoftware.wildfire.roster.RosterItem$SubType

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)

at java.util.ArrayList.writeObject(ArrayList.java:569)

at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)

at org.jivesoftware.util.Cache.calculateSize(Cache.java:541)

at org.jivesoftware.util.Cache.put(Cache.java:120)

at org.jivesoftware.wildfire.privacy.PrivacyListManager.getDefaultPrivacyList(Priv acyListManager.java:108)

at org.jivesoftware.wildfire.ClientSession.setAuthToken(ClientSession.java:522)

at org.jivesoftware.wildfire.handler.IQAuthHandler.login(IQAuthHandler.java:226)

at org.jivesoftware.wildfire.handler.IQAuthHandler.handleIQ(IQAuthHandler.java:140 )

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:265)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

There are no error messages in the Smack Debug Window anymore. Everything seems to be fine here:

Unfortunately file transfer still doesn’'t work. I always stops showing the message “Negotiating file transfer with XXX. Please wait…”.

Thanks for your help,

Lars

Hey Lars,

Is your server on the same machine as your Spark client or are the Spark clients you are transfering between on the same machine? That is a different, unrealted exception, I will check with Gato to see if that is anything to worry about.

Thanks,

Alex

Hey guys,

I just checked in a fix for JM-726. The problem is not related to file transfter but with the caching of privacy lists. The bug fix will be available in the next nightly build.

Regards,

– Gato

Hey Alex,

all components are on different machines. The Wildfire server currently runs on our development server and will be transfered to the groupware server in the future. All Spark client run on different desktop machines. Thanks for your help.

Lars

For some reason this guy:

lstolze@jabber.wedo-berlin.de/Spark

Is not picking up the Proxy. In the same test could you post all traffic between him and the server?

Thanks,

Alex

Hey Alex,

that’'s the complete traffic log you asked for:

Lars

Hey Lars,

I was looking for one packet in particular, the packet between the sending client and wildfire that asks Wildfire for the proxy server. As it isn’'t being offered to the other client my suspicion is that it is not showing up in server discovery. Which version of Wildfire are you using? Do you have the proxy enabled? Are there any errors when starting Wildfire in your log files?

Thanks,

Alex

Hey Alex,

we are now using the nightly build Wildfire 3.0.0 Beta (2006-06-20) on a Debian Linux. Before that we had the latest stable release Wildfire 2.6.2. The file transfer problem occurs with both versions. The proxy feature is disabled, because all clients are inside our company LAN. There are no errors when starting the Wildfire server.

Lars

Okay,

Then the issue we are seeing is that the users cannot connect to eachother, or for some reason Spark cannot connect to the remote user. Getting closer to the bottom of this.

It maybe firewall issues on the initiating computer, or any other kind of problem. Attempt to telnet to the initiating machine from the receiving machine on port 7777 and let me know what happens.

Thanks,

Alex

Hey Alex,

it’'s definitely not a firewall problem. Telnet works in both directions and I also tried file transfer with a disabled firewall on both machines.

Lars

Hey Lars,

Are there any errors in the log files of Spark on either machine?

Thanks,

Alex

Hey Alex,

there are no entries in the log files of Spark on both machines. Doesn’'t make it easier.

Lars

I am completely perplexed then. My only suggestion would be to use the File Transfer Proxy as for some reason Spark can’'t create a socket directly to the other machine.

Thanks,

Alex