Spark client can not transfer file as an active end

Hi,

I use Spark as the jabber client and openfire 3.3.3 as the jabber server. And also I have another jabber client of gaim.

The spark client, gaim client, and the openfire server, all of which run at localhost.

Suppose I login as Tom through spark client, and login as Fred through gaim client.

Now i want to make an experiment with file transfer between Tom and Fred.

File transfer from Fred to Tom can succeed,while the opposite direction always holds–when Tom make a file transfer request to Fred and Fred accept that request, the file transfer bar holds. If I use some other java jabber client such as JBother to login with Tom, the file transfer still can not succeed. Has anyone here met such a phoenomena?

Following is the smack debug info when Tom start the request as the initiator:

send:

<iq id=“6tPpX-21” to=“fred@localhost” type=“get”>

<vCard xmlns=“vcard-temp”>

<timestamp>1190865873923</timestamp>

<JABBERID>fred@localhost</JABBERID>

<FN/>

</vCard>

</iq>

receive:

<iq id=“6tPpX-21” to=“tom@localhost/spark” from=“fred@localhost” type=“result”>

<vCard xmlns=“vcard-temp”>

<timestamp>1190865873923</timestamp>

<JABBERID>fred@localhost</JABBERID>

<FN/>

</vCard>

</iq>

send:

<iq id=“6tPpX-22” to=“fred@localhost/Home” from=“tom@localhost/spark” type=“set”>

<si xmlns=“http://jabber.org/protocol/si

id=“jsi_5649175227595532860”

profile=“http://jabber.org/protocol/si/profile/file-transfer”>

<file xmlns=“http://jabber.org/protocol/si/profile/file-transfer” name=“jniwrap.dll” size=“45056”>

<desc>Sending file</desc>

</file>

<feature xmlns=“http://jabber.org/protocol/feature-neg”>

<x xmlns=“jabber:x:data” type=“form”>

<field var=“stream-method” type=“list-multi”>

<option>

