From 08553d23c9e14e9c885a75c0423e3359419c56c8 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 16 Jul 2016 07:47:35 +0200 Subject: ParseAddr --- tracker/messages.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tracker/messages.go b/tracker/messages.go index 70719dc..1b625bb 100644 --- a/tracker/messages.go +++ b/tracker/messages.go @@ -1,6 +1,10 @@ package tracker import ( + "bytes" + "encoding/binary" + "errors" + "fmt" "io/ioutil" "log" "net" @@ -76,3 +80,16 @@ func (r Request) Get(announce string) (Response, error) { } return res, nil } + +func ParseAddr(b []byte) (string, error) { + if len(b) != 6 { + return "", errors.New("wrong length") + } + buf := bytes.NewReader(b[4:6]) + var port int16 + err := binary.Read(buf, binary.BigEndian, &port) + if err != nil { + return "", err + } + return fmt.Sprintf("%s:%d", net.IP(b[0:4]), port), nil +} -- cgit v1.2.3