From suggestions by @axet, this might be a thing sometimes.
 }
 
 func (t *Torrent) needData() bool {
+       if t.closed.IsSet() {
+               return false
+       }
        if !t.haveInfo() {
                return true
        }
 // Returns whether the client should make effort to seed the torrent.
 func (t *Torrent) seeding() bool {
        cl := t.cl
+       if t.closed.IsSet() {
+               return false
+       }
        if cl.config.NoUpload {
                return false
        }
 }
 
 func (t *Torrent) wantConns() bool {
+       if t.closed.IsSet() {
+               return false
+       }
        if !t.seeding() && !t.needData() {
                return false
        }