Store only one handshake write sequence number.
The pair was a remnant of some weird statefulness and also ChangeCipherSpec
having a "sequence number" to make the pqueue turn into an array.
Change-Id: Iffd82594314df43934073bd141faee0fc167ed5f
Reviewed-on: https://boringssl-review.googlesource.com/8436
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/d1_both.c b/ssl/d1_both.c
index 6b2a019..9adc2aa 100644
--- a/ssl/d1_both.c
+++ b/ssl/d1_both.c
@@ -749,8 +749,6 @@
int dtls1_send_change_cipher_spec(SSL *ssl, int a, int b) {
if (ssl->state == a) {
- /* Buffer the message to handle retransmits. */
- ssl->d1->handshake_write_seq = ssl->d1->next_handshake_write_seq;
dtls1_buffer_change_cipher_spec(ssl);
ssl->state = b;
}
diff --git a/ssl/d1_lib.c b/ssl/d1_lib.c
index 6e05695..0c47dc6 100644
--- a/ssl/d1_lib.c
+++ b/ssl/d1_lib.c
@@ -312,8 +312,8 @@
int dtls1_set_handshake_header(SSL *ssl, int htype, unsigned long len) {
uint8_t *message = (uint8_t *)ssl->init_buf->data;
- ssl->d1->handshake_write_seq = ssl->d1->next_handshake_write_seq;
- ssl->d1->next_handshake_write_seq++;
+ uint16_t seq = ssl->d1->handshake_write_seq;
+ ssl->d1->handshake_write_seq++;
ssl->init_num = (int)len + DTLS1_HM_HEADER_LENGTH;
ssl->init_off = 0;
@@ -322,7 +322,7 @@
uint8_t *p = message;
*p++ = htype;
l2n3(len, p);
- s2n(ssl->d1->handshake_write_seq, p);
+ s2n(seq, p);
l2n3(0, p);
l2n3(len, p);
assert(p == message + DTLS1_HM_HEADER_LENGTH);
diff --git a/ssl/handshake_client.c b/ssl/handshake_client.c
index 5bc6bdc..3b33574 100644
--- a/ssl/handshake_client.c
+++ b/ssl/handshake_client.c
@@ -524,7 +524,7 @@
if (SSL_IS_DTLS(ssl)) {
ssl->d1->handshake_read_seq = 0;
- ssl->d1->next_handshake_write_seq = 0;
+ ssl->d1->handshake_write_seq = 0;
}
ret = 1;
diff --git a/ssl/handshake_server.c b/ssl/handshake_server.c
index 0d06929..b0e4c56 100644
--- a/ssl/handshake_server.c
+++ b/ssl/handshake_server.c
@@ -516,7 +516,6 @@
if (SSL_IS_DTLS(ssl)) {
ssl->d1->handshake_read_seq = 0;
ssl->d1->handshake_write_seq = 0;
- ssl->d1->next_handshake_write_seq = 0;
}
ssl->s3->initial_handshake_complete = 1;
diff --git a/ssl/internal.h b/ssl/internal.h
index 0b263f2..64a63d8 100644
--- a/ssl/internal.h
+++ b/ssl/internal.h
@@ -916,12 +916,7 @@
/* records being received in the current epoch */
DTLS1_BITMAP bitmap;
- /* handshake message numbers.
- * TODO(davidben): It doesn't make much sense to store both of these. Only
- * store one. */
uint16_t handshake_write_seq;
- uint16_t next_handshake_write_seq;
-
uint16_t handshake_read_seq;
/* save last sequence number for retransmissions */