-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Tomcat, Fedora 12, ejabberd 2.1.4
-
Powered by SuggestiMate
All jabber plugins after 1.6 will not connect to my ejabberd server. I've defined 3 ports, one STARTTLS, one TLS, and one with no SSL. I've tried with and without SASL enabled for the plugin on each. No combination works. There's nothing overly exciting with the ejabberd server, it pulls accounts from LDAP and sends premade rosters which is the only thing beyond default.
In all cases, it opens the port and then does nothing:
=INFO REPORT==== 2010-07-23 11:19:56 ===
I(<0.518.0>:ejabberd_listener:232) : (#Port<0.26285>) Accepted connection {{10,0,0,217},59241} -> {{10,0,0,216},5222}
=INFO REPORT==== 2010-07-23 11:19:56 ===
I(<0.5972.0>:ejabberd_net:25) : gethostname
=INFO REPORT==== 2010-07-23 11:19:56 ===
I(<0.5972.0>:ejabberd_c2s:261) : FQDN: "im.get2spec.com"
=INFO REPORT==== 2010-07-23 11:19:56 ===
I(<0.5972.0>:ejabberd_c2s:261) : FQDN: "im.get2spec.com"
I turned the hudson logs up all the way but nothing relevant is printed there.
- instant-messaging.hpi
- 96 kB
- kutzi
- jabber.hpi
- 872 kB
- kutzi
- is duplicated by
-
JENKINS-8309 fails to reconnect to jabber server
-
- Resolved
-
- is related to
-
JENKINS-27488 gss.conf file not found
-
- Open
-
[JENKINS-7060] Hudson not connecting to ejabberd
What Jabber/IM versions are you using now?
Please see JENKINS-6032 where the user also had a problem with ejabberd, but that one was resolved in Jabber 1.8
2 ideas to get behind the problem:
- take a stack trace of Hudson while it is trying to connect to eJabberd
- look on which ports Hudson-jabber-plugin/eJabberd are trying to connect (e.g. via lsof) and check if these ports are protected by a firewall rule
There are no firewalls between the hudson box or the xmpp server, they're on the same LAN and OS firewalls are fully disabled.
I'd be happy to give an XMPP login on the particular server to any devs. Email request to kevinb <at> analograils.com
Do you use Kerberos authentication?
When I try to connect to the given server, I get the following error logs:
31.07.2010 09:48:08 hudson.plugins.im.IMConnectionProvider$ConnectorRunnable run
INFO: Reconnect failed. Next connection attempt in 4 minutes
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...ailable xmlns=\'urn:ietf:params:xml:ns:xmpp-stanzas\'/></error></iq>... @1:692
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
javax.security.sasl.SaslException: Failure to initialize security context [Caused by GSSException: Invalid name provided (Mechanism level: Could not load configuration file /etc/krb5.conf (No such file or directory))]
at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:132)
at com.sun.security.sasl.gsskerb.FactoryImpl.createSaslClient(FactoryImpl.java:45)
at javax.security.sasl.Sasl.createSaslClient(Sasl.java:354)
at org.jivesoftware.smack.sasl.SASLGSSAPIMechanism.authenticate(SASLGSSAPIMechanism.java:85)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:308)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395)
at hudson.plugins.jabber.im.transport.JabberIMConnection.createConnection(JabberIMConnection.java:236)
at hudson.plugins.jabber.im.transport.JabberIMConnection.connect(JabberIMConnection.java:124)
at hudson.plugins.jabber.im.transport.JabberIMConnectionProvider.createConnection(JabberIMConnectionProvider.java:42)
at hudson.plugins.im.IMConnectionProvider.create(IMConnectionProvider.java:56)
at hudson.plugins.im.IMConnectionProvider.access$2(IMConnectionProvider.java:54)
at hudson.plugins.im.IMConnectionProvider$ConnectorRunnable.run(IMConnectionProvider.java:173)
at java.lang.Thread.run(Thread.java:619)
Caused by: GSSException: Invalid name provided (Mechanism level: Could not load configuration file /etc/krb5.conf (No such file or directory))
at sun.security.jgss.krb5.Krb5NameElement.getInstance(Krb5NameElement.java:110)
at sun.security.jgss.krb5.Krb5MechFactory.getNameElement(Krb5MechFactory.java:80)
at sun.security.jgss.GSSManagerImpl.getNameElement(GSSManagerImpl.java:188)
at sun.security.jgss.GSSNameImpl.getElement(GSSNameImpl.java:428)
at sun.security.jgss.GSSNameImpl.init(GSSNameImpl.java:157)
at sun.security.jgss.GSSNameImpl.<init>(GSSNameImpl.java:127)
at sun.security.jgss.GSSManagerImpl.createName(GSSManagerImpl.java:123)
at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:90)
... 12 more
31.07.2010 09:52:38 hudson.plugins.jabber.im.transport.JabberIMConnection connect
WARNUNG: service-unavailable(503)
at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:78)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:345)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395)
at hudson.plugins.jabber.im.transport.JabberIMConnection.createConnection(JabberIMConnection.java:236)
at hudson.plugins.jabber.im.transport.JabberIMConnection.connect(JabberIMConnection.java:124)
at hudson.plugins.jabber.im.transport.JabberIMConnectionProvider.createConnection(JabberIMConnectionProvider.java:42)
at hudson.plugins.im.IMConnectionProvider.create(IMConnectionProvider.java:56)
at hudson.plugins.im.IMConnectionProvider.access$2(IMConnectionProvider.java:54)
at hudson.plugins.im.IMConnectionProvider$ConnectorRunnable.run(IMConnectionProvider.java:173)
at java.lang.Thread.run(Thread.java:619)
As far as I understand it (I'm absolutely no authentication/security expert) you have to provide some gss.conf file. Please see the smack forums for how to configure it. E.g.
http://community.igniterealtime.org/message/192586
http://issues.igniterealtime.org/browse/SMACK-142
Kerberos is not in use. Behind the scenes, LDAP is used to get the users and verify passwords but it is the official ejabberd module and the clients wont even know that. For instance, any user client software I've tried can connect with good old username and password. Perhaps the framework is making an invalid assumption?
I'm experiencing the same problem:
06.08.2010 09:51:09 hudson.plugins.im.IMConnectionProvider$ConnectorRunnable run
INFO: Reconnect failed. Next connection attempt in 2 minutes
06.08.2010 09:51:16 hudson.plugins.jabber.im.transport.JabberIMConnection connect
WARNUNG: No response from the server.:
at org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthentication.java:430)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:331)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395)
at hudson.plugins.jabber.im.transport.JabberIMConnection.createConnection(JabberIMConnection.java:236)
at hudson.plugins.jabber.im.transport.JabberIMConnection.connect(JabberIMConnection.java:124)
at hudson.plugins.jabber.im.transport.JabberIMConnectionProvider.createConnection(JabberIMConnectionProvider.java:43)
at hudson.plugins.im.IMConnectionProvider.create(IMConnectionProvider.java:57)
at hudson.plugins.im.IMConnectionProvider.access$400(IMConnectionProvider.java:20)
at hudson.plugins.im.IMConnectionProvider$ConnectorRunnable.run(IMConnectionProvider.java:153)
at java.lang.Thread.run(Thread.java:636)
06.08.2010 09:51:16 hudson.plugins.im.IMConnectionProvider$ConnectorRunnable run
INFO: Reconnect failed. Next connection attempt in 2 minutes
06.08.2010 09:51:19 hudson.plugins.im.DummyConnection setPresence
INFO: Set presence via dummy connection: 'AVAILABLE' : 'Yawn, I'm so bored. Don't you have some work for me?'
06.08.2010 09:51:19 hudson.plugins.im.DummyConnection setPresence
INFO: Set presence via dummy connection: 'AVAILABLE' : 'Yawn, I'm so bored. Don't you have some work for me?'
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...</jid></bind></iq>... @1:623
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
Deactivating SASL authentication in Jabber plugin does not help.
same here with same call stack.
Nov 21, 2010 3:28:42 AM hudson.plugins.im.IMConnectionProvider$ConnectorRunnable run
INFO: Reconnect failed. Next connection attempt in 2 minutes
Nov 21, 2010 3:29:08 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@2819bbde: display name [Root WebApplicationContext]; startup date [Sun Nov 21 03:29:08 MSK 2010]; root of context hierarchy
Nov 21, 2010 3:29:08 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@2819bbde]: org.springframework.beans.factory.support.DefaultListableBeanFactory@2579ac74
Nov 21, 2010 3:29:08 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@2579ac74: defining beans [authenticationManager]; root of factory hierarchy
Nov 21, 2010 3:29:08 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@46838f70: display name [Root WebApplicationContext]; startup date [Sun Nov 21 03:29:08 MSK 2010]; root of context hierarchy
Nov 21, 2010 3:29:08 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@46838f70]: org.springframework.beans.factory.support.DefaultListableBeanFactory@35c2e7f5
Nov 21, 2010 3:29:08 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@35c2e7f5: defining beans [filter,legacy]; root of factory hierarchy
Nov 21, 2010 3:29:22 AM org.jinterop.dcom.core.JIComOxidRuntime$ClientPingTimerTask run
INFO: Running ClientPingTimerTask !
Nov 21, 2010 3:29:28 AM hudson.plugins.jabber.im.transport.JabberIMConnection connect
WARNING: No response from the server.:
at org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthentication.java:430)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:331)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395)
at hudson.plugins.jabber.im.transport.JabberIMConnection.createConnection(JabberIMConnection.java:263)
at hudson.plugins.jabber.im.transport.JabberIMConnection.connect(JabberIMConnection.java:133)
at hudson.plugins.jabber.im.transport.JabberIMConnectionProvider.createConnection(JabberIMConnectionProvider.java:42)
at hudson.plugins.im.IMConnectionProvider.create(IMConnectionProvider.java:60)
at hudson.plugins.im.IMConnectionProvider.access$500(IMConnectionProvider.java:17)
at hudson.plugins.im.IMConnectionProvider$ConnectorRunnable.run(IMConnectionProvider.java:173)
at java.lang.Thread.run(Thread.java:636)
Nov 21, 2010 3:29:28 AM hudson.plugins.im.IMConnectionProvider$ConnectorRunnable run
INFO: Reconnect failed. Next connection attempt in 4 minutes
Nov 21, 2010 3:29:49 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@28c6c7bd: display name [Root WebApplicationContext]; startup date [Sun Nov 21 03:29:49 MSK 2010]; root of context hierarchy
Nov 21, 2010 3:29:49 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@28c6c7bd]: org.springframework.beans.factory.support.DefaultListableBeanFactory@457fe7dc
Nov 21, 2010 3:29:49 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@457fe7dc: defining beans [authenticationManager]; root of factory hierarchy
Nov 21, 2010 3:29:49 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@2fd6cf0: display name [Root WebApplicationContext]; startup date [Sun Nov 21 03:29:49 MSK 2010]; root of context hierarchy
Nov 21, 2010 3:29:49 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@2fd6cf0]: org.springframework.beans.factory.support.DefaultListableBeanFactory@236ca3d6
Nov 21, 2010 3:29:49 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@236ca3d6: defining beans [filter,legacy]; root of factory hierarchy
Nov 21, 2010 3:29:49 AM hudson.plugins.jabber.im.transport.JabberPublisherDescriptor configure
INFO: No hostname specified.
java.net.SocketException: Connection closed by remote host
at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1327)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:62)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:220)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:290)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:294)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:140)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
at java.io.BufferedWriter.flush(BufferedWriter.java:253)
at java.io.FilterWriter.flush(FilterWriter.java:100)
at org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:274)
at org.jivesoftware.smack.PacketWriter.access$000(PacketWriter.java:40)
at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:87)
java.io.EOFException: no more data available - expected end tag </stream:stream> to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen ...</jid></bind></iq>... @1:688
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
Nov 21, 2010 3:30:10 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
@everyone: what are your ejabberd versions?
I finally installed ejabberd (2.0.5) on my box and have no problems whatsoever to have the jabber plugin connect to it.
Okay, can reproduce it with ejabberd 2.1.5
According to the Smack forums this could maybe be fixed in Smack 3.1.1 which is unfortunately still not released. IMO the Smakc project looks quite dead judging by the support you get on the forum and the release frequency. Unfortunately, I know of no other (active) Java XMPP API
See e.g. http://community.igniterealtime.org/message/201355
or
http://community.igniterealtime.org/message/204608
for discussions on the Smack forum which seem to be related.
http://issues.igniterealtime.org/browse/SMACK-271
is resolved against 3.2.x
The beta was released five days ago:
http://community.igniterealtime.org/blogs/ignite/2011/02/06/smack-320-beta-has-been-released
This should fix this issue according to the release notes
Okay, finished to build it after some problems.
Please give the attached HPIs a try!
I can confirm: it works now for us with those hpis.
Jenkins 1.399
ejabberd 2.1.5-3
IM 1.14-SNAPSHOT (private-02/11/2011 23:33-kutzi)
Jabber 1.14-SNAPSHOT (private-02/11/2011 23:20-kutzi)
I put them up now. Good news: connection with port 5223 SSL is still possible.
Will report about the reconnect after the weekend.
Thanks for your efforts already!
In case you're waiting for more feedback before release, the snapshot builds of Feb. 11 worked for me in solving an ejabberd connection problem.
Thanks for the feedback. I'm waiting for the final release of Smack 3.2, which will hopefully come at the end of the month.
Code changed in jenkins
User: kutzi
Path:
pom.xml
src/main/java/hudson/plugins/jabber/im/transport/JabberConnectionDebugger.java
http://jenkins-ci.org/commit/jabber-plugin/242722157b444737390857d5c341e590ae655804
Log:
Upgrade Smack library to 3.2.0. Fixes JENKINS-7060, JENKINS-8426 and JENKINS-5345
Code changed in jenkins
User: kutzi
Path:
pom.xml
src/main/java/hudson/plugins/jabber/im/transport/JabberConnectionDebugger.java
http://jenkins-ci.org/commit/jabber-plugin/242722157b444737390857d5c341e590ae655804
Log:
Upgrade Smack library to 3.2.0. Fixes JENKINS-7060, JENKINS-8426 and JENKINS-5345
Here's a good connect with version 1.6:
=INFO REPORT==== 2010-07-23 11:28:19 ===
I(<0.518.0>:ejabberd_listener:232) : (#Port<0.26295>) Accepted connection {{10,0,0,217},55190} -> {{10,0,0,216},5222}
=INFO REPORT==== 2010-07-23 11:28:19 ===
{socket_state,gen_tcp, #Port<0.26295>,<0.6014.0>}I(<0.6015.0>:ejabberd_net:25) : gethostname
=INFO REPORT==== 2010-07-23 11:28:19 ===
I(<0.6015.0>:ejabberd_c2s:261) : FQDN: "im.get2spec.com"
=INFO REPORT==== 2010-07-23 11:28:19 ===
I(<0.6015.0>:ejabberd_c2s:261) : FQDN: "im.get2spec.com"
=INFO REPORT==== 2010-07-23 11:28:19 ===
{tlssock,#Port<0.26295>,#Port<0.26298>},<0.6014.0>}) Accepted authentication for buildbot by ejabberd_auth_ldapI(<0.6015.0>:ejabberd_c2s:586) : ({socket_state,tls,
=INFO REPORT==== 2010-07-23 11:28:19 ===
I(<0.6015.0>:ejabberd_c2s:845) : ({socket_state,tls,{tlssock,#Port<0.26295>,#Port<0.26298>}
,<0.6014.0>}) Opened session for buildbot@im.get2spec.com/Hudson