From fa6e360da40eef0bafc2929d3cd9e879f2c23ecb Mon Sep 17 00:00:00 2001 From: Leo Balduf Date: Sat, 2 Dec 2017 22:19:12 +0100 Subject: [PATCH] udp: set address family for connect metrics --- frontend/udp/frontend.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/udp/frontend.go b/frontend/udp/frontend.go index 1ce60c7..82e246c 100644 --- a/frontend/udp/frontend.go +++ b/frontend/udp/frontend.go @@ -6,6 +6,7 @@ import ( "bytes" "context" "encoding/binary" + "fmt" "math/rand" "net" "sync" @@ -273,6 +274,16 @@ func (t *Frontend) handleRequest(r Request, w ResponseWriter) (actionName string return } + af = new(bittorrent.AddressFamily) + if r.IP.To4() != nil { + *af = bittorrent.IPv4 + } else if len(r.IP) == net.IPv6len { // implies r.IP.To4() == nil + *af = bittorrent.IPv6 + } else { + // Should never happen - we got the IP straight from the UDP packet. + panic(fmt.Sprintf("udp: invalid IP: neither v4 nor v6, IP: %#v", r.IP)) + } + WriteConnectionID(w, txID, NewConnectionID(r.IP, timecache.Now(), t.PrivateKey)) case announceActionID, announceV6ActionID: @@ -314,9 +325,8 @@ func (t *Frontend) handleRequest(r Request, w ResponseWriter) (actionName string } else if len(r.IP) == net.IPv6len { // implies r.IP.To4() == nil req.AddressFamily = bittorrent.IPv6 } else { - log.Error("udp: invalid IP: neither v4 nor v6", log.Fields{"IP": r.IP}) - WriteError(w, txID, bittorrent.ErrInvalidIP) - return + // Should never happen - we got the IP straight from the UDP packet. + panic(fmt.Sprintf("udp: invalid IP: neither v4 nor v6, IP: %#v", r.IP)) } af = new(bittorrent.AddressFamily) *af = req.AddressFamily