Skip to content

Commit e2ab51a

Browse files
authored
Cancel pending TLS handshake task when streams closed in both directions (#1497)
1 parent 9586f76 commit e2ab51a

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

runtime/binding-tls/src/main/java/io/aklivity/zilla/runtime/binding/tls/internal/stream/TlsClientFactory.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,6 +1529,8 @@ private void onNetEnd(
15291529
doAppReset(traceId);
15301530
doEncodeCloseOutbound(traceId, budgetId);
15311531
doNetEnd(traceId);
1532+
1533+
cancelHandshakeTask();
15321534
}
15331535

15341536
decoder = decodeIgnoreAll;
@@ -1565,6 +1567,8 @@ private void onNetAbort(
15651567
doAppReset(traceId);
15661568

15671569
doNetAbort(traceId);
1570+
1571+
cancelHandshakeTask();
15681572
}
15691573

15701574
private void onNetReset(
@@ -1589,6 +1593,8 @@ private void onNetReset(
15891593
doAppAbort(traceId);
15901594

15911595
doNetReset(traceId);
1596+
1597+
cancelHandshakeTask();
15921598
}
15931599

15941600
private void onNetWindow(
@@ -2194,6 +2200,17 @@ private void cleanupEncodeSlot()
21942200
}
21952201
}
21962202

2203+
private void cancelHandshakeTask()
2204+
{
2205+
assert TlsState.closed(state);
2206+
2207+
if (handshakeTaskFutureId != NO_CANCEL_ID)
2208+
{
2209+
signaler.cancel(handshakeTaskFutureId);
2210+
handshakeTaskFutureId = NO_CANCEL_ID;
2211+
}
2212+
}
2213+
21972214
private void cancelHandshakeTimeout()
21982215
{
21992216
if (handshakeTimeoutFutureId != NO_CANCEL_ID)

runtime/binding-tls/src/main/java/io/aklivity/zilla/runtime/binding/tls/internal/stream/TlsServerFactory.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,6 +1233,8 @@ private void onNetEnd(
12331233
{
12341234
doEncodeCloseOutbound(traceId, budgetId);
12351235
doNetEnd(traceId);
1236+
1237+
cancelHandshakeTask();
12361238
}
12371239

12381240
decoder = decodeIgnoreAll;
@@ -1268,6 +1270,8 @@ private void onNetAbort(
12681270
stream.ifPresent(s -> s.doAppReset(traceId));
12691271

12701272
doNetAbort(traceId);
1273+
1274+
cancelHandshakeTask();
12711275
}
12721276

12731277
private void onNetReset(
@@ -1292,6 +1296,8 @@ private void onNetReset(
12921296
stream.ifPresent(s -> s.doAppAbort(traceId));
12931297

12941298
doNetReset(traceId);
1299+
1300+
cancelHandshakeTask();
12951301
}
12961302

12971303
private void onNetWindow(
@@ -1841,6 +1847,17 @@ private void cleanupEncodeSlot()
18411847
}
18421848
}
18431849

1850+
private void cancelHandshakeTask()
1851+
{
1852+
assert TlsState.closed(state);
1853+
1854+
if (handshakeTaskFutureId != NO_CANCEL_ID)
1855+
{
1856+
signaler.cancel(handshakeTaskFutureId);
1857+
handshakeTaskFutureId = NO_CANCEL_ID;
1858+
}
1859+
}
1860+
18441861
private void cancelHandshakeTimeout()
18451862
{
18461863
if (handshakeTimeoutFutureId != NO_CANCEL_ID)

0 commit comments

Comments
 (0)