From 55c5cccf09d79a573577ded587eedf233acaf6a6 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 12 May 2009 16:06:14 +0000 Subject: 2009-05-12 Tatsuhiro Tsujikawa Fixed segmentation fault error. SocketBuffer::sendResponse() may throw exception , so it is now in try block. * src/HttpServerResponseCommand.cc --- src/HttpServerResponseCommand.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/HttpServerResponseCommand.cc') diff --git a/src/HttpServerResponseCommand.cc b/src/HttpServerResponseCommand.cc index ca096b93..9e689571 100644 --- a/src/HttpServerResponseCommand.cc +++ b/src/HttpServerResponseCommand.cc @@ -39,6 +39,7 @@ #include "Logger.h" #include "HttpServerCommand.h" #include "RequestGroupMan.h" +#include "RecoverableException.h" namespace aria2 { @@ -66,7 +67,13 @@ bool HttpServerResponseCommand::execute() if(_e->_requestGroupMan->downloadFinished() || _e->isHaltRequested()) { return true; } - _httpServer->sendResponse(); + try { + _httpServer->sendResponse(); + } catch(RecoverableException& e) { + logger->info("CUID#%d - Error occurred while transmitting response body.", + e, cuid); + return true; + } if(_httpServer->sendBufferIsEmpty()) { logger->info("CUID#%d - HttpServer: all response transmitted.", cuid); if(_httpServer->supportsPersistentConnection()) { @@ -82,7 +89,7 @@ bool HttpServerResponseCommand::execute() return true; } else { _e->commands.push_back(this); - return true; + return false; } } } -- cgit