Reputation: 4301
My Question : I'm doing file transfer via XMPP on iOS using the XMPPFramework and OpenFire. The base of my code is from the following tutorial. The target appears to accept the proxy as the streamhost, but when the requester attempt to do the same, OpenFire reports the following error. Why is it failing and how can I fix it?
OpenFire error -
2012.06.12 14:38:40 org.jivesoftware.openfire.filetransfer.proxy.ProxyConnectionManager - Error processing file transfer proxy connection
java.io.IOException: Only SOCKS5 supported
at org.jivesoftware.openfire.filetransfer.proxy.ProxyConnectionManager.processConnection(ProxyConnectionManager.java:158)
at org.jivesoftware.openfire.filetransfer.proxy.ProxyConnectionManager.access$200(ProxyConnectionManager.java:57)
at org.jivesoftware.openfire.filetransfer.proxy.ProxyConnectionManager$1$1.run(ProxyConnectionManager.java:127)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
My OpenFire XMPP settings - (note that I've set the external ip of the proxy here)
xmpp.auth.anonymous - true
xmpp.client.compression.policy - disabled
xmpp.client.idle - -1
xmpp.client.idle.ping - false
xmpp.domain - beta.myCompany.co.uk
xmpp.enabled - true
xmpp.filetransfer.enabled - true
xmpp.offline.quota - 102400
xmpp.offline.type - bounce
xmpp.proxy.enabled - true
xmpp.proxy.externalip - 10.95.xxx.xxx (this is the ip of my server)
xmpp.proxy.port - 7777
xmpp.proxy.transfer.required - false
xmpp.server.compression.policy - disabled
xmpp.server.dialback.enabled - false
xmpp.server.socket.active - true
xmpp.session.conflict-limit - 0
xmpp.session.conflict.limit - 0
xmpp.socket.ssl.active - true
Logs -
2012-06-12 16:26:20.848 JabberClient[2711:207] RECIEVED IN APP DELEGATE - <iq xmlns="jabber:client" type="result" to="[email protected]/3a62c56a" id="4FC4CE04-DA8E-4CC2-B412-40D1C346F682" from="[email protected]/ee69d0fa"><si xmlns="http://jabber.org/protocol/si"><feature xmlns="http://jabber.org/protocol/feature-neg"><x xmlns="jabber:x:data" type="submit"><field var="stream-method"><value>http://jabber.org/protocol/bytestreams</value></field></x></feature></si></iq>
2012-06-12 16:26:20.849 JabberClient[2711:207] Attempting XEP65 connection to [email protected]/ee69d0fa
2012-06-12 16:26:20.849 JabberClient[2711:207] TURNSocket DELEGATE STARTING
2012-06-12 16:26:20.851 JabberClient[2711:6103] SENT - <iq type="get" to="beta.myCompany.co.uk" id="C8A201C4-EC3B-49CC-8BF4-9604B872EB19"><query xmlns="http://jabber.org/protocol/disco#items"/></iq>
2012-06-12 16:26:20.856 JabberClient[2711:1e03] RECIEVED IN TURN SOCKET - <iq xmlns="jabber:client" type="result" id="C8A201C4-EC3B-49CC-8BF4-9604B872EB19" from="beta.myCompany.co.uk" to="[email protected]/3a62c56a"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="pubsub.beta.myCompany.co.uk" name="Publish-Subscribe service"/><item jid="broadcast.beta.myCompany.co.uk" name="Broadcast service"/><item jid="search.beta.myCompany.co.uk" name="User Search"/><item jid="conference.beta.myCompany.co.uk" name="Public Chatrooms"/><item jid="proxy.beta.myCompany.co.uk" name="Socks 5 Bytestreams Proxy"/></query></iq>
2012-06-12 16:26:20.857 JabberClient[2711:1e03] SENT - <iq type="get" to="proxy.beta.myCompany.co.uk" id="92BF3339-987C-4A1E-8657-D8AE666DDC32"><query xmlns="http://jabber.org/protocol/disco#info"/></iq>
2012-06-12 16:26:20.857 JabberClient[2711:207] RECIEVED IN APP DELEGATE - <iq xmlns="jabber:client" type="result" id="C8A201C4-EC3B-49CC-8BF4-9604B872EB19" from="beta.myCompany.co.uk" to="[email protected]/3a62c56a"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="pubsub.beta.myCompany.co.uk" name="Publish-Subscribe service"></item><item jid="broadcast.beta.myCompany.co.uk" name="Broadcast service"></item><item jid="search.beta.myCompany.co.uk" name="User Search"></item><item jid="conference.beta.myCompany.co.uk" name="Public Chatrooms"></item><item jid="proxy.beta.myCompany.co.uk" name="Socks 5 Bytestreams Proxy"></item></query></iq>
2012-06-12 16:26:20.862 JabberClient[2711:6103] RECIEVED IN TURN SOCKET - <iq xmlns="jabber:client" type="result" id="92BF3339-987C-4A1E-8657-D8AE666DDC32" from="proxy.beta.myCompany.co.uk" to="[email protected]/3a62c56a"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="proxy" name="SOCKS5 Bytestreams Service" type="bytestreams"/><feature var="http://jabber.org/protocol/bytestreams"/><feature var="http://jabber.org/protocol/disco#info"/></query></iq>
2012-06-12 16:26:20.863 JabberClient[2711:6103] SENT - <iq type="get" to="proxy.beta.myCompany.co.uk" id="D13DE459-63EA-4CD6-97ED-8565559DF298"><query xmlns="http://jabber.org/protocol/bytestreams"/></iq>
2012-06-12 16:26:20.863 JabberClient[2711:207] RECIEVED IN APP DELEGATE - <iq xmlns="jabber:client" type="result" id="92BF3339-987C-4A1E-8657-D8AE666DDC32" from="proxy.beta.myCompany.co.uk" to="[email protected]/3a62c56a"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="proxy" name="SOCKS5 Bytestreams Service" type="bytestreams"></identity><feature var="http://jabber.org/protocol/bytestreams"></feature><feature var="http://jabber.org/protocol/disco#info"></feature></query></iq>
2012-06-12 16:26:20.874 JabberClient[2711:6103] RECIEVED IN TURNSOCKET - <iq xmlns="jabber:client" type="result" id="D13DE459-63EA-4CD6-97ED-8565559DF298" from="proxy.beta.myCompany.co.uk" to="[email protected]/3a62c56a"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost jid="proxy.beta.myCompany.co.uk" host="10.95.xxx.xxx" port="7777"/></query></iq>
2012-06-12 16:26:20.875 JabberClient[2711:6103] SENT - <iq type="set" from="[email protected]/3a62c56a" to="[email protected]/ee69d0fa" id="4FC4CE04-DA8E-4CC2-B412-40D1C346F682"><query xmlns="http://jabber.org/protocol/bytestreams" sid="4FC4CE04-DA8E-4CC2-B412-40D1C346F682" mode="tcp"><streamhost xmlns="http://jabber.org/protocol/bytestreams" jid="proxy.beta.myCompany.co.uk" host="10.95.xxx.xxx" port="7777"/></query></iq>
2012-06-12 16:26:20.875 JabberClient[2711:207] RECIEVED IN APP DELEGATE - <iq xmlns="jabber:client" type="result" id="D13DE459-63EA-4CD6-97ED-8565559DF298" from="proxy.beta.myCompany.co.uk" to="[email protected]/3a62c56a"><query xmlns="http://jabber.org/protocol/bytestreams"></query></iq>
2012-06-12 16:26:20.916 JabberClient[2711:1e03] RECIEVED IN TURN SOCKET - <iq xmlns="jabber:client" type="result" to="[email protected]/3a62c56a" id="4FC4CE04-DA8E-4CC2-B412-40D1C346F682" from="[email protected]/ee69d0fa"><query xmlns="http://jabber.org/protocol/bytestreams" sid="4FC4CE04-DA8E-4CC2-B412-40D1C346F682"><streamhost-used jid="proxy.beta.myCompany.co.uk"/></query></iq>
2012-06-12 16:26:20.917 JabberClient[2711:1e03] TURNSocket: initiatorConnect: proxy.beta.myCompany.co.uk(10.95.xxx.xxx:7777)
Upvotes: 1
Views: 5423
Reputation: 24053
Let's have a look at Openfire's source code. That's easy since it's an open source project. :)
ProxyConnectionManager.java:158 tells us that Openfire expects an "5" as first byte send through the stream (i.e. the SOCKS5 connection), or otherwise the Exception you see will get thrown. Which seems to be correct according to RFC1928 (SOCKS Protocol Version 5) Section 3.
So without digging deeper and having any knowledge on XMPP on iOS, I would guess that there is something not correct implemented within xmppframework on iOS. I hope I could point you into the right direction.
Upvotes: 2