The GitHub Actions job "Pull Requests" on 
pekko.git/tls-drain-after-peer-close-notify has succeeded.
Run started by GitHub user pjfanning (triggered by pjfanning).

Head commit for run:
6432c562af6687795df4e826c821207183736fe8 / PJ Fanning 
<[email protected]>
Keep draining TLS plaintext after a TLS 1.3 peer close_notify

Motivation:
When the plaintext output is cancelled, the GraphStage TLS engine drains
plaintext it has already accepted. If a TLS 1.3 peer sent close_notify
during that drain, unwrap returned CLOSED and the stage completed,
discarding the accepted plaintext without sending it or its own
close_notify, although TLS 1.3 close_notify only closes the peer's
sending direction.

Modification:
- Stay in the inbound-closed drain when unwrap returns CLOSED while
  accepted plaintext is still being drained and the engine's outbound
  side is open. The drain then finishes and closes outbound as before.
- Document that a TLS 1.3 close_notify does not end the drain, while a
  TLS 1.2 close_notify (which closes both SSLEngine directions) does.
- Add real-SSLEngine tests that send close_notify during the drain for
  IgnoreComplete and EagerClose, on TLS 1.3 and TLS 1.2.

Result:
A TLS 1.3 peer that half-closes receives the accepted response followed
by close_notify. TLS 1.2 behaviour is unchanged and terminates promptly.

Tests:
- sbt "stream-tests / Test / testOnly 
org.apache.pekko.stream.io.TlsGraphStageCancellationSpec":
  the two TLS 1.3 tests failed before the fix (partial response) and
  pass after it; 6/6 pass.
- sbt "stream-tests / Test / testOnly org.apache.pekko.stream.io.Tls*": 281/281 
passed.
- Native scalafmt and git diff --check passed.

References:
Refs #3727

Report URL: https://github.com/apache/pekko/actions/runs/40940175259

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to