summaryrefslogtreecommitdiffstats
path: root/crypto/bio/bss_acpt.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/bio/bss_acpt.c')
-rw-r--r--crypto/bio/bss_acpt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/crypto/bio/bss_acpt.c b/crypto/bio/bss_acpt.c
index 4da5822062..0c440fbb5f 100644
--- a/crypto/bio/bss_acpt.c
+++ b/crypto/bio/bss_acpt.c
@@ -236,8 +236,20 @@ again:
c->state=ACPT_S_OK;
goto again;
}
+ BIO_clear_retry_flags(b);
+ b->retry_reason=0;
i=BIO_accept(c->accept_sock,&(c->addr));
+
+ /* -2 return means we should retry */
+ if(i == -2)
+ {
+ BIO_set_retry_special(b);
+ b->retry_reason=BIO_RR_ACCEPT;
+ return -1;
+ }
+
if (i < 0) return(i);
+
bio=BIO_new_socket(i,BIO_CLOSE);
if (bio == NULL) goto err;