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

(ITS#5255) Outlook 2003 says: The search could not be completed.



Full_Name: Gary Mills
Version: openldap-2.3.38
OS: Solaris 9 SPARC
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (24.78.105.29)


Here's how Openldap was compiled:

PATH=/opt/SUNWspro/bin:/usr/bin:/usr/ccs/bin:/usr/sbin; export PATH

env CC=cc \
        INSTALL=/usr/ucb/install \
        CPPFLAGS="-I/usr/local/src/db/db-3.1.17/build_unix
-I/usr/local/src/OpenSSL/openssl-0.9.8f/include" \
        LDFLAGS="-R/usr/local/lib -L/usr/local/src/db/db-3.1.17/build_unix
-L/usr/local/src/OpenSSL/openssl-0.9.8f/lib" \
        ./configure \
        --disable-proctitle \
        --enable-crypt \
        --disable-bdb \
        --disable-hdb \
        --enable-ldbm \
        --without-threads \
        --enable-perl

When using an ldbm database, Microsoft Outlook 2003 clients report this error
when
they attempt a search:

    The search could not be completed.  MAPI_E_CALL_FAILED

The LDAP logs show this message:

    critical control unavailable in context

This happens because Openldap advertizes the pagedResults control, even though
the
ldbm backend does not support it.  When OL 2003 obtains the list of available
controls, the LDAP server does not know which back end it will use.  When OL
2003
does a query, it goes to the ldbm back end which does not support that control.
OL 2003 marks it critical, making the situation impossible.

In this situation, I'm using only the ldbm back end, so I removed the
pagedResults
control in servers/slapd/controls.c to fix the problem.  Here's my patch:

*** controls.Oc Tue Jan  2 15:43:55 2007
--- controls.c  Thu Nov 29 19:53:12 2007
***************
*** 123,132 ****
--- 123,134 ----
                SLAP_CTRL_GLOBAL|SLAP_CTRL_SEARCH, NULL,
                parseValuesReturnFilter, LDAP_SLIST_ENTRY_INITIALIZER(next) },
  #endif
+ #ifdef VANILLA
        { LDAP_CONTROL_PAGEDRESULTS,
                (int)offsetof(struct slap_control_ids, sc_pagedResults),
                SLAP_CTRL_SEARCH, NULL,
                parsePagedResults, LDAP_SLIST_ENTRY_INITIALIZER(next) },
+ #endif
  #ifdef LDAP_DEVEL
        { LDAP_CONTROL_SORTREQUEST,
                (int)offsetof(struct slap_control_ids, sc_sortedResults),

Adding an access list to the config file did not work.