Issue with IQVersionHandler?

Today i have noticed the following behavior:

Someone who is not on my roster starts a conversation with me. I did not add him to my roster.
Then i opened the client information dialog of this person and i got the servers information not from the client.

the IQ my client has sent to server:

<iq xmlns="jabber:client" to="USERNAME@XMPPDOMAIN.LOCAL" type="get" id="dabe2873-6de9-464d-a1c6-55e8f9cef5a3" from="ME@XMPPDOMAIN.LOCAL/Messenger-130TQIVN">
<query xmlns="jabber:iq:version" />
</iq>

i have noticed that the the opponents client does not have a ressourceid so the server could not decide which one to use if the opponent has logged in with more than one client. BUT the opponent is only logged in once.

I think it would be better that this server will send an error instead of his own infos about OS, OF-Version etc…

Good find. I think this is caused by a combination of convoluted code, and the (incorrect) perception that IQHandlers are invoked only when a stanza is addressed to the server. In reality, they’re also invoked when a stanza is addressed to a user’s bare JID - which according to the XMPP specifications requires the server to process the stanza on behalf of the user.

I’ve created this ticket to track the issue: https://issues.igniterealtime.org/browse/OF-1980

(In other words: this potentially affects more than just the IQVersionHandler)

Just tested disco#info on the account:

The result does not return jabber:iq:version, so there’s at least inconsistent behavior.

The result also does not return jabber:iq:last, although it is supported by the user account.

Probably affects more, like urn:xmpp:time.