From b58942794119a3167a0e45a7bc2dd67512294f52 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Mon, 17 Jul 2006 18:52:51 +0000 Subject: [PATCH] WIN32 fixes signed/unsigned issues and slightly socket semantics. --- apps/ocsp.c | 21 +++++++++++++++++---- crypto/ocsp/ocsp_ht.c | 5 ++--- util/libeay.num | 3 +++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/apps/ocsp.c b/apps/ocsp.c index 0369b2636c..955c400431 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -1270,8 +1270,22 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path, goto err; } - ctx = OCSP_sendreq_new(cbio, path, req, -1); + if (rv <= 0) + { + FD_ZERO(&confds); + openssl_fdset(fd, &confds); + tv.tv_usec = 0; + tv.tv_sec = req_timeout; + rv = select(fd + 1, NULL, (void *)&confds, NULL, &tv); + if (rv == 0) + { + BIO_puts(err, "Timeout on connect\n"); + return NULL; + } + } + + ctx = OCSP_sendreq_new(cbio, path, req, -1); if (!ctx) return NULL; @@ -1281,10 +1295,10 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path, if (rv != -1) break; FD_ZERO(&confds); - FD_SET(fd, &confds); + openssl_fdset(fd, &confds); tv.tv_usec = 0; tv.tv_sec = req_timeout; - if (BIO_should_read(cbio) || BIO_should_io_special(cbio)) + if (BIO_should_read(cbio)) rv = select(fd + 1, (void *)&confds, NULL, NULL, &tv); else if (BIO_should_write(cbio)) rv = select(fd + 1, NULL, (void *)&confds, NULL, &tv); @@ -1305,7 +1319,6 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path, } } - err: OCSP_REQ_CTX_free(ctx); diff --git a/crypto/ocsp/ocsp_ht.c b/crypto/ocsp/ocsp_ht.c index d84cc34b8b..4b1992052d 100644 --- a/crypto/ocsp/ocsp_ht.c +++ b/crypto/ocsp/ocsp_ht.c @@ -237,7 +237,6 @@ int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx) { int i, n; const unsigned char *p; - next_io: if (!(rctx->state & OHS_NOREAD)) { @@ -246,7 +245,7 @@ int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx) if (n <= 0) { if (BIO_should_retry(rctx->io)) - return -1; + return -1; return 0; } @@ -420,7 +419,7 @@ int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx) case OHS_ASN1_CONTENT: n = BIO_get_mem_data(rctx->mem, &p); - if (n < rctx->asn1_len) + if (n < (int)rctx->asn1_len) goto next_io; diff --git a/util/libeay.num b/util/libeay.num index 7d98a67775..7abea035d6 100755 --- a/util/libeay.num +++ b/util/libeay.num @@ -3772,3 +3772,6 @@ OBJ_sigid_free 4164 EXIST::FUNCTION: EVP_CIPHER_do_all 4165 EXIST::FUNCTION: EVP_CIPHER_do_all_sorted 4166 EXIST::FUNCTION: EVP_MD_do_all 4167 EXIST::FUNCTION: +OCSP_REQ_CTX_free 4168 EXIST::FUNCTION: +OCSP_sendreq_nbio 4169 EXIST::FUNCTION: +OCSP_sendreq_new 4170 EXIST::FUNCTION: -- 2.25.1