refactor to use std::shared_ptr with http_connection (#1049)
This commit is contained in:
parent
cdb15ba886
commit
6e891a0211
|
@ -165,8 +165,8 @@ namespace libtorrent
|
||||||
// pointers may be nullptr!
|
// pointers may be nullptr!
|
||||||
// These must be shared_ptr to avoid a dangling reference if an
|
// These must be shared_ptr to avoid a dangling reference if an
|
||||||
// incoming packet is in the event queue when the socket is erased
|
// incoming packet is in the event queue when the socket is erased
|
||||||
boost::shared_ptr<tcp::acceptor> sock;
|
std::shared_ptr<tcp::acceptor> sock;
|
||||||
boost::shared_ptr<udp_socket> udp_sock;
|
std::shared_ptr<udp_socket> udp_sock;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace aux
|
namespace aux
|
||||||
|
@ -269,15 +269,15 @@ namespace libtorrent
|
||||||
tcp::endpoint get_ipv6_interface() const override;
|
tcp::endpoint get_ipv6_interface() const override;
|
||||||
tcp::endpoint get_ipv4_interface() const override;
|
tcp::endpoint get_ipv4_interface() const override;
|
||||||
|
|
||||||
void async_accept(boost::shared_ptr<tcp::acceptor> const& listener, bool ssl);
|
void async_accept(std::shared_ptr<tcp::acceptor> const& listener, bool ssl);
|
||||||
void on_accept_connection(boost::shared_ptr<socket_type> const& s
|
void on_accept_connection(std::shared_ptr<socket_type> const& s
|
||||||
, boost::weak_ptr<tcp::acceptor> listener, error_code const& e, bool ssl);
|
, std::weak_ptr<tcp::acceptor> listener, error_code const& e, bool ssl);
|
||||||
void on_socks_listen(boost::shared_ptr<socket_type> const& s
|
void on_socks_listen(std::shared_ptr<socket_type> const& s
|
||||||
, error_code const& e);
|
, error_code const& e);
|
||||||
void on_socks_accept(boost::shared_ptr<socket_type> const& s
|
void on_socks_accept(std::shared_ptr<socket_type> const& s
|
||||||
, error_code const& e);
|
, error_code const& e);
|
||||||
|
|
||||||
void incoming_connection(boost::shared_ptr<socket_type> const& s);
|
void incoming_connection(std::shared_ptr<socket_type> const& s);
|
||||||
|
|
||||||
std::weak_ptr<torrent> find_torrent(sha1_hash const& info_hash) const override;
|
std::weak_ptr<torrent> find_torrent(sha1_hash const& info_hash) const override;
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
@ -554,7 +554,7 @@ namespace libtorrent
|
||||||
|
|
||||||
void on_i2p_open(error_code const& ec);
|
void on_i2p_open(error_code const& ec);
|
||||||
void open_new_incoming_i2p_connection();
|
void open_new_incoming_i2p_connection();
|
||||||
void on_i2p_accept(boost::shared_ptr<socket_type> const& s
|
void on_i2p_accept(std::shared_ptr<socket_type> const& s
|
||||||
, error_code const& e);
|
, error_code const& e);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -842,7 +842,7 @@ namespace libtorrent
|
||||||
// are performing SSL handshake. When we shut down
|
// are performing SSL handshake. When we shut down
|
||||||
// the session, all of these are disconnected, otherwise
|
// the session, all of these are disconnected, otherwise
|
||||||
// they would linger and stall or hang session shutdown
|
// they would linger and stall or hang session shutdown
|
||||||
std::set<boost::shared_ptr<socket_type> > m_incoming_sockets;
|
std::set<std::shared_ptr<socket_type>> m_incoming_sockets;
|
||||||
|
|
||||||
// maps IP ranges to bitfields representing peer class IDs
|
// maps IP ranges to bitfields representing peer class IDs
|
||||||
// to assign peers matching a specific IP range based on its
|
// to assign peers matching a specific IP range based on its
|
||||||
|
@ -892,18 +892,18 @@ namespace libtorrent
|
||||||
|
|
||||||
#if TORRENT_USE_I2P
|
#if TORRENT_USE_I2P
|
||||||
i2p_connection m_i2p_conn;
|
i2p_connection m_i2p_conn;
|
||||||
boost::shared_ptr<socket_type> m_i2p_listen_socket;
|
std::shared_ptr<socket_type> m_i2p_listen_socket;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
ssl::context* ssl_ctx() override { return &m_ssl_ctx; }
|
ssl::context* ssl_ctx() override { return &m_ssl_ctx; }
|
||||||
void on_incoming_utp_ssl(boost::shared_ptr<socket_type> const& s);
|
void on_incoming_utp_ssl(std::shared_ptr<socket_type> const& s);
|
||||||
void ssl_handshake(error_code const& ec, boost::shared_ptr<socket_type> s);
|
void ssl_handshake(error_code const& ec, std::shared_ptr<socket_type> s);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// when as a socks proxy is used for peers, also
|
// when as a socks proxy is used for peers, also
|
||||||
// listen for incoming connections on a socks connection
|
// listen for incoming connections on a socks connection
|
||||||
boost::shared_ptr<socket_type> m_socks_listen_socket;
|
std::shared_ptr<socket_type> m_socks_listen_socket;
|
||||||
std::uint16_t m_socks_listen_port = 0;
|
std::uint16_t m_socks_listen_port = 0;
|
||||||
|
|
||||||
// round-robin index into m_outgoing_interfaces
|
// round-robin index into m_outgoing_interfaces
|
||||||
|
@ -1051,9 +1051,9 @@ namespace libtorrent
|
||||||
, error_code& ec
|
, error_code& ec
|
||||||
, int flags);
|
, int flags);
|
||||||
|
|
||||||
void on_udp_writeable(boost::weak_ptr<udp_socket> s, error_code const& ec);
|
void on_udp_writeable(std::weak_ptr<udp_socket> s, error_code const& ec);
|
||||||
|
|
||||||
void on_udp_packet(boost::weak_ptr<udp_socket> const& s
|
void on_udp_packet(std::weak_ptr<udp_socket> const& s
|
||||||
, bool ssl, error_code const& ec);
|
, bool ssl, error_code const& ec);
|
||||||
|
|
||||||
libtorrent::utp_socket_manager m_utp_socket_manager;
|
libtorrent::utp_socket_manager m_utp_socket_manager;
|
||||||
|
|
|
@ -75,7 +75,7 @@ typedef std::function<void(http_connection&, std::vector<tcp::endpoint>&)> http_
|
||||||
// when bottled, the last two arguments to the handler
|
// when bottled, the last two arguments to the handler
|
||||||
// will always be 0
|
// will always be 0
|
||||||
struct TORRENT_EXTRA_EXPORT http_connection
|
struct TORRENT_EXTRA_EXPORT http_connection
|
||||||
: boost::enable_shared_from_this<http_connection>
|
: std::enable_shared_from_this<http_connection>
|
||||||
, boost::noncopyable
|
, boost::noncopyable
|
||||||
{
|
{
|
||||||
http_connection(io_service& ios
|
http_connection(io_service& ios
|
||||||
|
@ -138,7 +138,7 @@ private:
|
||||||
void on_connect(error_code const& e);
|
void on_connect(error_code const& e);
|
||||||
void on_write(error_code const& e);
|
void on_write(error_code const& e);
|
||||||
void on_read(error_code const& e, std::size_t bytes_transferred);
|
void on_read(error_code const& e, std::size_t bytes_transferred);
|
||||||
static void on_timeout(boost::weak_ptr<http_connection> p
|
static void on_timeout(std::weak_ptr<http_connection> p
|
||||||
, error_code const& e);
|
, error_code const& e);
|
||||||
void on_assign_bandwidth(error_code const& e);
|
void on_assign_bandwidth(error_code const& e);
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ namespace libtorrent
|
||||||
virtual void on_timeout(error_code const&) {}
|
virtual void on_timeout(error_code const&) {}
|
||||||
|
|
||||||
tracker_manager& m_man;
|
tracker_manager& m_man;
|
||||||
boost::shared_ptr<http_connection> m_tracker_connection;
|
std::shared_ptr<http_connection> m_tracker_connection;
|
||||||
address m_tracker_ip;
|
address m_tracker_ip;
|
||||||
#if TORRENT_USE_I2P
|
#if TORRENT_USE_I2P
|
||||||
i2p_connection* m_i2p_conn;
|
i2p_connection* m_i2p_conn;
|
||||||
|
|
|
@ -164,7 +164,7 @@ namespace libtorrent
|
||||||
disk_interface* disk_thread;
|
disk_interface* disk_thread;
|
||||||
io_service* ios;
|
io_service* ios;
|
||||||
std::weak_ptr<torrent> tor;
|
std::weak_ptr<torrent> tor;
|
||||||
boost::shared_ptr<socket_type> s;
|
std::shared_ptr<socket_type> s;
|
||||||
tcp::endpoint endp;
|
tcp::endpoint endp;
|
||||||
torrent_peer* peerinfo;
|
torrent_peer* peerinfo;
|
||||||
};
|
};
|
||||||
|
@ -467,7 +467,7 @@ namespace libtorrent
|
||||||
|
|
||||||
void timeout_requests();
|
void timeout_requests();
|
||||||
|
|
||||||
boost::shared_ptr<socket_type> get_socket() const { return m_socket; }
|
std::shared_ptr<socket_type> get_socket() const { return m_socket; }
|
||||||
tcp::endpoint const& remote() const { return m_remote; }
|
tcp::endpoint const& remote() const { return m_remote; }
|
||||||
tcp::endpoint local_endpoint() const { return m_local; }
|
tcp::endpoint local_endpoint() const { return m_local; }
|
||||||
|
|
||||||
|
@ -798,7 +798,7 @@ namespace libtorrent
|
||||||
int wanted_transfer(int channel);
|
int wanted_transfer(int channel);
|
||||||
int request_bandwidth(int channel, int bytes = 0);
|
int request_bandwidth(int channel, int bytes = 0);
|
||||||
|
|
||||||
boost::shared_ptr<socket_type> m_socket;
|
std::shared_ptr<socket_type> m_socket;
|
||||||
|
|
||||||
// the queue of blocks we have requested
|
// the queue of blocks we have requested
|
||||||
// from this peer
|
// from this peer
|
||||||
|
|
|
@ -74,24 +74,24 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
|
|
||||||
#define TORRENT_SOCKTYPE_SSL_FORWARD(x) \
|
#define TORRENT_SOCKTYPE_SSL_FORWARD(x) \
|
||||||
case socket_type_int_impl<ssl_stream<tcp::socket> >::value: \
|
case socket_type_int_impl<ssl_stream<tcp::socket>>::value: \
|
||||||
get<ssl_stream<tcp::socket> >()->x; break; \
|
get<ssl_stream<tcp::socket>>()->x; break; \
|
||||||
case socket_type_int_impl<ssl_stream<socks5_stream> >::value: \
|
case socket_type_int_impl<ssl_stream<socks5_stream>>::value: \
|
||||||
get<ssl_stream<socks5_stream> >()->x; break; \
|
get<ssl_stream<socks5_stream>>()->x; break; \
|
||||||
case socket_type_int_impl<ssl_stream<http_stream> >::value: \
|
case socket_type_int_impl<ssl_stream<http_stream>>::value: \
|
||||||
get<ssl_stream<http_stream> >()->x; break; \
|
get<ssl_stream<http_stream>>()->x; break; \
|
||||||
case socket_type_int_impl<ssl_stream<utp_stream> >::value: \
|
case socket_type_int_impl<ssl_stream<utp_stream>>::value: \
|
||||||
get<ssl_stream<utp_stream> >()->x; break;
|
get<ssl_stream<utp_stream>>()->x; break;
|
||||||
|
|
||||||
#define TORRENT_SOCKTYPE_SSL_FORWARD_RET(x, def) \
|
#define TORRENT_SOCKTYPE_SSL_FORWARD_RET(x, def) \
|
||||||
case socket_type_int_impl<ssl_stream<tcp::socket> >::value: \
|
case socket_type_int_impl<ssl_stream<tcp::socket>>::value: \
|
||||||
return get<ssl_stream<tcp::socket> >()->x; \
|
return get<ssl_stream<tcp::socket> >()->x; \
|
||||||
case socket_type_int_impl<ssl_stream<socks5_stream> >::value: \
|
case socket_type_int_impl<ssl_stream<socks5_stream>>::value: \
|
||||||
return get<ssl_stream<socks5_stream> >()->x; \
|
return get<ssl_stream<socks5_stream> >()->x; \
|
||||||
case socket_type_int_impl<ssl_stream<http_stream> >::value: \
|
case socket_type_int_impl<ssl_stream<http_stream>>::value: \
|
||||||
return get<ssl_stream<http_stream> >()->x; \
|
return get<ssl_stream<http_stream> >()->x; \
|
||||||
case socket_type_int_impl<ssl_stream<utp_stream> >::value: \
|
case socket_type_int_impl<ssl_stream<utp_stream>>::value: \
|
||||||
return get<ssl_stream<utp_stream> >()->x;
|
return get<ssl_stream<utp_stream>>()->x;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -161,19 +161,19 @@ namespace libtorrent
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
template <>
|
template <>
|
||||||
struct socket_type_int_impl<ssl_stream<tcp::socket> >
|
struct socket_type_int_impl<ssl_stream<tcp::socket>>
|
||||||
{ enum { value = 6 }; };
|
{ enum { value = 6 }; };
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct socket_type_int_impl<ssl_stream<socks5_stream> >
|
struct socket_type_int_impl<ssl_stream<socks5_stream>>
|
||||||
{ enum { value = 7 }; };
|
{ enum { value = 7 }; };
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct socket_type_int_impl<ssl_stream<http_stream> >
|
struct socket_type_int_impl<ssl_stream<http_stream>>
|
||||||
{ enum { value = 8 }; };
|
{ enum { value = 8 }; };
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct socket_type_int_impl<ssl_stream<utp_stream> >
|
struct socket_type_int_impl<ssl_stream<utp_stream>>
|
||||||
{ enum { value = 9 }; };
|
{ enum { value = 9 }; };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -333,8 +333,7 @@ namespace libtorrent
|
||||||
void setup_ssl_hostname(socket_type& s, std::string const& hostname, error_code& ec);
|
void setup_ssl_hostname(socket_type& s, std::string const& hostname, error_code& ec);
|
||||||
|
|
||||||
// properly shuts down SSL sockets. holder keeps s alive
|
// properly shuts down SSL sockets. holder keeps s alive
|
||||||
void async_shutdown(socket_type& s, boost::shared_ptr<void> holder);
|
void async_shutdown(socket_type& s, std::shared_ptr<void> holder);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ public:
|
||||||
TORRENT_ASSERT(m_command == socks5_bind);
|
TORRENT_ASSERT(m_command == socks5_bind);
|
||||||
|
|
||||||
// to avoid unnecessary copying of the handler,
|
// to avoid unnecessary copying of the handler,
|
||||||
// store it in a shaed_ptr
|
// store it in a shared_ptr
|
||||||
error_code e;
|
error_code e;
|
||||||
#if defined TORRENT_ASIO_DEBUGGING
|
#if defined TORRENT_ASIO_DEBUGGING
|
||||||
add_outstanding_async("socks5_stream::connect1");
|
add_outstanding_async("socks5_stream::connect1");
|
||||||
|
|
|
@ -96,9 +96,7 @@ public:
|
||||||
void set_verify_callback(T const& fun, error_code& ec)
|
void set_verify_callback(T const& fun, error_code& ec)
|
||||||
{ m_sock.set_verify_callback(fun, ec); }
|
{ m_sock.set_verify_callback(fun, ec); }
|
||||||
|
|
||||||
#if BOOST_VERSION >= 104700
|
|
||||||
SSL* native_handle() { return m_sock.native_handle(); }
|
SSL* native_handle() { return m_sock.native_handle(); }
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef std::function<void(error_code const&)> handler_type;
|
typedef std::function<void(error_code const&)> handler_type;
|
||||||
|
|
||||||
|
@ -111,7 +109,7 @@ public:
|
||||||
|
|
||||||
// to avoid unnecessary copying of the handler,
|
// to avoid unnecessary copying of the handler,
|
||||||
// store it in a shared_ptr
|
// store it in a shared_ptr
|
||||||
boost::shared_ptr<handler_type> h(new handler_type(handler));
|
std::shared_ptr<handler_type> h(new handler_type(handler));
|
||||||
|
|
||||||
using std::placeholders::_1;
|
using std::placeholders::_1;
|
||||||
m_sock.next_layer().async_connect(endpoint
|
m_sock.next_layer().async_connect(endpoint
|
||||||
|
@ -122,7 +120,7 @@ public:
|
||||||
void async_accept_handshake(Handler const& handler)
|
void async_accept_handshake(Handler const& handler)
|
||||||
{
|
{
|
||||||
// this is used for accepting SSL connections
|
// this is used for accepting SSL connections
|
||||||
boost::shared_ptr<handler_type> h(new handler_type(handler));
|
std::shared_ptr<handler_type> h(new handler_type(handler));
|
||||||
using std::placeholders::_1;
|
using std::placeholders::_1;
|
||||||
m_sock.async_handshake(ssl::stream_base::server
|
m_sock.async_handshake(ssl::stream_base::server
|
||||||
, std::bind(&ssl_stream::handshake, this, _1, h));
|
, std::bind(&ssl_stream::handshake, this, _1, h));
|
||||||
|
@ -312,7 +310,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void connected(error_code const& e, boost::shared_ptr<handler_type> h)
|
void connected(error_code const& e, std::shared_ptr<handler_type> h)
|
||||||
{
|
{
|
||||||
if (e)
|
if (e)
|
||||||
{
|
{
|
||||||
|
@ -325,7 +323,7 @@ private:
|
||||||
, std::bind(&ssl_stream::handshake, this, _1, h));
|
, std::bind(&ssl_stream::handshake, this, _1, h));
|
||||||
}
|
}
|
||||||
|
|
||||||
void handshake(error_code const& e, boost::shared_ptr<handler_type> h)
|
void handshake(error_code const& e, std::shared_ptr<handler_type> h)
|
||||||
{
|
{
|
||||||
(*h)(e);
|
(*h)(e);
|
||||||
}
|
}
|
||||||
|
@ -338,4 +336,3 @@ private:
|
||||||
#endif // TORRENT_USE_OPENSSL
|
#endif // TORRENT_USE_OPENSSL
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -333,7 +333,7 @@ private:
|
||||||
// this is only relevant if ignore_non_routers is set.
|
// this is only relevant if ignore_non_routers is set.
|
||||||
bool non_router;
|
bool non_router;
|
||||||
|
|
||||||
mutable boost::shared_ptr<http_connection> upnp_connection;
|
mutable std::shared_ptr<http_connection> upnp_connection;
|
||||||
|
|
||||||
#if TORRENT_USE_ASSERTS
|
#if TORRENT_USE_ASSERTS
|
||||||
int magic;
|
int magic;
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace libtorrent
|
||||||
, span<char const>
|
, span<char const>
|
||||||
, error_code&, int)> send_fun_t;
|
, error_code&, int)> send_fun_t;
|
||||||
|
|
||||||
typedef std::function<void(boost::shared_ptr<socket_type> const&)>
|
typedef std::function<void(std::shared_ptr<socket_type> const&)>
|
||||||
incoming_utp_callback_t;
|
incoming_utp_callback_t;
|
||||||
|
|
||||||
utp_socket_manager(send_fun_t const& send_fun
|
utp_socket_manager(send_fun_t const& send_fun
|
||||||
|
@ -186,4 +186,3 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ std::string chunk_string(std::string s)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<http_connection> test_request(io_service& ios
|
std::shared_ptr<http_connection> test_request(io_service& ios
|
||||||
, resolver& res
|
, resolver& res
|
||||||
, std::string const& url
|
, std::string const& url
|
||||||
, char const* expected_data
|
, char const* expected_data
|
||||||
|
@ -124,7 +124,7 @@ boost::shared_ptr<http_connection> test_request(io_service& ios
|
||||||
{
|
{
|
||||||
std::fprintf(stderr, " ===== TESTING: %s =====\n", url.c_str());
|
std::fprintf(stderr, " ===== TESTING: %s =====\n", url.c_str());
|
||||||
|
|
||||||
auto h = boost::make_shared<http_connection>(ios
|
auto h = std::make_shared<http_connection>(ios
|
||||||
, res
|
, res
|
||||||
, [=](error_code const& ec, http_parser const& parser
|
, [=](error_code const& ec, http_parser const& parser
|
||||||
, char const* data, const int size, http_connection&)
|
, char const* data, const int size, http_connection&)
|
||||||
|
|
|
@ -137,7 +137,7 @@ void http_connection::get(std::string const& url, time_duration timeout, int pri
|
||||||
|
|
||||||
// keep ourselves alive even if the callback function
|
// keep ourselves alive even if the callback function
|
||||||
// deletes this object
|
// deletes this object
|
||||||
boost::shared_ptr<http_connection> me(shared_from_this());
|
std::shared_ptr<http_connection> me(shared_from_this());
|
||||||
|
|
||||||
if (ec)
|
if (ec)
|
||||||
{
|
{
|
||||||
|
@ -240,7 +240,7 @@ void http_connection::start(std::string const& hostname, int port
|
||||||
|
|
||||||
// keep ourselves alive even if the callback function
|
// keep ourselves alive even if the callback function
|
||||||
// deletes this object
|
// deletes this object
|
||||||
boost::shared_ptr<http_connection> me(shared_from_this());
|
std::shared_ptr<http_connection> me(shared_from_this());
|
||||||
|
|
||||||
m_completion_timeout = timeout;
|
m_completion_timeout = timeout;
|
||||||
m_read_timeout = seconds(5);
|
m_read_timeout = seconds(5);
|
||||||
|
@ -250,7 +250,7 @@ void http_connection::start(std::string const& hostname, int port
|
||||||
m_read_timeout, m_completion_timeout), ec);
|
m_read_timeout, m_completion_timeout), ec);
|
||||||
ADD_OUTSTANDING_ASYNC("http_connection::on_timeout");
|
ADD_OUTSTANDING_ASYNC("http_connection::on_timeout");
|
||||||
m_timer.async_wait(std::bind(&http_connection::on_timeout
|
m_timer.async_wait(std::bind(&http_connection::on_timeout
|
||||||
, boost::weak_ptr<http_connection>(me), _1));
|
, std::weak_ptr<http_connection>(me), _1));
|
||||||
m_called = false;
|
m_called = false;
|
||||||
m_parser.reset();
|
m_parser.reset();
|
||||||
m_recvbuffer.clear();
|
m_recvbuffer.clear();
|
||||||
|
@ -411,11 +411,11 @@ void http_connection::start(std::string const& hostname, int port
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void http_connection::on_timeout(boost::weak_ptr<http_connection> p
|
void http_connection::on_timeout(std::weak_ptr<http_connection> p
|
||||||
, error_code const& e)
|
, error_code const& e)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("http_connection::on_timeout");
|
COMPLETE_ASYNC("http_connection::on_timeout");
|
||||||
boost::shared_ptr<http_connection> c = p.lock();
|
std::shared_ptr<http_connection> c = p.lock();
|
||||||
if (!c) return;
|
if (!c) return;
|
||||||
|
|
||||||
if (e == boost::asio::error::operation_aborted) return;
|
if (e == boost::asio::error::operation_aborted) return;
|
||||||
|
@ -546,7 +546,7 @@ void http_connection::connect()
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(m_next_ep < m_endpoints.size());
|
TORRENT_ASSERT(m_next_ep < m_endpoints.size());
|
||||||
|
|
||||||
boost::shared_ptr<http_connection> me(shared_from_this());
|
std::shared_ptr<http_connection> me(shared_from_this());
|
||||||
|
|
||||||
if (m_proxy.proxy_hostnames
|
if (m_proxy.proxy_hostnames
|
||||||
&& (m_proxy.type == settings_pack::socks5
|
&& (m_proxy.type == settings_pack::socks5
|
||||||
|
@ -713,7 +713,7 @@ void http_connection::on_read(error_code const& e
|
||||||
|
|
||||||
// keep ourselves alive even if the callback function
|
// keep ourselves alive even if the callback function
|
||||||
// deletes this object
|
// deletes this object
|
||||||
boost::shared_ptr<http_connection> me(shared_from_this());
|
std::shared_ptr<http_connection> me(shared_from_this());
|
||||||
|
|
||||||
// when using the asio SSL wrapper, it seems like
|
// when using the asio SSL wrapper, it seems like
|
||||||
// we get the shut_down error instead of EOF
|
// we get the shut_down error instead of EOF
|
||||||
|
|
|
@ -817,10 +817,9 @@ namespace aux {
|
||||||
#endif
|
#endif
|
||||||
m_lsd_announce_timer.cancel(ec);
|
m_lsd_announce_timer.cancel(ec);
|
||||||
|
|
||||||
for (std::set<boost::shared_ptr<socket_type> >::iterator i = m_incoming_sockets.begin()
|
for (auto const& s : m_incoming_sockets)
|
||||||
, end(m_incoming_sockets.end()); i != end; ++i)
|
|
||||||
{
|
{
|
||||||
(*i)->close(ec);
|
s->close(ec);
|
||||||
TORRENT_ASSERT(!ec);
|
TORRENT_ASSERT(!ec);
|
||||||
}
|
}
|
||||||
m_incoming_sockets.clear();
|
m_incoming_sockets.clear();
|
||||||
|
@ -1494,7 +1493,7 @@ namespace aux {
|
||||||
// separate function. At least most of it
|
// separate function. At least most of it
|
||||||
if (!m_settings.get_bool(settings_pack::force_proxy))
|
if (!m_settings.get_bool(settings_pack::force_proxy))
|
||||||
{
|
{
|
||||||
ret.sock = boost::make_shared<tcp::acceptor>(std::ref(m_io_service));
|
ret.sock = std::make_shared<tcp::acceptor>(m_io_service);
|
||||||
ret.sock->open(bind_ep.protocol(), ec);
|
ret.sock->open(bind_ep.protocol(), ec);
|
||||||
last_op = listen_failed_alert::open;
|
last_op = listen_failed_alert::open;
|
||||||
if (ec)
|
if (ec)
|
||||||
|
@ -1677,7 +1676,7 @@ namespace aux {
|
||||||
}
|
}
|
||||||
} // force-proxy mode
|
} // force-proxy mode
|
||||||
|
|
||||||
ret.udp_sock = boost::make_shared<udp_socket>(std::ref(m_io_service));
|
ret.udp_sock = std::make_shared<udp_socket>(m_io_service);
|
||||||
#if TORRENT_HAS_BINDTODEVICE
|
#if TORRENT_HAS_BINDTODEVICE
|
||||||
if (!device.empty())
|
if (!device.empty())
|
||||||
{
|
{
|
||||||
|
@ -1736,7 +1735,7 @@ namespace aux {
|
||||||
// TODO: 2 use a handler allocator here
|
// TODO: 2 use a handler allocator here
|
||||||
ADD_OUTSTANDING_ASYNC("session_impl::on_udp_packet");
|
ADD_OUTSTANDING_ASYNC("session_impl::on_udp_packet");
|
||||||
ret.udp_sock->async_read(std::bind(&session_impl::on_udp_packet
|
ret.udp_sock->async_read(std::bind(&session_impl::on_udp_packet
|
||||||
, this, boost::weak_ptr<udp_socket>(ret.udp_sock), ret.ssl, _1));
|
, this, std::weak_ptr<udp_socket>(ret.udp_sock), ret.ssl, _1));
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
#ifndef TORRENT_DISABLE_LOGGING
|
||||||
session_log(" listening on: %s TCP port: %d UDP port: %d"
|
session_log(" listening on: %s TCP port: %d UDP port: %d"
|
||||||
|
@ -1973,7 +1972,7 @@ namespace aux {
|
||||||
|
|
||||||
if (m_socks_listen_socket) return;
|
if (m_socks_listen_socket) return;
|
||||||
|
|
||||||
m_socks_listen_socket = boost::make_shared<socket_type>(std::ref(m_io_service));
|
m_socks_listen_socket = std::make_shared<socket_type>(m_io_service);
|
||||||
bool const ret = instantiate_connection(m_io_service, proxy()
|
bool const ret = instantiate_connection(m_io_service, proxy()
|
||||||
, *m_socks_listen_socket, nullptr, nullptr, false, false);
|
, *m_socks_listen_socket, nullptr, nullptr, false, false);
|
||||||
TORRENT_ASSERT_VAL(ret, ret);
|
TORRENT_ASSERT_VAL(ret, ret);
|
||||||
|
@ -1989,7 +1988,7 @@ namespace aux {
|
||||||
, m_socks_listen_socket, _1));
|
, m_socks_listen_socket, _1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::on_socks_listen(boost::shared_ptr<socket_type> const& sock
|
void session_impl::on_socks_listen(std::shared_ptr<socket_type> const& sock
|
||||||
, error_code const& e)
|
, error_code const& e)
|
||||||
{
|
{
|
||||||
#if defined TORRENT_ASIO_DEBUGGING
|
#if defined TORRENT_ASIO_DEBUGGING
|
||||||
|
@ -2026,7 +2025,7 @@ namespace aux {
|
||||||
, m_socks_listen_socket, _1));
|
, m_socks_listen_socket, _1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::on_socks_accept(boost::shared_ptr<socket_type> const& s
|
void session_impl::on_socks_accept(std::shared_ptr<socket_type> const& s
|
||||||
, error_code const& e)
|
, error_code const& e)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("session_impl::on_socks_accept");
|
COMPLETE_ASYNC("session_impl::on_socks_accept");
|
||||||
|
@ -2100,7 +2099,7 @@ namespace aux {
|
||||||
|
|
||||||
if (m_i2p_listen_socket) return;
|
if (m_i2p_listen_socket) return;
|
||||||
|
|
||||||
m_i2p_listen_socket = boost::shared_ptr<socket_type>(new socket_type(m_io_service));
|
m_i2p_listen_socket = std::shared_ptr<socket_type>(new socket_type(m_io_service));
|
||||||
bool ret = instantiate_connection(m_io_service, m_i2p_conn.proxy()
|
bool ret = instantiate_connection(m_io_service, m_i2p_conn.proxy()
|
||||||
, *m_i2p_listen_socket, nullptr, nullptr, true, false);
|
, *m_i2p_listen_socket, nullptr, nullptr, true, false);
|
||||||
TORRENT_ASSERT_VAL(ret, ret);
|
TORRENT_ASSERT_VAL(ret, ret);
|
||||||
|
@ -2115,7 +2114,7 @@ namespace aux {
|
||||||
, std::bind(&session_impl::on_i2p_accept, this, m_i2p_listen_socket, _1));
|
, std::bind(&session_impl::on_i2p_accept, this, m_i2p_listen_socket, _1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::on_i2p_accept(boost::shared_ptr<socket_type> const& s
|
void session_impl::on_i2p_accept(std::shared_ptr<socket_type> const& s
|
||||||
, error_code const& e)
|
, error_code const& e)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("session_impl::on_i2p_accept");
|
COMPLETE_ASYNC("session_impl::on_i2p_accept");
|
||||||
|
@ -2163,7 +2162,7 @@ namespace aux {
|
||||||
i->udp_write_blocked = true;
|
i->udp_write_blocked = true;
|
||||||
ADD_OUTSTANDING_ASYNC("session_impl::on_udp_writeable");
|
ADD_OUTSTANDING_ASYNC("session_impl::on_udp_writeable");
|
||||||
i->udp_sock->async_write(std::bind(&session_impl::on_udp_writeable
|
i->udp_sock->async_write(std::bind(&session_impl::on_udp_writeable
|
||||||
, this, boost::weak_ptr<udp_socket>(i->udp_sock), _1));
|
, this, std::weak_ptr<udp_socket>(i->udp_sock), _1));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2196,19 +2195,19 @@ namespace aux {
|
||||||
i->udp_write_blocked = true;
|
i->udp_write_blocked = true;
|
||||||
ADD_OUTSTANDING_ASYNC("session_impl::on_udp_writeable");
|
ADD_OUTSTANDING_ASYNC("session_impl::on_udp_writeable");
|
||||||
i->udp_sock->async_write(std::bind(&session_impl::on_udp_writeable
|
i->udp_sock->async_write(std::bind(&session_impl::on_udp_writeable
|
||||||
, this, boost::weak_ptr<udp_socket>(i->udp_sock), _1));
|
, this, std::weak_ptr<udp_socket>(i->udp_sock), _1));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ec = boost::asio::error::operation_not_supported;
|
ec = boost::asio::error::operation_not_supported;
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::on_udp_writeable(boost::weak_ptr<udp_socket> s, error_code const& ec)
|
void session_impl::on_udp_writeable(std::weak_ptr<udp_socket> s, error_code const& ec)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("session_impl::on_udp_writeable");
|
COMPLETE_ASYNC("session_impl::on_udp_writeable");
|
||||||
if (ec) return;
|
if (ec) return;
|
||||||
|
|
||||||
boost::shared_ptr<udp_socket> sock = s.lock();
|
std::shared_ptr<udp_socket> sock = s.lock();
|
||||||
if (!sock) return;
|
if (!sock) return;
|
||||||
|
|
||||||
std::list<listen_socket_t>::iterator i = std::find_if(
|
std::list<listen_socket_t>::iterator i = std::find_if(
|
||||||
|
@ -2230,13 +2229,13 @@ namespace aux {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void session_impl::on_udp_packet(boost::weak_ptr<udp_socket> const& socket
|
void session_impl::on_udp_packet(std::weak_ptr<udp_socket> const& socket
|
||||||
, bool const ssl, error_code const& ec)
|
, bool const ssl, error_code const& ec)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("session_impl::on_udp_packet");
|
COMPLETE_ASYNC("session_impl::on_udp_packet");
|
||||||
if (ec)
|
if (ec)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<udp_socket> s = socket.lock();
|
std::shared_ptr<udp_socket> s = socket.lock();
|
||||||
udp::endpoint ep;
|
udp::endpoint ep;
|
||||||
error_code best_effort;
|
error_code best_effort;
|
||||||
if (s) ep = s->local_endpoint(best_effort);
|
if (s) ep = s->local_endpoint(best_effort);
|
||||||
|
@ -2258,7 +2257,7 @@ namespace aux {
|
||||||
|
|
||||||
m_stats_counters.inc_stats_counter(counters::on_udp_counter);
|
m_stats_counters.inc_stats_counter(counters::on_udp_counter);
|
||||||
|
|
||||||
boost::shared_ptr<udp_socket> s = socket.lock();
|
std::shared_ptr<udp_socket> s = socket.lock();
|
||||||
if (!s) return;
|
if (!s) return;
|
||||||
|
|
||||||
struct utp_socket_manager& mgr =
|
struct utp_socket_manager& mgr =
|
||||||
|
@ -2372,10 +2371,10 @@ namespace aux {
|
||||||
, this, socket, ssl, _1));
|
, this, socket, ssl, _1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::async_accept(boost::shared_ptr<tcp::acceptor> const& listener, bool ssl)
|
void session_impl::async_accept(std::shared_ptr<tcp::acceptor> const& listener, bool ssl)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(!m_abort);
|
TORRENT_ASSERT(!m_abort);
|
||||||
shared_ptr<socket_type> c(new socket_type(m_io_service));
|
std::shared_ptr<socket_type> c = std::make_shared<socket_type>(m_io_service);
|
||||||
tcp::socket* str = nullptr;
|
tcp::socket* str = nullptr;
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
|
@ -2403,17 +2402,17 @@ namespace aux {
|
||||||
|
|
||||||
listener->async_accept(*str
|
listener->async_accept(*str
|
||||||
, std::bind(&session_impl::on_accept_connection, this, c
|
, std::bind(&session_impl::on_accept_connection, this, c
|
||||||
, boost::weak_ptr<tcp::acceptor>(listener), _1, ssl));
|
, std::weak_ptr<tcp::acceptor>(listener), _1, ssl));
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::on_accept_connection(shared_ptr<socket_type> const& s
|
void session_impl::on_accept_connection(std::shared_ptr<socket_type> const& s
|
||||||
, weak_ptr<tcp::acceptor> listen_socket, error_code const& e
|
, std::weak_ptr<tcp::acceptor> listen_socket, error_code const& e
|
||||||
, bool const ssl)
|
, bool const ssl)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("session_impl::on_accept_connection");
|
COMPLETE_ASYNC("session_impl::on_accept_connection");
|
||||||
m_stats_counters.inc_stats_counter(counters::on_accept_counter);
|
m_stats_counters.inc_stats_counter(counters::on_accept_counter);
|
||||||
TORRENT_ASSERT(is_single_thread());
|
TORRENT_ASSERT(is_single_thread());
|
||||||
boost::shared_ptr<tcp::acceptor> listener = listen_socket.lock();
|
std::shared_ptr<tcp::acceptor> listener = listen_socket.lock();
|
||||||
if (!listener) return;
|
if (!listener) return;
|
||||||
|
|
||||||
if (e == boost::asio::error::operation_aborted) return;
|
if (e == boost::asio::error::operation_aborted) return;
|
||||||
|
@ -2505,14 +2504,14 @@ namespace aux {
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
|
|
||||||
void session_impl::on_incoming_utp_ssl(boost::shared_ptr<socket_type> const& s)
|
void session_impl::on_incoming_utp_ssl(std::shared_ptr<socket_type> const& s)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(is_ssl(*s));
|
TORRENT_ASSERT(is_ssl(*s));
|
||||||
|
|
||||||
// for SSL connections, incoming_connection() is called
|
// for SSL connections, incoming_connection() is called
|
||||||
// after the handshake is done
|
// after the handshake is done
|
||||||
ADD_OUTSTANDING_ASYNC("session_impl::ssl_handshake");
|
ADD_OUTSTANDING_ASYNC("session_impl::ssl_handshake");
|
||||||
s->get<ssl_stream<utp_stream> >()->async_accept_handshake(
|
s->get<ssl_stream<utp_stream>>()->async_accept_handshake(
|
||||||
std::bind(&session_impl::ssl_handshake, this, _1, s));
|
std::bind(&session_impl::ssl_handshake, this, _1, s));
|
||||||
m_incoming_sockets.insert(s);
|
m_incoming_sockets.insert(s);
|
||||||
}
|
}
|
||||||
|
@ -2523,7 +2522,7 @@ namespace aux {
|
||||||
// -CAfile <torrent-cert>.pem -debug -connect 127.0.0.1:4433 -tls1
|
// -CAfile <torrent-cert>.pem -debug -connect 127.0.0.1:4433 -tls1
|
||||||
// -servername <hex-encoded-info-hash>
|
// -servername <hex-encoded-info-hash>
|
||||||
|
|
||||||
void session_impl::ssl_handshake(error_code const& ec, boost::shared_ptr<socket_type> s)
|
void session_impl::ssl_handshake(error_code const& ec, std::shared_ptr<socket_type> s)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("session_impl::ssl_handshake");
|
COMPLETE_ASYNC("session_impl::ssl_handshake");
|
||||||
TORRENT_ASSERT(is_ssl(*s));
|
TORRENT_ASSERT(is_ssl(*s));
|
||||||
|
@ -2554,7 +2553,7 @@ namespace aux {
|
||||||
|
|
||||||
#endif // TORRENT_USE_OPENSSL
|
#endif // TORRENT_USE_OPENSSL
|
||||||
|
|
||||||
void session_impl::incoming_connection(boost::shared_ptr<socket_type> const& s)
|
void session_impl::incoming_connection(std::shared_ptr<socket_type> const& s)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(is_single_thread());
|
TORRENT_ASSERT(is_single_thread());
|
||||||
|
|
||||||
|
|
|
@ -36,10 +36,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
#include <boost/asio/ssl/context.hpp>
|
#include <boost/asio/ssl/context.hpp>
|
||||||
|
|
||||||
#if BOOST_VERSION >= 104700
|
|
||||||
#include <boost/asio/ssl/rfc2818_verification.hpp>
|
#include <boost/asio/ssl/rfc2818_verification.hpp>
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -137,7 +134,7 @@ namespace libtorrent
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
void on_close_socket(socket_type* s, boost::shared_ptr<void>)
|
void on_close_socket(socket_type* s, std::shared_ptr<void>)
|
||||||
{
|
{
|
||||||
COMPLETE_ASYNC("on_close_socket");
|
COMPLETE_ASYNC("on_close_socket");
|
||||||
error_code ec;
|
error_code ec;
|
||||||
|
@ -149,7 +146,7 @@ namespace libtorrent
|
||||||
|
|
||||||
// the second argument is a shared pointer to an object that
|
// the second argument is a shared pointer to an object that
|
||||||
// will keep the socket (s) alive for the duration of the async operation
|
// will keep the socket (s) alive for the duration of the async operation
|
||||||
void async_shutdown(socket_type& s, boost::shared_ptr<void> holder)
|
void async_shutdown(socket_type& s, std::shared_ptr<void> holder)
|
||||||
{
|
{
|
||||||
error_code e;
|
error_code e;
|
||||||
|
|
||||||
|
@ -161,9 +158,9 @@ namespace libtorrent
|
||||||
#define MAYBE_ASIO_DEBUGGING
|
#define MAYBE_ASIO_DEBUGGING
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CASE(t) case socket_type_int_impl<ssl_stream<t> >::value: \
|
#define CASE(t) case socket_type_int_impl<ssl_stream<t>>::value: \
|
||||||
MAYBE_ASIO_DEBUGGING \
|
MAYBE_ASIO_DEBUGGING \
|
||||||
s.get<ssl_stream<t> >()->async_shutdown(std::bind(&on_close_socket, &s, holder)); \
|
s.get<ssl_stream<t>>()->async_shutdown(std::bind(&on_close_socket, &s, holder)); \
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (s.type())
|
switch (s.type())
|
||||||
|
@ -205,17 +202,17 @@ namespace libtorrent
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
case socket_type_int_impl<ssl_stream<tcp::socket> >::value:
|
case socket_type_int_impl<ssl_stream<tcp::socket>>::value:
|
||||||
get<ssl_stream<tcp::socket> >()->~ssl_stream();
|
get<ssl_stream<tcp::socket>>()->~ssl_stream();
|
||||||
break;
|
break;
|
||||||
case socket_type_int_impl<ssl_stream<socks5_stream> >::value:
|
case socket_type_int_impl<ssl_stream<socks5_stream>>::value:
|
||||||
get<ssl_stream<socks5_stream> >()->~ssl_stream();
|
get<ssl_stream<socks5_stream>>()->~ssl_stream();
|
||||||
break;
|
break;
|
||||||
case socket_type_int_impl<ssl_stream<http_stream> >::value:
|
case socket_type_int_impl<ssl_stream<http_stream>>::value:
|
||||||
get<ssl_stream<http_stream> >()->~ssl_stream();
|
get<ssl_stream<http_stream>>()->~ssl_stream();
|
||||||
break;
|
break;
|
||||||
case socket_type_int_impl<ssl_stream<utp_stream> >::value:
|
case socket_type_int_impl<ssl_stream<utp_stream>>::value:
|
||||||
get<ssl_stream<utp_stream> >()->~ssl_stream();
|
get<ssl_stream<utp_stream>>()->~ssl_stream();
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default: TORRENT_ASSERT_FAIL();
|
default: TORRENT_ASSERT_FAIL();
|
||||||
|
@ -251,22 +248,22 @@ namespace libtorrent
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
case socket_type_int_impl<ssl_stream<tcp::socket> >::value:
|
case socket_type_int_impl<ssl_stream<tcp::socket>>::value:
|
||||||
TORRENT_ASSERT(userdata);
|
TORRENT_ASSERT(userdata);
|
||||||
new (reinterpret_cast<ssl_stream<tcp::socket>*>(&m_data)) ssl_stream<tcp::socket>(m_io_service
|
new (reinterpret_cast<ssl_stream<tcp::socket>*>(&m_data)) ssl_stream<tcp::socket>(m_io_service
|
||||||
, *static_cast<ssl::context*>(userdata));
|
, *static_cast<ssl::context*>(userdata));
|
||||||
break;
|
break;
|
||||||
case socket_type_int_impl<ssl_stream<socks5_stream> >::value:
|
case socket_type_int_impl<ssl_stream<socks5_stream>>::value:
|
||||||
TORRENT_ASSERT(userdata);
|
TORRENT_ASSERT(userdata);
|
||||||
new (reinterpret_cast<ssl_stream<socks5_stream>*>(&m_data)) ssl_stream<socks5_stream>(m_io_service
|
new (reinterpret_cast<ssl_stream<socks5_stream>*>(&m_data)) ssl_stream<socks5_stream>(m_io_service
|
||||||
, *static_cast<ssl::context*>(userdata));
|
, *static_cast<ssl::context*>(userdata));
|
||||||
break;
|
break;
|
||||||
case socket_type_int_impl<ssl_stream<http_stream> >::value:
|
case socket_type_int_impl<ssl_stream<http_stream>>::value:
|
||||||
TORRENT_ASSERT(userdata);
|
TORRENT_ASSERT(userdata);
|
||||||
new (reinterpret_cast<ssl_stream<http_stream>*>(&m_data)) ssl_stream<http_stream>(m_io_service
|
new (reinterpret_cast<ssl_stream<http_stream>*>(&m_data)) ssl_stream<http_stream>(m_io_service
|
||||||
, *static_cast<ssl::context*>(userdata));
|
, *static_cast<ssl::context*>(userdata));
|
||||||
break;
|
break;
|
||||||
case socket_type_int_impl<ssl_stream<utp_stream> >::value:
|
case socket_type_int_impl<ssl_stream<utp_stream>>::value:
|
||||||
TORRENT_ASSERT(userdata);
|
TORRENT_ASSERT(userdata);
|
||||||
new (reinterpret_cast<ssl_stream<utp_stream>*>(&m_data)) ssl_stream<utp_stream>(m_io_service
|
new (reinterpret_cast<ssl_stream<utp_stream>*>(&m_data)) ssl_stream<utp_stream>(m_io_service
|
||||||
, *static_cast<ssl::context*>(userdata));
|
, *static_cast<ssl::context*>(userdata));
|
||||||
|
@ -348,7 +345,7 @@ namespace libtorrent
|
||||||
case socket_type_int_impl<utp_stream>::value:
|
case socket_type_int_impl<utp_stream>::value:
|
||||||
return get<utp_stream>()->get_close_reason();
|
return get<utp_stream>()->get_close_reason();
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
case socket_type_int_impl<ssl_stream<utp_stream> >::value:
|
case socket_type_int_impl<ssl_stream<utp_stream>>::value:
|
||||||
return get<ssl_stream<utp_stream> >()->lowest_layer().get_close_reason();
|
return get<ssl_stream<utp_stream> >()->lowest_layer().get_close_reason();
|
||||||
#endif
|
#endif
|
||||||
default: return 0;
|
default: return 0;
|
||||||
|
@ -393,4 +390,3 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -737,7 +737,7 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(!m_url.empty());
|
TORRENT_ASSERT(!m_url.empty());
|
||||||
TORRENT_ASSERT(!m_torrent_file->is_valid());
|
TORRENT_ASSERT(!m_torrent_file->is_valid());
|
||||||
boost::shared_ptr<http_connection> conn(
|
std::shared_ptr<http_connection> conn(
|
||||||
new http_connection(m_ses.get_io_service()
|
new http_connection(m_ses.get_io_service()
|
||||||
, m_ses.get_resolver()
|
, m_ses.get_resolver()
|
||||||
, std::bind(&torrent::on_torrent_download, shared_from_this()
|
, std::bind(&torrent::on_torrent_download, shared_from_this()
|
||||||
|
@ -6111,8 +6111,8 @@ namespace libtorrent
|
||||||
if (is_paused()) return;
|
if (is_paused()) return;
|
||||||
if (m_ses.is_aborted()) return;
|
if (m_ses.is_aborted()) return;
|
||||||
|
|
||||||
boost::shared_ptr<socket_type> s
|
std::shared_ptr<socket_type> s
|
||||||
= boost::make_shared<socket_type>(std::ref(m_ses.get_io_service()));
|
= std::make_shared<socket_type>(m_ses.get_io_service());
|
||||||
if (!s) return;
|
if (!s) return;
|
||||||
|
|
||||||
void* userdata = nullptr;
|
void* userdata = nullptr;
|
||||||
|
@ -6787,7 +6787,7 @@ namespace libtorrent
|
||||||
|| !m_ip_filter
|
|| !m_ip_filter
|
||||||
|| (m_ip_filter->access(peerinfo->address()) & ip_filter::blocked) == 0);
|
|| (m_ip_filter->access(peerinfo->address()) & ip_filter::blocked) == 0);
|
||||||
|
|
||||||
boost::shared_ptr<socket_type> s(new socket_type(m_ses.get_io_service()));
|
std::shared_ptr<socket_type> s = std::make_shared<socket_type>(m_ses.get_io_service());
|
||||||
|
|
||||||
#if TORRENT_USE_I2P
|
#if TORRENT_USE_I2P
|
||||||
bool i2p = peerinfo->is_i2p_addr;
|
bool i2p = peerinfo->is_i2p_addr;
|
||||||
|
@ -7050,7 +7050,7 @@ namespace libtorrent
|
||||||
if (is_ssl_torrent())
|
if (is_ssl_torrent())
|
||||||
{
|
{
|
||||||
// if this is an SSL torrent, don't allow non SSL peers on it
|
// if this is an SSL torrent, don't allow non SSL peers on it
|
||||||
boost::shared_ptr<socket_type> s = p->get_socket();
|
std::shared_ptr<socket_type> s = p->get_socket();
|
||||||
|
|
||||||
//
|
//
|
||||||
#define SSL(t) socket_type_int_impl<ssl_stream<t>>::value: \
|
#define SSL(t) socket_type_int_impl<ssl_stream<t>>::value: \
|
||||||
|
|
|
@ -215,7 +215,7 @@ namespace libtorrent
|
||||||
|
|
||||||
// UTP_LOGV("not found, new connection id:%d\n", m_new_connection);
|
// UTP_LOGV("not found, new connection id:%d\n", m_new_connection);
|
||||||
|
|
||||||
boost::shared_ptr<socket_type> c(new (std::nothrow) socket_type(m_ios));
|
std::shared_ptr<socket_type> c(new (std::nothrow) socket_type(m_ios));
|
||||||
if (!c) return false;
|
if (!c) return false;
|
||||||
|
|
||||||
TORRENT_ASSERT(m_new_connection == -1);
|
TORRENT_ASSERT(m_new_connection == -1);
|
||||||
|
@ -228,7 +228,7 @@ namespace libtorrent
|
||||||
utp_stream* str = nullptr;
|
utp_stream* str = nullptr;
|
||||||
#ifdef TORRENT_USE_OPENSSL
|
#ifdef TORRENT_USE_OPENSSL
|
||||||
if (is_ssl(*c))
|
if (is_ssl(*c))
|
||||||
str = &c->get<ssl_stream<utp_stream> >()->next_layer();
|
str = &c->get<ssl_stream<utp_stream>>()->next_layer();
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
str = c->get<utp_stream>();
|
str = c->get<utp_stream>();
|
||||||
|
@ -346,4 +346,3 @@ namespace libtorrent
|
||||||
return impl;
|
return impl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,8 +119,8 @@ void run_test(std::string const& url, int size, int status, int connected
|
||||||
<< " connected: " << connected
|
<< " connected: " << connected
|
||||||
<< " error: " << (ec?ec->message():"no error") << std::endl;
|
<< " error: " << (ec?ec->message():"no error") << std::endl;
|
||||||
|
|
||||||
boost::shared_ptr<http_connection> h(new http_connection(ios
|
std::shared_ptr<http_connection> h = std::make_shared<http_connection>(ios
|
||||||
, res, &::http_handler, true, 1024*1024, &::http_connect_handler));
|
, res, &::http_handler, true, 1024*1024, &::http_connect_handler);
|
||||||
h->get(url, seconds(1), 0, &ps, 5, "test/user-agent", address_v4::any()
|
h->get(url, seconds(1), 0, &ps, 5, "test/user-agent", address_v4::any()
|
||||||
, 0, auth);
|
, 0, auth);
|
||||||
ios.reset();
|
ios.reset();
|
||||||
|
@ -225,4 +225,3 @@ TORRENT_TEST(no_keepalive)
|
||||||
{
|
{
|
||||||
run_suite("http", settings_pack::none, 0);
|
run_suite("http", settings_pack::none, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue