From a1b95d499dffa5e8dc7917b2d70c1dc6ddc5cac5 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 21 Mar 2014 00:12:53 +1100 Subject: [PATCH] Send port on announces when possible --- client.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client.go b/client.go index 1c02c25f..8d2ff066 100644 --- a/client.go +++ b/client.go @@ -976,10 +976,28 @@ func (me *Client) AddTorrent(metaInfo *metainfo.MetaInfo) error { return nil } +func (cl *Client) listenerAnnouncePort() (port int16) { + l := cl.Listener + if l == nil { + return + } + addr := l.Addr() + switch data := addr.(type) { + case *net.TCPAddr: + return int16(data.Port) + case *net.UDPAddr: + return int16(data.Port) + default: + log.Printf("unknown listener addr type: %T", addr) + } + return +} + func (cl *Client) announceTorrent(t *Torrent) { req := tracker.AnnounceRequest{ Event: tracker.Started, NumWant: -1, + Port: cl.listenerAnnouncePort(), } req.PeerId = cl.PeerId req.InfoHash = t.InfoHash -- 2.48.1