<value>[http://jabber.org/protocol/bytestreams]

</option>

<option>

<value>[http://jabber.org/protocol/ibb]

</option>

</field>

</x>

</feature>

</si>

</iq>

send:

<iq id=“6tPpX-23” to=“localhost” type=“get”>

<query xmlns=“http://jabber.org/protocol/disco#items”/>

</iq>

receive:

<iq id=“6tPpX-22” to=“tom@localhost/spark” from=“fred@localhost/Home” type=“result”>

<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]

</field>

</x>

</feature>

</si>

</iq>

send:

<iq id=“6tPpX-24” to=“conference.localhost” type=“get”>

<query xmlns=“http://jabber.org/protocol/disco#info”/>

</iq>

receive:

<iq id=“6tPpX-23” to=“tom@localhost/spark” from=“localhost” type=“result”>

<query xmlns=“http://jabber.org/protocol/disco#items”>

<item jid=“conference.localhost” name="???"/>

<item jid=“pubsub.localhost” name=“Publish-Subscribe service”/>

<item jid=“proxy.localhost” name=“Socks 5 Bytestreams Proxy”/>

<item jid=“search.localhost” name=“User Search”/>

</query>

</iq>

send:

<iq id=“6tPpX-25” to=“pubsub.localhost” type=“get”>

<query xmlns=“http://jabber.org/protocol/disco#info”/>

</iq>

receive:

<iq id=“6tPpX-24” to=“tom@localhost/spark” from=“conference.localhost” type=“result”>

<query xmlns=“http://jabber.org/protocol/disco#info”>

<identity category=“conference” name=“Public Chatrooms” type=“text”/>

<feature var=“http://jabber.org/protocol/muc”/>

<feature var=“http://jabber.org/protocol/disco#info”/>

<feature var=“http://jabber.org/protocol/disco#items”/>

</query>

</iq>

send:

<iq id=“6tPpX-26” to=“proxy.localhost” type=“get”>

<query xmlns=“http://jabber.org/protocol/disco#info”/>

</iq>

receive:

<iq id=“6tPpX-25” to=“tom@localhost/spark” from=“pubsub.localhost” type=“result”>

<query xmlns=“http://jabber.org/protocol/disco#info”>

<identity category=“pubsub” name=“Publish-Subscribe service” type=“service”/>

<feature var=“http://jabber.org/protocol/pubsub”/>

<feature var=“http://jabber.org/protocol/pubsub#collections”/>

<feature var=“http://jabber.org/protocol/pubsub#config-node”/>

<feature var=“http://jabber.org/protocol/pubsub#create-and-configure”/>

<feature var=“http://jabber.org/protocol/pubsub#create-nodes”/>

<feature var=“http://jabber.org/protocol/pubsub#delete-nodes”/>

<feature var=“http://jabber.org/protocol/pubsub#get-pending”/>

<feature var=“http://jabber.org/protocol/pubsub#instant-nodes”/>

<feature var=“http://jabber.org/protocol/pubsub#item-ids”/>

<feature var=“http://jabber.org/protocol/pubsub#meta-data”/>

<feature var=“http://jabber.org/protocol/pubsub#modify-affiliations”/>

<feature var=“http://jabber.org/protocol/pubsub#manage-subscriptions”/>

<feature var=“http://jabber.org/protocol/pubsub#multi-subscribe”/>

<feature var=“http://jabber.org/protocol/pubsub#outcast-affiliation”/>

<feature var=“http://jabber.org/protocol/pubsub#persistent-items”/>

<feature var=“http://jabber.org/protocol/pubsub#presence-notifications”/>

<feature var=“http://jabber.org/protocol/pubsub#publish”/>

<feature var=“http://jabber.org/protocol/pubsub#publisher-affiliation”/>

<feature var=“http://jabber.org/protocol/pubsub#purge-nodes”/>

<feature var=“http://jabber.org/protocol/pubsub#retract-items”/>

<feature var=“http://jabber.org/protocol/pubsub#retrieve-affiliations”/>

<feature var=“http://jabber.org/protocol/pubsub#retrieve-default”/>

<feature var=“http://jabber.org/protocol/pubsub#retrieve-items”/>

<feature var=“http://jabber.org/protocol/pubsub#retrieve-subscriptions”/>

<feature var=“http://jabber.org/protocol/pubsub#subscribe”/>

<feature var=“http://jabber.org/protocol/pubsub#subscription-options”/>

<feature var=“http://jabber.org/protocol/pubsub#default_access_model_open”/>

</query>

</iq>

receive:

<iq id=“6tPpX-26” to=“tom@localhost/spark” from=“proxy.localhost” type=“result”>

<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>

send:

<iq id=“6tPpX-27” to=“search.localhost” type=“get”>

<query xmlns=“http://jabber.org/protocol/disco#info”/>

</iq>

send:

<iq id=“6tPpX-28” to=“proxy.localhost” type=“get”>

<query xmlns=“http://jabber.org/protocol/bytestreams”/>

</iq>

receive:

<iq id=“6tPpX-27” to=“tom@localhost/spark” from=“search.localhost” type=“result”>

<query xmlns=“http://jabber.org/protocol/disco#info”>

<identity category=“directory” name=“User Search” type=“user”/>

<feature var=“jabber:iq:search”/>

</query>

</iq>

send:

<iq id=“6tPpX-29” to=“fred@localhost/Home” from=“tom@localhost/spark” type=“set”>

<query xmlns=“http://jabber.org/protocol/bytestreams” sid=“jsi_5649175227595532860” mode=“tcp”>

<streamhost jid=“proxy.localhost” host=“127.0.0.1” port=“7777”/>

</query>

</iq>

receive:

<iq id=“6tPpX-28” to=“tom@localhost/spark” from=“proxy.localhost” type=“result”>

<query xmlns=“http://jabber.org/protocol/bytestreams”>

<streamhost jid=“proxy.localhost” host=“127.0.0.1” port=“7777”/>

</query>

</iq>

Then the file transfer holds all along.

Same problem here. Spark versions tested 2.5.5 to 2.5.7 pear client PSI 0.10

Ethan, first, server name should not be localhost and second, unless you change the port in Openfire that file transfer occurs on you won’t be able to transfer from a client on the server machine.

Alex