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

error on select()




>       I'am using sendmail (8.12.3) and openldap (2.0.25) for access map. At
> some times, sendmail receive LDAP_SERVER_DOWN from libldap. LDAP server
> i'snt down and others sendmail's are using access map at this time.
>       Looking at the libldap code
> (openldap-2.0.25/libraries/libldap/os-ip.c), at the do_ldap_select(),
> the call of select( fd, .. ,... ,...,...) return "Interrupted system
> call" and this return generate LDAP_SERVER_DOWN. 

I send message above to sendmail-questions@sendmail.org 

Response from sendmail Team: 

"This appears to be a problem in the LDAP library.  There is nothing 
sendmail can do to avoid this.  OpenLDAP should be patched to do the 
right thing with signal interrupts (EINTR)."


        I change "select()" call at os-ip.c (row 667 )to :

....
        do { 
                result = select( ldap_int_tblsize,
                                &sip->si_use_readfds,
&sip->si_use_writefds,
                                NULL, timeout );
        }       
        while ((result == -1) && (errno == EINTR));

        return( result );
....

        With this, the problems had finished.

        My question, this implementation can be used to skirt this
problem or
can cause other bigger problems ? 



        Thanks,


-- 
		Luiz Henrique Duma