diff options
author | Treeki <treeki@gmail.com> | 2014-02-15 10:11:57 +0100 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2014-02-15 10:11:57 +0100 |
commit | 848c96b0df5282a9089bd4259e3e6ae3620f3ec9 (patch) | |
tree | 6343900bef4dd1d5c74836b639028678acd32316 | |
parent | 878a0c157b772a7ed04d4cc395059087f964b823 (diff) | |
download | bounce4-848c96b0df5282a9089bd4259e3e6ae3620f3ec9.tar.gz bounce4-848c96b0df5282a9089bd4259e3e6ae3620f3ec9.zip |
add limiting of the amount of messages in a window
Diffstat (limited to '')
-rw-r--r-- | bouncer/core.h | 1 | ||||
-rw-r--r-- | bouncer/netcore.cpp | 8 | ||||
-rw-r--r-- | bouncer/window.cpp | 2 |
3 files changed, 11 insertions, 0 deletions
diff --git a/bouncer/core.h b/bouncer/core.h index a8f5d9b..4bb266e 100644 --- a/bouncer/core.h +++ b/bouncer/core.h @@ -397,6 +397,7 @@ public: bool quitFlag; std::string bouncerPassword; + int maxWindowMessageCount; int execute(); diff --git a/bouncer/netcore.cpp b/bouncer/netcore.cpp index 98f13a1..7c2305e 100644 --- a/bouncer/netcore.cpp +++ b/bouncer/netcore.cpp @@ -331,6 +331,10 @@ void NetCore::loadConfig() { for (auto §ion : sections) { if (section.title == "Header") { bouncerPassword = section.data["password"]; + + maxWindowMessageCount = atoi(section.data["maxBufferSize"].c_str()); + if (maxWindowMessageCount < 5 || maxWindowMessageCount > 2000) + maxWindowMessageCount = 1000; } if (section.title == "Server" && serverCount < SERVER_LIMIT) { @@ -351,6 +355,10 @@ void NetCore::saveConfig() { header.data["password"] = bouncerPassword; + char conv[50]; + sprintf(conv, "%d", maxWindowMessageCount); + header.data["maxWindowMessageCount"] = conv; + sections.push_back(header); for (int i = 0; i < serverCount; i++) { diff --git a/bouncer/window.cpp b/bouncer/window.cpp index 1f6aa4a..04689f5 100644 --- a/bouncer/window.cpp +++ b/bouncer/window.cpp @@ -31,6 +31,8 @@ void Window::notifyWindowRename() { } void Window::pushMessage(const char *str, int priority) { + if (messages.size() >= core->maxWindowMessageCount) + messages.pop_front(); messages.push_back(str); bool createdPacket = false; |