From 0983fb8a5a159951523acb4af365345feb7b5b69 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 19 Aug 2012 15:44:41 +0300 Subject: Increase buffers size and flush send buffer if it too big. --- src/net/tmwa/messageout.cpp | 1 + src/net/tmwa/network.cpp | 14 +++++++++++++- src/net/tmwa/network.h | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/net/tmwa/messageout.cpp b/src/net/tmwa/messageout.cpp index 790611381..258796575 100644 --- a/src/net/tmwa/messageout.cpp +++ b/src/net/tmwa/messageout.cpp @@ -45,6 +45,7 @@ MessageOut::MessageOut(short id): Net::MessageOut(id) { mNetwork = TmwAthena::Network::instance(); + mNetwork->fixSendBuffer(); mData = mNetwork->mOutBuffer + mNetwork->mOutSize; writeInt16(id); diff --git a/src/net/tmwa/network.cpp b/src/net/tmwa/network.cpp index 5d5a84a64..9c84b2e25 100644 --- a/src/net/tmwa/network.cpp +++ b/src/net/tmwa/network.cpp @@ -87,7 +87,8 @@ short packet_lengths[] = -1, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -const unsigned int BUFFER_SIZE = 655360; +const unsigned int BUFFER_SIZE = 1000000; +const unsigned int BUFFER_LIMIT = 930000; namespace TmwAthena { @@ -487,4 +488,15 @@ Uint16 Network::readWord(int pos) #endif } +void Network::fixSendBuffer() +{ + if (mOutSize > BUFFER_LIMIT) + { + if (mState != CONNECTED) + mOutSize = 0; + else + flush(); + } +} + } // namespace TmwAthena diff --git a/src/net/tmwa/network.h b/src/net/tmwa/network.h index c0ec6ef3c..823c8cf66 100644 --- a/src/net/tmwa/network.h +++ b/src/net/tmwa/network.h @@ -87,6 +87,8 @@ class Network void flush(); + void fixSendBuffer(); + // ERROR replaced by NET_ERROR because already defined in Windows enum { -- cgit v1.2.3-60-g2f50