Add extra pedantic checks to requesting to try and flush out @deranjer's panics

This commit is contained in:
Matt Joiner 2018-02-15 15:21:51 +11:00
parent d69cfbc419
commit 35b224ba36
1 changed files with 7 additions and 1 deletions

View File

@ -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()
// }