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

Re: error on select()



At 01:13 AM 2002-07-19, Luiz Henrique Duma wrote:


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

except set LDAP_OPT_RESTART to true...

>OpenLDAP should be patched to do the 
>right thing with signal interrupts (EINTR)."

"right things" depends... an application can control this.



>        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