Using Pike 7.2.259 delivered with Roxen 2.2.252 I tried to extract a
huge amount uf user data via LDAP search. This ended badly:
> object s = c->search("(objectclass=liustudent)", 0 ,({ "cn", "uid", "dn" }));
utf8_to_string(): Unexpected continuation block 0xb4 at index 7.
/export/home/zino/roxen/roxen/server-2.2.252/pike/lib/pike/modules/Protocols.pmod/LDAP.pmod/client.pike:137:
_get_attr_values(3,Types.asn1_sequence())
/export/home/zino/roxen/roxen/server-2.2.252/pike/lib/pike/modules/Protocols.pmod/LDAP.pmod/client.pike:154:
_New_decode(({"*censored*",,,4447
0}))
/export/home/zino/roxen/roxen/server-2.2.252/pike/lib/pike/modules/Protocols.pmod/LDAP.pmod/client.pike:194:
create(({"*censored*",,,44471}),0
)
/export/home/zino/roxen/roxen/server-2.2.252/pike/lib/pike/modules/Protocols.pmod/LDAP.pmod/client.pike:
Stdio.File("socket", "*censored*:389", 777 /* fd=7 */)->result()
/export/home/zino/roxen/roxen/server-2.2.252/pike/lib/pike/modules/Protocols.pmod/LDAP.pmod/client.pike:937:
Stdio.File("socket", "*censored*:389", 777 /* fd=7 */)->search("(
objectclass=liustudent)",0,({"cn","uid","dn"}))
-:1: ___Foo4711()
We are talking more than 40k users, so "out of memory" (or death by
signal) I could have expected, but not this. What goes wrong really?
Sidenote: A streaming search would probably be good if someone has
time they don't know what to do with. This particular search takes
more than one hour to execute.
(I can solve my problem in other ways, but
connection->search()->next()->fetch()->next()->fetch() and so on
seemed natural when I'm going to check every user.)