powered by Jive Software

Broken Pipe when connecting using Active Directory auth

My previous OpenFire server died over the weekend, so I opted to set up a new server on a VM running CentOS 5.4 x64. Since I already use Active Directory for most of my other services I would prefer to use LDAP for XMPP authentication.

I followed the setup procedure through the web interface, and every step verified properly. The admin user can log in to the web interface, but I am unable to connect using an IM client. I have tried both Adium (Mac OS X) and Pidgin 2.6.5 (Vista), and I tried my normal user account as well as the admin account that allows me into the web interface.

I created SRV records on my local DNS server, and I believe that the client is resolving those correctly because it forwards to the jabber.mydomain.com subdomain, which is the VM running OpenFire (domain names & IP changed):

17:15:26: (Libpurple: account) Connecting to account admin@jabber.mydomain.com/mac001.
17:15:26: (Libpurple: connection) Connecting. gc = 0x193ef5c0
17:15:26: Connecting: gc=0x193ef5c0 (Connecting) 1 / 5
17:15:26: (Libpurple: dnssrv) querying SRV record for jabber.mydomain.com: _xmpp-client._tcp.jabber.mydomain.com
17:15:26: (Libpurple: dnssrv) res_query returned an error
17:15:27: (Libpurple: dns) DNS query for ‘jabber.mydomain.com’ queued
17:15:27: ************ admin@jabber.mydomain.com --step-- 1
17:15:27: handleConnectivityForAccount: <ESPurpleJabberAccount:16b778d0 12>:admin@jabber.mydomain.com reachable: 1
17:15:27: -[AdiumPurpleDnsRequest startLookup]: Performing DNS resolve: jabber.mydomain.com:5222
17:15:27: DNS resolve complete for jabber.mydomain.com:5222
17:15:27: (Libpurple: dnsquery) IP resolved for jabber.mydomain.com
17:15:27: (Libpurple: proxy) Attempting connection to 10.1.1.32
17:15:27: (Libpurple: proxy) Connecting to jabber.mydomain.com:5222 with no proxy
17:15:27: (Libpurple: proxy) Connection in progress
17:15:27: Called read with no read_tag <SourceInfo 0x1c4bad40: Socket 0x17ee83b0: fd 19; timer_tag 0; read_tag 0; write_tag 4768>
17:15:27: (Libpurple: proxy) Connecting to jabber.mydomain.com:5222.
17:15:27: (Libpurple: proxy) Connected to jabber.mydomain.com:5222.

What happens next isn’t very clear. Here is the client side log:

17:15:27: (Libpurple: jabber) Sending (admin@jabber.mydomain.com/mac001): <?xml version='1.0' ?>
17:15:27: Connecting: gc=0x193ef5c0 (Initializing Stream) 2 / 5
17:15:27: (Libpurple: jabber) Sending (admin@jabber.mydomain.com/mac001): <stream:stream to=‘jabber.mydomain.com’ xmlns=‘jabber:client’ xmlns:stream=‘http://etherx.jabber.org/streams’ version=‘1.0’>
17:15:27: (Libpurple: connection) Connection error on 0x193ef5c0 (reason: 0 description: Lost connection with server: Connection reset by peer)
17:15:27: Connection Disconnected: gc=193ef5c0 (Lost connection with server: Connection reset by peer)
17:15:27: <ESPurpleJabberAccount:16b778d0 12>:admin@jabber.mydomain.com accountConnectionReportDisconnect: Lost connection with server: Connection reset by peer
17:15:27: ************ admin@jabber.mydomain.com --step-- 2
17:15:27: (Libpurple: account) Disconnecting account admin@jabber.mydomain.com/mac001 (0x1c48ef50)
17:15:27: (Libpurple: connection) Disconnecting connection 0x193ef5c0
17:15:27: (Libpurple: jabber) Sending (admin@jabber.mydomain.com/mac001): </stream:stream>
17:15:27: (Libpurple: connection) Connection error on 0x193ef5c0 (reason: 0 description: Lost connection with server: Broken pipe)
17:15:27: Connection Disconnected: gc=193ef5c0 (Lost connection with server: Broken pipe)
17:15:27: <ESPurpleJabberAccount:16b778d0 12>:admin@jabber.mydomain.com accountConnectionReportDisconnect: Lost connection with server: Broken pipe
17:15:27: Disconnected: gc=193ef5c0

I’ve looked in /opt/openfire/logs/*.log without much luck. I even tried enabling LDAP debugging (and the OpenFire debug log) but nothing new shows up in debug.log during the failed connection attempt.

Where can I look for details about what’s causing the client connection to fail? Any advice is greatly appreciated.

Thanks,
Alex