On Wed, Feb 19, 2003 at 06:10:13PM +0100, Ralph via RT wrote:

> on AIX (64bit) I noticed a major problem with non-blocking sockets. 
> Methods SSL_connect(), SSL_read() and SSL_write() should return 
> SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE if they need to complete 
> their tasks but the socket couldn't handle all the work.
> 
> But instead, the methods return SSL_ERROR_SYSCALL when the underlying 
> socket gave errno=EWOULDBLOCK or errno=EAGAIN (means: the application 
> should retry with these functions if it has not been completed, yet) 
> from their respective functions (read() and write()).
> 
> For these specific system error numbers, the SSL functions should return 
> SSL_ERROR_WANT_* return codes, shouldn't they?

> PS: However, on AIX 4.2 and earlier, this didn't seem to be a problem. 
> Funny, isn't it? (But these versions are not supported by IBM anymore!)

It's not SSL_connect() etc. that will return these error codes,
it's SSL_get_error().  But probably you meant that, or you would
not get SSL_ERROR_SYSCALL.

Can you tell what is going on by looking at the definition of
SSL_get_error (ssl/ssl_lib.c) and BIO_sock_should_retry and
BIO_sock_non_fatal_error (crypto/bio/bss_bio.c)?  You might want to
add some debugging output in BIO_sock_non_fatal_error().


-- 
Bodo Möller <[EMAIL PROTECTED]>
PGP http://www.informatik.tu-darmstadt.de/TI/Mitarbeiter/moeller/0x36d2c658.html
* TU Darmstadt, Theoretische Informatik, Alexanderstr. 10, D-64283 Darmstadt
* Tel. +49-6151-16-6628, Fax +49-6151-16-6036

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to