+ return servers, nil
+}
+
+// serverScanner implements bufio.SplitFunc for parsing the tracker list into ServerRecords tokens
+// Example payload:
+// 00000000 18 05 30 63 15 7c 00 02 00 00 10 54 68 65 20 4d |..0c.|.....The M|
+// 00000010 6f 62 69 75 73 20 53 74 72 69 70 40 48 6f 6d 65 |obius Strip@Home|
+// 00000020 20 6f 66 20 74 68 65 20 4d 6f 62 69 75 73 20 48 | of the Mobius H|
+// 00000030 6f 74 6c 69 6e 65 20 73 65 72 76 65 72 20 61 6e |otline server an|
+// 00000040 64 20 63 6c 69 65 6e 74 20 7c 20 54 52 54 50 48 |d client | TRTPH|
+// 00000050 4f 54 4c 2e 63 6f 6d 3a 35 35 30 30 2d 4f 3a b2 |OTL.com:5500-O:.|
+// 00000060 15 7c 00 00 00 00 08 53 65 6e 65 63 74 75 73 20 |.|.....Senectus |
+func serverScanner(data []byte, _ bool) (advance int, token []byte, err error) {
+ // The name length field is the 11th byte of the server record. If we don't have that many bytes,
+ // return nil token so the Scanner reads more data and continues scanning.
+ if len(data) < 10 {
+ return 0, nil, nil