diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2010-08-26 14:22:40 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2010-08-26 14:22:40 +0000 |
commit | 48ae85b6ffe85e327f63c59d8de6a94a8b8f2d3b (patch) | |
tree | cc732ab165a3631aa940ccd6e0ce96745c693eba /ssl/ssl_lib.c | |
parent | 82281ce47d0c27a6030a863156f9e2c68a8bf018 (diff) | |
download | openssl-new-48ae85b6ffe85e327f63c59d8de6a94a8b8f2d3b.tar.gz |
PR: 1833
Submitted By: Robin Seggelmann <seggelmann@fh-muenster.de>
Support for abbreviated handshakes when renegotiating.
Diffstat (limited to 'ssl/ssl_lib.c')
-rw-r--r-- | ssl/ssl_lib.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 3c74ec179c..d4fc4aa1b3 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -202,9 +202,9 @@ int SSL_clear(SSL *s) * needed because SSL_clear is not called when doing renegotiation) */ /* This is set if we are doing dynamic renegotiation so keep * the old cipher. It is sort of a SSL_clear_lite :-) */ - if (s->new_session) return(1); + if (s->renegotiate) return(1); #else - if (s->new_session) + if (s->renegotiate) { SSLerr(SSL_F_SSL_CLEAR,ERR_R_INTERNAL_ERROR); return 0; @@ -1008,18 +1008,29 @@ int SSL_shutdown(SSL *s) int SSL_renegotiate(SSL *s) { - if (s->new_session == 0) - { - s->new_session=1; - } + if (s->renegotiate == 0) + s->renegotiate=1; + + s->new_session=1; + return(s->method->ssl_renegotiate(s)); } +int SSL_renegotiate_abbreviated(SSL *s) +{ + if (s->renegotiate == 0) + s->renegotiate=1; + + s->new_session=0; + + return(s->method->ssl_renegotiate(s)); +} + int SSL_renegotiate_pending(SSL *s) { /* becomes true when negotiation is requested; * false again once a handshake has finished */ - return (s->new_session != 0); + return (s->renegotiate != 0); } long SSL_ctrl(SSL *s,int cmd,long larg,void *parg) @@ -2519,6 +2530,7 @@ SSL *SSL_dup(SSL *s) ret->in_handshake = s->in_handshake; ret->handshake_func = s->handshake_func; ret->server = s->server; + ret->renegotiate = s->renegotiate; ret->new_session = s->new_session; ret->quiet_shutdown = s->quiet_shutdown; ret->shutdown=s->shutdown; |