From f06fc4d38a7783d7c4fb4c6a38be19324ea8ab13 Mon Sep 17 00:00:00 2001 From: kgbook Date: Tue, 24 Sep 2019 17:59:58 +0800 Subject: [PATCH 1/3] shutdown before close --- .gitignore | 3 +++ include/crow/http_connection.h | 3 +++ include/crow/socket_adaptors.h | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/.gitignore b/.gitignore index cfe8b6444..e008341c2 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,6 @@ crow_all.h # conan.io build/ + +.idea +cmake-build-debug \ No newline at end of file diff --git a/include/crow/http_connection.h b/include/crow/http_connection.h index 3d214f3d2..cc31b87b1 100644 --- a/include/crow/http_connection.h +++ b/include/crow/http_connection.h @@ -480,6 +480,7 @@ namespace crow { cancel_deadline_timer(); parser_.done(); + adaptor_.shutdown_recv(); adaptor_.close(); is_reading = false; CROW_LOG_DEBUG << this << " from read(1)"; @@ -520,6 +521,7 @@ namespace crow { if (close_connection_) { + adaptor_.shutdown_send(); adaptor_.close(); CROW_LOG_DEBUG << this << " from write(1)"; check_destroy(); @@ -559,6 +561,7 @@ namespace crow { return; } + adaptor_.shutdown_both(); adaptor_.close(); }); CROW_LOG_DEBUG << this << " timer added: " << timer_cancel_key_.first << ' ' << timer_cancel_key_.second; diff --git a/include/crow/socket_adaptors.h b/include/crow/socket_adaptors.h index 901117f97..8359fec14 100644 --- a/include/crow/socket_adaptors.h +++ b/include/crow/socket_adaptors.h @@ -48,6 +48,24 @@ namespace crow socket_.close(ec); } + void shutdown_both() + { + boost::system::error_code ec; + socket_.shutdown(boost::asio::socket_base::shutdown_type::shutdown_both, ec); + } + + void shutdown_send() + { + boost::system::error_code ec; + socket_.shutdown(boost::asio::socket_base::shutdown_type::shutdown_send, ec); + } + + void shutdown_recv() + { + boost::system::error_code ec; + socket_.shutdown(boost::asio::socket_base::shutdown_type::shutdown_receive, ec); + } + template void start(F f) { From 085fad7fc6039158df0cbc70432a058034a0306f Mon Sep 17 00:00:00 2001 From: kgbook Date: Wed, 25 Sep 2019 11:44:20 +0800 Subject: [PATCH 2/3] fix Travis CI error:libboost1.55-all-dev not found --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d7a50c45f..a173b1d69 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ addons: - g++-4.9 - g++-5 - clang-3.6 - - libboost1.55-all-dev + - libboost-all-dev - python-pip install: From f8faf32e1fbc39f97f49753b1caee4d38efe2d53 Mon Sep 17 00:00:00 2001 From: kgbook Date: Wed, 25 Sep 2019 16:43:32 +0800 Subject: [PATCH 3/3] fix(build):no member function in crow::SSLAdaptor --- include/crow/socket_adaptors.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/crow/socket_adaptors.h b/include/crow/socket_adaptors.h index 8359fec14..8e372e336 100644 --- a/include/crow/socket_adaptors.h +++ b/include/crow/socket_adaptors.h @@ -112,6 +112,24 @@ namespace crow raw_socket().close(ec); } + void shutdown_both() + { + boost::system::error_code ec; + raw_socket().shutdown(boost::asio::socket_base::shutdown_type::shutdown_both, ec); + } + + void shutdown_send() + { + boost::system::error_code ec; + raw_socket().shutdown(boost::asio::socket_base::shutdown_type::shutdown_send, ec); + } + + void shutdown_recv() + { + boost::system::error_code ec; + raw_socket().shutdown(boost::asio::socket_base::shutdown_type::shutdown_receive, ec); + } + boost::asio::io_service& get_io_service() { return raw_socket().get_io_service();