File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -202,7 +202,7 @@ func (r *receiver) run(ctx context.Context, c *channel) {
202202 if ! ok {
203203 // treat all errors that are not an rpc status as terminal.
204204 // all others poison the connection.
205- r .err = err
205+ r .err = filterCloseErr ( err )
206206 return
207207 }
208208 }
@@ -328,22 +328,21 @@ func (c *Client) recv(resp *Response, msg *message) error {
328328//
329329// This purposely ignores errors with a wrapped cause.
330330func filterCloseErr (err error ) error {
331- if err == nil {
331+ switch {
332+ case err == nil :
332333 return nil
333- }
334-
335- if err == io .EOF {
334+ case err == io .EOF :
336335 return ErrClosed
337- }
338-
339- if strings .Contains (err .Error (), "use of closed network connection" ) {
336+ case errors .Cause (err ) == io .EOF :
340337 return ErrClosed
341- }
342-
343- // if we have an epipe on a write, we cast to errclosed
344- if oerr , ok := err .(* net.OpError ); ok && oerr .Op == "write" {
345- if serr , ok := oerr .Err .(* os.SyscallError ); ok && serr .Err == syscall .EPIPE {
346- return ErrClosed
338+ case strings .Contains (err .Error (), "use of closed network connection" ):
339+ return ErrClosed
340+ default :
341+ // if we have an epipe on a write, we cast to errclosed
342+ if oerr , ok := err .(* net.OpError ); ok && oerr .Op == "write" {
343+ if serr , ok := oerr .Err .(* os.SyscallError ); ok && serr .Err == syscall .EPIPE {
344+ return ErrClosed
345+ }
347346 }
348347 }
349348
Original file line number Diff line number Diff line change @@ -351,7 +351,7 @@ func TestClientEOF(t *testing.T) {
351351 }
352352
353353 // shutdown the server so the client stops receiving stuff.
354- if err := server .Shutdown ( ctx ); err != nil {
354+ if err := server .Close ( ); err != nil {
355355 t .Fatal (err )
356356 }
357357 if err := <- errs ; err != ErrServerClosed {
You can’t perform that action at this time.
0 commit comments