Merge pull request #280 from fooofei/bug/review

CodeReview: fix resource leak && shorter code
This commit is contained in:
Zack 2020-10-04 08:09:06 -07:00 committed by GitHub
commit 626490545a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 28 deletions

View File

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"encoding/binary" "encoding/binary"
"fmt" "fmt"
"io"
"net" "net"
"time" "time"
@ -85,22 +86,15 @@ func (c *Comm) Read() (buf []byte, numBytes int, bs []byte, err error) {
if err := c.connection.SetReadDeadline(time.Now().Add(3 * time.Hour)); err != nil { if err := c.connection.SetReadDeadline(time.Now().Add(3 * time.Hour)); err != nil {
log.Warnf("error setting read deadline: %v", err) log.Warnf("error setting read deadline: %v", err)
} }
// must clear the timeout setting
defer c.connection.SetDeadline(time.Time{})
// read until we get 4 bytes for the header // read until we get 4 bytes for the header
var header []byte header := make([]byte, 4)
numBytes = 4 _, err = io.ReadFull(c.connection, header)
for { if err != nil {
tmp := make([]byte, numBytes-len(header)) log.Debugf("initial read error: %v", err)
n, errRead := c.connection.Read(tmp) return
if errRead != nil {
err = errRead
log.Debugf("initial read error: %v", err)
return
}
header = append(header, tmp[:n]...)
if numBytes == len(header) {
break
}
} }
var numBytesUint32 uint32 var numBytesUint32 uint32
@ -117,25 +111,16 @@ func (c *Comm) Read() (buf []byte, numBytes int, bs []byte, err error) {
log.Debug(err) log.Debug(err)
return return
} }
buf = make([]byte, 0)
// shorten the reading deadline in case getting weird data // shorten the reading deadline in case getting weird data
if err := c.connection.SetReadDeadline(time.Now().Add(10 * time.Second)); err != nil { if err := c.connection.SetReadDeadline(time.Now().Add(10 * time.Second)); err != nil {
log.Warnf("error setting read deadline: %v", err) log.Warnf("error setting read deadline: %v", err)
} }
for { buf = make([]byte, numBytes)
// log.Debugf("bytes: %d/%d", len(buf), numBytes) _, err = io.ReadFull(c.connection, buf)
tmp := make([]byte, numBytes-len(buf)) if err != nil {
n, errRead := c.connection.Read(tmp) log.Debugf("consecutive read error: %v", err)
if errRead != nil { return
err = errRead
log.Debugf("consecutive read error: %v", err)
return
}
buf = append(buf, tmp[:n]...)
if numBytes == len(buf) {
break
}
} }
return return
} }

View File

@ -35,6 +35,7 @@ func compress(src []byte, dest io.Writer, level int) {
compressor, err := flate.NewWriter(dest, level) compressor, err := flate.NewWriter(dest, level)
if err != nil { if err != nil {
log.Debugf("error level data: %v", err) log.Debugf("error level data: %v", err)
return
} }
if _, err := compressor.Write(src); err != nil { if _, err := compressor.Write(src); err != nil {
log.Debugf("error writing data: %v", err) log.Debugf("error writing data: %v", err)

View File

@ -241,6 +241,7 @@ func RandomFileName() (fname string, err error) {
return return
} }
fname = f.Name() fname = f.Name()
_ = f.Close()
return return
} }