summaryrefslogtreecommitdiff
path: root/src/network/network_admin.cpp
diff options
context:
space:
mode:
authorplanetmaker <planetmaker@openttd.org>2013-07-11 20:31:39 +0000
committerplanetmaker <planetmaker@openttd.org>2013-07-11 20:31:39 +0000
commit7686587f02ff76bb7d6f899b989701adeda5b6e4 (patch)
tree608509e6a67e8be2ed40f7da378b1d9094c33f5f /src/network/network_admin.cpp
parent4a1bf704ee1d8de386fe9f5b5fd87a46fb7bb615 (diff)
downloadopenttd-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.cpp22
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()
{