It seems that my problems with Exodus and MUC were because of Jingle Nodes plugin installed. Now it works fine with Openfire 3.7.1 and 3.7.2 alpha and Exodus 0.9.1.0 (our primary client at work). Exodus 0.10.0.0 is suddenly not able to login to Openfire when SSL is enabled. Was working just a few weeks ago and now can’t. I haven’t changed anything on the server. Ah, we should get rid of this piece of crap long time ago, but it is hard to move all our staff to a newer client (like Spark or else).
But i can’t test your patch for backward compatibility as i can’t compile with your patch in NetBeans:
Compiling 579 source files to D:\My Documents\JiveSoftware\Openfire\work\classes
warning: [options] bootstrap class path not set in conjunction with -source 1.5
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\sasl\SaslSer verFactoryImpl.java:28: warning: PolicyUtils is internal proprietary API and may be removed in a future release
import com.sun.security.sasl.util.PolicyUtils;
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\muc\spi\IQAd minHandler.java:209: error: incompatible types
** for (String jid : room.getOwners()) {**
** required: String**
** found: JID**
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\muc\spi\IQAd minHandler.java:215: error: method getOccupantsByBareJID in class LocalMUCRoom cannot be applied to given types;
** List roles = room.getOccupantsByBareJID(jid);**
** required: JID**
** found: String**
** reason: actual argument String cannot be converted to JID by method invocation conversion**
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\muc\spi\IQAd minHandler.java:228: error: incompatible types
** for (String jid : room.getAdmins()) {**
** required: String**
** found: JID**
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\muc\spi\IQAd minHandler.java:234: error: method getOccupantsByBareJID in class LocalMUCRoom cannot be applied to given types;
** List roles = room.getOccupantsByBareJID(jid);**
** required: JID**
** found: String**
reason: actual argument String cannot be converted to JID by method invocation conversion
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\sasl\SaslSer verFactoryImpl.java:40: warning: PolicyUtils is internal proprietary API and may be removed in a future release
private static final int mechPolicies[] = { PolicyUtils.NOANONYMOUS, PolicyUtils.NOANONYMOUS };
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\sasl\SaslSer verFactoryImpl.java:40: warning: PolicyUtils is internal proprietary API and may be removed in a future release
private static final int mechPolicies[] = { PolicyUtils.NOANONYMOUS, PolicyUtils.NOANONYMOUS };
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\sasl\SaslSer verFactoryImpl.java:60: warning: PolicyUtils is internal proprietary API and may be removed in a future release
if (mechanism.equals(myMechs[PLAIN]) && PolicyUtils.checkPolicy(mechPolicies[PLAIN], props)) {
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\sasl\SaslSer verFactoryImpl.java:66: warning: PolicyUtils is internal proprietary API and may be removed in a future release
else if (mechanism.equals(myMechs[CLEARSPACE]) && PolicyUtils.checkPolicy(mechPolicies[CLEARSPACE], props)) {
D:\My Documents\JiveSoftware\Openfire\src\java\org\jivesoftware\openfire\sasl\SaslSer verFactoryImpl.java:82: warning: PolicyUtils is internal proprietary API and may be removed in a future release
return PolicyUtils.filterMechs(myMechs, mechPolicies, props);
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
4 errors
7 warnings
D:\My Documents\JiveSoftware\Openfire\build.xml:282: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 6 seconds)