return
}
if string(b[:20]) != pp.Protocol {
- err = fmt.Errorf("wrong protocol: %#v", string(b[:20]))
+ // err = fmt.Errorf("wrong protocol: %#v", string(b[:20]))
return
}
if 8 != copy(conn.PeerExtensions[:], b[20:]) {
log.Printf("error adding peers from dht for torrent %q: %s", t, err)
break getPeers
}
- log.Printf("got %d peers from dht for torrent %q", len(cps), t)
+ // log.Printf("got %d peers from dht for torrent %q", len(cps), t)
}
}
ps.Close()
import (
"bitbucket.org/anacrolix/go.torrent/tracker"
"bitbucket.org/anacrolix/go.torrent/util"
- "bytes"
"crypto"
_ "crypto/sha1"
"encoding/binary"
var d Msg
err = bencode.Unmarshal(b[:n], &d)
if err != nil {
- // TODO: What are these messages?
- if !bytes.HasPrefix(b[:], []byte("A\x00")) {
+ if se, ok := err.(*bencode.SyntaxError); !ok || se.Offset != 0 {
log.Printf("%s: received bad krpc message: %s: %q", s, err, b[:n])
}
continue
func (s *Server) writeToNode(b []byte, node *net.UDPAddr) (err error) {
n, err := s.Socket.WriteTo(b, node)
if err != nil {
+ err = fmt.Errorf("error writing %d bytes to %s: %s", len(b), node, err)
return
}
if n != len(b) {
_, err = io.ReadFull(d.R, b)
if err == io.EOF {
err = io.ErrUnexpectedEOF
- return
}
if err != nil {
return
}
r := bytes.NewReader(b)
+ // Check that all of r was utilized.
defer func() {
- written, _ := io.Copy(ioutil.Discard, r)
- if written != 0 && err == nil {
- err = fmt.Errorf("short read on message type %d, left %d bytes", msg.Type, written)
- } else if err == io.EOF {
- err = io.ErrUnexpectedEOF
+ if err != nil {
+ return
+ }
+ if r.Len() != 0 {
+ err = fmt.Errorf("%d bytes unused in message type %d", r.Len(), msg.Type)
}
}()
msg.Keepalive = false