@@ -63,13 +63,41 @@ public async Task RunTlsClientHelloCallbackTest_WithPreCancelledToken()
6363 var transportConnection = new DefaultConnectionContext ( "test" , transport , transport ) ;
6464
6565 var tlsClientHelloCallbackInvoked = false ;
66- var middleware = new TlsListener ( ( ctx , data ) => { tlsClientHelloCallbackInvoked = true ; } ) ;
66+ var listener = new TlsListener ( ( ctx , data ) => { tlsClientHelloCallbackInvoked = true ; } ) ;
6767
6868 var cts = new CancellationTokenSource ( ) ;
6969 cts . Cancel ( ) ;
7070
7171 await writer . WriteAsync ( new byte [ 1 ] { 0x16 } ) ;
72- await middleware . OnTlsClientHelloAsync ( transportConnection , cts . Token ) ;
72+ await Assert . ThrowsAsync < OperationCanceledException > ( async ( ) =>
73+ {
74+ await listener . OnTlsClientHelloAsync ( transportConnection , cts . Token ) ;
75+ } ) ;
76+ Assert . False ( tlsClientHelloCallbackInvoked ) ;
77+ }
78+
79+ [ Fact ]
80+ public async Task RunTlsClientHelloCallbackTest_WithPendingCancellation ( )
81+ {
82+ var serviceContext = new TestServiceContext ( ) ;
83+
84+ var pipe = new Pipe ( ) ;
85+ var writer = pipe . Writer ;
86+ var reader = new ObservablePipeReader ( pipe . Reader ) ;
87+
88+ var transport = new DuplexPipe ( reader , writer ) ;
89+ var transportConnection = new DefaultConnectionContext ( "test" , transport , transport ) ;
90+
91+ var tlsClientHelloCallbackInvoked = false ;
92+ var listener = new TlsListener ( ( ctx , data ) => { tlsClientHelloCallbackInvoked = true ; } ) ;
93+
94+ var cts = new CancellationTokenSource ( ) ;
95+ await writer . WriteAsync ( new byte [ 1 ] { 0x16 } ) ;
96+ var listenerTask = listener . OnTlsClientHelloAsync ( transportConnection , cts . Token ) ;
97+ await writer . WriteAsync ( new byte [ 2 ] { 0x03 , 0x01 } ) ;
98+ cts . Cancel ( ) ;
99+
100+ await Assert . ThrowsAsync < OperationCanceledException > ( async ( ) => await listenerTask ) ;
73101 Assert . False ( tlsClientHelloCallbackInvoked ) ;
74102 }
75103
@@ -90,15 +118,15 @@ public async Task RunTlsClientHelloCallbackTest_DeterministicallyReads()
90118 var transportConnection = new DefaultConnectionContext ( "test" , transport , transport ) ;
91119
92120 var tlsClientHelloCallbackInvoked = false ;
93- var middleware = new TlsListener ( ( ctx , data ) => { tlsClientHelloCallbackInvoked = true ; } ) ;
121+ var listener = new TlsListener ( ( ctx , data ) => { tlsClientHelloCallbackInvoked = true ; } ) ;
94122
95123 await writer . WriteAsync ( new byte [ 1 ] { 0x16 } ) ;
96- var middlewareTask = middleware . OnTlsClientHelloAsync ( transportConnection , CancellationToken . None ) ;
124+ var listenerTask = listener . OnTlsClientHelloAsync ( transportConnection , CancellationToken . None ) ;
97125 await writer . WriteAsync ( new byte [ 2 ] { 0x03 , 0x01 } ) ;
98126 await writer . WriteAsync ( new byte [ 2 ] { 0x00 , 0x20 } ) ;
99127 await writer . CompleteAsync ( ) ;
100128
101- await middlewareTask ;
129+ await listenerTask ;
102130 Assert . False ( tlsClientHelloCallbackInvoked ) ;
103131
104132 var readResult = await reader . ReadAsync ( ) ;
@@ -124,7 +152,7 @@ private async Task RunTlsClientHelloCallbackTest_WithMultipleSegments(
124152
125153 var fullLength = packets . Sum ( p => p . Length ) ;
126154
127- var middleware = new TlsListener (
155+ var listener = new TlsListener (
128156 tlsClientHelloBytesCallback : ( ctx , data ) =>
129157 {
130158 tlsClientHelloCallbackActual = true ;
@@ -137,7 +165,7 @@ private async Task RunTlsClientHelloCallbackTest_WithMultipleSegments(
137165
138166 // write first packet
139167 await writer . WriteAsync ( packets [ 0 ] ) ;
140- var middlewareTask = middleware . OnTlsClientHelloAsync ( transportConnection , CancellationToken . None ) ;
168+ var listenerTask = listener . OnTlsClientHelloAsync ( transportConnection , CancellationToken . None ) ;
141169
142170 /* It is a race condition (middleware's loop and writes here).
143171 * We don't know specifically how many packets will be read by middleware's loop
@@ -151,7 +179,7 @@ private async Task RunTlsClientHelloCallbackTest_WithMultipleSegments(
151179 await writer . WriteAsync ( packet ) ;
152180 }
153181 await writer . CompleteAsync ( ) ;
154- await middlewareTask ;
182+ await listenerTask ;
155183
156184 Assert . Equal ( tlsClientHelloCallbackExpected , tlsClientHelloCallbackActual ) ;
157185
@@ -175,7 +203,7 @@ private async Task RunTlsClientHelloCallbackTest(
175203
176204 var tlsClientHelloCallbackActual = false ;
177205
178- var middleware = new TlsListener (
206+ var listener = new TlsListener (
179207 tlsClientHelloBytesCallback : ( ctx , data ) =>
180208 {
181209 tlsClientHelloCallbackActual = true ;
@@ -190,7 +218,7 @@ private async Task RunTlsClientHelloCallbackTest(
190218 await writer . CompleteAsync ( ) ;
191219
192220 // call middleware and expect a callback
193- await middleware . OnTlsClientHelloAsync ( transportConnection , CancellationToken . None ) ;
221+ await listener . OnTlsClientHelloAsync ( transportConnection , CancellationToken . None ) ;
194222
195223 Assert . Equal ( tlsClientHelloCallbackExpected , tlsClientHelloCallbackActual ) ;
196224
0 commit comments