git: return number of bytes accepted, not written
This commit is contained in:
parent
e813409b81
commit
df9514a138
@ -45,9 +45,11 @@ func NewPacketWriter(w io.Writer, c int) *PacketWriter {
|
||||
// the remaining data in the buffer, and write the terminating bytes to the
|
||||
// underlying packet stream.
|
||||
//
|
||||
// Write returns the number of bytes in "p" actually written to the underlying
|
||||
// protocol stream, not including the number of bytes written in those packets
|
||||
// headers. If any error was encountered while either buffering or writing, that
|
||||
// Write returns the number of bytes in "p" accepted into the writer, which
|
||||
// _MAY_ be written to the underlying protocol stream, or may be written into
|
||||
// the internal buffer.
|
||||
//
|
||||
// If any error was encountered while either buffering or writing, that
|
||||
// error is returned, along with the number of bytes written to the underlying
|
||||
// protocol stream, as described above.
|
||||
func (w *PacketWriter) Write(p []byte) (int, error) {
|
||||
@ -58,15 +60,12 @@ func (w *PacketWriter) Write(p []byte) (int, error) {
|
||||
// stored in the buffer, and then write the a packet termination
|
||||
// sequence.
|
||||
|
||||
flushed, err := w.flush()
|
||||
if err != nil {
|
||||
if _, err := w.flush(); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
n = n + flushed
|
||||
|
||||
if err = w.proto.writeFlush(); err != nil {
|
||||
return n, err
|
||||
if err := w.proto.writeFlush(); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,16 +82,16 @@ func (w *PacketWriter) Write(p []byte) (int, error) {
|
||||
// have in the internal buffer.
|
||||
p = p[m:]
|
||||
|
||||
n = n + m
|
||||
|
||||
if len(w.buf) == MaxPacketLength {
|
||||
// If we were able to grab an entire packet's worth of
|
||||
// data, flush the buffer.
|
||||
|
||||
flushed, err := w.flush()
|
||||
if err != nil {
|
||||
if _, err := w.flush(); err != nil {
|
||||
return n, err
|
||||
}
|
||||
|
||||
n = n + flushed
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,8 +12,8 @@ func TestPacketWriterWritesPacketsShorterThanMaxPacketSize(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
|
||||
w := NewPacketWriter(&buf, 0)
|
||||
assertWriterWrite(t, w, []byte("Hello, world!"), 0)
|
||||
assertWriterWrite(t, w, nil, len("Hello, world!"))
|
||||
assertWriterWrite(t, w, []byte("Hello, world!"), 13)
|
||||
assertWriterWrite(t, w, nil, 0)
|
||||
|
||||
proto := newProtocolRW(&buf, nil)
|
||||
assertPacketRead(t, proto, []byte("Hello, world!"))
|
||||
@ -45,9 +45,9 @@ func TestPacketWriterWritesMultiplePacketsLessThanMaxPacketLength(t *testing.T)
|
||||
var buf bytes.Buffer
|
||||
|
||||
w := NewPacketWriter(&buf, 0)
|
||||
assertWriterWrite(t, w, []byte("first\n"), 0)
|
||||
assertWriterWrite(t, w, []byte("second"), 0)
|
||||
assertWriterWrite(t, w, nil, len("first\nsecond"))
|
||||
assertWriterWrite(t, w, []byte("first\n"), len("first\n"))
|
||||
assertWriterWrite(t, w, []byte("second"), len("second"))
|
||||
assertWriterWrite(t, w, nil, 0)
|
||||
|
||||
proto := newProtocolRW(&buf, nil)
|
||||
assertPacketRead(t, proto, []byte("first\nsecond"))
|
||||
@ -72,9 +72,9 @@ func TestPacketWriterWritesMultiplePacketsGreaterThanMaxPacketLength(t *testing.
|
||||
copy(p2, b1)
|
||||
|
||||
w := NewPacketWriter(&buf, 0)
|
||||
assertWriterWrite(t, w, p1, 0)
|
||||
assertWriterWrite(t, w, p2, MaxPacketLength)
|
||||
assertWriterWrite(t, w, nil, (len(b1)+len(b2))-MaxPacketLength)
|
||||
assertWriterWrite(t, w, p1, len(p1))
|
||||
assertWriterWrite(t, w, p2, len(p2))
|
||||
assertWriterWrite(t, w, nil, 0)
|
||||
|
||||
// offs is how far into b2 we needed to buffer before writing an entire
|
||||
// packet
|
||||
|
Loading…
Reference in New Issue
Block a user