diff options
author | sina <sina@snix.ir> | 2022-10-23 23:32:57 +0330 |
---|---|---|
committer | sina <sina@snix.ir> | 2022-10-23 23:32:57 +0330 |
commit | 0e42f630fada9d121e9d06099f48fd7a03941b16 (patch) | |
tree | 3a881f954d0f754a01a7c378889fada619aa29c5 | |
parent | c7e89d5426aaf287fa44113680c705da6b03294f (diff) |
-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 { |