@@ -65,24 +65,24 @@ namespace web { namespace http
65
65
m_keep_alive (true )
66
66
{}
67
67
68
- bool close (bool cancel_timer )
68
+ void close ()
69
69
{
70
- if (cancel_timer)
71
- {
72
- m_pool_timer.cancel ();
73
- }
74
70
m_keep_alive = false ;
75
71
boost::system::error_code error;
76
72
m_socket.shutdown (tcp::socket::shutdown_both, error);
77
73
m_socket.close (error);
78
- return !error;
79
74
}
80
75
81
- bool cancel ()
76
+ boost::system::error_code cancel ()
82
77
{
83
78
boost::system::error_code error;
84
79
m_socket.cancel (error);
85
- return !error;
80
+ return error;
81
+ }
82
+
83
+ void cancel_pool_timer ()
84
+ {
85
+ m_pool_timer.cancel ();
86
86
}
87
87
88
88
bool is_reused () const { return m_is_reused; }
@@ -102,7 +102,7 @@ namespace web { namespace http
102
102
103
103
void start_reuse ()
104
104
{
105
- m_pool_timer. cancel ();
105
+ cancel_pool_timer ();
106
106
m_is_reused = true ;
107
107
}
108
108
@@ -131,7 +131,8 @@ namespace web { namespace http
131
131
// it only has shared_ptr reference to pool. Connections use weak_ptr instead.
132
132
for (auto & connection : m_connections)
133
133
{
134
- connection->close (true );
134
+ connection->cancel_pool_timer ();
135
+ connection->close ();
135
136
}
136
137
}
137
138
@@ -151,7 +152,7 @@ namespace web { namespace http
151
152
else
152
153
{
153
154
// Connection is not returned to pool => will be destroyed.
154
- connection->close (false );
155
+ connection->close ();
155
156
}
156
157
}
157
158
@@ -274,9 +275,10 @@ namespace web { namespace http
274
275
if (!ec)
275
276
{
276
277
m_timedout = true ;
277
- if (!m_connection->cancel ())
278
+ auto error (m_connection->cancel ());
279
+ if (error)
278
280
{
279
- report_error (" Failed to cancel the socket" , boost::system::error_code () );
281
+ report_error (" Failed to cancel the socket" , error );
280
282
}
281
283
}
282
284
}
@@ -419,7 +421,7 @@ namespace web { namespace http
419
421
// Cancel operations and all async handlers.
420
422
ctx->m_connection ->cancel ();
421
423
// Shut down transmissions and close socket. Also prevents connection being pooled.
422
- ctx->m_connection ->close (false );
424
+ ctx->m_connection ->close ();
423
425
});
424
426
}
425
427
}
@@ -499,7 +501,7 @@ namespace web { namespace http
499
501
{
500
502
ctx->m_timeout_timer .cancel ();
501
503
502
- ctx->m_connection ->close (false );
504
+ ctx->m_connection ->close ();
503
505
ctx->m_connection = m_pool->obtain ();
504
506
505
507
auto endpoint = *endpoints;
@@ -754,7 +756,7 @@ namespace web { namespace http
754
756
{
755
757
// Connection was closed while connection was in pool.
756
758
// Ensure connection is closed in a robust way.
757
- ctx->m_connection ->close (false );
759
+ ctx->m_connection ->close ();
758
760
759
761
// Replace context and destroy the old one. The request,
760
762
// completion event and cancellation registration are copied to
0 commit comments