@@ -78,34 +78,36 @@ void HTTPServerConnection::run()
7878 try
7979 {
8080 Poco::FastMutex::ScopedLock lock (_mutex);
81-
82- HTTPServerResponseImpl response (session);
83- HTTPServerRequestImpl request (response, session, _pParams);
84-
85- Poco::Timestamp now;
86- response.setDate (now);
87- response.setVersion (request.getVersion ());
88- response.setKeepAlive (_pParams->getKeepAlive () && request.getKeepAlive () && session.canKeepAlive ());
89- if (!server.empty ())
90- response.set (" Server" , server);
91- try
81+ if (!_stopped)
9282 {
93- std::auto_ptr<HTTPRequestHandler> pHandler (_pFactory->createRequestHandler (request));
94- if (pHandler.get ())
83+ HTTPServerResponseImpl response (session);
84+ HTTPServerRequestImpl request (response, session, _pParams);
85+
86+ Poco::Timestamp now;
87+ response.setDate (now);
88+ response.setVersion (request.getVersion ());
89+ response.setKeepAlive (_pParams->getKeepAlive () && request.getKeepAlive () && session.canKeepAlive ());
90+ if (!server.empty ())
91+ response.set (" Server" , server);
92+ try
9593 {
96- if (request.expectContinue ())
97- response.sendContinue ();
94+ std::auto_ptr<HTTPRequestHandler> pHandler (_pFactory->createRequestHandler (request));
95+ if (pHandler.get ())
96+ {
97+ if (request.expectContinue ())
98+ response.sendContinue ();
9899
99- pHandler->handleRequest (request, response);
100- session.setKeepAlive (_pParams->getKeepAlive () && response.getKeepAlive () && session.canKeepAlive ());
100+ pHandler->handleRequest (request, response);
101+ session.setKeepAlive (_pParams->getKeepAlive () && response.getKeepAlive () && session.canKeepAlive ());
102+ }
103+ else sendErrorResponse (session, HTTPResponse::HTTP_NOT_IMPLEMENTED);
104+ }
105+ catch (Poco::Exception&)
106+ {
107+ if (!response.sent ())
108+ sendErrorResponse (session, HTTPResponse::HTTP_INTERNAL_SERVER_ERROR);
109+ throw ;
101110 }
102- else sendErrorResponse (session, HTTPResponse::HTTP_NOT_IMPLEMENTED);
103- }
104- catch (Poco::Exception&)
105- {
106- if (!response.sent ())
107- sendErrorResponse (session, HTTPResponse::HTTP_INTERNAL_SERVER_ERROR);
108- throw ;
109111 }
110112 }
111113 catch (NoMessageException&)
@@ -138,7 +140,7 @@ void HTTPServerConnection::onServerStopped(const bool& abortCurrent)
138140 {
139141 try
140142 {
141- socket ().shutdown ();
143+ socket ().close ();
142144 }
143145 catch (...)
144146 {
@@ -150,7 +152,7 @@ void HTTPServerConnection::onServerStopped(const bool& abortCurrent)
150152
151153 try
152154 {
153- socket ().shutdown ();
155+ socket ().close ();
154156 }
155157 catch (...)
156158 {
0 commit comments