# HG changeset patch # User David Demelier # Date 1523558702 -7200 # Node ID 900ca2f95838255d7483b0c4a9302b4638c0faba # Parent 4960c858fff5fe3239fdc719e1e9f5b3702af36c Irccd: do not allow multiple server with same name diff -r 4960c858fff5 -r 900ca2f95838 libirccd/irccd/daemon/server.cpp --- 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: diff -r 4960c858fff5 -r 900ca2f95838 libirccd/irccd/daemon/service/server_service.cpp --- 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;