Hmm, BIO_socket_ioctl() should really take a void* instead of an unsigned long *. Then, BIO_socket_nbio() should send a pointer to an int instead of a pointe to a long. The latter can be done anyway and pushed through useing a cast (ugly), or we could change that last argument type to BIO_socket_ioctl(), but that breaks the API (at least at source level).
*sigh* [[EMAIL PROTECTED] - Tue Jan 14 09:48:11 2003]: > bug report: openssl > > operating system: HP-UX11 > openssl version 0.9.6b, 0.96g and probably 0.7 too. > configuration options:./Configure hpux64-parisc-cc shared no-idea > > Description: > BIO_socket_nbio() fails to set sockets to non-blocking mode. > The call succeeds but the socket is still blocking > > I have noticed that BIO_socket_nbio() calls BIO_socket_ioctl() unsing > FIONBIO. > This ioctl, according to it's man page, takes one argument: a pointer > to int, > but the BIO_socket_ioctl() uses a pointer to long as the argument. > > This will result in that the os will only read the 32 most significant > bits of the > 64 bit long value that is set to 0 or 1 by BIO_socket_nbio(). These > bits are always > 0 and the call will always set the socket to blocking mode. > > (If I patch BIO_socket_ioctl() to send a pointer to int instead the > calls to > BIO_socket_nbio() work as expected.) > > Regards > > /Magnus Lind > -- Richard Levitte ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]