From 1852e5805da456aa81f7c7c7dd96eeed050956b0 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 24 Jun 2014 23:18:30 +1000 Subject: [PATCH] DHT default server ID generated using hostname and server address --- dht/dht.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/dht/dht.go b/dht/dht.go index d7e8e92a..c251cbcb 100644 --- a/dht/dht.go +++ b/dht/dht.go @@ -1,7 +1,8 @@ package dht import ( - "crypto/rand" + "crypto" + _ "crypto/sha1" "encoding/binary" "errors" "fmt" @@ -9,6 +10,7 @@ import ( "io" "log" "net" + "os" "sync" "time" ) @@ -57,9 +59,18 @@ type transaction struct { func (s *Server) setDefaults() { if s.ID == "" { var id [20]byte - _, err := rand.Read(id[:]) + h := crypto.SHA1.New() + ss, err := os.Hostname() if err != nil { - panic(err) + log.Print(err) + } + ss += s.Socket.LocalAddr().String() + h.Write([]byte(ss)) + if b := h.Sum(id[:0:20]); len(b) != 20 { + panic(len(b)) + } + if len(id) != 20 { + panic(len(id)) } s.ID = string(id[:]) }