This fixes the same problems for paged searches as does
https://github.com/ldapjs/node-ldapjs/pull/610 for unpaged searches.
By passing an EventEmitter via callback there exist cases when events
are emitted before listeners are registered, resulting in missed
events.
The Change turns SearchPager into a CorkedEmitter which is already
used as a solution for non paged searches. Doing so requires the
internal 'search' event to be dropped.
This change adapts a test case originally by László Szűcs (@ifroz).
Signed-off-by: Philippe Seewer <philippe.seewer@bfh.ch>
This resolves an issue arising from using both a callback and an EventEmitter
together in the Client.search() API. Since the emitter would only be available
through the callback, some events could be emitted before the callback
is triggered, resulting in missed events.
This change incorporates a test case originally by László Szűcs (@ifroz).
For GH-602
- Use more strict comparisons for client input asserts
- Fix baseObject comparison in SearchRequest initialization
- Alter default error for server route fallthrough
Some LDAP implementations (mainly AD and Outlook) accept and/or output
DNs that are not valid. To support interaction with these invalid DNs a
strictDN flag (default: true) has been added to the client and server
constructors. Setting this flag to false will allow use of
non-conforming DNs.
When disabling strictDN in the ldapjs client, strings which wouldn't
parse into a DN can then be passed to the ldap operation methods. It
also means that some methods (such as search) may return results with
string-formatted DNs instead of DN objects.
When disabling strictDN in the ldapjs server, incoming requests that
contain invalid DNs will be routed to the default ('') handler for that
operation type. It is your responsiblity to differentiate between
string-type and object-type DNs in those handlers.
Fixmcavage/node-ldapjs#222Fixmcavage/node-ldapjs#146Fixmcavage/node-ldapjs#113Fixmcavage/node-ldapjs#104
The client now blackholes any socket errors after sending an unbind.
This prevents servers which issue RST from causing unecessary errors for
what was a succesful operation.
Fixmcavage/node-ldapjs#217
Detecting certain types of errors in encountered during any operation
(such as BusyError or UnavailableError) can be useful for making
client-wide decisions.