From 74414293656fbcf2ab0a63fd3c154d9227376f24 Mon Sep 17 00:00:00 2001 From: Dominik Epple Date: Mon, 25 Nov 2019 14:54:23 +0100 Subject: [PATCH] Expose TLS handle --- src/asio_client_session.cc | 7 +++++++ src/asio_client_session_tls_impl.cc | 2 ++ src/asio_client_session_tls_impl.h | 1 + src/includes/nghttp2/asio_http2_client.h | 1 + 4 files changed, 11 insertions(+) diff --git a/src/asio_client_session.cc b/src/asio_client_session.cc index 5cf01c74..e26841ed 100644 --- a/src/asio_client_session.cc +++ b/src/asio_client_session.cc @@ -140,6 +140,13 @@ void session::read_timeout(const boost::posix_time::time_duration &t) { impl_->read_timeout(t); } +SSL *session::tls_native_handle() { + if(session_tls_impl* i=dynamic_cast(impl_.get())) { + return i->native_handle(); + } + return nullptr; +} + priority_spec::priority_spec(const int32_t stream_id, const int32_t weight, const bool exclusive) : valid_(true) { diff --git a/src/asio_client_session_tls_impl.cc b/src/asio_client_session_tls_impl.cc index 377886ca..ef19c545 100644 --- a/src/asio_client_session_tls_impl.cc +++ b/src/asio_client_session_tls_impl.cc @@ -86,6 +86,8 @@ void session_tls_impl::start_connect(tcp::resolver::iterator endpoint_it) { tcp::socket &session_tls_impl::socket() { return socket_.next_layer(); } +SSL *session_tls_impl::native_handle() { return socket_.native_handle(); } + void session_tls_impl::read_socket( std::function h) { socket_.async_read_some(boost::asio::buffer(rb_), h); diff --git a/src/asio_client_session_tls_impl.h b/src/asio_client_session_tls_impl.h index 645c60f4..8237e675 100644 --- a/src/asio_client_session_tls_impl.h +++ b/src/asio_client_session_tls_impl.h @@ -47,6 +47,7 @@ public: virtual void start_connect(tcp::resolver::iterator endpoint_it); virtual tcp::socket &socket(); + virtual SSL* native_handle(); virtual void read_socket( std::function h); diff --git a/src/includes/nghttp2/asio_http2_client.h b/src/includes/nghttp2/asio_http2_client.h index 59ba9b26..296fa060 100644 --- a/src/includes/nghttp2/asio_http2_client.h +++ b/src/includes/nghttp2/asio_http2_client.h @@ -233,6 +233,7 @@ public: generator_cb cb, header_map h = header_map{}, priority_spec prio = priority_spec()) const; + SSL *tls_native_handle(); private: std::shared_ptr impl_; };