summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Caswell <[email protected]>2015-05-06 12:40:06 +0200
committerMatt Caswell <[email protected]>2015-06-04 10:16:55 +0200
commitaf3aa2b5ef741a35394c92872cbdbab4d46b9c90 (patch)
tree43143f808f2fef3766c987132470c8817868a3cb
parentmake update (diff)
downloadopenssl-af3aa2b5ef741a35394c92872cbdbab4d46b9c90.tar.gz
openssl-af3aa2b5ef741a35394c92872cbdbab4d46b9c90.zip
Fix DTLS session resumption
The session object on the client side is initially created during construction of the ClientHello. If the client is DTLS1.2 capable then it will store 1.2 as the version for the session. However if the server is only DTLS1.0 capable then when the ServerHello comes back the client switches to using DTLS1.0 from then on. However the session version does not get updated. Therefore when the client attempts to resume that session the server throws an alert because of an incorrect protocol version. Reviewed-by: Tim Hudson <[email protected]> (cherry picked from commit 7322abf5cefdeb47c7d61f3b916c428bf2cd69b6) Conflicts: ssl/s3_clnt.c
-rw-r--r--ssl/s3_clnt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ssl/s3_clnt.c b/ssl/s3_clnt.c
index feb1e3b0b8c..609b00596fb 100644
--- a/ssl/s3_clnt.c
+++ b/ssl/s3_clnt.c
@@ -958,7 +958,7 @@ int ssl3_get_server_hello(SSL *s)
al = SSL_AD_PROTOCOL_VERSION;
goto f_err;
}
- s->version = s->method->version;
+ s->session->ssl_version = s->version = s->method->version;
}
if ((p[0] != (s->version >> 8)) || (p[1] != (s->version & 0xff))) {