aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hotline/tracker.go7
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
}