route_replies: Improve the timeout handling

One can now disable the timeout messages with '/msg *route_replies silent yes'
and the message shown on timeout sounds less grave.

It would be best if we could fix all of the timeout bugs, but most of the
reports we got lately sound like they were caused by cosmic rays or something...


git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1660 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
psychon
2009-11-15 13:03:48 +00:00
parent eec57eb81e
commit f2df100cc9
+35 -11
View File
@@ -256,18 +256,19 @@ public:
{
// The timer will be deleted after this by the event loop
PutModule("This module hit a timeout. This is a BUG!");
if (GetNV("silent_timeouts") != "yes") {
PutModule("This module hit a timeout which is possibly a bug.");
PutModule("Use \"silent yes\" to disable this message.");
PutModule("Last request: " + m_sLastRequest);
PutModule("Expected replies: ");
PutModule("Last request: " + m_sLastRequest);
PutModule("Expected replies: ");
for (size_t i = 0; m_pReplies[i].szReply != NULL; i++) {
if (m_pReplies[i].bLastResponse)
PutModule(m_pReplies[i].szReply +
CString(" (last)"));
else
PutModule(m_pReplies[i].szReply);
for (size_t i = 0; m_pReplies[i].szReply != NULL; i++) {
if (m_pReplies[i].bLastResponse)
PutModule(m_pReplies[i].szReply +
CString(" (last)"));
else
PutModule(m_pReplies[i].szReply);
}
}
m_pDoing = NULL;
@@ -331,6 +332,29 @@ private:
it->second.erase(it->second.begin());
}
virtual void OnModCommand(const CString& sCommand) {
const CString sCmd = sCommand.Token(0);
const CString sArgs = sCommand.Token(1, true);
if (sCmd.Equals("silent")) {
if (sArgs.Equals("yes")) {
SetNV("silent_timeouts", "yes");
PutModule("Disabled timeout messages");
} else if (sArgs.Equals("no")) {
DelNV("silent_timeouts");
PutModule("Enabled timeout messages");
} else if (sArgs.empty()) {
if (GetNV("silent_timeouts") == "yes")
PutModule("Timeout messages are disabled");
else
PutModule("Timeout message are enabled");
} else
PutModule("Invalid argument");
} else {
PutModule("Available commands: silent [yes/no], silent");
}
}
CClient *m_pDoing;
const struct reply *m_pReplies;
requestQueue m_vsPending;