[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: UTF-8 support for libldap

Julio Sanchez Fernandez writes:

> It gets worse than that.  If they try write access, they are supposed to
> get a referral to the master server that uses a different encoding for
> the protocol...  Well, that's only specified for v3, but it gets pretty
> scary...

That's simple enough: Don't give the slaves write access to the master.
Or make the slaves read-only and make them believe they are masters.
What v3 says isn't so important here since we are talking about
disobeying the protocol in any case...

> So that approach only works for read access.  It is a dead end.

If you want write access, yes.

> If all options could be made to work on the same server (hey, it could
> listen on several ports if no other method can be found), we could
> still allow write access.


>> No.  Servers need to support "locale-charset-on-wire" if they want to
>> support lazy clients that don't bother with charset translation.
> Cannot it be done in the library?

If I have access to the client source code and can recompile it, yes.
But I provide this as a service provider: Because there are users out
there with clients that don't handle charsets.

> What are those clients that absolutely want latin1 and cannot be
> re-linked?

* clients at other sites,
* clients at other sites,
* clients that are provided as binaries,
    A fine example is Netscape 4.06/Mission Control:
    It uses  UTF-8 LDAPv2   for LDAP URLs,
    but     latin-1 LDAPv2  for configuration info read over LDAP.
* clients at other sites,
* clients that the sysadmin doesn't want to spend time on fixing,
* clients that are provided as binaries,

...oh, and since you are aiming for UTF-8 LDAPv2:

* clients that need another library than openldap, and that library is
  written for standard (T.61) LDAP.

> Some sites (like yours, I guess) will have to support it for some time,
> but clients speaking latin1 (or somesuch) on the wire belong to an
> endangered species...

Optimist.  I do hope you are right, though.

>> But your changes don't need to worry about that, since they are on the
>> client side.  Besides, I'm sure you support it already.  You do allow us
>> to *not* do charset translation in the library, I hope?:-)
> I have not tried, but the code is supposed to obey
> ldap_enable_translation().  If it worked for T.61, I see no reason for
> it not to work with UTF-8.  It's the same code, only that pointers to
> different functions are stored in the LDAP struct.

For switching from T.61 to UTF-8, yes.  But for switching to "no charset
translation" (i.e. "local charset over the wire"), the client should
simply *not* do ldap_enable_translation().