summaryrefslogtreecommitdiffstats
path: root/crypto/openssl/ssl/s3_lib.c
diff options
context:
space:
mode:
authorsimon <simon@FreeBSD.org>2010-03-13 19:22:41 +0000
committersimon <simon@FreeBSD.org>2010-03-13 19:22:41 +0000
commit0d816bbd980d8201a2ad23ccd05f7bde16565282 (patch)
tree909a7c21b7df72ae8c08b80b468a4dd75b3820be /crypto/openssl/ssl/s3_lib.c
parent7fd3bd147ec574621124307eca10ead5353e34ba (diff)
parentcdb6eef1f013e22a10ab5f5829dcdc3b5e32d385 (diff)
downloadFreeBSD-src-0d816bbd980d8201a2ad23ccd05f7bde16565282.zip
FreeBSD-src-0d816bbd980d8201a2ad23ccd05f7bde16565282.tar.gz
Merge OpenSSL 0.9.8m into head.
This also "reverts" some FreeBSD local changes so we should now be back to using entirely stock OpenSSL. The local changes were simple $FreeBSD$ lines additions, which were required in the CVS days, and the patch for FreeBSD-SA-09:15.ssl which has been superseded with OpenSSL 0.9.8m's RFC5746 'TLS renegotiation extension' support. MFC after: 3 weeks
Diffstat (limited to 'crypto/openssl/ssl/s3_lib.c')
-rw-r--r--crypto/openssl/ssl/s3_lib.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/crypto/openssl/ssl/s3_lib.c b/crypto/openssl/ssl/s3_lib.c
index 1b38f72..8fa4ab0 100644
--- a/crypto/openssl/ssl/s3_lib.c
+++ b/crypto/openssl/ssl/s3_lib.c
@@ -2458,6 +2458,7 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
int ssl3_shutdown(SSL *s)
{
+ int ret;
/* Don't do anything much if we have not done the handshake or
* we don't want to send messages :-) */
@@ -2475,18 +2476,32 @@ int ssl3_shutdown(SSL *s)
#endif
/* our shutdown alert has been sent now, and if it still needs
* to be written, s->s3->alert_dispatch will be true */
+ if (s->s3->alert_dispatch)
+ return(-1); /* return WANT_WRITE */
}
else if (s->s3->alert_dispatch)
{
/* resend it if not sent */
#if 1
- s->method->ssl_dispatch_alert(s);
+ ret=s->method->ssl_dispatch_alert(s);
+ if(ret == -1)
+ {
+ /* we only get to return -1 here the 2nd/Nth
+ * invocation, we must have already signalled
+ * return 0 upon a previous invoation,
+ * return WANT_WRITE */
+ return(ret);
+ }
#endif
}
else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
{
/* If we are waiting for a close from our peer, we are closed */
s->method->ssl_read_bytes(s,0,NULL,0,0);
+ if(!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
+ {
+ return(-1); /* return WANT_READ */
+ }
}
if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) &&
@@ -2592,9 +2607,6 @@ int ssl3_renegotiate(SSL *s)
if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
return(0);
- if (1)
- return(0);
-
s->s3->renegotiate=1;
return(1);
}
OpenPOWER on IntegriCloud