defer t.dropConnection(c)
c.startWriter()
cl.sendInitialMessages(c, t)
- c.updateRequestsTimer = time.AfterFunc(math.MaxInt64, func() {
- if c.needRequestUpdate != "" {
- return
- }
- if c.actualRequestState.Requests.IsEmpty() {
- panic("updateRequestsTimer should have been stopped")
- }
- c.updateRequests("updateRequestsTimer")
- })
+ c.updateRequestsTimer = time.AfterFunc(math.MaxInt64, c.updateRequestsTimerFunc)
c.updateRequestsTimer.Stop()
err := c.mainReadLoop()
if err != nil {
return nil
}
+func (c *PeerConn) updateRequestsTimerFunc() {
+ c.locker().Lock()
+ defer c.locker().Unlock()
+ if c.needRequestUpdate != "" {
+ return
+ }
+ if c.actualRequestState.Requests.IsEmpty() {
+ panic("updateRequestsTimer should have been stopped")
+ }
+ c.updateRequests("updateRequestsTimer")
+}
+
// Maximum pending requests we allow peers to send us. If peer requests are buffered on read, this
// instructs the amount of memory that might be used to cache pending writes. Assuming 512KiB
// (1<<19) cached for sending, for 16KiB (1<<14) chunks.