From 135247d85c4519e31f5e1b0459658147ab1a6781 Mon Sep 17 00:00:00 2001 From: Eric Drechsel Date: Mon, 15 May 2017 12:41:55 -0700 Subject: [PATCH] fix server panic trying to send on stream as client disconnects #1111 (#1115) --- transport/handler_server.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/transport/handler_server.go b/transport/handler_server.go index 24f306ba..31b0570e 100644 --- a/transport/handler_server.go +++ b/transport/handler_server.go @@ -179,11 +179,18 @@ func (a strAddr) String() string { return string(a) } // do runs fn in the ServeHTTP goroutine. func (ht *serverHandlerTransport) do(fn func()) error { + // Avoid a panic writing to closed channel. Imperfect but maybe good enough. select { - case ht.writes <- fn: - return nil case <-ht.closedCh: return ErrConnClosing + default: + select { + case ht.writes <- fn: + return nil + case <-ht.closedCh: + return ErrConnClosing + } + } }