From 924046ce75ae5d5ee763f7cff77854bb493814c0 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Thu, 12 Oct 2000 01:50:33 +0000 Subject: Make non blocking I/O work for accept BIOs. --- ssl/bio_ssl.c | 4 ++++ ssl/ssl.h | 1 + ssl/ssl_lib.c | 4 ++++ 3 files changed, 9 insertions(+) (limited to 'ssl') diff --git a/ssl/bio_ssl.c b/ssl/bio_ssl.c index d85555a7e6..9141ec0d7b 100644 --- a/ssl/bio_ssl.c +++ b/ssl/bio_ssl.c @@ -206,6 +206,10 @@ static int ssl_read(BIO *b, char *out, int outl) BIO_set_retry_special(b); retry_reason=BIO_RR_SSL_X509_LOOKUP; break; + case SSL_ERROR_WANT_ACCEPT: + BIO_set_retry_special(b); + retry_reason=BIO_RR_ACCEPT; + break; case SSL_ERROR_WANT_CONNECT: BIO_set_retry_special(b); retry_reason=BIO_RR_CONNECT; diff --git a/ssl/ssl.h b/ssl/ssl.h index 87e609ed37..2bc994a0f4 100644 --- a/ssl/ssl.h +++ b/ssl/ssl.h @@ -831,6 +831,7 @@ size_t SSL_get_peer_finished(SSL *s, void *buf, size_t count); #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ #define SSL_ERROR_ZERO_RETURN 6 #define SSL_ERROR_WANT_CONNECT 7 +#define SSL_ERROR_WANT_ACCEPT 8 #define SSL_CTRL_NEED_TMP_RSA 1 #define SSL_CTRL_SET_TMP_RSA 2 diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index fec98dd8f4..ed2b820984 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -1543,6 +1543,8 @@ int SSL_get_error(SSL *s,int i) reason=BIO_get_retry_reason(bio); if (reason == BIO_RR_CONNECT) return(SSL_ERROR_WANT_CONNECT); + else if (reason == BIO_RR_ACCEPT) + return(SSL_ERROR_WANT_ACCEPT); else return(SSL_ERROR_SYSCALL); /* unknown */ } @@ -1561,6 +1563,8 @@ int SSL_get_error(SSL *s,int i) reason=BIO_get_retry_reason(bio); if (reason == BIO_RR_CONNECT) return(SSL_ERROR_WANT_CONNECT); + else if (reason == BIO_RR_ACCEPT) + return(SSL_ERROR_WANT_ACCEPT); else return(SSL_ERROR_SYSCALL); } -- cgit v1.2.3