Просмотр полной версии : SMSG_PONG (4.0.6а)
HuntsMan
13.03.2011, 11:37
Никак не найду номер этого пакета. Подскажите люди добрые :)
Chameleon
23.03.2011, 10:12
Мне кажется, что опкод должен быть: 0x0A01B и обрабатываться в HandleAuthOpcodes. Однако с этим опкодом пинг в клиенте все равно не показывается. В консоли клиента же поялвяется сообщение "Received pong with old sequence". Так что опкод я думаю верный. Проблема похоже в том, что сервер все время получает CMSG_PING с нулевым ping значением, вместо инкрементирующегося. Клиент пытается послать пинги на все 3 потенциальных соединения (home, world и auth?), но т.к. соедниение открыто только одно видимо клиента плющит.
HuntsMan
25.03.2011, 18:19
Мне кажется, что опкод должен быть: 0x0A01B и обрабатываться в HandleAuthOpcodes. Однако с этим опкодом пинг в клиенте все равно не показывается. В консоли клиента же поялвяется сообщение "Received pong with old sequence". Так что опкод я думаю верный. Проблема похоже в том, что сервер все время получает CMSG_PING с нулевым ping значением, вместо инкрементирующегося. Клиент пытается послать пинги на все 3 потенциальных соединения (home, world и auth?), но т.к. соедниение открыто только одно видимо клиента плющит.
Скорее всего. В 4.0.3 пинг клиент нормально посылал, я проверял :)
add:
Packet SMSG, CMSG_PING (1614), len 8, Flags: None
╔════════╦══════ ════════════════ ════════════════ ═════════╦══════ ═════════╗
║ OFFSET ║ 0 1 2 3 4 5 6 7 8 9 A B C D E F ║0123456789ABCDEF║
╠════════╬═══════ ════════════════ ════════════════ ════════╬═══════ ════════╣
║00000000║ 00 00 00 00 01 00 00 00 -- -- -- -- -- -- -- -- ║................║
╚════════╩══════ ════════════════ ════════════════ ═════════╩══════ ═════════╝
Как я понял, он на каждое соединение шлет свой пакет с пингом, а там уже ждет ответа. Значит поидее он должен слушать этот пакет с любого содеинения
HuntsMan
26.03.2011, 07:10
http://filebeam.com/30ef1ebd6c840cac579448f19f4d8fe9.jpg
Йхууууу :)
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -1091,8 +1091,10 @@ int WorldSocket::HandlePing (WorldPacket
if (m_Session)
m_Session->SetLatency(latency);
- WorldPacket packet (SMSG_PONG, 4, true);
- packet << sequence;
+ WorldPacket packet (SMSG_PONG, 4);
+ packet << sequence++;
return SendPacket (packet);
}
Chameleon
26.03.2011, 09:26
Что-то я не понял, как этот патч работает.
У меня пинг заработал, когда я поменял местами чтение latency и sequence из клиентского пакета.
+ packet << sequence++;
return SendPacket (packet);Ага, пост-инкрементировать локальную переменную перед выходом из функции.
HuntsMan
26.03.2011, 19:27
Магия какая-то :) Клиентский пакет я поправил ещё на версии 4.0.3, но вот почему пинг стал отображатся после этого все равно не рабочего куска кода я вообще не понимаю..
vBulletin® v3.8.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot