aboutsummaryrefslogtreecommitdiff
path: root/tracker/messages.go
diff options
context:
space:
mode:
Diffstat (limited to 'tracker/messages.go')
-rw-r--r--tracker/messages.go17
1 files changed, 17 insertions, 0 deletions
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
+}