[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