diff --git a/internal/proto/codec/full.go b/internal/proto/codec/full.go index 43bbd46637..e0bfc0621a 100644 --- a/internal/proto/codec/full.go +++ b/internal/proto/codec/full.go @@ -36,23 +36,19 @@ func (i *Full) Write(w io.Writer, b *bin.Buffer) error { return err } - if err := writeFull(w, int(atomic.LoadInt64(&i.wSeqNo)), b); err != nil { + if err := writeFull(w, int(atomic.AddInt64(&i.wSeqNo, 1)-1), b); err != nil { return xerrors.Errorf("write full: %w", err) } - atomic.AddInt64(&i.wSeqNo, 1) - return nil } // Read fills buffer with received message. func (i *Full) Read(r io.Reader, b *bin.Buffer) error { - if err := readFull(r, int(atomic.LoadInt64(&i.rSeqNo)), b); err != nil { + if err := readFull(r, int(atomic.AddInt64(&i.rSeqNo, 1)-1), b); err != nil { return xerrors.Errorf("read full: %w", err) } - atomic.AddInt64(&i.rSeqNo, 1) - if err := checkProtocolError(b); err != nil { return err }