I am using XMPP with iOS for file transfer.
I am using following lines of code to send file. But I am continuously getting single error and stuck on issue.
<error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error>
I have used following code in app to send file between two devices.
XMPPJID *jid = self.chatUserJID;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
@"aqua.png" ];
UIImage* image = [UIImage imageWithContentsOfFile:path];
XMPPSIFileTransfer *sifiletransfer=[[XMPPSIFileTransfer alloc]init];
[sifiletransfer initiateFileTransferTo:jid withData:UIImagePNGRepresentation(image)];
sifiletransfer.sid = [[self xmppStream] generateUUID];
if ([jid.domain isEqualToString:[self.xmppStream myJID].domain]) {
[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:jid.domain, nil]];
} else {
[TURNSocket setProxyCandidates:[NSArray arrayWithObjects:jid.domain,[self.xmppStream myJID].domain, nil]];
}
TURNSocket *socket = [[TURNSocket alloc] initWithStream:[[self appDelegate] xmppStream] toJID:jid];;
[socket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];
Log for file transfer is shown as below.
SEND:
<iq type="get" to="192.168.2.120" id="596BC614-8653-43CC-925B-E56CFF6DB8CF"><query xmlns="http://jabber.org/protocol/disco#items"/></iq>
RECV:
<iq xmlns="jabber:client" type="result" id="596BC614-8653-43CC-925B-E56CFF6DB8CF" from="192.168.2.120" to="[email protected]/4a0ce4e9"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="conference.192.168.2.120" name="Public Chatrooms"/><item jid="pubsub.192.168.2.120" name="Publish-Subscribe service"/><item jid="proxy.192.168.2.120" name="Socks 5 Bytestreams Proxy"/></query></iq>
SEND:
<iq type="get" to="proxy.192.168.2.120" id="03078D21-008A-444C-87D4-FCC370D16E5D"><query xmlns="http://jabber.org/protocol/disco#info"/></iq>
RECV:
<iq xmlns="jabber:client" type="result" id="03078D21-008A-444C-87D4-FCC370D16E5D" from="proxy.192.168.2.120" to="[email protected]/4a0ce4e9"><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 type="get" to="proxy.192.168.2.120" id="C537E4CC-AD48-4517-85D7-96D6DF1658F4"><query xmlns="http://jabber.org/protocol/bytestreams"/></iq>
RECV:
<iq xmlns="jabber:client" type="result" id="C537E4CC-AD48-4517-85D7-96D6DF1658F4" from="proxy.192.168.2.120" to="[email protected]/4a0ce4e9"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost jid="proxy.192.168.2.120" host="192.168.2.120" port="7777"/></query></iq>
SEND:
<iq type="set" to="[email protected]" id="A791E4C0-3235-402F-A537-94FB296BA0C4"><query xmlns="http://jabber.org/protocol/bytestreams" sid="A791E4C0-3235-402F-A537-94FB296BA0C4" mode="tcp"><streamhost xmlns="http://jabber.org/protocol/bytestreams" jid="proxy.192.168.2.120" host="192.168.2.120" port="7777"/></query></iq>
RECV:
<iq xmlns="jabber:client" type="error" id="A791E4C0-3235-402F-A537-94FB296BA0C4" from="[email protected]" to="[email protected]/4a0ce4e9"><query xmlns="http://jabber.org/protocol/bytestreams" sid="A791E4C0-3235-402F-A537-94FB296BA0C4" mode="tcp"><streamhost jid="proxy.192.168.2.120" host="192.168.2.120" port="7777"/></query><error code="503" type="cancel"><service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
Can any body please suggest me what can be the mistake because of which this issue is taking place?
I have done following configuration to enable file transfer.
Enabled file transfer from Openfire.
Server -> Server Settings -> File Transfer Settings -> Enable on port number 7777
Set following server properties in Openfire.
xmpp.domain 192.168.2.120
xmpp.proxy.enabled true
xmpp.proxy.externalip 192.168.2.120 / proxy.192.168.2.120 // Tried both
xmpp.proxy.port 7777
I request you to help if you have any idea.
Thanks in advance!!!