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

Antwort: Re: Antwort: OpenLDAP API



I think that could be managed with ldap_perror() to deal with the
connection if the server is down.
If i don't put the perror line in, than there is an exception procuded by
the ldap library.
The same error occurs when you use proftp-ldap and enter the wrong
search-base.
Franz
____________________________________________________
Franz Skale
mainwork information technology AG
IT-Services
Tech Gate Vienna
Donaucitystrasse 1
A-1220 Wien
Tel: +43 1 333 48 58-0
Fax: +43 1 333 48 58-24
e-mail: f.skale@mainwork.com
Internet: http://www.mainwork.com


                                                                                                                    
                    Igor Brezac                                                                                     
                    <igor@ipass.n        An:     <f.skale@mainwork.com>                                             
                    et>                  Kopie:  <OpenLdap-Software@OpenLDAP.com>                                   
                                         Thema:  Re: Antwort: OpenLDAP API                                          
                    02.04.2002                                                                                      
                    16:22                                                                                           
                                                                                                                    
                                                                                                                    





Thanks for the response.  This program works fine if the ldap server is
available at all times.  Try to put a break right before ldap_search_st()
and stop the ldap server at that point.

I am working on ldap based auth modules for saslauthd/saslv[12] and I am
testing the recovery from ldap server outages.

-Igor

On Tue, 2 Apr 2002 f.skale@mainwork.com wrote:

>
> I tested the short program and it worked for me by modifying the base_dn
> and the search filter.
> Perhaps your ACL is so strong not to allow a anoymous simple bind.#
> Have you runed on debugging or other logging style ?
> You should supply a username and password to bind as manager or anything
> else.
>
> My ldap_simple_bind:
> rc = ldap_simple_bind_s(ldi, "cn=Manager,dc=mainwork,dc=nw", "secure");
>
> My filter:
> char *filter = "uid=Admin*";
>
> Output:
> DN: uid=Admin,ou=Admins,ou=Mainhost01,o=mainwork information technology
> AG,dc=mainwork,dc=nw
>
>
> Rgds Franz
>
>
>
> ____________________________________________________
> Franz Skale
> mainwork information technology AG
> IT-Services
> Tech Gate Vienna
> Donaucitystrasse 1
> A-1220 Wien
> Tel: +43 1 333 48 58-0
> Fax: +43 1 333 48 58-24
> e-mail: f.skale@mainwork.com
> Internet: http://www.mainwork.com
>
>
>
>                     Igor Brezac
>                     <igor@ipass.net>                  An:
<OpenLdap-Software@OpenLDAP.com>
>                     Gesendet von:                     Kopie:
>                     owner-openldap-software@Op        Thema:  OpenLDAP
API
>                     enLDAP.org
>
>
>                     01.04.2002 16:56
>
>
>
>
>
>
>
> I apologize for the duplicate message, I forgot to use the subject line.
>
> Hello,
>
> I use Solaris 8 and openldap 2.0.23.  The following short program crashes
> on the ldap_unbind() call.  I tried various different versions of this
> program without success.  Am I doing something wrong here?
>
> Your help will be greatly appreciated.
>
> -Igor
>
> #include        <sys/types.h>
> #include        <stdlib.h>
>
> #include        <lber.h>
> #include        <ldap.h>
>
> int main() {
>
>         int rc;
>         LDAP   *ldi;
>         struct timeval tv;
>         LDAPMessage *res = NULL;
>         LDAPMessage *msg = NULL;
>         char *dn;
>         char *server = "ldap://10.1.1.197/";;
>         char *base_dn = "o=pb";
>         char *filter = "uid=igor";
>         char *attrs[] = {"dn",NULL};
>
>
>         rc = ldap_initialize(&ldi, server);
>         if (rc != LDAP_SUCCESS) {
>                 exit (2);
>         }
>
>         rc = ldap_simple_bind_s(ldi, "", "");
>         if (rc != LDAP_SUCCESS) {
>                 exit (2);
>         }
>
> //  If the ldap server is no longer available at this point
>
>         tv.tv_sec = 5;
>         tv.tv_usec = 0;
>         rc = ldap_search_st(ldi, base_dn, LDAP_SCOPE_SUBTREE, filter,
>                         (char **) attrs, 0, &tv, &res);
>
>         if (rc != LDAP_SUCCESS) {
>                 ldap_get_option(ldi, LDAP_OPT_ERROR_NUMBER, &rc);
>                 printf("ldap_search_st() error %s\n",
ldap_err2string(rc));
>                 ldap_msgfree(res);
>                 ldap_unbind(ldi);
>
> // ldap_unbind will cause a dump here
>
>                 exit(2);
>         }
>
>         msg = ldap_first_entry(ldi, res);
>         dn = ldap_get_dn(ldi, msg);
>         printf("DN: %s\n", dn);
>
>         ldap_msgfree(msg);
>         free(dn);
>         ldap_unbind_s(ldi);
>         exit (1);
> }
>
>
>
>
>
>
>
>