aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-16 07:47:35 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-16 07:47:35 +0200
commit08553d23c9e14e9c885a75c0423e3359419c56c8 (patch)
tree25b7ffdfdc9360124e1c37ea2b9e81fc7181bbde
parent8c0de965ceb1a1376aa70dba569ac05659a22936 (diff)
ParseAddr
-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
+}