Changeset - e0d4583d2490
[Not reviewed]
0 1 0
HanzZ - 14 years ago 2011-11-07 19:59:38
hanzz.k@gmail.com
Generate random port even when it's not set in config file
1 file changed with 13 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/config.cpp
Show inline comments
 
@@ -105,6 +105,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description
 

	
 
	bool found_working = false;
 
	bool found_pidfile = false;
 
	bool found_backend_port = false;
 
	std::string jid = "";
 
	BOOST_FOREACH(option &opt, parsed.options) {
 
		if (opt.string_key == "service.jid") {
 
@@ -117,6 +118,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) {
 
@@ -145,6 +147,17 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description
 
		value.push_back("/var/run/spectrum2/$jid.pid");
 
		parsed.options.push_back(boost::program_options::basic_option<char>("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<std::string> value;
 
		value.push_back(boost::lexical_cast<std::string>(randomPort));
 
		parsed.options.push_back(boost::program_options::basic_option<char>("service.backend_port", value));
 
	}
 

	
 
	BOOST_FOREACH(option &opt, parsed.options) {
 
		if (opt.unregistered) {
0 comments (0 inline, 0 general)