aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-28 00:17:54 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-28 00:17:54 +0200
commit73efd0495a823ab7b9a6b6a0a269d3516c52686f (patch)
treeec4531941ffe16e735bf1e29256d2eb5b92a8cc0
parent9c8cec0736e672ba0024938c5e940c8f709d7ee2 (diff)
Tweak Handshake
-rw-r--r--peer/id.go6
-rw-r--r--peer/messages.go9
-rw-r--r--peer/messages_test.go5
3 files changed, 16 insertions, 4 deletions
diff --git a/peer/id.go b/peer/id.go
index fa8c6a9..641fca6 100644
--- a/peer/id.go
+++ b/peer/id.go
@@ -12,3 +12,9 @@ func NewID() []byte {
hex.Encode(dst, src)
return dst
}
+
+func NewIDFixed() [20]byte {
+ ret := [20]byte{}
+ copy(ret[:], NewID())
+ return ret
+}
diff --git a/peer/messages.go b/peer/messages.go
index b2bbfc2..6cedecc 100644
--- a/peer/messages.go
+++ b/peer/messages.go
@@ -1,6 +1,9 @@
package peer
-import "io"
+import (
+ "encoding/binary"
+ "io"
+)
type Message int
@@ -38,8 +41,8 @@ type Handshake struct {
}
func (h Handshake) Encode(w io.Writer) {
- l := len(h.Proto)
- w.Write([]byte{byte(l)})
+ l := int8(len(h.Proto))
+ binary.Write(w, binary.BigEndian, l)
w.Write([]byte(h.Proto))
w.Write(h.Flags[:])
w.Write(h.InfoHash[:])
diff --git a/peer/messages_test.go b/peer/messages_test.go
index b47810e..113c090 100644
--- a/peer/messages_test.go
+++ b/peer/messages_test.go
@@ -6,7 +6,10 @@ import (
)
func TestHandshake(t *testing.T) {
- h := Handshake{Proto: Proto}
+ h := Handshake{
+ Proto: Proto,
+ PeerID: NewIDFixed(),
+ }
b := &bytes.Buffer{}
h.Encode(b)
t.Log(b.Bytes())