]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Send port on announces when possible
authorMatt Joiner <anacrolix@gmail.com>
Thu, 20 Mar 2014 13:12:53 +0000 (00:12 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 20 Mar 2014 13:12:53 +0000 (00:12 +1100)
client.go

index 1c02c25f9cedeafead33e6da16b5367291584cc6..8d2ff06645e83e1d0c5e3658abdb7ed24ead1907 100644 (file)
--- 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