Skip to content

Commit 7efa7ee

Browse files
committed
prepare to remove constructor of AuthenticationReader
1 parent 64a3333 commit 7efa7ee

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

common/crypto/auth.go

+22-17
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,10 @@ type AuthenticationReader struct {
8787
sizeParser ChunkSizeDecoder
8888
transferType protocol.TransferType
8989
padding PaddingLengthGenerator
90-
size int32
91-
paddingLen int32
90+
size uint16
91+
paddingLen uint16
92+
hasSize bool
93+
done bool
9294
}
9395

9496
func NewAuthenticationReader(auth Authenticator, sizeParser ChunkSizeDecoder, reader io.Reader, transferType protocol.TransferType, paddingLen PaddingLengthGenerator) *AuthenticationReader {
@@ -98,26 +100,24 @@ func NewAuthenticationReader(auth Authenticator, sizeParser ChunkSizeDecoder, re
98100
sizeParser: sizeParser,
99101
transferType: transferType,
100102
padding: paddingLen,
101-
size: -1,
102103
}
103104
}
104105

105-
func (r *AuthenticationReader) readSize() (int32, int32, error) {
106-
if r.size != -1 {
107-
s := r.size
108-
r.size = -1
109-
return s, r.paddingLen, nil
106+
func (r *AuthenticationReader) readSize() (uint16, uint16, error) {
107+
if r.hasSize {
108+
r.hasSize = false
109+
return r.size, r.paddingLen, nil
110110
}
111111
sizeBytes := make([]byte, r.sizeParser.SizeBytes())
112112
if _, err := io.ReadFull(r.reader, sizeBytes); err != nil {
113113
return 0, 0, err
114114
}
115-
var padding int32
115+
var padding uint16
116116
if r.padding != nil {
117-
padding = int32(r.padding.NextPaddingLen())
117+
padding = r.padding.NextPaddingLen()
118118
}
119119
size, err := r.sizeParser.Decode(sizeBytes)
120-
return int32(size), padding, err
120+
return size, padding, err
121121
}
122122

123123
var errSoft = newError("waiting for more data")
@@ -127,31 +127,36 @@ func (r *AuthenticationReader) readInternal(soft bool) (*buf.Buffer, error) {
127127
return nil, errSoft
128128
}
129129

130+
if r.done {
131+
return nil, io.EOF
132+
}
133+
130134
size, padding, err := r.readSize()
131135
if err != nil {
132136
return nil, err
133137
}
134138

135-
if size == -2 || size == int32(r.auth.Overhead())+padding {
136-
r.size = -2
139+
if size == uint16(r.auth.Overhead())+padding {
140+
r.done = true
137141
return nil, io.EOF
138142
}
139143

140-
if soft && size > r.reader.BufferedBytes() {
144+
if soft && int32(size) > r.reader.BufferedBytes() {
141145
r.size = size
142146
r.paddingLen = padding
147+
r.hasSize = true
143148
return nil, errSoft
144149
}
145150

146-
b := buf.NewSize(size)
147-
if err := b.Reset(buf.ReadFullFrom(r.reader, size)); err != nil {
151+
b := buf.NewSize(int32(size))
152+
if err := b.Reset(buf.ReadFullFrom(r.reader, int32(size))); err != nil {
148153
b.Release()
149154
return nil, err
150155
}
151156

152157
size -= padding
153158

154-
rb, err := r.auth.Open(b.BytesTo(0), b.BytesTo(size))
159+
rb, err := r.auth.Open(b.BytesTo(0), b.BytesTo(int32(size)))
155160
if err != nil {
156161
b.Release()
157162
return nil, err

0 commit comments

Comments
 (0)