• Tom Bergan's avatar
    http2: fix flake in TestServer_Push_StateTransitions · 4aaac4bb
    Tom Bergan authored
    I believe there were two bugs, both fixed by this CL.
    
    * Previously, we checked stateHalfClosedRemote before waiting for the
      PUSH_PROMISE. However, the pushed stream is not created until the promise
      is written, so the stream may not have started yet, which means we'd see
      stateIdle instead of stateHalfClosedRemote.
    
    * The push reponse handler cannot write the response until after we
      check the pushed stream state. Otherwise, the response might finish
      just before we check the stream state and we'll see stateClosed instead
      of stateHalfClosedRemote.
    
    Test passes with -count 1000.
    
    Fixes golang/go#18559
    
    Change-Id: I61f62635957e061fba905a41dcb15cd4e563031a
    Reviewed-on: https://go-review.googlesource.com/34984
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Run-TryBot: Tom Bergan <tombergan@google.com>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    4aaac4bb
server_push_test.go 14 KB