PassID [4]byte // Random number generated by the server
Name string // Server Name
Description string // Description of the server
+ Password string // Tracker password, if required by tracker
readOffset int // Internal offset to track read progress
}
[]byte(tr.Name),
[]byte{uint8(len(tr.Description))},
[]byte(tr.Description),
+ []byte{uint8(len(tr.Password))},
+ []byte(tr.Password),
)
if tr.readOffset >= len(buf) {
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
}