Fix large SASL reads. Use EAGAIN instead of EWOULDBLOCK (was right the

first time after all. see read(2) and write(2)...)
This commit is contained in:
Howard Chu 2002-08-30 10:11:54 +00:00
parent 0cd3720e0d
commit d11b134709
2 changed files with 4 additions and 4 deletions

View file

@ -257,7 +257,7 @@ sb_sasl_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
continue;
#endif
if ( ret <= 0 )
return ret;
return bufptr ? bufptr : ret;
p->sec_buf_in.buf_ptr += ret;
}
@ -287,7 +287,7 @@ sb_sasl_read( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
continue;
#endif
if ( ret <= 0 )
return ret;
return bufptr ? bufptr : ret;
p->sec_buf_in.buf_ptr += ret;
}
@ -335,7 +335,7 @@ sb_sasl_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
return ret;
/* Still have something left?? */
if ( p->buf_out.buf_ptr != p->buf_out.buf_end ) {
errno = EWOULDBLOCK;
errno = EAGAIN;
return 0;
}
}

View file

@ -146,7 +146,7 @@ ldap_int_flush_request(
LDAPConn *lc = lr->lr_conn;
if ( ber_flush( lc->lconn_sb, lr->lr_ber, 0 ) != 0 ) {
if ( errno == EWOULDBLOCK ) {
if ( errno == EAGAIN ) {
/* need to continue write later */
lr->lr_status = LDAP_REQST_WRITING;
ldap_mark_select_write( ld, lc->lconn_sb );