Updates from 1.0.0-stable
[openssl.git] / ssl / d1_pkt.c
index a89edbc7a7179d6bda11ea284ce9938e581149d3..394daf6258be194483a293a01f23ebdf593f1c53 100644 (file)
@@ -1102,6 +1102,16 @@ start:
                        s->msg_callback(0, s->version, SSL3_RT_CHANGE_CIPHER_SPEC, 
                                rr->data, 1, s, s->msg_callback_arg);
 
+               /* We can't process a CCS now, because previous handshake
+                * messages are still missing, so just drop it.
+                */
+               if (!s->d1->change_cipher_spec_ok)
+                       {
+                       goto start;
+                       }
+
+               s->d1->change_cipher_spec_ok = 0;
+
                s->s3->change_cipher_spec=1;
                if (!ssl3_do_change_cipher_spec(s))
                        goto err;