Bruce LeMaster <[EMAIL PROTECTED]>:

> The following block of server code does not work properly when using
> non-blocking sockets on AIX 4.3.
> This block of code works properly on Solaris 2.51, 2.6, HPUX 10.20,11.00, NT
> 4, etc.
> if ((err = SSL_accept( (SSL*)ssl )) <= 0) {
> realError = SSL_get_error((SSL*)ssl,err);
> if (realError == SSL_ERROR_WANT_READ)
> printf("WANT_READ\n");
> if (realError == SSL_ERROR_WANT_WRITE)
> printf("WANT_WRITE";
> }
> 
> On AIX, "WANT_READ" or "WANT_WRITE" is never printed even though it should
> be.

What kind of non-blocking I/O do you use, O_NONBLOCK or something
else?  Can you debug inside the BIO library (crypto/bio/bss_sock.c)
what is going on --- does read() (which is called 'readsocket' in
there, see e_os.h), return -1, what does errno ('get_last_socket_error()')
look like in BIO_sock_should_retry, what happens in
BIO_sock_non_fatal_error?
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to