]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Generate a RemoteAddr for webseed Peers
authorMatt Joiner <anacrolix@gmail.com>
Wed, 20 Jan 2021 03:23:25 +0000 (14:23 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 25 Jan 2021 04:49:48 +0000 (15:49 +1100)
torrent.go
url-net-addr.go [new file with mode: 0644]

index c7cc02554afdde5e707ac00d6a9e73d337d0679b..0cfe31f0777deb3e5ac9587c5fe6aada7ddc563f 100644 (file)
@@ -2114,6 +2114,7 @@ func (t *Torrent) addWebSeed(url string) {
                        reconciledHandshakeStats: true,
                        peerSentHaveAll:          true,
                        PeerMaxRequests:          maxRequests,
+                       RemoteAddr:               remoteAddrFromUrl(url),
                },
                client: webseed.Client{
                        HttpClient: http.DefaultClient,
diff --git a/url-net-addr.go b/url-net-addr.go
new file mode 100644 (file)
index 0000000..6558e89
--- /dev/null
@@ -0,0 +1,26 @@
+package torrent
+
+import (
+       "net"
+       "net/url"
+)
+
+type urlNetAddr struct {
+       u *url.URL
+}
+
+func (me urlNetAddr) Network() string {
+       return me.u.Scheme
+}
+
+func (me urlNetAddr) String() string {
+       return me.u.Host
+}
+
+func remoteAddrFromUrl(urlStr string) net.Addr {
+       u, err := url.Parse(urlStr)
+       if err != nil {
+               return nil
+       }
+       return urlNetAddr{u}
+}