I'm stuck with this problem and I can not solve it.
ConnectionConfiguration config = new ConnectionConfiguration(host, port);
config.setDebuggerEnabled(true);
config.setSASLAuthenticationEnabled(true);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
XMPPConnection connection = new XMPPConnection(config);
try{
connection.connect();
connection.login(login, password);
//auth.authenticate(login, password, host);
}
catch (XMPPException exc){
exc.printStackTrace();
}
full stack trace:
/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/bin/java -Didea.launcher.port=7544 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 11 CE.app/bin" -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/deploy.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/javaws.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/jce.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/plugin.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/charsets.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/classes.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/jsse.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Classes/ui.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/apple_provider.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/1.6.0_35-b10-428.jdk/Contents/Home/lib/ext/sunpkcs11.jar:/Users/dmitry/IdeaProjects/smacker/target/classes:/Users/dmitry/IdeaProjects/smacker/lib/smack-3.2.1.jar:/Users/dmitry/IdeaProjects/smacker/lib/smackx-3.2.1.jar:/Applications/IntelliJ IDEA 11 CE.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
Connection failed. No response from server.:
at org.jivesoftware.smack.PacketReader.startup(PacketReader.java:119)
at org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:568)
at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:527)
at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:953)
at SessionsHandler.openSession(SessionsHandler.java:62)
at Main.main(Main.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
<stream:stream to="xmpp.odnoklassniki.ru" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
<stream:stream to="odnoklassniki.ru" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
</stream:stream>
<?xml version="1.0"?><stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="odnoklassniki.ru" version="1.0" xml:lang="en">
<stream:features><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>X-ODKL-API</mechanism><mechanism>X-ODKL-BLOWFISH</mechanism><mechanism>PLAIN</mechanism></mechanisms><auth xmlns='http://jabber.org/features/iq-auth'/></stream:features>
<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
<?xml version="1.0"?><stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" from="odnoklassniki.ru" version="1.0" xml:lang="en">
<stream:features><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>X-ODKL-API</mechanism><mechanism>X-ODKL-BLOWFISH</mechanism><mechanism>PLAIN</mechanism></mechanisms><auth xmlns='http://jabber.org/features/iq-auth'/></stream:features>
dmitry@pro:~$ telnet xmpp.odnoklassniki.ru 5222
Trying 217.20.145.69...
Connected to xmpp.odnoklassniki.ru.
Escape character is '^]'.
The Smack library (3.2.2) expecting @id attribute in the second (after starttls) "stream:stream" packet.
This attribute is optional and xmpp.odnoklassnki.ru doesn't send it:
<stream:stream to="odnoklassniki.ru" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
There are two options to solve this:
This is a part "patched" of PacketReader:parsePackets() method. Please, note new connectionIdReceived variable and correspondent "if" condition:
// We found an opening stream. Record information about it, then notify
// the connectionID lock so that the packet reader startup can finish.
else if (parser.getName().equals("stream")) {
// Ensure the correct jabber:client namespace is being used.
if ("jabber:client".equals(parser.getNamespace(null))) {
// Get the connection id.
boolean connectionIdReceived = false;
for (int i=0; i<parser.getAttributeCount(); i++) {
if (parser.getAttributeName(i).equals("id")) {
// Save the connectionID
connectionID = parser.getAttributeValue(i);
if (!"1.0".equals(parser.getAttributeValue("", "version"))) {
// Notify that a stream has been opened if the
// server is not XMPP 1.0 compliant otherwise make the
// notification after TLS has been negotiated or if TLS
// is not supported
releaseConnectionIDLock();
}
connectionIdReceived = true;
}
else if (parser.getAttributeName(i).equals("from")) {
// Use the server name that the server says that it is.
connection.config.setServiceName(parser.getAttributeValue(i));
}
}
if (!connectionIdReceived) {
connectionID = "<unspecified>";
if (!"1.0".equals(parser.getAttributeValue("", "version"))) {
// Notify that a stream has been opened if the
// server is not XMPP 1.0 compliant otherwise make the
// notification after TLS has been negotiated or if TLS
// is not supported
releaseConnectionIDLock();
}
}
}
}