diff options
| -rw-r--r-- | hotline/tracker.go | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/hotline/tracker.go b/hotline/tracker.go index a3e077e..52963bf 100644 --- a/hotline/tracker.go +++ b/hotline/tracker.go @@ -142,8 +142,13 @@ func GetListing(conn io.ReadWriteCloser) ([]ServerRecord, error) { for { scanner.Scan() + // Make a new []byte slice and copy the scanner bytes to it. This is critical as the + // scanner re-uses the buffer for subsequent scans. + buf := make([]byte, len(scanner.Bytes())) + copy(buf, scanner.Bytes()) + var srv ServerRecord - _, err = srv.Write(scanner.Bytes()) + _, err = srv.Write(buf) if err != nil { return nil, err } |