Mercurial > irccd
changeset 680:900ca2f95838
Irccd: do not allow multiple server with same name
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 12 Apr 2018 20:45:02 +0200 |
parents | 4960c858fff5 |
children | f16a876e4a6a |
files | libirccd/irccd/daemon/server.cpp libirccd/irccd/daemon/service/server_service.cpp |
diffstat | 2 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd/irccd/daemon/server.cpp Thu Apr 12 20:30:30 2018 +0200 +++ b/libirccd/irccd/daemon/server.cpp Thu Apr 12 20:45:02 2018 +0200 @@ -704,6 +704,8 @@ return "server is not connected"; case server_error::already_connected: return "server is already connected"; + case server_error::already_exists: + return "server already exists"; case server_error::invalid_port: return "invalid port number specified"; case server_error::invalid_reconnect_tries:
--- a/libirccd/irccd/daemon/service/server_service.cpp Thu Apr 12 20:30:30 2018 +0200 +++ b/libirccd/irccd/daemon/service/server_service.cpp Thu Apr 12 20:45:02 2018 +0200 @@ -521,7 +521,12 @@ continue; try { - add(server_util::from_config(irccd_.get_service(), cfg, section)); + auto server = server_util::from_config(irccd_.get_service(), cfg, section); + + if (has(server->get_name())) + throw server_error(server_error::already_exists); + + add(std::move(server)); } catch (const std::exception& ex) { irccd_.get_log().warning() << "server " << section.get("name").value() << ": " << ex.what() << std::endl;