Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit16a6627

Browse files
committed
Adding explicit calls to close sockets from the client side.
1 parent4d336e7 commit16a6627

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

‎boost/network/protocol/http/impl/sync_connection_base.hpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -216,17 +216,23 @@ namespace boost { namespace network { namespace http { namespace impl {
216216

217217
voidread_body(basic_response<Tag> & response_, boost::asio::streambuf & response_buffer) {
218218
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+
}elseif (version_major ==1 && version_minor ==0) {
224+
close_socket();
225+
}
219226
}
220227

221228
boolis_open() {
222229
return socket_.lowest_layer().is_open();
223230
}
224231

225232
voidclose_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);
230236
}
231237

232238
~https_sync_connection() {
@@ -272,15 +278,21 @@ namespace boost { namespace network { namespace http { namespace impl {
272278

273279
voidread_body(basic_response<Tag> & response_, boost::asio::streambuf & response_buffer) {
274280
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+
}elseif (version_major ==1 && version_minor ==0) {
286+
close_socket();
287+
}
275288
}
276289

277290
boolis_open() {return socket_.is_open(); }
278291

279292
voidclose_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);
284296
}
285297

286298
~http_sync_connection() {

‎boost/network/protocol/http/policies/pooled_connection.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,13 @@ namespace boost { namespace network { namespace http {
8888
pimpl->read_body(response_, response_buffer);
8989
}
9090

91+
typename headers_range<basic_response<Tag> >::type connection_range =headers(response_)["Connection"];
92+
if (version_major ==1 && version_minor ==1 && !empty(connection_range) &&begin(connection_range)->second ==string_type("close")) {
93+
pimpl->close_socket();
94+
}elseif (version_major ==1 && version_minor ==0) {
95+
pimpl->close_socket();
96+
}
97+
9198
if (connection_follow_redirect_) {
9299
boost::uint16_t status = response_.status();
93100
if (status >=300 && status <=307) {
@@ -103,11 +110,6 @@ namespace boost { namespace network { namespace http {
103110
}
104111
}
105112

106-
typename headers_range<basic_response<Tag> >::type connection_range =headers(response_)["Connection"];
107-
if (!empty(connection_range) &&begin(connection_range)->second ==string_type("close")) {
108-
pimpl->close_socket();
109-
}
110-
111113
return response_;
112114
}while(true);
113115
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp