From a7c374cff7616f68fadcbf146c219849992b6e43 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 6 Aug 2015 08:59:30 +1000 Subject: [PATCH] dht: Short circuit non-DHT traffic --- dht/dht.go | 5 +++++ dht/expvar.go | 1 + 2 files changed, 6 insertions(+) diff --git a/dht/dht.go b/dht/dht.go index 6585a6ce..91276855 100644 --- a/dht/dht.go +++ b/dht/dht.go @@ -604,6 +604,11 @@ func (s *Server) init() (err error) { } func (s *Server) processPacket(b []byte, addr dHTAddr) { + if len(b) < 2 || b[0] != 'd' || b[len(b)-1] != 'e' { + // KRPC messages are bencoded dicts. + readNotKRPCDict.Add(1) + return + } var d Msg err := bencode.Unmarshal(b, &d) if err != nil { diff --git a/dht/expvar.go b/dht/expvar.go index fe1fc06c..4fdf69ce 100644 --- a/dht/expvar.go +++ b/dht/expvar.go @@ -7,6 +7,7 @@ import ( var ( read = expvar.NewInt("dhtRead") readBlocked = expvar.NewInt("dhtReadBlocked") + readNotKRPCDict = expvar.NewInt("dhtReadNotKRPCDict") readUnmarshalError = expvar.NewInt("dhtReadUnmarshalError") readQuery = expvar.NewInt("dhtReadQuery") announceErrors = expvar.NewInt("dhtAnnounceErrors") -- 2.48.1