File tree Expand file tree Collapse file tree 1 file changed +9
-0
lines changed 
src/Servers/Kestrel/test/InMemory.FunctionalTests/Http2 Expand file tree Collapse file tree 1 file changed +9
-0
lines changed Original file line number Diff line number Diff line change @@ -516,11 +516,18 @@ await InitializeConnectionAsync(async context =>
516516    [ Fact ] 
517517    public  async  Task  ExtendedCONNECTMethod_CanHaveNon200ResponseWithBody ( ) 
518518    { 
519+         var  finishedSendingTcs  =  new  TaskCompletionSource ( TaskCreationOptions . RunContinuationsAsynchronously ) ; 
520+ 
519521        await  InitializeConnectionAsync ( async  context => 
520522        { 
521523            var  connectFeature  =  context . Features . Get < IHttpExtendedConnectFeature > ( ) ; 
522524            Assert . True ( connectFeature . IsExtendedConnect ) ; 
523525
526+             // The EndStreamReceived flag might not have been sent let alone received by the server by the time application code completes 
527+             // which would result in a RST_STREAM being sent to the client. We wait for the data frame to finish sending 
528+             // before allowing application code to complete (relies on inline Pipe completions which we use for tests) 
529+             await  finishedSendingTcs . Task ; 
530+ 
524531            context . Response . StatusCode  =  Http . StatusCodes . Status418ImATeapot ; 
525532            context . Response . ContentLength  =  2 ; 
526533            await  context . Response . Body . WriteAsync ( new  byte [ 1 ]  {  0x01  } ) ; 
@@ -543,6 +550,8 @@ await InitializeConnectionAsync(async context =>
543550
544551        await  SendDataAsync ( 1 ,  new  byte [ 10241 ] ,  endStream :  true ) ; 
545552
553+         finishedSendingTcs . SetResult ( ) ; 
554+ 
546555        var  headersFrame  =  await  ExpectAsync ( Http2FrameType . HEADERS , 
547556            withLength :  40 , 
548557            withFlags :  ( byte ) Http2HeadersFrameFlags . END_HEADERS , 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments