Bladeren bron

conn: close timeout chan before relesing stream to prevent race

Chris Bannister 7 jaren geleden
bovenliggende
commit
95711e6c48
1 gewijzigde bestanden met toevoegingen van 2 en 2 verwijderingen
  1. 2 2
      conn.go

+ 2 - 2
conn.go

@@ -711,13 +711,13 @@ func (c *Conn) sendFrame(ctx context.Context, call *callReq, timeoutCh <-chan ti
 	case c.frameWriteArgChan <- call:
 		return nil
 	case <-timeoutCh:
-		c.releaseStream(call.streamID)
 		close(call.timeout)
+		c.releaseStream(call.streamID)
 		c.handleTimeout()
 		return ErrTimeoutNoResponse
 	case <-ctxDone:
-		c.releaseStream(call.streamID)
 		close(call.timeout)
+		c.releaseStream(call.streamID)
 		return ctx.Err()
 	case <-c.quit:
 		return ErrConnectionClosed