From: Matt Joiner Date: Thu, 15 Feb 2018 04:21:51 +0000 (+1100) Subject: Add extra pedantic checks to requesting to try and flush out @deranjer's panics X-Git-Tag: v1.0.0~172 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=35b224ba362af711077f2c80ae17e9fbd50d1730;p=btrtrc.git Add extra pedantic checks to requesting to try and flush out @deranjer's panics --- diff --git a/connection.go b/connection.go index 235d0430..f70e0848 100644 --- a/connection.go +++ b/connection.go @@ -420,10 +420,12 @@ func (cn *connection) request(r request, mw messageWriter) bool { if !cn.PeerHasPiece(r.Index.Int()) { panic("requesting piece peer doesn't have") } - cn.requests[r] = struct{}{} if _, ok := cn.t.conns[cn]; !ok { panic("requesting but not in active conns") } + if cn.closed.IsSet() { + panic("requesting when connection is closed") + } if cn.PeerChoked { if cn.peerAllowedFast.Get(int(r.Index)) { torrent.Add("allowed fast requests sent", 1) @@ -431,6 +433,7 @@ func (cn *connection) request(r request, mw messageWriter) bool { panic("requesting while choked and not allowed fast") } } + cn.requests[r] = struct{}{} cn.t.pendingRequests[r]++ return mw(pp.Message{ Type: pp.Request, @@ -1384,6 +1387,9 @@ func (c *connection) deleteAllRequests() { for r := range c.requests { c.deleteRequest(r) } + if len(c.requests) != 0 { + panic(len(c.requests)) + } // for c := range c.t.conns { // c.tickleWriter() // }