runner: Move receivedFlightRecords tracking up a layer
If the test runner discovers a handshake record by trying to read
application data, it loses track of that record and never ACK it.
This fixes one of the many issues in the way of testing post-handshake
message retransmit.
Bug: 42290594
Change-Id: Ic74a91f640484aa3ca71b52a05b8aaa072480f36
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/73229
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Nick Harper <nharper@chromium.org>
diff --git a/ssl/test/runner/conn.go b/ssl/test/runner/conn.go
index 3a19810..d516651 100644
--- a/ssl/test/runner/conn.go
+++ b/ssl/test/runner/conn.go
@@ -1174,6 +1174,13 @@
if pack := c.config.Bugs.ExpectPackedEncryptedHandshake; pack > 0 && len(data) < pack && c.out.epoch.cipher != nil {
c.seenHandshakePackEnd = true
}
+ if c.isDTLS {
+ record, err := c.makeDTLSRecordNumberInfo(&c.in.epoch, c.hand.Bytes())
+ if err != nil {
+ return err
+ }
+ c.receivedFlightRecords = append(c.receivedFlightRecords, record)
+ }
case recordTypeACK:
if typ != want || !c.isDTLS {
diff --git a/ssl/test/runner/dtls.go b/ssl/test/runner/dtls.go
index 9bc466f..f56c44d 100644
--- a/ssl/test/runner/dtls.go
+++ b/ssl/test/runner/dtls.go
@@ -674,11 +674,6 @@
if err := c.readRecord(recordTypeHandshake); err != nil {
return nil, err
}
- record, err := c.makeDTLSRecordNumberInfo(&c.in.epoch, c.hand.Bytes())
- if err != nil {
- return nil, err
- }
- c.receivedFlightRecords = append(c.receivedFlightRecords, record)
}
// Read the next fragment. It must fit entirely within