diff --git a/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala index 802ec0203..353518c30 100644 --- a/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/ConnectToWorldRequestMessage.scala @@ -8,6 +8,7 @@ import scodec.codecs._ // NOTE: this packet has a ton of bytes left over at the end and is usually all zeros // except for the server name and a 0x80 near the end final case class ConnectToWorldRequestMessage(server : String, + token : String, majorVersion : Long, minorVersion : Long, revision : Long, @@ -21,7 +22,7 @@ final case class ConnectToWorldRequestMessage(server : String, object ConnectToWorldRequestMessage extends Marshallable[ConnectToWorldRequestMessage] { implicit val codec : Codec[ConnectToWorldRequestMessage] = ( ("server_name" | PacketHelpers.encodedString) :: - ("unknown" | ignore(32*8)) :: + ("token" | paddedFixedSizeBytes(32, cstring, ignore(8))) :: // must be an ignore 8 as the memory might not be 0x00 ("major_version" | uint32L) :: ("minor_version" | uint32L) :: ("revision" | uint32L) :: diff --git a/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala b/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala index d1c0a9c00..fe1ca0e13 100644 --- a/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/LoginMessage.scala @@ -25,7 +25,7 @@ final case class LoginMessage(majorVersion : Long, object LoginMessage extends Marshallable[LoginMessage] { private def username = PacketHelpers.encodedStringAligned(7) private def password = PacketHelpers.encodedString - private def tokenPath = fixedSizeBytes(32, ascii) :: username + private def tokenPath = paddedFixedSizeBytes(32, cstring, ignore(8)) :: username private def passwordPath = username :: password type Struct = String :: Option[String] :: Option[String] :: HNil diff --git a/common/src/test/scala/GamePacketTest.scala b/common/src/test/scala/GamePacketTest.scala index c6af18a3a..0a9da083a 100644 --- a/common/src/test/scala/GamePacketTest.scala +++ b/common/src/test/scala/GamePacketTest.scala @@ -15,8 +15,9 @@ class GamePacketTest extends Specification { "decode" in { PacketCoding.DecodePacket(string).require match { - case ConnectToWorldRequestMessage(serverName, majorVersion, minorVersion, revision, buildDate, unk) => + case ConnectToWorldRequestMessage(serverName, token, majorVersion, minorVersion, revision, buildDate, unk) => serverName mustEqual "gemini" + token mustEqual "" majorVersion mustEqual 0 minorVersion mustEqual 0 revision mustEqual 0 @@ -28,7 +29,7 @@ class GamePacketTest extends Specification { } "encode" in { - val msg = ConnectToWorldRequestMessage("gemini", 0, 0, 0, "", 0) + val msg = ConnectToWorldRequestMessage("gemini", "", 0, 0, 0, "", 0) val pkt = PacketCoding.EncodePacket(msg).require.toByteVector pkt mustEqual string