diff --git a/src/config.cpp b/src/config.cpp index b72caa862eee6477e2f67030412c3964e606b159..c5ca48b5da1b7ccbca798fb90280256535fdff53 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -19,6 +19,7 @@ */ #include "transport/config.h" +#include "transport/util.h" #include #ifdef _MSC_VER #include @@ -120,13 +121,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description else if (opt.string_key == "service.backend_port") { found_backend_port = true; if (opt.value[0] == "0") { - unsigned long r = 0; - BOOST_FOREACH(char c, _jid) { - r += (int) c; - } - srand(time(NULL) + r); - int randomPort = 30000 + rand() % 10000; - opt.value[0] = boost::lexical_cast(randomPort); + opt.value[0] = boost::lexical_cast(Util::getRandomPort(_jid.empty() ? jid : _jid)); } } else if (opt.string_key == "service.working_dir") { @@ -148,14 +143,9 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description parsed.options.push_back(boost::program_options::basic_option("service.pidfile", value)); } if (!found_backend_port) { - unsigned long r = 0; - BOOST_FOREACH(char c, _jid) { - r += (int) c; - } - srand(time(NULL) + r); - int randomPort = 30000 + rand() % 10000; std::vector value; - value.push_back(boost::lexical_cast(randomPort)); + std::string p = boost::lexical_cast(Util::getRandomPort(_jid.empty() ? jid : _jid)); + value.push_back(p); parsed.options.push_back(boost::program_options::basic_option("service.backend_port", value)); }