]> Sergey Matveev's repositories - btrtrc.git/commitdiff
dht: Short circuit non-DHT traffic
authorMatt Joiner <anacrolix@gmail.com>
Wed, 5 Aug 2015 22:59:30 +0000 (08:59 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 5 Aug 2015 22:59:30 +0000 (08:59 +1000)
dht/dht.go
dht/expvar.go

index 6585a6ce24d0c6b794dbb94a410a8a508355616b..912768556dc07c83a1df87c42f0a168903ef51c4 100644 (file)
@@ -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 {
index fe1fc06cb4dfbc1f08dc3c4e32919d9312c2402a..4fdf69ce8b05fdec0d32b05e9182a1909b8f7b7c 100644 (file)
@@ -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")