Hi,
I built openldap using the new code. The rootpw now works, but if a wrong p= assword in an ldap query, then the ldap query process locks.
e.g.: with rootdn: 'cn=3Droot,dc=3Dexample,dc=3Dgr' and rootpw: secret
-when rootdn and rootpw are correct: ldapwhoami -h 192.168.6.10 -D 'cn=3Droot,dc=3Dexample,dc=3Dgr' -w 'secret'
dn:cn=3Droot,dc=3Dexample,dc=3Dgr
-when rootdn is wrong: Ldapwhoami -h 192.168.6.10 -D 'cn=3Droot,dc=3Dexample,dc=3Dcom' -w 'secret'
ldap_bind: Invalid credentials (49)
-when rootdn is correct and rootpw is wrong Ldapwhoami -h 192.168.6.10 -D 'cn=3Droot,dc=3Dexample,dc=3Dcom' -w 'secret1= ' "NO RESULT, the ldapwhoami locks"
Here are the logs of the slapd process:
################################### #with correct rootdn & rootpw # ################################### daemon: activity on 1 descriptor daemon: activity on: slap_listener_activate(8): daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 busy
slap_listener(ldap:///)
daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL daemon: listen=3D8, new connection on 23 daemon: activity on 1 descriptor daemon: activity on: 23r daemon: read active on 23 daemon: added 23r (active) listener=3D(nil) daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL conn=3D1000 fd=3D23 ACCEPT from IP=3D192.168.6.10:47722 (IP=3D0.0.0.0:389) connection_get(23) connection_get(23): got connid=3D1000 connection_read(23): checking for input on id=3D1000 ber_get_next ldap_read: want=3D8, got=3D8 ldap_read: want=3D36, got=3D36 ber_get_next: tag 0x30 len 42 contents: ber_dump: buf=3D0x1d047ee0 ptr=3D0x1d047ee0 end=3D0x1d047f0a len=3D42 op tag 0x60, time 1285831215 ber_get_next ldap_read: want=3D8 error=3DResource temporarily unavailable daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL conn=3D1000 op=3D0 do_bind ber_scanf fmt ({imt) ber: ber_dump: buf=3D0x1d047ee0 ptr=3D0x1d047ee3 end=3D0x1d047f0a len=3D39 ber_scanf fmt (m}) ber: ber_dump: buf=3D0x1d047ee0 ptr=3D0x1d047f01 end=3D0x1d047f0a len=3D9
dnPrettyNormal: <cn=3Droot,dc=3Dexample,dc=3Dgr>
=3D> ldap_bv2dn(cn=3Droot,dc=3Dexample,dc=3Dgr,0) <=3D ldap_bv2dn(cn=3Droot,dc=3Dexample,dc=3Dgr)=3D0 =3D> ldap_dn2bv(272) <=3D ldap_dn2bv(cn=3Droot,dc=3Dexample,dc=3Dgr)=3D0 =3D> ldap_dn2bv(272) <=3D ldap_dn2bv(cn=3Droot,dc=3Dexample,dc=3Dgr)=3D0 <<< dnPrettyNormal: <cn=3Droot,dc=3Dexample,dc=3Dgr>, <cn=3Droot,dc=3Dexamp= le,dc=3Dgr> conn=3D1000 op=3D0 BIND dn=3D"cn=3Droot,dc=3Dexample,dc=3Dgr" method=3D128 do_bind: version=3D3 dn=3D"cn=3Droot,dc=3Dexample,dc=3Dgr" method=3D128 =3D=3D> ndb_back_bind: dn: cn=3Droot,dc=3Dexample,dc=3Dgr conn=3D1000 op=3D0 BIND dn=3D"cn=3Droot,dc=3Dexample,dc=3Dgr" mech=3DSIMPLE= ssf=3D0 do_bind: v3 bind: "cn=3Droot,dc=3Dexample,dc=3Dgr" to "cn=3Droot,dc=3Dexamp= le,dc=3Dgr" send_ldap_result: conn=3D1000 op=3D0 p=3D3 send_ldap_result: err=3D0 matched=3D"" text=3D"" send_ldap_response: msgid=3D1 tag=3D97 err=3D0 ber_flush2: 14 bytes to sd 23 ldap_write: want=3D14, written=3D14 conn=3D1000 op=3D0 RESULT tag=3D97 err=3D0 text=3D daemon: activity on 1 descriptor daemon: activity on: 23r daemon: read active on 23 daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL connection_get(23) connection_get(23): got connid=3D1000 connection_read(23): checking for input on id=3D1000 ber_get_next ldap_read: want=3D8, got=3D8 ldap_read: want=3D24, got=3D24 ber_get_next: tag 0x30 len 30 contents: ber_dump: buf=3D0x1d045c10 ptr=3D0x1d045c10 end=3D0x1d045c2e len=3D30 op tag 0x77, time 1285831215 ber_get_next ldap_read: want=3D8 error=3DResource temporarily unavailable daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL conn=3D1000 op=3D1 do_extended ber_scanf fmt ({m) ber: ber_dump: buf=3D0x1d045c10 ptr=3D0x1d045c13 end=3D0x1d045c2e len=3D27 conn=3D1000 op=3D1 EXT oid=3D1.3.6.1.4.1.4203.1.11.3 do_extended: oid=3D1.3.6.1.4.1.4203.1.11.3 conn=3D1000 op=3D1 WHOAMI send_ldap_extended: err=3D0 oid=3D len=3D26 send_ldap_response: msgid=3D2 tag=3D120 err=3D0 ber_flush2: 42 bytes to sd 23 ldap_write: want=3D42, written=3D42 conn=3D1000 op=3D1 RESULT oid=3D err=3D0 text=3D daemon: activity on 1 descriptor daemon: activity on: 23r daemon: read active on 23 daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL connection_get(23) connection_get(23): got connid=3D1000 connection_read(23): checking for input on id=3D1000 ber_get_next ldap_read: want=3D8, got=3D7 ber_get_next: tag 0x30 len 5 contents: ber_dump: buf=3D0x1d045c10 ptr=3D0x1d045c10 end=3D0x1d045c15 len=3D5 op tag 0x42, time 1285831215 ber_get_next ldap_read: want=3D8, got=3D0
ber_get_next on fd 23 failed errno=3D0 (Success) connection_read(23): input error=3D-2 id=3D1000, closing. connection_closing: readying conn=3D1000 sd=3D23 for close daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL connection_close: deferring conn=3D1000 sd=3D23 conn=3D1000 op=3D2 do_unbind conn=3D1000 op=3D2 UNBIND connection_resched: attempting closing conn=3D1000 sd=3D23 connection_close: conn=3D1000 sd=3D23 daemon: removing 23 conn=3D1000 fd=3D23 closed
########################################## #with correct rootdn & incorrect rootpw # ########################################## daemon: activity on 1 descriptor daemon: activity on: slap_listener_activate(8): daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 busy
slap_listener(ldap:///)
daemon: listen=3D8, new connection on 23 daemon: added 23r (active) listener=3D(nil) conn=3D1001 fd=3D23 ACCEPT from IP=3D192.168.6.10:47723 (IP=3D0.0.0.0:389) daemon: activity on 2 descriptors daemon: activity on: 23r daemon: read active on 23 daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL connection_get(23) connection_get(23): got connid=3D1001 connection_read(23): checking for input on id=3D1001 ber_get_next ldap_read: want=3D8, got=3D8 ldap_read: want=3D37, got=3D37 ber_get_next: tag 0x30 len 43 contents: ber_dump: buf=3D0x1d0460b0 ptr=3D0x1d0460b0 end=3D0x1d0460db len=3D43 op tag 0x60, time 1285831240 ber_get_next ldap_read: want=3D8 error=3DResource temporarily unavailable conn=3D1001 op=3D0 do_bind ber_scanf fmt ({imt) ber: ber_dump: buf=3D0x1d0460b0 ptr=3D0x1d0460b3 end=3D0x1d0460db len=3D40 ber_scanf fmt (m}) ber: ber_dump: buf=3D0x1d0460b0 ptr=3D0x1d0460d1 end=3D0x1d0460db len=3D10
dnPrettyNormal: <cn=3Droot,dc=3Dexample,dc=3Dgr>
=3D> ldap_bv2dn(cn=3Droot,dc=3Dexample,dc=3Dgr,0) <=3D ldap_bv2dn(cn=3Droot,dc=3Dexample,dc=3Dgr)=3D0 =3D> ldap_dn2bv(272) <=3D ldap_dn2bv(cn=3Droot,dc=3Dexample,dc=3Dgr)=3D0 =3D> ldap_dn2bv(272) <=3D ldap_dn2bv(cn=3Droot,dc=3Dexample,dc=3Dgr)=3D0 <<< dnPrettyNormal: <cn=3Droot,dc=3Dexample,dc=3Dgr>, <cn=3Droot,dc=3Dexamp= le,dc=3Dgr> conn=3D1001 op=3D0 BIND dn=3D"cn=3Droot,dc=3Dexample,dc=3Dgr" method=3D128 do_bind: version=3D3 dn=3D"cn=3Droot,dc=3Dexample,dc=3Dgr" method=3D128 =3D=3D> ndb_back_bind: dn: cn=3Droot,dc=3Dexample,dc=3Dgr daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=3D7 active_threads=3D0 tvp=3DNULL daemon: epoll: listen=3D8 active_threads=3D0 tvp=3DNULL
thanks,
George