>> Hi,
>>
>> I have the following code snippet:
>>
>> bio = BIO_new_connect(host);
>> BIO_set_conn_port(bio, port);
>> BIO_set_nbio(bio, 1)
>> while (true) {
>> status = BIO_do_connect(bio);
>> if (status > 0 || !BIO_should_retry(bio)) {
>> break;
>> }
>> sleep(1);
>> }
>>
>> BIO_do_connect() always returns -1 the first time and 1 the 2nd time,
>> regardless if the server is reachable or not.
>>
>> If I use the blocking mode, then it returns 1 on reachable server and hangs
>> otherwise, which seems expected.
>>
>> Is there anything wrong in the above code, why it returns the same value for
>> reachable or non-reachable servers?
>>
>
>A call cannot immediately determine if a server is reachable. It typically has
>to wait until it gets >a reply from the remote server.
>
>That's why you get a retry: the TCP stack is waiting for a response. Only when
>it gets that response >can the connection continue or not as the case may be.
Thanks Steve.
Why the connection is still invalid, because subsequent OCSP_sendreq_bio()
receives no response(while in blocking mode it does), after the 2nd time call
to BIO_do_connect() in the loop which always returns 1/success ?
It is failing in OCSP connection after the 2nd successful BIO_do_connect() call
as soon as the BIO is made non-blocking. It works fine in blocking mode but it
does not timeout if the server is unreachable.
Regards,
-binlu
>Steve.
>--
>Dr Stephen N. Henson. OpenSSL project core developer.
>Commercial tech support now available see: http://www.openssl.org
>>______________________________________________________________________
>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]