Added an OpenLDAP trace at the end.
Ciao, Michael.
Michael Ströder wrote:
For the fun of it I'm implementing a small Python script which sends a Refresh Request (RFC 2589). But slapo-dds (OpenLDAP 2.4.24) returns a protocol error due to a decoding error:
Mar 24 20:48:38 nb2 slapd[8202]: conn=1015 op=1 EXT oid=1.3.6.1.4.1.1466.101.119.1 Mar 24 20:48:38 nb2 slapd[8202]: conn=1015 op=1 RESULT oid= err=2 text=data decoding error
But what's wrong with the request value (BER file attached)?
dumpasn1 output seems right to me:
0 51: SEQUENCE { 2 45: OCTET STRING : 'cn=DDS Test Raum,ou=Testing,dc=stroeder,dc=de' 49 2: INTEGER 332 : }
conn=1000 fd=18 ACCEPT from PATH=/tmp/openldap-socket (PATH=/tmp/openldap-socket) daemon: activity on 2 descriptors daemon: activity on: 18r daemon: read active on 18 daemon: epoll: listen=7 active_threads=0 tvp=zero daemon: epoll: listen=8 active_threads=0 tvp=zero daemon: epoll: listen=9 active_threads=0 tvp=zero connection_get(18) connection_get(18): got connid=1000 connection_read(18): checking for input on id=1000 ber_get_next ldap_read: want=8, got=8 0000: 30 0c 02 01 01 60 07 02 0....`.. ldap_read: want=6, got=6 0000: 01 03 04 00 80 00 ...... ber_get_next: tag 0x30 len 12 contents: ber_dump: buf=0xe8bd70 ptr=0xe8bd70 end=0xe8bd7c len=12 0000: 02 01 01 60 07 02 01 03 04 00 80 00 ...`........ op tag 0x60, time 1301049188 ber_get_next ldap_read: want=8 error=Resource temporarily unavailable conn=1000 op=0 do_bind ber_scanf fmt ({imt) ber: ber_dump: buf=0xe8bd70 ptr=0xe8bd73 end=0xe8bd7c len=9 0000: 60 07 02 01 03 04 00 80 00 `........ ber_scanf fmt (m}) ber: ber_dump: buf=0xe8bd70 ptr=0xe8bd7a end=0xe8bd7c len=2 0000: 00 00 ..
dnPrettyNormal: <>
<<< dnPrettyNormal: <>, <> conn=1000 op=0 BIND dn="" method=128 do_bind: version=3 dn="" method=128 send_ldap_result: conn=1000 op=0 p=3 send_ldap_result: err=0 matched="" text="" send_ldap_response: msgid=1 tag=97 err=0 ber_flush2: 14 bytes to sd 18 0000: 30 0c 02 01 01 61 07 0a 01 00 04 00 04 00 0....a........ ldap_write: want=14, written=14 0000: 30 0c 02 01 01 61 07 0a 01 00 04 00 04 00 0....a........ conn=1000 op=0 RESULT tag=97 err=0 text= do_bind: v3 anonymous bind daemon: activity on 1 descriptor daemon: activity on: daemon: epoll: listen=7 active_threads=0 tvp=zero daemon: epoll: listen=8 active_threads=0 tvp=zero daemon: epoll: listen=9 active_threads=0 tvp=zero daemon: activity on 1 descriptor daemon: activity on: 18r daemon: read active on 18 daemon: epoll: listen=7 active_threads=0 tvp=zero daemon: epoll: listen=8 active_threads=0 tvp=zero daemon: epoll: listen=9 active_threads=0 tvp=zero connection_get(18) connection_get(18): got connid=1000 connection_read(18): checking for input on id=1000 ber_get_next ldap_read: want=8, got=8 0000: 30 59 02 01 02 77 54 80 0Y...wT. ldap_read: want=83, got=83 0000: 1a 31 2e 33 2e 36 2e 31 2e 34 2e 31 2e 31 34 36 .1.3.6.1.4.1.146 0010: 36 2e 31 30 31 2e 31 31 39 2e 31 81 36 30 34 04 6.101.119.1.604. 0020: 2d 63 6e 3d 44 44 53 20 54 65 73 74 20 52 61 75 -cn=DDS Test Rau 0030: 6d 2c 6f 75 3d 54 65 73 74 69 6e 67 2c 64 63 3d m,ou=Testing,dc= 0040: 73 74 72 6f 65 64 65 72 2c 64 63 3d 64 65 02 03 stroeder,dc=de.. 0050: 01 51 80 .Q. ber_get_next: tag 0x30 len 89 contents: ber_dump: buf=0x7fae6d002260 ptr=0x7fae6d002260 end=0x7fae6d0022b9 len=89 0000: 02 01 02 77 54 80 1a 31 2e 33 2e 36 2e 31 2e 34 ...wT..1.3.6.1.4 0010: 2e 31 2e 31 34 36 36 2e 31 30 31 2e 31 31 39 2e .1.1466.101.119. 0020: 31 81 36 30 34 04 2d 63 6e 3d 44 44 53 20 54 65 1.604.-cn=DDS Te 0030: 73 74 20 52 61 75 6d 2c 6f 75 3d 54 65 73 74 69 st Raum,ou=Testi 0040: 6e 67 2c 64 63 3d 73 74 72 6f 65 64 65 72 2c 64 ng,dc=stroeder,d 0050: 63 3d 64 65 02 03 01 51 80 c=de...Q. op tag 0x77, time 1301049188 ber_get_next ldap_read: want=8 error=Resource temporarily unavailable conn=1000 op=1 do_extended ber_scanf fmt ({m) ber: ber_dump: buf=0x7fae6d002260 ptr=0x7fae6d002263 end=0x7fae6d0022b9 len=86 0000: 77 54 80 1a 31 2e 33 2e 36 2e 31 2e 34 2e 31 2e wT..1.3.6.1.4.1. 0010: 31 34 36 36 2e 31 30 31 2e 31 31 39 2e 31 81 36 1466.101.119.1.6 0020: 30 34 04 2d 63 6e 3d 44 44 53 20 54 65 73 74 20 04.-cn=DDS Test 0030: 52 61 75 6d 2c 6f 75 3d 54 65 73 74 69 6e 67 2c Raum,ou=Testing, 0040: 64 63 3d 73 74 72 6f 65 64 65 72 2c 64 63 3d 64 dc=stroeder,dc=d 0050: 65 02 03 01 51 80 e...Q. ber_scanf fmt (m) ber: ber_dump: buf=0x7fae6d002260 ptr=0x7fae6d002281 end=0x7fae6d0022b9 len=56 0000: 00 36 30 34 04 2d 63 6e 3d 44 44 53 20 54 65 73 .604.-cn=DDS Tes 0010: 74 20 52 61 75 6d 2c 6f 75 3d 54 65 73 74 69 6e t Raum,ou=Testin 0020: 67 2c 64 63 3d 73 74 72 6f 65 64 65 72 2c 64 63 g,dc=stroeder,dc 0030: 3d 64 65 02 03 01 51 80 =de...Q. conn=1000 op=1 EXT oid=1.3.6.1.4.1.1466.101.119.1 do_extended: oid=1.3.6.1.4.1.1466.101.119.1 ber_scanf fmt ({) ber: ber_dump: buf=0xc89a40 ptr=0xc89a40 end=0xc89a76 len=54 0000: 30 34 04 2d 63 6e 3d 44 44 53 20 54 65 73 74 20 04.-cn=DDS Test 0010: 52 61 75 6d 2c 6f 75 3d 54 65 73 74 69 6e 67 2c Raum,ou=Testing, 0020: 64 63 3d 73 74 72 6f 65 64 65 72 2c 64 63 3d 64 dc=stroeder,dc=d 0030: 65 02 03 01 51 80 e...Q. slap_parse_refresh: decoding error. slap_parse_refresh: decoding error, len=45 send_ldap_extended: err=2 oid= len=0 send_ldap_response: msgid=2 tag=120 err=2 ber_flush2: 33 bytes to sd 18 0000: 30 1f 02 01 02 78 1a 0a 01 02 04 00 04 13 64 61 0....x........da 0010: 74 61 20 64 65 63 6f 64 69 6e 67 20 65 72 72 6f ta decoding erro 0020: 72 r ldap_write: want=33, written=33 0000: 30 1f 02 01 02 78 1a 0a 01 02 04 00 04 13 64 61 0....x........da 0010: 74 61 20 64 65 63 6f 64 69 6e 67 20 65 72 72 6f ta decoding erro 0020: 72 r conn=1000 op=1 RESULT oid= err=2 text=data decoding error