From 01489b9930025bed3c5bfc34b6c86045cbaccb46 Mon Sep 17 00:00:00 2001 From: Yohann Ferreira Date: Wed, 15 Dec 2010 14:35:22 +0100 Subject: Deharcoded the host and port options for each servers. Changes: ============================================================ For the account server: ------------------------------------------------------------ Old -> New ------------------------------------------------------------ net_accountServerAddress, net_listenHost -> net_accountHost net_accountServerPort -> net_accountListenToClientPort net_accountServerPort +1 -> net_accountListenToGamePort For the game server: ------------------------------------------------------------ Old -> New ------------------------------------------------------------ net_gameServerAddress -> net_gameHost net_gameServerPort -> net_gameListenToClientPort For the chat server: ------------------------------------------------------------ Old -> New ------------------------------------------------------------ -> net_chatHost net_accountServerPort + 2 -> net_chatListenToClientPort Special fallback feature, as requested by Freeyorp: When the net_accountListenToClientPort (default to 9601) is set, the 3 others ports will automatically offset from it, if they're not set, following this rule: net_accountListenToGamePort = net_accountListenToClientPort + 1 net_chatListenToClientPort = net_accountListenToClientPort + 2 net_gameListenToClientPort = net_accountListenToClientPort + 3 Resolves: Mana-Mantis #216. Reviewed-by: Jaxad0127. --- src/account-server/accounthandler.cpp | 16 ++++++++++++---- src/account-server/main-account.cpp | 25 ++++++++++++++++++++----- 2 files changed, 32 insertions(+), 9 deletions(-) (limited to 'src/account-server') diff --git a/src/account-server/accounthandler.cpp b/src/account-server/accounthandler.cpp index 5b1ccd05..1463b37e 100644 --- a/src/account-server/accounthandler.cpp +++ b/src/account-server/accounthandler.cpp @@ -868,11 +868,19 @@ void AccountHandler::handleCharacterSelectMessage(AccountClient &client, reply.writeString(address); reply.writeInt16(port); - // TODO: get correct address and port for the chat server - reply.writeString(Configuration::getValue("net_accountServerAddress", + // Give address and port for the chat server + reply.writeString(Configuration::getValue("net_chatHost", "localhost")); - reply.writeInt16(Configuration::getValue("net_accountServerPort", - DEFAULT_SERVER_PORT) + 2); + + // When the chatListenToClientPort is set, we use it. + // Otherwise, we use the accountListenToClientPort + 2 if the option is set. + // If neither, the DEFAULT_SERVER_PORT + 2 is used. + int alternativePort = + Configuration::getValue("net_accountListenToClientPort", 0) + 2; + if (alternativePort == 2) + alternativePort = DEFAULT_SERVER_PORT + 2; + reply.writeInt16(Configuration::getValue("net_chatListenToClientPort", + alternativePort)); GameServerHandler::registerClient(magic_token, selectedChar); registerChatClient(magic_token, selectedChar->getName(), acc->getLevel()); diff --git a/src/account-server/main-account.cpp b/src/account-server/main-account.cpp index 9516b4d1..a0e935dd 100644 --- a/src/account-server/main-account.cpp +++ b/src/account-server/main-account.cpp @@ -368,15 +368,30 @@ int main(int argc, char *argv[]) options.verbosity) ); Logger::setVerbosity(options.verbosity); + std::string accountHost = Configuration::getValue("net_accountHost", + "localhost"); + + // We separate the chat host as the chat server will be separated out + // from the account server. + std::string chatHost = Configuration::getValue("net_chatHost", + "localhost"); + + // Setting the listen ports + // Note: The accountToGame and chatToClient listen ports auto offset + // to accountToClient listen port when they're not set, + // or to DEFAULT_SERVER_PORT otherwise. if (!options.portChanged) - options.port = Configuration::getValue("net_accountServerPort", + options.port = Configuration::getValue("net_accountListenToClientPort", options.port); + int accountGamePort = Configuration::getValue("net_accountListenToGamePort", + options.port + 1); + int chatClientPort = Configuration::getValue("net_chatListenToClientPort", + options.port + 2); - std::string host = Configuration::getValue("net_listenHost", std::string()); if (!AccountClientHandler::initialize(DEFAULT_ATTRIBUTEDB_FILE, - options.port, host) || - !GameServerHandler::initialize(options.port + 1, host) || - !chatHandler->startListen(options.port + 2, host)) + options.port, accountHost) || + !GameServerHandler::initialize(accountGamePort, accountHost) || + !chatHandler->startListen(chatClientPort, chatHost)) { LOG_FATAL("Unable to create an ENet server host."); return EXIT_NET_EXCEPTION; -- cgit v1.2.3-70-g09d2