<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>