diff options
-rw-r--r-- | ioaead.go | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -144,7 +144,27 @@ func (r *streamReader) readTo(b []byte) (int, error) { // in such a case, you need to unread data. a simple demonstration would be to delete // or truncate the file if ErrAuthMsg is returned func (r *streamReader) Read(b []byte) (int, error) { - return r.readTo(b) + if len(b) <= 16 { + return r.readTo(b) + } + n := 0 + for { + if n+16 > len(b) { + sr, err := r.readTo(b[n:]) + n += sr + if err != nil { + return n, err + } + break + } + + sr, err := r.readTo(b[n : n+16]) + n += sr + if err != nil { + return n, err + } + } + return n, nil } func (r *streamReader) verify() error { |