Author: soliton
Date: Mon Nov 3 02:34:36 2008
New Revision: 30557
URL: http://svn.gna.org/viewcvs/wesnoth?rev=30557&view=rev
Log:
* send a server message when a player with the same IP as an existing game
member enters
Modified:
trunk/src/server/game.cpp
trunk/src/server/game.hpp
Modified: trunk/src/server/game.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/server/game.cpp?rev=30557&r1=30556&r2=30557&view=diff
==============================================================================
--- trunk/src/server/game.cpp (original)
+++ trunk/src/server/game.cpp Mon Nov 3 02:34:36 2008
@@ -923,12 +923,12 @@
}
user->second.mark_available(id_, name_);
DBG_GAME << debug_player_info();
+ std::string clones = has_same_ip(network::ip_address(player));
bool became_observer = false;
if (!started_ && !observer && take_side(user)) {
DBG_GAME << "adding player...\n";
players_.push_back(player);
- send_server_message((user->second.name()
- + " has joined the game.").c_str(), player);
+ send_and_record_server_message((user->second.name() + " has
joined the game.").c_str(), player);
} else if (!allow_observers()) {
return; //false;
} else {
@@ -943,6 +943,10 @@
send_data(observer_join, player);
}
DBG_GAME << debug_player_info();
+
+ if (!clones.empty()) {
+ send_and_record_server_message((user->second.name() + " has the
same IP as: " + clones).c_str());
+ }
// Send the user the game data.
//std::cerr << "SENDING LEVEL {{{" << level_.output() << "}}}\n";
simple_wml::string_span level_data = level_.output_compressed();
@@ -1157,6 +1161,23 @@
return false;
}
+std::string game::has_same_ip(const std::string& ip) const {
+ user_vector users = all_game_users();
+ std::string clones;
+ bool first = true;
+ for (user_vector::const_iterator i = users.begin(); i != users.end();
++i) {
+ if (ip == network::ip_address(*i)) {
+ if (!first) clones += ", ";
+ else first = false;
+ const player_map::const_iterator pl =
player_info_->find(*i);
+ if (pl != player_info_->end()) {
+ clones += pl->second.name();
+ }
+ }
+ }
+ return clones;
+}
+
void game::send_observerjoins(const network::connection sock) const {
for (user_vector::const_iterator ob = observers_.begin(); ob !=
observers_.end(); ++ob) {
if (*ob == sock) continue;
Modified: trunk/src/server/game.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/server/game.hpp?rev=30557&r1=30556&r2=30557&view=diff
==============================================================================
--- trunk/src/server/game.hpp (original)
+++ trunk/src/server/game.hpp Mon Nov 3 02:34:36 2008
@@ -222,6 +222,7 @@
/** Function which returns true iff 'player' is on 'team'. */
bool is_on_team(const simple_wml::string_span& team, const
network::connection player) const;
+ std::string has_same_ip(const std::string& ip) const;
/**
* Function which should be called every time a player ends their turn
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits