Send and receive files to android

I have a clean installation of Openfire 4.1.5.

The Openfire instance is directly on the Internet (not proxy, not firewalls).

As a client on PCs I use Spark 2.7.7

And on android phones try using several XMPP clients.

The server has the File Transfer Proxy Configuration feature enable

Among Spark clients on the same network, I can transfer files.

Among Spark clients on different networks, I can transfer files.

Among Android customers testing several app. I can not transfer files.

Between Android and Spark customers, I can not transfer either.

Could you tell me which logs I need to check in order to get close to a solution?

Or how did you solve this problem?

Best regards.

File transfers are usually peer-to-peer. I think that file transfer proxy is only to help clients to find each other, but then it also should happen peer-to-peer. Depends on a client maybe. It works with Conversations client on igniterealtime.org server, which is using latest Openfire.

Any idea what I can check? Is a clean facility. I am using Conversations.

Any log or something?

The only thing I get on Android is “sending error”.

looking forward, in spark log, I see this:

ago 10, 2017 4:49:30 PM org.jivesoftware.spark.util.log.Log error

GRAVE: Error occured during file transfer.

feature-not-implemented(-1)

at org.jivesoftware.smackx.filetransfer.FileTransferNegotiator.negotiateOutgoingTr ansfer(FileTransferNegotiator.java:430)

at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer.negotiateStream(Outgo ingFileTransfer.java:362)

at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer.access$100(OutgoingFi leTransfer.java:35)

at org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer$2.run(OutgoingFileTra nsfer.java:216)

at java.lang.Thread.run(Unknown Source)

I don’t know what this error means. Maybe the other client is trying to use a transfer protocol that Spark (and Smack) doesn’t support. I’ve read somewhere that Spark is using Stream Initiation File Transfer (SI FT), but some clients (like Conversations) do not support that. You can try Spark 2.8.3. It has newer Smack library, though in general it seems that file transfer got worse in that version of Spark.

I don’t implement SMACK yet,

it’s mandatory the implementation of Smack?

I don’t understand that question. Smack is the API library. Spark is based on Smack. Conversations is not. Some other clients are based on Smack (like latest Xabber). It shouldn’t be mandatory to use clients based on the same library, although it could be that results would be better. But that’s just speculation. File transfer is generally the most complex and broken feature as files are not going through the server like messages and two clients have to find a way to talk to each other directly. This is problematic in the world of firewalls, NAT, proxies, different internet providers, etc. It might be, that you won’t find a solution for this problem.