Mercurial > irccd
changeset 834:b7ec41d2d5be
irccd: protect ssl option in server-util
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 01 Apr 2019 20:10:00 +0200 |
parents | 9516b33a8af5 |
children | 62c34f1e44e2 |
files | libirccd-daemon/irccd/daemon/server_util.cpp |
diffstat | 1 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd-daemon/irccd/daemon/server_util.cpp Mon Mar 11 13:00:22 2019 +0100 +++ b/libirccd-daemon/irccd/daemon/server_util.cpp Mon Apr 01 20:10:00 2019 +0200 @@ -88,8 +88,18 @@ const auto ipv4 = sc.find("ipv4"); const auto ipv6 = sc.find("ipv6"); +#if defined(IRCCD_HAVE_SSL) if (ssl != sc.end()) toggle(sv, server::options::ssl, string_util::is_boolean(ssl->get_value())); +#else + if (ssl != sc.end()) { + if (string_util::is_boolean(ssl->get_value())) + throw server_error(server_error::ssl_disabled); + else + sv.set_options(sv.get_options() & server::options::ssl); + } +#endif + if (auto_rejoin != sc.end()) toggle(sv, server::options::auto_rejoin, string_util::is_boolean(auto_rejoin->get_value())); if (auto_reconnect != sc.end()) @@ -186,11 +196,12 @@ toggle(sv, server::options::auto_rejoin, *auto_rejoin); if (join_invite) toggle(sv, server::options::join_invite, *join_invite); + +#if defined(IRCCD_HAVE_SSL) if (ssl) toggle(sv, server::options::ssl, *ssl); - -#if !defined(IRCCD_HAVE_SSL) - if ((sv.get_options() & server::options::ssl) == server::options::ssl) +#else + if (ssl && *ssl) throw server_error(server_error::ssl_disabled); #endif