I think you should change the line
int tNumSocketsReady = select(1, &tSet, NULL, NULL, &tTimeout);
by
int tNumSocketsReady = select( tSocketFD+1, &tSet, NULL, NULL,
&tTimeout);
If not, the descriptor you are selecting on may be totally wrong, so your
select() doesn´t works.
-----Original Message-----
From: James Gaskell <[EMAIL PROTECTED]>
To: 'SSLU' <[EMAIL PROTECTED]>
Date: lunes 9 de octubre de 2000 10:33
Subject: SSL_read, non-blocking sockets, and Windows.
>Hi.
>
>I'm just starting out with the OpenSSL library, and I've got a problem that
>I don't know how to fix.
>
>I'm trying to read data using SSL_read() from a non-blocking socket on a
>Windows machine.
>
>The problem is that when the SSL_read returns SSL_ERROR_WANT_READ, I don't
>know how to wait for data to become available.
>
>My code is something like:
>
> fd_set tSet;
> FD_ZERO(&tSet);
>
> SOCKET tSocketFD = SSL_get_fd(pSSL); // Get the underlying socket.
> FD_SET(tSocketFD, &tSet);
>
> int tNumSocketsReady = select(1, &tSet, NULL, NULL, &tTimeout);
>
> if (tNumSocketsReady)
> {
> tRetVal = SSL_read(pSSL, buf, num);
> }
> else
> {
> tRetVal = SOCKET_ERROR;
> }
>
>However, this doesn't work -- the select() call always returns immediately.
>
>I've been banging my head against
>http://www.openssl.org/docs/ssl/SSL_read.html but it just says:
>
> The calling process then must repeat the call after taking
> appropriate action to satisfy the needs of SSL_read().
> The action depends on the underlying BIO.
>
>What SSL function acts like select() on ordinary sockets? Is there some
kind
>of event I can wait on?
>
>Thanks for listening!
>
>James Gaskell.
>______________________________________________________________________
>OpenSSL Project http://www.openssl.org
>User Support Mailing List [EMAIL PROTECTED]
>Automated List Manager [EMAIL PROTECTED]
>
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]