// handleEvent checks to see whether an announce has an event and if it does, // properly handles that event. func (tkr *Tracker) handleEvent(ann *models.Announce) (snatched bool, err error) { var snatchedv4, snatchedv6 bool if ann.HasIPv4() { snatchedv4, err = tkr.handlePeerEvent(ann, ann.PeerV4) if err != nil { return } } if ann.HasIPv6() { snatchedv6, err = tkr.handlePeerEvent(ann, ann.PeerV6) if err != nil { return } } if snatchedv4 || snatchedv6 { err = tkr.IncrementTorrentSnatches(ann.Torrent.Infohash) if err != nil { return } ann.Torrent.Snatches++ return true, nil } return false, nil }
// updateSwarm handles the changes to a torrent's swarm given an announce. func (tkr *Tracker) updateSwarm(ann *models.Announce) (created bool, err error) { var createdv4, createdv6 bool tkr.TouchTorrent(ann.Torrent.Infohash) if ann.HasIPv4() { createdv4, err = tkr.updatePeer(ann, ann.PeerV4) if err != nil { return } } if ann.HasIPv6() { createdv6, err = tkr.updatePeer(ann, ann.PeerV6) if err != nil { return } } return createdv4 || createdv6, nil }