Set first_packet for TLS clients
authorMatt Caswell <matt@openssl.org>
Sat, 23 May 2015 20:05:19 +0000 (21:05 +0100)
committerMatt Caswell <matt@openssl.org>
Sun, 24 May 2015 22:54:12 +0000 (23:54 +0100)
Version negotiation was broken (one of the late changes in the review
process broke it). The problem is that TLS clients do not set first_packet,
whereas TLS/DTLS servers and DTLS clients do. The simple fix is to set
first_packet for TLS clients too.

Reviewed-by: Kurt Roeckx <kurt@openssl.org>
ssl/s3_clnt.c

index ace0838106883d717c631aea9d6fa5f1f7552f75..f70dce4b0d1772789728a13263986807a19ffb69 100644 (file)
@@ -947,8 +947,7 @@ int ssl3_get_server_hello(SSL *s)
      * Hello verify request and/or server hello version may not match so set
      * first packet if we're negotiating version.
      */
-    if (SSL_IS_DTLS(s))
-        s->first_packet = 1;
+    s->first_packet = 1;
 
     n = s->method->ssl_get_message(s,
                                    SSL3_ST_CR_SRVR_HELLO_A,
@@ -957,8 +956,8 @@ int ssl3_get_server_hello(SSL *s)
     if (!ok)
         return ((int)n);
 
+    s->first_packet = 0;
     if (SSL_IS_DTLS(s)) {
-        s->first_packet = 0;
         if (s->s3->tmp.message_type == DTLS1_MT_HELLO_VERIFY_REQUEST) {
             if (s->d1->send_cookie == 0) {
                 s->s3->tmp.reuse_message = 1;