I noticed that bencode.Unmarshal() creates a bufio.Reader from the passed-in reader. After bencode.Unmarshal() returns, the passed-in reader is left modified with the new index that the bufio.reader used to fill its buffer. This leaves the caller of bencode.Unmarshal() with a reader that is likely to be at the incorrect index from where the bufio.Reader left off.
Some solutions I can think of off the top of my head:
- Force
bencode.Unmarshal() to take in a bufio.Reader not just any io.reader
- Return the
bufio.Reader that was created from the passed-in reader (from this point on, you must use only the buffered reader to do all the reads from the underlying reader)
I noticed that
bencode.Unmarshal()creates abufio.Readerfrom the passed-in reader. Afterbencode.Unmarshal()returns, the passed-in reader is left modified with the new index that thebufio.readerused to fill its buffer. This leaves the caller ofbencode.Unmarshal()with a reader that is likely to be at the incorrect index from where thebufio.Readerleft off.Some solutions I can think of off the top of my head:
bencode.Unmarshal()to take in abufio.Readernot just anyio.readerbufio.Readerthat was created from the passed-in reader (from this point on, you must use only the buffered reader to do all the reads from the underlying reader)