]> Sergey Matveev's repositories - btrtrc.git/commitdiff
dht: Improve bad KRPC message screening
authorMatt Joiner <anacrolix@gmail.com>
Mon, 1 Dec 2014 23:01:55 +0000 (17:01 -0600)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 1 Dec 2014 23:01:55 +0000 (17:01 -0600)
dht/dht.go

index 8db143c834acc6aa9389eda753374e180302c02a..ec8e86e74e1cdfa6fe9fe9596c9e32ef5edae3f1 100644 (file)
@@ -289,14 +289,17 @@ func (s *Server) processPacket(b []byte, addr dHTAddr) {
        var d Msg
        err := bencode.Unmarshal(b, &d)
        if err != nil {
-               if se, ok := err.(*bencode.SyntaxError); !ok || se.Offset != 0 {
-                       log.Printf("%s: received bad krpc message: %s%s", s, err, func() string {
-                               if se.What == io.ErrUnexpectedEOF {
-                                       return ""
+               func() {
+                       if se, ok := err.(*bencode.SyntaxError); ok {
+                               if b[se.Offset] == 0 {
+                                       return
                                }
-                               return fmt.Sprintf(": %q", b)
-                       }())
-               }
+                               if se.Offset == 0 {
+                                       return
+                               }
+                       }
+                       log.Printf("%s: received bad krpc message: %s: %q", s, err, b)
+               }()
                return
        }
        s.mu.Lock()