diff --git a/src/http_connection.cpp b/src/http_connection.cpp index 405136ba8..2cb4f553e 100644 --- a/src/http_connection.cpp +++ b/src/http_connection.cpp @@ -450,43 +450,8 @@ void http_connection::close(bool force) } else { -#ifdef TORRENT_USE_OPENSSL - auto self = shared_from_this(); - // for SSL connections, first do an async_shutdown, before closing the socket -#if defined TORRENT_ASIO_DEBUGGING -#define MAYBE_ASIO_DEBUGGING add_outstanding_async("on_close_socket"); -#else -#define MAYBE_ASIO_DEBUGGING -#endif - - auto handler = [=](error_code const&) { - COMPLETE_ASYNC("on_close_socket"); - error_code e; - self->m_timer.cancel(e); - self->m_sock.close(e); - }; - -#define CASE(t) case aux::socket_type_int_impl>::value: \ - MAYBE_ASIO_DEBUGGING \ - m_sock.get>()->async_shutdown(std::move(handler)); \ - break; - - switch (m_sock.type()) - { - CASE(tcp::socket) - CASE(socks5_stream) - CASE(http_stream) - CASE(utp_stream) - default: - m_sock.close(ec); - m_timer.cancel(ec); - break; - } -#undef CASE -#else - m_sock.close(ec); + async_shutdown(m_sock, shared_from_this()); m_timer.cancel(ec); -#endif // TORRENT_USE_OPENSSL } m_limiter_timer.cancel(ec); diff --git a/test/test_privacy.cpp b/test/test_privacy.cpp index bdfe98040..7dd379079 100644 --- a/test/test_privacy.cpp +++ b/test/test_privacy.cpp @@ -158,7 +158,10 @@ session_proxy test_proxy(settings_pack::proxy_type_t proxy_type, flags_t flags) std::vector accepted_trackers; - const int timeout = 30; + int const timeout = 30; + std::size_t const expected_trackers + = ((flags & expect_http_connection) ? 2 : 0) + + ((flags & expect_udp_connection) ? 2 : 0); for (int i = 0; i < timeout; ++i) { @@ -176,7 +179,7 @@ session_proxy test_proxy(settings_pack::proxy_type_t proxy_type, flags_t flags) if (num_udp_announces() >= prev_udp_announces + 1 && num_peer_hits() > 0 - && accepted_trackers.size() >= 2) + && accepted_trackers.size() >= expected_trackers) { break; } @@ -206,22 +209,26 @@ session_proxy test_proxy(settings_pack::proxy_type_t proxy_type, flags_t flags) if (flags & expect_http_connection) { + std::printf("expecting: %s\n", http_tracker_url); TEST_CHECK(std::find(accepted_trackers.begin(), accepted_trackers.end() , http_tracker_url) != accepted_trackers.end()); } else { + std::printf("NOT expecting: %s\n", http_tracker_url); TEST_CHECK(std::find(accepted_trackers.begin(), accepted_trackers.end() , http_tracker_url) == accepted_trackers.end()); } if (flags & expect_udp_connection) { + std::printf("expecting: %s\n", udp_tracker_url); TEST_CHECK(std::find(accepted_trackers.begin(), accepted_trackers.end() , udp_tracker_url) != accepted_trackers.end()); } else { + std::printf("NOT expecting: %s\n", udp_tracker_url); TEST_CHECK(std::find(accepted_trackers.begin(), accepted_trackers.end() , udp_tracker_url) == accepted_trackers.end()); }