During aTalk testing, it is found that sending of muc#roomconfig FORM stanza always failed with NoResponseException even the xmpp server replied IQ-result within ms of the IQ-set received.
The test carried out are on the same home network using WiFi.
Below is a log info captured of the whole IQ exchanges process on aTalk and XMPP ejabberd server.
It is seen that the IQ-result received by aTalk always appear only after the NoResponseException; independent of the Smack Reply Timer set e.g. 5-Sec, 10-Sec and 30-Sec.
From ejabberd log, the xmpp server actually returns IQ-result within ms of the received IQ-set; and is well within the smack timeout i.e.: server sends on 07:50:52.217… but aTalk smack timeout on 07:51:03.596.
Note there is time lead of ejabberd on aTalk in IQ send and receive by ejabberd server ~0.6s;
(07:50:53.591 - 07:50:52.203…); likely due to logcat message display delay on aTalk. Both aTalk and server clocks are synced with internet time.
Any comment?
// ============= aTalk logcat info ============ //
07:50:53.581 D Sending room config form!!!
07:50:53.591 D SENT (1):
<iq to='chatroom3@conference.atalk.sytes.net' id='XY69C-37' type='set'>
<query xmlns='http://jabber.org/protocol/muc#owner'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE'>
<value>
http://jabber.org/protocol/muc#roomconfig
</value>
</field>
</x>
</query>
</iq>
<r xmlns='urn:xmpp:sm:3'/>
07:51:03.596 E Failed to send config form.
org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 10000ms (~10s). StanzaCollector has been cancelled. Waited for response using: IQReplyFilter: iqAndIdFilter (AndFilter: (OrFilter: (IQTypeFilter: type=error, IQTypeFilter: type=result), StanzaIdFilter: id=XY69C-37)), : fromFilter (OrFilter: (FromMatchesFilter (full): chatroom3@conference.atalk.sytes.net)).
at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:281)
at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:228)
at org.jivesoftware.smackx.muc.MultiUserChat.sendConfigurationForm(MultiUserChat.java:873)
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl$ParticipantListener.processOwnPresence(ChatRoomJabberImpl.java:2771)
at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl$ParticipantListener.processPresence(ChatRoomJabberImpl.java:2744)
at org.jivesoftware.smackx.muc.MultiUserChat$3.processStanza(MultiUserChat.java:309)
at org.jivesoftware.smack.AbstractXMPPConnection.lambda$invokeStanzaCollectorsAndNotifyRecvListeners$8(AbstractXMPPConnection.java:1619)
at org.jivesoftware.smack.AbstractXMPPConnection$$ExternalSyntheticLambda3.run(Unknown Source:6)
at org.jivesoftware.smack.AbstractXMPPConnection$10.run(AbstractXMPPConnection.java:2149)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
07:51:03.667 D RECV (1):
<iq xml:lang='en-US' to='swordfish@atalk.sytes.net/atalk' from='chatroom3@conference.atalk.sytes.net' type='result' id='XY69C-37'/>
// ============= ejabberd log info ============ //
07:50:52.203612+08:00 [notice] (tls|<0.624.0>) Received XML on stream = "<iq to='chatroom3@conference.atalk.sytes.net' id='XY69C-37' type='set'><query xmlns='http://jabber.org/protocol/muc#owner'><x xmlns='jabber:x:data' type='submit'><field var='FORM_TYPE'><value>http://jabber.org/protocol/muc#roomconfig</value></field></x></query></iq><r xmlns='urn:xmpp:sm:3'/>"
07:50:52.217373+08:00 [notice] (tls|<0.624.0>) Send XML on stream = "<iq xml:lang='en-US' to='swordfish@atalk.sytes.net/atalk' from='chatroom3@conference.atalk.sytes.net' type='result' id='XY69C-37'/>"