diff --git a/src/server.cpp b/src/server.cpp index c948427ad559b3c584f1f8910f39a43d9c87cb21..fba512049d6b145fc9c64996676accf82e6dbfc1 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -428,6 +428,9 @@ Server::~Server() void Server::start(Address bind_addr) { DSTACK(__FUNCTION_NAME); + + m_bind_addr = bind_addr; + infostream<<"Starting server on " << bind_addr.serializeString() <<"..."<<std::endl; @@ -678,6 +681,7 @@ void Server::AsyncRunStep(bool initial_step) g_settings->getBool("server_announce")) { ServerList::sendAnnounce(counter ? "update" : "start", + m_bind_addr.getPort(), m_clients.getPlayerNames(), m_uptime.get(), m_env->getGameTime(), @@ -5093,8 +5097,8 @@ void dedicated_server_loop(Server &server, bool &kill) { infostream<<"Dedicated server quitting"<<std::endl; #if USE_CURL - if(g_settings->getBool("server_announce") == true) - ServerList::sendAnnounce("delete"); + if(g_settings->getBool("server_announce")) + ServerList::sendAnnounce("delete", server.m_bind_addr.getPort()); #endif break; } diff --git a/src/server.h b/src/server.h index e9cf0a25c984ddadef2e28382ed1d2ebaca048db..3d6b00d99f65073c843f5561777cbb7b046a3a66 100644 --- a/src/server.h +++ b/src/server.h @@ -340,6 +340,9 @@ class Server : public con::PeerHandler, public MapEventReceiver, u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch, std::string* vers_string); + // Bind address + Address m_bind_addr; + private: friend class EmergeThread; diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 65c75fec23c6c3cdf2ee01f8e34e5de0901a168f..472a6b85c285cbc4acb2df56f2aebf249171071b 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -189,6 +189,7 @@ const std::string serializeJson(const std::vector<ServerListSpec> &serverlist) #if USE_CURL void sendAnnounce(const std::string &action, + const u16 port, const std::vector<std::string> &clients_names, const double uptime, const u32 game_time, @@ -199,7 +200,7 @@ void sendAnnounce(const std::string &action, { Json::Value server; server["action"] = action; - server["port"] = g_settings->getU16("port"); + server["port"] = port; if (g_settings->exists("server_address")) { server["address"] = g_settings->get("server_address"); } diff --git a/src/serverlist.h b/src/serverlist.h index 7a7461ebdaef6421c0b57e2a0429d98364dd47c5..8ffea44cc70e579f69f678fc6e0742aa2fd8b4c1 100644 --- a/src/serverlist.h +++ b/src/serverlist.h @@ -38,7 +38,7 @@ namespace ServerList std::vector<ServerListSpec> deSerializeJson(const std::string &liststring); const std::string serializeJson(const std::vector<ServerListSpec> &serverlist); #if USE_CURL - void sendAnnounce(const std::string &action, + void sendAnnounce(const std::string &action, const u16 port, const std::vector<std::string> &clients_names = std::vector<std::string>(), const double uptime = 0, const u32 game_time = 0, const float lag = 0, const std::string &gameid = "",