@@ -216,17 +216,23 @@ namespace boost { namespace network { namespace http { namespace impl {
216
216
217
217
void read_body (basic_response<Tag> & response_, boost::asio::streambuf & response_buffer) {
218
218
connection_base::read_body (socket_, response_, response_buffer);
219
+ typename headers_range<basic_response<Tag> >::type connection_range =
220
+ headers (response_)[" Connection" ];
221
+ if (version_major == 1 && version_minor == 1 && !empty (connection_range) && boost::iequals (begin (connection_range)->second , " close" )) {
222
+ close_socket ();
223
+ } else if (version_major == 1 && version_minor == 0 ) {
224
+ close_socket ();
225
+ }
219
226
}
220
227
221
228
bool is_open () {
222
229
return socket_.lowest_layer ().is_open ();
223
230
}
224
231
225
232
void close_socket () {
226
- if (is_open ()) {
227
- boost::system::error_code ignored;
228
- socket_.lowest_layer ().shutdown (boost::asio::ip::tcp::socket::shutdown_both, ignored);
229
- }
233
+ boost::system::error_code ignored;
234
+ socket_.lowest_layer ().shutdown (boost::asio::ip::tcp::socket::shutdown_both, ignored);
235
+ socket_.lowest_layer ().close (ignored);
230
236
}
231
237
232
238
~https_sync_connection () {
@@ -272,15 +278,21 @@ namespace boost { namespace network { namespace http { namespace impl {
272
278
273
279
void read_body (basic_response<Tag> & response_, boost::asio::streambuf & response_buffer) {
274
280
connection_base::read_body (socket_, response_, response_buffer);
281
+ typename headers_range<basic_response<Tag> >::type connection_range =
282
+ headers (response_)[" Connection" ];
283
+ if (version_major == 1 && version_minor == 1 && !empty (connection_range) && boost::iequals (begin (connection_range)->second , " close" )) {
284
+ close_socket ();
285
+ } else if (version_major == 1 && version_minor == 0 ) {
286
+ close_socket ();
287
+ }
275
288
}
276
289
277
290
bool is_open () { return socket_.is_open (); }
278
291
279
292
void close_socket () {
280
- if (is_open ()) {
281
- boost::system::error_code ignored;
282
- socket_.shutdown (boost::asio::ip::tcp::socket::shutdown_both, ignored);
283
- }
293
+ boost::system::error_code ignored;
294
+ socket_.shutdown (boost::asio::ip::tcp::socket::shutdown_both, ignored);
295
+ socket_.close (ignored);
284
296
}
285
297
286
298
~http_sync_connection () {
0 commit comments