Skip to content
Commits on Sep 21, 2012
@marschap marschap extend ldap_explode_dn() for RFC 4514
Extend ldap_explode_dn() to also parse DNs that conform to RFC 4514.

This way ldap_explode_dn() is rather lax in checking what it allows or not,
but tries to make sense of as much DNs as possible.

  - only spaces ignored around attribute value instead of \s
  - NUL (U+0000) not allowed unquoted in attribute value
  - sharp/square/octothorpe (U+0023) allowed unquoted unless at first position
  - equal sign (U+003D) allowed unquoted in attribute value
  - space (U+0020) allowed to be quoted by \\ in a quoted pair

Test cases adapted accordingly.
Commits on Sep 28, 2012
@marschap marschap don't try to set errors on undefined objects
When disconnecting, make sure the set_error() method is called only
on defined objects

Author: Howard Wilkinson <>

Originally sent in via private mail to Graham Barr:

 Date: 20.06.2012 13:06
 From: Howard Wilkinson <>
 To: gbarr <>
 Reply to:



 However, the DESTROY is still being called and killing the error
 messages - so this could do with being added to the package.

 ---    2012-06-20 12:02:36.000000000 +0100
 +++     2012-06-20 12:03:01.000000000 +0100
 @@ -902,6 +902,7 @@

   if (my $msgs = delete $self->{net_ldap_mesg}) {
     foreach my $mesg (values %$msgs) {
 +     next unless (defined $mesg);
       $mesg->set_error($err, $etxt);


@marschap marschap document environment variable LDAPI_SOCK and default 3b170b8
@marschap marschap canonicalize host name with ldapi://
Having the host name canonicalized allows one to call start_tls()
with option verify => 'require', which does hostname checking.

Confirmed to work for Quanah.
Commits on Oct 03, 2012
@marschap marschap Net/LDAP/Extra/ new, convenience functions for AD 08ae450
@marschap marschap refer to Net::LDAP::Extra::AD in man page 8da9113
@marschap marschap add methods is_AD & is_ADAM
Add methods to determine whether an LDAP server is an AD,
so that the AD specific methods can be used.
Commits on Oct 06, 2012
@marschap marschap FAQ.pod: update, mention Net::LDAP::Extra::AD ed1907f
@marschap marschap LDAP.pod: consistency: use 'attrs' everywhere 2426f38
@marschap marschap add examples for Active Directory
Add examples for MS Active Directory
- how to create account and groups
- how to search for accounts & groups using the
@marschap marschap Release 0.49 dd3f7ec
Commits on Oct 07, 2012
@marschap marschap SSL server tests: re-generate key.pem & cert.pem
Besides re-generating the server key & certificate,
also add a script + OpenSSL config file that can
re-generate the key & certificate.
Commits on Oct 14, 2012
@marschap marschap t/ fix argument order in calls to skip() 0c411a6
@marschap marschap Makefile.PL: overhaul
- depend on perl 5.8.1 (because of Unicode changes)
- get rid of braces
- harmonize indentation
- merge resources stanzas into one
- add bugtracker resource
- remove useless include of ExtUtils::AutoInstall
- require Test::More instead of trying to include it
- recommend optional dependencies
- use arguments for WriteAll
@marschap marschap t/06constant.t: fix numbering glitch cf16d5d
Commits on Oct 28, 2012
@marschap marschap add constant LDAP_PROXY_AUTHZ_FAILURE
The increased version number of Net::LDAP::Util also fixes
the re-opened CPAN bug #79763.
@marschap marschap t/ get rid of local compare function
Use File::Compare's compare instead.
Adapt t/05dsml.t, which used it too, accordingly.
@marschap marschap global overhaul: replace 'use vars' by 'our'. c66c56c
@marschap marschap global overhaul: declare @ISA and $VERSION as package-local 1fb4555
@marschap marschap LDAP.pod: fix display of =item inet6 2a91116
Commits on Nov 11, 2012
@marschap marschap t/ allow client() to take options for Net::LDAP
Start with support for debug, inet4 & inet6.
@marschap marschap t/40connect.t: new, test for IPv4 / IPv6 connections 3377a1a
@marschap marschap tests: rename t/5X*.t -> t/4(X+1)*.t 991c5bb
@marschap marschap tests: rename data/5X*.ldif -> data/4X*.ldif
Adapt names of data files for tests to the renamed test files.
Update tests accordingly.
@marschap marschap FAQ.pod: small fixes
* typo: Ho -> How
* =item -> =head2
@marschap marschap correct implementation of some rules
* booleanMatch
* integerBitAndMatch
* integerBitOrMatch
@marschap marschap avoid warning if no matching rule is found
Plus some small changes to harmonize coding style.
@marschap marschap update matching rules known in OpenLDAP 37c702c
@marschap marschap support matching rules for extensibleMatch 107b462
@marschap marschap improve distinguishedNameMatch c8d3ae8
@marschap marschap tests: convert to Test::More 5b98f6e
@marschap marschap tests: overhaul t/03schema.t, update data/ 207e362
@marschap marschap t/47ipc.t: add TLS tests 2fcbe3b
@marschap marschap tests: harmonize data/42-in.ldif to data/41-in.ldif
Adapt data/42-cmp.ldif accordingly to not fail any tests
@marschap marschap improve match for phone/fax numbers 6c7263a
@marschap marschap fix objectIdentifierMatch
It needs to be able to match not only OIDs but also e.g. names of
objectclasses - the latter independent of case.
@marschap marschap fix mapping of greaterOrEqual
greaterOrEqual matches are ordering matches, and no equality matches.
Fix the mapping table accordingly.
@marschap marschap t/60cancel.t: new, tests for Net::LDAP::Extension::Cancel 2b5ed2c
@marschap marschap t/70sortctrl.t: convert to "regular" test with server
Adapt slapd config file accordingly to laod the required overlay.
@marschap marschap t/07filtermatch.t: new, tests for Net::LDAP::FilterMatch 5017a02
@marschap marschap t/70sortctrl.t: add multi-attribute testcase b65f50a
@marschap marschap fix _cis_approxMatch
_cis_approxMatch works on caseIgoreStrings, and should thus ignore case.

Add test cases to t/07filtermatch.t
Commits on Nov 17, 2012
@marschap marschap tests: minimize errors/warnings on Test::More <= 0.8.0
Call note and explain as functions [i.e. with braces],
hide them behind if ($ENV{TEST_VERBOSE}).
@marschap marschap Merge pull request #13 from marschap/next
changes in preparation of next release
@marschap marschap Release 0.50_01 9286665
Commits on Nov 24, 2012
@marschap marschap avoid warning in new()
Perform substitutions on $h only if it is defined.
@marschap marschap fix Net::LDAP::Message::Dummy->new()
Add the 'mesgid' property to new Net::LDAP::Message::Dummy objects
to avoid a warning in unbind().
@marschap marschap t/07filtermatch.t: use core module Text::Soundex
Instead of String::Approx, use the core module Text::Soundex;
adapt tests accordingly.

Note: String::Approx and Text::Soundex are not compatible in the way
that they produce the same matches.
@marschap marschap Makefile.PL: new features, require newer Convert::ASN1
* add new feature "IPv6 support" requiring IO::Socket::INET6
* add new feature "LWP support for the LDAP protocol family"
* tighten dependency on Convert::ASN1: require UTF8-safe version
* remove unnecessary comments
* make feature "Read/Write DSML files" explicitly depend on XML::SAX::Base
@marschap marschap Merge pull request #14 from marschap/next
fix some regressions in v0.50_01
@marschap marschap Release 0.50 bcffdbd