From a16eb39d1f1ad85e8b258d055a4ac1c5dcd24591 Mon Sep 17 00:00:00 2001 From: Chalith Desaman Date: Wed, 6 Jan 2021 09:36:48 +0530 Subject: [PATCH] User connections enable/disable config flag (#209) --- src/conf.cpp | 2 ++ src/conf.hpp | 1 + src/usr/usr.cpp | 19 +++++++++++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/conf.cpp b/src/conf.cpp index c44ae951..48f79cdb 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -471,6 +471,7 @@ namespace conf cfg.user.max_bytes_per_min = user["max_bytes_per_min"].as(); cfg.user.max_bad_msgs_per_min = user["max_bad_msgs_per_min"].as(); cfg.user.idle_timeout = user["idle_timeout"].as(); + cfg.user.enabled = user["enabled"].as(); } catch (const std::exception &e) { @@ -578,6 +579,7 @@ namespace conf user_config.insert_or_assign("max_bytes_per_min", cfg.user.max_bytes_per_min); user_config.insert_or_assign("max_bad_msgs_per_min", cfg.user.max_bad_msgs_per_min); user_config.insert_or_assign("max_connections", cfg.user.max_connections); + user_config.insert_or_assign("enabled", cfg.user.enabled); d.insert_or_assign("user", user_config); // Log configs. diff --git a/src/conf.hpp b/src/conf.hpp index 6bea510f..e54ff877 100644 --- a/src/conf.hpp +++ b/src/conf.hpp @@ -104,6 +104,7 @@ namespace conf uint64_t max_bytes_per_min = 0; // User message rate (characters(bytes) per minute) uint64_t max_bad_msgs_per_min = 0; // User bad messages per minute uint16_t max_connections = 0; // Max inbound user connections + bool enabled = true; // User connections enable/disable. }; struct peer_discovery_config diff --git a/src/usr/usr.cpp b/src/usr/usr.cpp index 2f7719c7..410f8c71 100644 --- a/src/usr/usr.cpp +++ b/src/usr/usr.cpp @@ -42,9 +42,16 @@ namespace usr if (input_store.init() == -1) return -1; - // Start listening for incoming user connections. - if (start_listening() == -1) - return -1; + // Start listening for incoming user connections only if user connections config is enabled. + if (conf::cfg.user.enabled) + { + if (start_listening() == -1) + return -1; + } + else + { + LOG_INFO << "User connection listner isn't started since user connections are disabled."; + } init_success = true; return 0; @@ -57,7 +64,11 @@ namespace usr { if (init_success) { - ctx.server->stop(); + // Stop com server only if user connections config is enabled (Otherwise server hasn't been started). + if (conf::cfg.user.enabled) + { + ctx.server->stop(); + } input_store.deinit(); } }