summaryrefslogtreecommitdiff
path: root/src/AbstractCommand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/AbstractCommand.cc')
-rw-r--r--src/AbstractCommand.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/AbstractCommand.cc b/src/AbstractCommand.cc
index eb2f2aee..59671a77 100644
--- a/src/AbstractCommand.cc
+++ b/src/AbstractCommand.cc
@@ -55,6 +55,8 @@
#include "message.h"
#include "prefs.h"
#include "StringFormat.h"
+#include "ServerStat.h"
+#include "RequestGroupMan.h"
namespace aria2 {
@@ -136,6 +138,16 @@ bool AbstractCommand::execute() {
return executeInternal();
} else {
if(checkPoint.elapsed(timeout)) {
+ // timeout triggers ServerStat error state.
+ SharedHandle<ServerStat> ss =
+ e->_requestGroupMan->findServerStat(req->getHost(),
+ req->getProtocol());
+ if(ss.isNull()) {
+ ss.reset(new ServerStat(req->getHost(), req->getProtocol()));
+ e->_requestGroupMan->addServerStat(ss);
+ }
+ ss->setError();
+
throw DlRetryEx(EX_TIME_OUT);
}
e->commands.push_back(this);