From 955e337b787e5cad8f9ff7f8e7354fbd31cad6ee Mon Sep 17 00:00:00 2001
From: Matt Joiner <anacrolix@gmail.com>
Date: Wed, 20 Jan 2021 14:23:25 +1100
Subject: [PATCH] Generate a RemoteAddr for webseed Peers

---
 torrent.go      |  1 +
 url-net-addr.go | 26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+)
 create mode 100644 url-net-addr.go

diff --git a/torrent.go b/torrent.go
index c7cc0255..0cfe31f0 100644
--- a/torrent.go
+++ b/torrent.go
@@ -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
index 00000000..6558e89e
--- /dev/null
+++ b/url-net-addr.go
@@ -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}
+}
-- 
2.51.0