X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/c5d9af5aa4d9fb20316be45ab1b775bcf61bcad5..9067f2344057a247dab19e6ce6756cb7d560d992:/hotline/tracker.go diff --git a/hotline/tracker.go b/hotline/tracker.go index 4ee192a..63fb279 100644 --- a/hotline/tracker.go +++ b/hotline/tracker.go @@ -12,11 +12,11 @@ import ( ) type TrackerRegistration struct { - Port []byte // Server listening port number - UserCount int // Number of users connected to this particular server - PassID []byte // Random number generated by the server - Name string // Server name - Description string // Description of the server + Port [2]byte // Server listening port number + UserCount int // Number of users connected to this particular server + PassID []byte // Random number generated by the server + Name string // Server name + Description string // Description of the server } func (tr *TrackerRegistration) Payload() []byte { @@ -25,7 +25,7 @@ func (tr *TrackerRegistration) Payload() []byte { return concat.Slices( []byte{0x00, 0x01}, - tr.Port, + tr.Port[:], userCount, []byte{0x00, 0x00}, tr.PassID, @@ -36,7 +36,7 @@ func (tr *TrackerRegistration) Payload() []byte { ) } -func register(tracker string, tr TrackerRegistration) error { +func register(tracker string, tr *TrackerRegistration) error { conn, err := net.Dial("udp", tracker) if err != nil { return err @@ -49,9 +49,6 @@ func register(tracker string, tr TrackerRegistration) error { return nil } -type ServerListing struct { -} - const trackerTimeout = 5 * time.Second // All string values use 8-bit ASCII character set encoding. @@ -67,10 +64,10 @@ type TrackerHeader struct { Version [2]byte // Old protocol (1) or new (2) } -//Message type 2 1 Sending list of servers -//Message data size 2 Remaining size of this request -//Number of servers 2 Number of servers in the server list -//Number of servers 2 Same as previous field +// Message type 2 1 Sending list of servers +// Message data size 2 Remaining size of this request +// Number of servers 2 Number of servers in the server list +// Number of servers 2 Same as previous field type ServerInfoHeader struct { MsgType [2]byte // always has value of 1 MsgDataSize [2]byte // Remaining size of request @@ -177,25 +174,6 @@ func (s *ServerRecord) Read(b []byte) (n int, err error) { return 12 + nameLen + int(s.DescriptionSize), nil } -// -//func (s *ServerRecord) UnmarshalBinary(b []byte) (err error) { -// r := bytes.NewReader(b[:10]) -// if err := binary.Read(r, binary.BigEndian, s); err != nil { -// return err -// } -// -// copy(s.IPAddr[:], b[0:4]) -// s.Port = b[4:6] -// s.NumUsers = b[6:8] -// s.NameSize = b[10] -// nameLen := int(b[10]) -// s.Name = b[11 : 11+nameLen] -// s.DescriptionSize = b[11+nameLen] -// s.Description = b[12+nameLen : 12+nameLen+int(s.DescriptionSize)] -// -// return nil -//} - func (s *ServerRecord) PortInt() int { data := binary.BigEndian.Uint16(s.Port[:]) return int(data)