Skip to content

Commit

Permalink
client:fix ttrpc send hang
Browse files Browse the repository at this point in the history
Signed-off-by: ningmingxiao <[email protected]>
  • Loading branch information
ningmingxiao committed Sep 11, 2024
1 parent 3f02183 commit a98ded8
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -535,26 +535,34 @@ func (c *Client) dispatch(ctx context.Context, req *Request, resp *Response) err
return err
}

s, err := c.createStream(0, p)
if err != nil {
return err
}
defer c.deleteStream(s)
var s *stream
ch := make(chan error)
go func() {
s, err = c.createStream(0, p)
ch <- err
}()

var msg *streamMessage
select {
case <-ctx.Done():
return ctx.Err()
case <-c.ctx.Done():
return ErrClosed
case <-s.recvClose:
// If recv has a pending message, process that first
case err := <-ch:
defer c.deleteStream(s)
if err != nil {
return err
}
select {
case <-s.recvClose:
// If recv has a pending message, process that first
select {
case msg = <-s.recv:
default:
return s.recvErr
}
case msg = <-s.recv:
default:
return s.recvErr
}
case msg = <-s.recv:
}

if msg.header.Type == messageTypeResponse {
Expand Down

0 comments on commit a98ded8

Please sign in to comment.