diff options
author | planetmaker <planetmaker@openttd.org> | 2013-07-11 20:31:39 +0000 |
---|---|---|
committer | planetmaker <planetmaker@openttd.org> | 2013-07-11 20:31:39 +0000 |
commit | 7686587f02ff76bb7d6f899b989701adeda5b6e4 (patch) | |
tree | 608509e6a67e8be2ed40f7da378b1d9094c33f5f /src/network/network_admin.cpp | |
parent | 4a1bf704ee1d8de386fe9f5b5fd87a46fb7bb615 (diff) | |
download | openttd-7686587f02ff76bb7d6f899b989701adeda5b6e4.tar.xz |
(svn r25588) -Feature [FS#5643]: PING and PONG packets for admin port (Xaroth)
Diffstat (limited to 'src/network/network_admin.cpp')
-rw-r--r-- | src/network/network_admin.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/network/network_admin.cpp b/src/network/network_admin.cpp index 93cfe2807..326559e0b 100644 --- a/src/network/network_admin.cpp +++ b/src/network/network_admin.cpp @@ -540,6 +540,17 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT(Pack return NETWORK_RECV_STATUS_OKAY; } +NetworkRecvStatus ServerNetworkAdminSocketHandler::Receive_ADMIN_PING(Packet *p) +{ + if (this->status == ADMIN_STATUS_INACTIVE) return this->SendError(NETWORK_ERROR_NOT_EXPECTED); + + uint32 d1 = p->Recv_uint32(); + + DEBUG(net, 2, "[admin] Ping from '%s' (%s): '%d'", this->admin_name, this->admin_version, d1); + + return this->SendPong(d1); +} + /** * Send console output of other clients. * @param origin The origin of the string. @@ -581,6 +592,17 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript(const char *js return NETWORK_RECV_STATUS_OKAY; } +/** Send ping-reply (pong) to admin **/ +NetworkRecvStatus ServerNetworkAdminSocketHandler::SendPong(uint32 d1) +{ + Packet *p = new Packet(ADMIN_PACKET_SERVER_PONG); + + p->Send_uint32(d1); + this->SendPacket(p); + + return NETWORK_RECV_STATUS_OKAY; +} + /** Send the names of the commands. */ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames() { |