summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/http/connection.cc6
-rw-r--r--src/lib/http/connection_pool.cc1
2 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/http/connection.cc b/src/lib/http/connection.cc
index 6944bf2b37..1e5f5cb2ec 100644
--- a/src/lib/http/connection.cc
+++ b/src/lib/http/connection.cc
@@ -148,8 +148,12 @@ HttpConnection::acceptorCallback(const boost::system::error_code& ec) {
HTTP_REQUEST_RECEIVE_START)
.arg(getRemoteEndpointAddressAsText())
.arg(static_cast<unsigned>(request_timeout_/1000));
+ // Pass raw pointer rather than shared_ptr to this object,
+ // because IntervalTimer already passes shared pointer to the
+ // IntervalTimerImpl to make sure that the callback remains
+ // valid.
request_timer_.setup(boost::bind(&HttpConnection::requestTimeoutCallback,
- shared_from_this()),
+ this),
request_timeout_, IntervalTimer::ONE_SHOT);
doRead();
}
diff --git a/src/lib/http/connection_pool.cc b/src/lib/http/connection_pool.cc
index e5a7b5d2af..8d39c02d4d 100644
--- a/src/lib/http/connection_pool.cc
+++ b/src/lib/http/connection_pool.cc
@@ -19,6 +19,7 @@ HttpConnectionPool::start(const HttpConnectionPtr& connection) {
void
HttpConnectionPool::stop(const HttpConnectionPtr& connection) {
connections_.remove(connection);
+ connection->close();
}
void