diff options
Diffstat (limited to 'src/Net/Connection.cpp')
-rw-r--r-- | src/Net/Connection.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/Net/Connection.cpp b/src/Net/Connection.cpp index f1beb35..256bbfe 100644 --- a/src/Net/Connection.cpp +++ b/src/Net/Connection.cpp @@ -35,7 +35,7 @@ Connection::~Connection() { void Connection::handleHandshake(const boost::system::error_code& error) { if(error) { - application->logf("Error: %s", error.message().c_str()); + application->logf(Core::Logger::LOG_NETWORK, "Error: %s", error.message().c_str()); // TODO Error handling doDisconnect(); @@ -64,7 +64,7 @@ void Connection::handleShutdown(const boost::system::error_code& error) { boost::lock_guard<boost::shared_mutex> lock(connectionLock); if(error) { - application->logf(Core::Logger::LOG_VERBOSE, "Shutdown error: %s", error.message().c_str()); + application->logf(Core::Logger::LOG_NETWORK, Core::Logger::LOG_VERBOSE, "Shutdown error: %s", error.message().c_str()); } _setState(DISCONNECTED); @@ -90,11 +90,17 @@ void Connection::handleHeaderReceive(const boost::shared_array<boost::uint8_t> & header = *reinterpret_cast<const Packet::Header*>(data.get()); } - if(header.length == 0) { + boost::uint32_t length = ntohl(header.length); + + if(length == 0) { receiveSignal.emit(boost::shared_ptr<Packet>(new Packet(ntohs(header.requestId)))); enterReceiveLoop(); } + else if(length > receiveLimit) { + application->log(Core::Logger::LOG_NETWORK, Core::Logger::LOG_WARNING, "Packet size limit exceeded. Disconnecting."); + doDisconnect(); + } else { rawReceive(ntohl(header.length), boost::bind(&Connection::handleDataReceive, thisPtr.lock(), _1)); } @@ -115,7 +121,7 @@ void Connection::handleRead(const boost::system::error_code& error, std::size_t if(error == boost::system::errc::operation_canceled) return; - application->logf(Core::Logger::LOG_DEFAULT, "Read error: %s", error.message().c_str()); + application->logf(Core::Logger::LOG_NETWORK, "Read error: %s", error.message().c_str()); // TODO Error doDisconnect(); @@ -176,7 +182,7 @@ void Connection::rawReceive(std::size_t length, const boost::function1<void, con void Connection::handleWrite(const boost::system::error_code& error, std::size_t) { if(error) - application->logf(Core::Logger::LOG_VERBOSE, "Write error: %s", error.message().c_str()); + application->logf(Core::Logger::LOG_NETWORK, Core::Logger::LOG_VERBOSE, "Write error: %s", error.message().c_str()); { boost::unique_lock<boost::shared_mutex> lock(connectionLock); |