mirror of
https://github.com/golang/net.git
synced 2026-03-31 10:27:08 +09:00
quic: don't return EOF from ReadByte when we have a byte
Change-Id: I3be7c43fa6ceeb75582f648ee56025991eda9611 Reviewed-on: https://go-review.googlesource.com/c/net/+/642515 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Jonathan Amsterdam <jba@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Auto-Submit: Damien Neil <dneil@google.com>
This commit is contained in:
committed by
Gopher Robot
parent
7ad0ebf002
commit
56691ee141
@@ -315,7 +315,7 @@ func (s *Stream) ReadByte() (byte, error) {
|
||||
var b [1]byte
|
||||
n, err := s.Read(b[:])
|
||||
if n > 0 {
|
||||
return b[0], err
|
||||
return b[0], nil
|
||||
}
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -568,6 +568,25 @@ func TestStreamReceiveEmptyEOF(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestStreamReadByteFromOneByteStream(t *testing.T) {
|
||||
// ReadByte on the only byte of a stream should not return an error.
|
||||
testStreamTypes(t, "", func(t *testing.T, styp streamType) {
|
||||
tc, s := newTestConnAndRemoteStream(t, serverSide, styp, permissiveTransportParameters)
|
||||
want := byte(1)
|
||||
tc.writeFrames(packetType1RTT, debugFrameStream{
|
||||
id: s.id,
|
||||
data: []byte{want},
|
||||
fin: true,
|
||||
})
|
||||
if got, err := s.ReadByte(); got != want || err != nil {
|
||||
t.Fatalf("s.ReadByte() = %v, %v; want %v, nil", got, err, want)
|
||||
}
|
||||
if got, err := s.ReadByte(); err != io.EOF {
|
||||
t.Fatalf("s.ReadByte() = %v, %v; want _, EOF", got, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func finalSizeTest(t *testing.T, wantErr transportError, f func(tc *testConn, sid streamID) (finalSize int64), opts ...any) {
|
||||
testStreamTypes(t, "", func(t *testing.T, styp streamType) {
|
||||
for _, test := range []struct {
|
||||
|
||||
Reference in New Issue
Block a user