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