// decodeLoginBlock handles the unencrypted login block func (svc *GameService) decodeLoginBlock(client player.Player) error { loginBlock := game_protocol.InboundLoginBlock{} if err := loginBlock.Decode(client.Conn().ReadBuffer, nil); err != nil { return err } expectedSecureBlockSize := int(loginBlock.LoginLen) - ((9 * 4) + 1 + 1 + 1 + 2) if expectedSecureBlockSize != int(loginBlock.SecureBlockSize) { client.Log().Error("Secure block size mismatch: got %v expected %v", loginBlock.SecureBlockSize, expectedSecureBlockSize) client.Conn().Disconnect() } client.SetSecureBlockSize(int(loginBlock.SecureBlockSize)) client.SetDecodeFunc(svc.decodeSecureBlock) return nil }