diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-10-20 23:04:09 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-10-20 23:04:09 +0300 |
commit | 4b6138e69b65271b0e568f821a4d1bd285affedd (patch) | |
tree | 003fd33f969e5a9bf0bc720bda7f869d1f9c1f45 /src/servercommand.cpp | |
parent | b6fcbc5fbaba4a7faa65f792b16e47a405fa4ebf (diff) | |
download | minetest-4b6138e69b65271b0e568f821a4d1bd285affedd.tar.gz minetest-4b6138e69b65271b0e568f821a4d1bd285affedd.tar.bz2 minetest-4b6138e69b65271b0e568f821a4d1bd285affedd.zip |
Improve Connection with threading and some kind of congestion control
Diffstat (limited to 'src/servercommand.cpp')
-rw-r--r-- | src/servercommand.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/servercommand.cpp b/src/servercommand.cpp index a09003960..156598940 100644 --- a/src/servercommand.cpp +++ b/src/servercommand.cpp @@ -250,20 +250,19 @@ void cmd_banunban(std::wostringstream &os, ServerCommandContext *ctx) os<<L"-!- No such player"; return; } - - con::Peer *peer = ctx->server->getPeerNoEx(player->peer_id); - if(peer == NULL) - { + + try{ + Address address = ctx->server->getPeerAddress(player->peer_id); + std::string ip_string = address.serializeString(); + ctx->server->setIpBanned(ip_string, player->getName()); + os<<L"-!- Banned "<<narrow_to_wide(ip_string)<<L"|" + <<narrow_to_wide(player->getName()); + + actionstream<<ctx->player->getName()<<" bans " + <<player->getName()<<" / "<<ip_string<<std::endl; + } catch(con::PeerNotFoundException){ dstream<<__FUNCTION_NAME<<": peer was not found"<<std::endl; - return; } - std::string ip_string = peer->address.serializeString(); - ctx->server->setIpBanned(ip_string, player->getName()); - os<<L"-!- Banned "<<narrow_to_wide(ip_string)<<L"|" - <<narrow_to_wide(player->getName()); - - actionstream<<ctx->player->getName()<<" bans " - <<player->getName()<<" / "<<ip_string<<std::endl; } else { |