@@ -1065,30 +1065,26 @@ void PlayerConnection::LiteUpdateForAC()
10651065 memcpy (vecData.data (), msg->GetData (), numBytes);
10661066
10671067 // Check minimum packet size for AC header
1068- if (numBytes >= 3 )
1068+ if (numBytes >= sizeof (ENetworkChannel) )
10691069 {
1070- BYTE b1 = (BYTE )vecData[0 ];
1071- BYTE b2 = (BYTE )vecData[1 ];
1072- BYTE b3 = (BYTE )vecData[2 ];
1073- if (b1 == 9
1074- && b2 == 1
1075- && b3 == 2 )
1070+ ENetworkChannel netChannel = (ENetworkChannel)vecData[0 ];
1071+ if (netChannel == ENetworkChannel::NETWORK_CHANNEL_AC )
10761072 {
10771073 NetworkLog (ELogVerbosity::LOG_RELEASE , " [AC PACKET] Received AC message of size %u from user %lld" , numBytes, static_cast <long long >(m_userID));
10781074
10791075
10801076 // remove header
10811077 // TODO_AC: Optimize this
10821078 std::vector<byte> vecDataAC;
1083- vecDataAC.resize (numBytes - 3 );
1084- memcpy (vecDataAC.data (), (char *)msg->GetData () + 3 , numBytes - 3 );
1079+ vecDataAC.resize (numBytes - sizeof (ENetworkChannel) );
1080+ memcpy (vecDataAC.data (), (char *)msg->GetData () + sizeof (ENetworkChannel) , numBytes - sizeof (ENetworkChannel) );
10851081
1086- AnticheatPlugInterface::AC_NetworkMessageArrived (m_userID, vecDataAC.data (), numBytes - 3 );
1082+ AnticheatPlugInterface::AC_NetworkMessageArrived (m_userID, vecDataAC.data (), numBytes - sizeof (ENetworkChannel) );
10871083 msg->Release ();
10881084 continue ;
10891085 }
10901086 }
1091- else if (numBytes > 0 && numBytes < 3 )
1087+ else if (numBytes != - 1 && numBytes < sizeof (ENetworkChannel) )
10921088 {
10931089 // Malformed AC packet - too small for header
10941090 NetworkLog (ELogVerbosity::LOG_RELEASE , " [AC PACKET] Dropping malformed AC packet - size %u is less than header size 3 from user %lld" , numBytes, static_cast <long long >(m_userID));
@@ -1168,9 +1164,15 @@ int PlayerConnection::SendGamePacket(void* pBuffer, uint32_t totalDataSize)
11681164 }
11691165 }
11701166
1167+ ENetworkChannel netChannel = ENetworkChannel::NETWORK_CHANNEL_GAME ;
1168+ std::vector<BYTE > vecData;
1169+ vecData.resize (totalDataSize + sizeof (ENetworkChannel));
1170+ memcpy (vecData.data () + sizeof (ENetworkChannel), pBuffer, totalDataSize);
1171+ vecData[0 ] = (BYTE )netChannel;
1172+
11711173 NetworkLog (ELogVerbosity::LOG_DEBUG , " [GAME PACKET] Sending msg of size %ld to user %lld\n " , totalDataSize, m_userID);
11721174 EResult r = SteamNetworkingSockets ()->SendMessageToConnection (
1173- m_hSteamConnection, pBuffer, ( int )totalDataSize , sendFlags, nullptr );
1175+ m_hSteamConnection, vecData. data (), vecData. size () , sendFlags, nullptr );
11741176
11751177 if (r != k_EResultOK)
11761178 {
@@ -1195,13 +1197,11 @@ void PlayerConnection::SendACPacket(const void* pData, uint32_t dataLen)
11951197 return ;
11961198 }
11971199
1200+ ENetworkChannel netChannel = ENetworkChannel::NETWORK_CHANNEL_AC ;
11981201 std::vector<BYTE > vecData;
1199- vecData.resize (dataLen + 3 );
1200- memcpy (vecData.data () + 3 , pData, dataLen);
1201-
1202- vecData[0 ] = 9 ;
1203- vecData[1 ] = 1 ;
1204- vecData[2 ] = 2 ;
1202+ vecData.resize (dataLen + sizeof (ENetworkChannel));
1203+ memcpy (vecData.data () + sizeof (ENetworkChannel), pData, dataLen);
1204+ vecData[0 ] = (BYTE )netChannel;
12051205
12061206 NetworkLog (ELogVerbosity::LOG_RELEASE , " [AC PACKET] Sending AC msg of size %ld to user %ld\n " , dataLen, m_userID);
12071207 EResult r = SteamNetworkingSockets ()->SendMessageToConnection (m_hSteamConnection, vecData.data (), vecData.size (), k_nSteamNetworkingSend_Reliable, nullptr );
0 commit comments