Configurable server port. Fixes task #2953 with patch #2489

This commit is contained in:
uid69097 2004-01-17 12:36:14 +00:00
parent 2303ce9e37
commit 6a068c1847
2 changed files with 31 additions and 4 deletions

View file

@ -26,7 +26,7 @@ private:
struct server_manager {
//if create_server is false, then the object has no effect.
//throws error.
server_manager(int port=15000, bool create_server=true);
server_manager(int port, bool create_server=true);
~server_manager();
private:

View file

@ -25,7 +25,7 @@ config construct_error(const std::string& msg)
class server
{
public:
server();
server(int port);
void run();
private:
void delete_game(std::vector<game>::iterator i);
@ -45,7 +45,7 @@ private:
std::vector<game> games_;
};
server::server() : net_manager_(), server_()
server::server(int port) : net_manager_(), server_(port)
{
login_response_.add_child("mustlogin");
login_response_["version"] = game_config::version;
@ -341,8 +341,35 @@ void server::delete_game(std::vector<game>::iterator i)
int main(int argc, char** argv)
{
int port = 15000;
for(int arg = 1; arg != argc; ++arg) {
const std::string val(argv[arg]);
if(val.empty()) {
continue;
}
if(val == "--port" || val == "-p") {
port = atoi(argv[++arg]);
} else if(val == "--help" || val == "-h") {
std::cout << "usage: " << argv[0]
<< " [options]\n"
<< " -p, --port Binds the server to the specified port\n";
return 0;
} else if(val == "--version" || val == "-v") {
std::cout << "Battle for Wesnoth server " << game_config::version
<< "\n";
return 0;
} else if(val[0] == '-') {
std::cerr << "unknown option: " << val << "\n";
return 0;
} else {
port = atoi(argv[arg]);
}
}
try {
server().run();
server(port).run();
} catch(network::error& e) {
std::cerr << "error starting server: " << e.message << "\n";
return -1;