3.3.3 -> 3.4.1 upgrade results in conference rooms being unavailable

Hi, I work with Joe. The problem seems to be related to the fact that there now appear to be two jabber::iq:searches on the server. One for conference rooms and one for users. The conference room appears to win in this situation, and there doesnt seem to be a way to pick the search in spark.

Sam.

The query is:

<iq id=“4CNRo-30” to=“conference.imserver.spimageworks.com” type=“get”>

<query xmlns=“jabber:iq:search”/>

</iq>

The Response is:

<iq id=“4CNRo-30” to="sam@imserver.spimageworks.com/spark" from=“conference.imserver.spimageworks.com” type=“result”>

<query xmlns=“jabber:iq:search”>

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

<title>Chat Rooms Search</title>

<instructions>instrunctions</instructions>

<field var=“FORM_TYPE” type=“hidden”>

<value>jabber:iq:search</value>

</field>

<field label=“Name” var=“name” type=“text-single”/>

<field label=“Name must match exactly” var=“name_is_exact_match” type=“boolean”/>

<field label=“Subject” var=“subject” type=“text-single”/>

<field label=“Number of users” var=“num_users” type=“text-single”/>

<field label=“Max number allowed of users” var=“num_max_users” type=“text-single”/>

<field label=“Include password protected rooms” var=“include_password_protected” type=“boolean”/>

</x>

</query>

</iq>

Hey Sam,

That is a good analysis. When you send an IQ to a component (like in your XML example) the component should be the one answering the IQ packet. If the IQ packet has no TO attribute or the TO attribute matches the server’s domain then the IQ packet will be handled by the server (in this case should be the IQ search module).

In summary, it is fine (in your example) that the MUC service is receiving the IQ packet. If you send another IQ packet with no TO or TO equals imserver.spimageworks.com then the IQ search handler will handle the IQ packet.

Regards,

– Gato

This is sounding like a spark issue, so I may repost. So what I am seeing is that spark isnt expecting the chatroom search. So what I have done is to modify the Service discovery search from:

if (info.containsFeature(“jabber:iq:search”)) {

searchServices.add(item.getEntityID());

}

to:

if (info.containsFeature(“jabber:iq:search”) && !info.containsFeature(“http://jabber.org/protocol/muc”)) {

searchServices.add(item.getEntityID());

}

Does that make sense?

Sam.