Skip to content

Commit 37fec61

Browse files
committed
Fix counters when reading or writing data to the socket
1 parent 3090c58 commit 37fec61

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

Diff for: network/client.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,10 @@ func (c *Client) Send(data []byte) (int, *gerr.GatewayDError) {
187187
}
188188

189189
sent := 0
190-
received := len(data)
190+
dataSize := len(data)
191191
for {
192-
if sent >= received {
192+
// If we've sent all the data, we must break the loop.
193+
if sent >= dataSize {
193194
break
194195
}
195196

@@ -240,13 +241,15 @@ func (c *Client) Receive() (int, []byte, *gerr.GatewayDError) {
240241
for ctx.Err() == nil {
241242
chunk := make([]byte, c.ReceiveChunkSize)
242243
read, err := c.conn.Read(chunk)
244+
if read > 0 {
245+
total += read
246+
buffer.Write(chunk[:read])
247+
}
243248
if err != nil {
244249
c.logger.Error().Err(err).Msg("Couldn't receive data from the server")
245250
span.RecordError(err)
246251
return total, buffer.Bytes(), gerr.ErrClientReceiveFailed.Wrap(err)
247252
}
248-
total += read
249-
buffer.Write(chunk[:read])
250253

251254
if read < c.ReceiveChunkSize {
252255
break

Diff for: network/proxy.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -727,19 +727,20 @@ func (pr *Proxy) receiveTrafficFromClient(conn net.Conn) ([]byte, *gerr.GatewayD
727727
for {
728728
chunk := make([]byte, pr.ClientConfig.ReceiveChunkSize)
729729
read, err := conn.Read(chunk)
730+
if read > 0 {
731+
total += read
732+
buffer.Write(chunk[:read])
733+
}
730734
if read == 0 || err != nil {
731735
pr.Logger.Debug().Err(err).Msg("Error reading from client")
732736
span.RecordError(err)
733737

734738
metrics.BytesReceivedFromClient.WithLabelValues(pr.GetGroupName(), pr.GetBlockName()).Observe(float64(read))
735739
metrics.TotalTrafficBytes.WithLabelValues(pr.GetGroupName(), pr.GetBlockName()).Observe(float64(read))
736740

737-
return chunk[:read], gerr.ErrReadFailed.Wrap(err)
741+
return buffer.Bytes(), gerr.ErrReadFailed.Wrap(err)
738742
}
739743

740-
total += read
741-
buffer.Write(chunk[:read])
742-
743744
if read < pr.ClientConfig.ReceiveChunkSize {
744745
break
745746
}

0 commit comments

Comments
 (0)