From: Matt Joiner Date: Tue, 7 Nov 2017 05:11:59 +0000 (+1100) Subject: Apply megacheck to torrent package X-Git-Tag: v1.0.0~343 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=9757f04cf8b0713b41890ca77b9acb3bf22f46e7;p=btrtrc.git Apply megacheck to torrent package --- diff --git a/client.go b/client.go index 5020e07b..47d3b54b 100644 --- a/client.go +++ b/client.go @@ -836,25 +836,13 @@ type deadlineReader struct { r io.Reader } -func (r deadlineReader) Read(b []byte) (n int, err error) { +func (r deadlineReader) Read(b []byte) (int, error) { // Keep-alives should be received every 2 mins. Give a bit of gracetime. - err = r.nc.SetReadDeadline(time.Now().Add(150 * time.Second)) + err := r.nc.SetReadDeadline(time.Now().Add(150 * time.Second)) if err != nil { - err = fmt.Errorf("error setting read deadline: %s", err) - } - n, err = r.r.Read(b) - // Convert common errors into io.EOF. - // if err != nil { - // if opError, ok := err.(*net.OpError); ok && opError.Op == "read" && opError.Err == syscall.ECONNRESET { - // err = io.EOF - // } else if netErr, ok := err.(net.Error); ok && netErr.Timeout() { - // if n != 0 { - // panic(n) - // } - // err = io.EOF - // } - // } - return + return 0, fmt.Errorf("error setting read deadline: %s", err) + } + return r.r.Read(b) } func handleEncryption( diff --git a/client_test.go b/client_test.go index c8994b6c..f589186c 100644 --- a/client_test.go +++ b/client_test.go @@ -423,7 +423,7 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) { } func assertReadAllGreeting(t *testing.T, r io.ReadSeeker) { - pos, err := r.Seek(0, os.SEEK_SET) + pos, err := r.Seek(0, io.SeekStart) assert.NoError(t, err) assert.EqualValues(t, 0, pos) _greeting, err := ioutil.ReadAll(r) @@ -573,6 +573,7 @@ func TestCompletedPieceWrongSize(t *testing.T) { }, } b, err := bencode.Marshal(info) + require.NoError(t, err) tt, new, err := cl.AddTorrentSpec(&TorrentSpec{ InfoBytes: b, InfoHash: metainfo.HashBytes(b), @@ -634,12 +635,12 @@ func TestResponsive(t *testing.T) { reader.SetReadahead(0) reader.SetResponsive() b := make([]byte, 2) - _, err = reader.Seek(3, os.SEEK_SET) + _, err = reader.Seek(3, io.SeekStart) require.NoError(t, err) _, err = io.ReadFull(reader, b) assert.Nil(t, err) assert.EqualValues(t, "lo", string(b)) - _, err = reader.Seek(11, os.SEEK_SET) + _, err = reader.Seek(11, io.SeekStart) require.NoError(t, err) n, err := io.ReadFull(reader, b) assert.Nil(t, err) @@ -677,13 +678,13 @@ func TestTorrentDroppedDuringResponsiveRead(t *testing.T) { reader.SetReadahead(0) reader.SetResponsive() b := make([]byte, 2) - _, err = reader.Seek(3, os.SEEK_SET) + _, err = reader.Seek(3, io.SeekStart) require.NoError(t, err) _, err = io.ReadFull(reader, b) assert.Nil(t, err) assert.EqualValues(t, "lo", string(b)) go leecherTorrent.Drop() - _, err = reader.Seek(11, os.SEEK_SET) + _, err = reader.Seek(11, io.SeekStart) require.NoError(t, err) n, err := reader.Read(b) assert.EqualError(t, err, "torrent closed") diff --git a/connection.go b/connection.go index 54ebf59b..6b83868e 100644 --- a/connection.go +++ b/connection.go @@ -145,7 +145,7 @@ func eventAgeString(t time.Time) string { if t.IsZero() { return "never" } - return fmt.Sprintf("%.2fs ago", time.Now().Sub(t).Seconds()) + return fmt.Sprintf("%.2fs ago", time.Since(t).Seconds()) } func (cn *connection) connectionFlags() (ret string) { @@ -871,7 +871,7 @@ func (c *connection) mainReadLoop() error { case pp.Piece: c.receiveChunk(&msg) if len(msg.Piece) == int(t.chunkSize) { - t.chunkPool.Put(msg.Piece) + t.chunkPool.Put(&msg.Piece) } case pp.Extended: switch msg.ExtendedID { @@ -1043,9 +1043,9 @@ func (c *connection) receiveChunk(msg *pp.Message) { c.UsefulChunksReceived++ c.lastUsefulChunkReceived = time.Now() - if t.fastestConn != c { - // log.Printf("setting fastest connection %p", c) - } + // if t.fastestConn != c { + // log.Printf("setting fastest connection %p", c) + // } t.fastestConn = c // Need to record that it hasn't been written yet, before we attempt to do @@ -1087,7 +1087,6 @@ func (c *connection) receiveChunk(msg *pp.Message) { cl.event.Broadcast() t.publishPieceChange(int(req.Index)) - return } // Also handles choking and unchoking of the remote peer. diff --git a/peer_protocol/decoder_test.go b/peer_protocol/decoder_test.go index 7e538add..0662e181 100644 --- a/peer_protocol/decoder_test.go +++ b/peer_protocol/decoder_test.go @@ -48,6 +48,6 @@ func BenchmarkDecodePieces(t *testing.B) { var msg Message require.NoError(t, d.Decode(&msg)) // WWJD - d.Pool.Put(msg.Piece) + d.Pool.Put(&msg.Piece) } } diff --git a/peer_protocol/protocol.go b/peer_protocol/protocol.go index 8c309bcb..0dc5784c 100644 --- a/peer_protocol/protocol.go +++ b/peer_protocol/protocol.go @@ -211,7 +211,7 @@ func (d *Decoder) Decode(msg *Message) (err error) { break } //msg.Piece, err = ioutil.ReadAll(r) - b := d.Pool.Get().([]byte) + b := *d.Pool.Get().(*[]byte) n, err := io.ReadFull(r, b) if err != nil { if err != io.ErrUnexpectedEOF || n != int(length-9) { diff --git a/reader.go b/reader.go index 5afab9aa..5c3bccad 100644 --- a/reader.go +++ b/reader.go @@ -4,7 +4,6 @@ import ( "errors" "io" "log" - "os" "sync" "github.com/anacrolix/missinggo" @@ -236,11 +235,11 @@ func (r *Reader) Seek(off int64, whence int) (ret int64, err error) { r.mu.Lock() defer r.mu.Unlock() switch whence { - case os.SEEK_SET: + case io.SeekStart: r.pos = off - case os.SEEK_CUR: + case io.SeekCurrent: r.pos += off - case os.SEEK_END: + case io.SeekEnd: r.pos = r.t.info.TotalLength() + off default: err = errors.New("bad whence") diff --git a/torrent.go b/torrent.go index d1fe406d..5eaa3d42 100644 --- a/torrent.go +++ b/torrent.go @@ -176,7 +176,8 @@ func (t *Torrent) setChunkSize(size pp.Integer) { t.chunkSize = size t.chunkPool = &sync.Pool{ New: func() interface{} { - return make([]byte, size) + b := make([]byte, size) + return &b }, } } @@ -1000,7 +1001,7 @@ func (t *Torrent) getConnPieceInclination() []int { } func (t *Torrent) putPieceInclination(pi []int) { - t.connPieceInclinationPool.Put(pi) + t.connPieceInclinationPool.Put(&pi) pieceInclinationsPut.Add(1) } diff --git a/tracker_scraper.go b/tracker_scraper.go index 1ddbf9ae..3463133c 100644 --- a/tracker_scraper.go +++ b/tracker_scraper.go @@ -111,7 +111,7 @@ func (me *trackerScraper) Run() { me.lastAnnounce = ar me.t.cl.mu.Unlock() - intervalChan := time.After(ar.Completed.Add(ar.Interval).Sub(time.Now())) + intervalChan := time.After(time.Until(ar.Completed.Add(ar.Interval))) select { case <-me.t.closed.LockedChan(&me.t.cl.mu):