Update byte counts unconditionally.

Rather than updating the byte counts in the error path and after the error
path, do it unconditionally before checking the error.
This commit is contained in:
Dave Collins 2014-02-05 11:50:15 -06:00
parent c51df0ca3c
commit 6f063e0c1b

14
peer.go
View file

@ -955,13 +955,11 @@ func (p *peer) handlePongMsg(msg *btcwire.MsgPong) {
// readMessage reads the next bitcoin message from the peer with logging. // readMessage reads the next bitcoin message from the peer with logging.
func (p *peer) readMessage() (btcwire.Message, []byte, error) { func (p *peer) readMessage() (btcwire.Message, []byte, error) {
n, msg, buf, err := btcwire.ReadMessageN(p.conn, p.protocolVersion, p.btcnet) n, msg, buf, err := btcwire.ReadMessageN(p.conn, p.protocolVersion, p.btcnet)
if err != nil {
p.bytesReceived += uint64(n)
atomic.AddUint64(&p.server.bytesReceived, uint64(n))
return nil, nil, err
}
p.bytesReceived += uint64(n) p.bytesReceived += uint64(n)
atomic.AddUint64(&p.server.bytesReceived, uint64(n)) atomic.AddUint64(&p.server.bytesReceived, uint64(n))
if err != nil {
return nil, nil, err
}
// Use closures to log expensive operations so they are only run when // Use closures to log expensive operations so they are only run when
// the logging level requires it. // the logging level requires it.
@ -1026,15 +1024,13 @@ func (p *peer) writeMessage(msg btcwire.Message) {
// Write the message to the peer. // Write the message to the peer.
n, err := btcwire.WriteMessageN(p.conn, msg, p.protocolVersion, p.btcnet) n, err := btcwire.WriteMessageN(p.conn, msg, p.protocolVersion, p.btcnet)
p.bytesSent += uint64(n)
atomic.AddUint64(&p.server.bytesSent, uint64(n))
if err != nil { if err != nil {
p.bytesSent += uint64(n)
atomic.AddUint64(&p.server.bytesSent, uint64(n))
p.Disconnect() p.Disconnect()
p.logError("Can't send message: %v", err) p.logError("Can't send message: %v", err)
return return
} }
p.bytesSent += uint64(n)
atomic.AddUint64(&p.server.bytesSent, uint64(n))
} }
// isAllowedByRegression returns whether or not the passed error is allowed by // isAllowedByRegression returns whether or not the passed error is allowed by