From fdc87516c1893fc29e800795520177d51ec92e69 Mon Sep 17 00:00:00 2001 From: Jakob Gillich Date: Sun, 27 Sep 2020 00:43:56 +0200 Subject: [PATCH] Allow multiple OCDM per bundle --- .../net/psforever/actors/net/MiddlewareActor.scala | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/scala/net/psforever/actors/net/MiddlewareActor.scala b/src/main/scala/net/psforever/actors/net/MiddlewareActor.scala index 0ed8e376..466b04bf 100644 --- a/src/main/scala/net/psforever/actors/net/MiddlewareActor.scala +++ b/src/main/scala/net/psforever/actors/net/MiddlewareActor.scala @@ -181,9 +181,15 @@ class MiddlewareActor( packet match { // Super awkward special case: Bundling CharacterInfoMessage with OCDM causes the character selection - // to show blank lines and be broken. So we only dequeue either if they are the first packet. - case _: CharacterInfoMessage | _: ObjectCreateDetailedMessage => - length == packetLength + // to show blank lines and be broken. So we make sure CharacterInfoMessage is always sent as the only + // packet in a bundle. + case _: CharacterInfoMessage => + if (length == packetLength) { + length += MTU + true + } else { + false + } case _ => // Some packets may be larger than the MTU limit, in that case we dequeue anyway and split later // We deduct some bytes to leave room for SlottedMetaPacket (4 bytes) and MultiPacketEx (2 bytes + prefix per packet)