<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 8/13/2012 9:24 AM, Mark Banner
      wrote:<br>
    </div>
    <blockquote cite="mid:50290012.2040200@mozilla.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      Whilst it generally appears to be perfectly adequate for
      Thunderbird's needs, there's one problem that we keep on hitting.
      On Linux systems, Thunderbird <a moz-do-not-send="true"
        href="https://bugzilla.mozilla.org/show_bug.cgi?id=292127">can
        crash</a>, if OpenLDAP is installed and set up for
      authentication (and probably a few variants of that). This is
      primarily due to the way module loading works on Linux, and the
      slight API differences between the two libraries.<br>
    </blockquote>
    <br>
    The other issue, as I have discovered in some of my build
    experiments, is that the LDAP SDKs are a special kind of broken in
    terms of their build system. For example, the configure script
    doesn't actually set up any flags that get passed to the linker for
    the dynamic libraries.<br>
    <br>
    There is an RFC for a common LDAP API
    (<a class="moz-txt-link-freetext" href="http://tools.ietf.org/html/rfc1823">http://tools.ietf.org/html/rfc1823</a>), so if we know that just that
    much is sufficient, we could link in theory to any LDAP library.<br>
    <br>
    <blockquote cite="mid:50290012.2040200@mozilla.com" type="cite">I'm
      not sure what javascript options exist, hopefully Joshua or
      someone can provide some additional information.<br>
    </blockquote>
    <br>
    There's <a class="moz-txt-link-rfc2396E" href="https://github.com/mcavage/node-ldapjs/"><https://github.com/mcavage/node-ldapjs/></a>, which is
    based off of node (as its name implies). I brief look at Google
    results suggests no other major implementations. The largest
    stumbling block in creating a client implementation is probably
    ASN.1 encoding/decoding (I've ranted about this in the past); after
    that, it's just a relatively simple binary protocol (although I
    should note that binary protocols aren't terribly fun to use from a
    JS implementation).<br>
    <br>
    I have mixed feelings about pulling in a node-based JS library for
    use as a core-ish component. On the one hand, it means being to
    offload maintenance to other people, but we'd have to build up a
    non-trivial shim library for the entire low-level node stuff and
    possibly more libraries as well.<br>
    <br>
    However, I think that before we can make any changes, we probably
    need to be able to run LDAP tests via the fakeserver...<br>
    <pre class="moz-signature" cols="72">-- 
Joshua Cranmer
News submodule owner
DXR coauthor</pre>
  </body>
</html>