0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-20 04:02:15 +02:00

Don't use deprecated asio features.

This commit is contained in:
James Yonan 2015-06-30 00:05:37 -06:00
parent c4ea9e90ca
commit 16bde170c0
26 changed files with 191 additions and 204 deletions

View File

@ -305,7 +305,7 @@ namespace openvpn {
default_key_direction(-1), force_aes_cbc_ciphersuites(false),
alt_proxy(false),
dco(false),
io_service(nullptr) {}
io_context(nullptr) {}
OptionList options;
EvalConfig eval;
@ -334,7 +334,7 @@ namespace openvpn {
bool alt_proxy;
bool dco;
asio::io_service* io_service;
asio::io_context* io_context;
template <typename SESSION_STATS, typename CLIENT_EVENTS>
void attach(OpenVPNClient* parent)
@ -692,7 +692,7 @@ namespace openvpn {
client_options->submit_creds(state->creds);
// instantiate top-level client session
state->session.reset(new ClientConnect(*state->io_service, client_options));
state->session.reset(new ClientConnect(*state->io_context, client_options));
// raise an exception if app has expired
check_app_expired();
@ -728,15 +728,15 @@ namespace openvpn {
OPENVPN_CLIENT_EXPORT void OpenVPNClient::connect_attach()
{
state->io_service = new asio::io_service(1); // concurrency hint=1
state->io_context = new asio::io_context(1); // concurrency hint=1
state->attach<MySessionStats, MyClientEvents>(this);
}
OPENVPN_CLIENT_EXPORT void OpenVPNClient::connect_detach()
{
state->detach();
delete state->io_service;
state->io_service = nullptr;
delete state->io_context;
state->io_context = nullptr;
}
OPENVPN_CLIENT_EXPORT void OpenVPNClient::connect_pre_run()
@ -745,13 +745,13 @@ namespace openvpn {
OPENVPN_CLIENT_EXPORT void OpenVPNClient::connect_run()
{
state->io_service->run();
state->io_context->run();
}
OPENVPN_CLIENT_EXPORT void OpenVPNClient::connect_session_stop()
{
state->session->stop(); // On exception, stop client...
state->io_service->poll(); // and execute completion handlers.
state->io_context->poll(); // and execute completion handlers.
}
OPENVPN_CLIENT_EXPORT ConnectionInfo OpenVPNClient::connection_info()

View File

@ -101,7 +101,7 @@ namespace openvpn {
// slow path
{
asio::error_code ec;
asio::ip::address::from_string(ipstr, ec);
asio::ip::make_address(ipstr, ec);
return !ec;
}
}
@ -109,7 +109,7 @@ namespace openvpn {
static Addr from_string(const std::string& ipstr, const char *title = nullptr, Version required_version = UNSPEC)
{
asio::error_code ec;
asio::ip::address a = asio::ip::address::from_string(ipstr, ec);
asio::ip::address a = asio::ip::make_address(ipstr, ec);
if (ec)
throw ip_exception(internal::format_error(ipstr, title, "", ec));
const Addr ret = from_asio(a);
@ -323,10 +323,7 @@ namespace openvpn {
if (ver != UNSPEC)
{
const asio::ip::address a = to_asio();
asio::error_code ec;
std::string ret = a.to_string(ec);
if (ec)
throw ip_exception("to_string");
std::string ret = a.to_string();
return ret;
}
else

View File

@ -191,7 +191,7 @@ namespace openvpn {
static Addr from_string(const std::string& ipstr, const char *title = nullptr)
{
asio::error_code ec;
asio::ip::address_v4 a = asio::ip::address_v4::from_string(ipstr, ec);
asio::ip::address_v4 a = asio::ip::make_address_v4(ipstr, ec);
if (ec)
throw ipv4_exception(IP::internal::format_error(ipstr, title, "v4", ec));
return from_asio(a);
@ -200,10 +200,7 @@ namespace openvpn {
std::string to_string() const
{
const asio::ip::address_v4 a = to_asio();
asio::error_code ec;
std::string ret = a.to_string(ec);
if (ec)
throw ipv4_exception("to_string");
std::string ret = a.to_string();
return ret;
}
@ -268,7 +265,7 @@ namespace openvpn {
static Addr from_asio(const asio::ip::address_v4& asio_addr)
{
Addr ret;
ret.u.addr = (std::uint32_t)asio_addr.to_ulong();
ret.u.addr = (std::uint32_t)asio_addr.to_uint();
return ret;
}

View File

@ -98,7 +98,7 @@ namespace openvpn {
static Addr from_string(const std::string& ipstr, const char *title = nullptr)
{
asio::error_code ec;
asio::ip::address_v6 a = asio::ip::address_v6::from_string(ipstr, ec);
asio::ip::address_v6 a = asio::ip::make_address_v6(ipstr, ec);
if (ec)
throw ipv6_exception(IP::internal::format_error(ipstr, title, "v6", ec));
return from_asio(a);
@ -107,10 +107,7 @@ namespace openvpn {
std::string to_string() const
{
const asio::ip::address_v6 a = to_asio();
asio::error_code ec;
std::string ret = a.to_string(ec);
if (ec)
throw ipv6_exception("to_string");
std::string ret = a.to_string();
return ret;
}

View File

@ -74,7 +74,7 @@ namespace openvpn {
OPENVPN_SIMPLE_EXCEPTION(client_connect_unhandled_exception);
ClientConnect(asio::io_service& io_service_arg,
ClientConnect(asio::io_context& io_context_arg,
const ClientOptions::Ptr& client_options_arg)
: generation(0),
halt(false),
@ -83,11 +83,11 @@ namespace openvpn {
dont_restart_(false),
lifecycle_started(false),
conn_timeout(client_options_arg->conn_timeout()),
io_service(io_service_arg),
io_context(io_context_arg),
client_options(client_options_arg),
server_poll_timer(io_service_arg),
restart_wait_timer(io_service_arg),
conn_timer(io_service_arg),
server_poll_timer(io_context_arg),
restart_wait_timer(io_context_arg),
conn_timer(io_context_arg),
conn_timer_pending(false)
{
}
@ -100,7 +100,7 @@ namespace openvpn {
throw ErrorCode(Error::NETWORK_UNAVAILABLE, true, "Network Unavailable");
RemoteList::Ptr remote_list = client_options->remote_list_precache();
RemoteList::PreResolve::Ptr preres(new RemoteList::PreResolve(io_service,
RemoteList::PreResolve::Ptr preres(new RemoteList::PreResolve(io_context,
remote_list,
client_options->stats_ptr()));
if (preres->work_available())
@ -161,10 +161,10 @@ namespace openvpn {
void thread_safe_stop()
{
if (!halt)
io_service.post([self=Ptr(this)]()
{
self->graceful_stop();
});
asio::post(io_context, [self=Ptr(this)]()
{
self->graceful_stop();
});
}
void pause(const std::string& reason)
@ -179,7 +179,7 @@ namespace openvpn {
interim_finalize();
}
cancel_timers();
asio_work.reset(new asio::io_service::work(io_service));
asio_work.reset(new asio::io_context::work(io_context));
ClientEvent::Base::Ptr ev = new ClientEvent::Pause(reason);
client_options->events().add_event(ev);
client_options->stats().error(Error::N_PAUSE);
@ -216,28 +216,28 @@ namespace openvpn {
void thread_safe_pause(const std::string& reason)
{
if (!halt)
io_service.post([self=Ptr(this), reason]()
{
self->pause(reason);
});
asio::post(io_context, [self=Ptr(this), reason]()
{
self->pause(reason);
});
}
void thread_safe_resume()
{
if (!halt)
io_service.post([self=Ptr(this)]()
{
self->resume();
});
asio::post(io_context, [self=Ptr(this)]()
{
self->resume();
});
}
void thread_safe_reconnect(int seconds)
{
if (!halt)
io_service.post([self=Ptr(this), seconds]()
{
self->reconnect(seconds);
});
asio::post(io_context, [self=Ptr(this), seconds]()
{
self->reconnect(seconds);
});
}
void dont_restart()
@ -524,7 +524,7 @@ namespace openvpn {
client_options->next();
}
Client::Config::Ptr cli_config = client_options->client_config(); // client_config in cliopt.hpp
client.reset(new Client(io_service, *cli_config, this)); // build ClientProto::Session from cliproto.hpp
client.reset(new Client(io_context, *cli_config, this)); // build ClientProto::Session from cliproto.hpp
client_finalized = false;
restart_wait_timer.cancel();
@ -569,14 +569,14 @@ namespace openvpn {
bool dont_restart_;
bool lifecycle_started;
int conn_timeout;
asio::io_service& io_service;
asio::io_context& io_context;
ClientOptions::Ptr client_options;
Client::Ptr client;
AsioTimer server_poll_timer;
AsioTimer restart_wait_timer;
AsioTimer conn_timer;
bool conn_timer_pending;
std::unique_ptr<asio::io_service::work> asio_work;
std::unique_ptr<asio::io_context::work> asio_work;
RemoteList::PreResolve::Ptr pre_resolve;
};

View File

@ -127,16 +127,16 @@ namespace openvpn {
OptionList::FilterBase::Ptr pushed_options_filter;
};
Session(asio::io_service& io_service_arg,
Session(asio::io_context& io_context_arg,
const Config& config,
NotifyCallback* notify_callback_arg)
: Base(config.proto_context_config, config.cli_stats),
io_service(io_service_arg),
io_context(io_context_arg),
transport_factory(config.transport_factory),
tun_factory(config.tun_factory),
notify_callback(notify_callback_arg),
housekeeping_timer(io_service_arg),
push_request_timer(io_service_arg),
housekeeping_timer(io_context_arg),
push_request_timer(io_context_arg),
halt(false),
received_options(config.push_base),
creds(config.creds),
@ -149,7 +149,7 @@ namespace openvpn {
fatal_(Error::UNDEF),
pushed_options_limit(config.pushed_options_limit),
pushed_options_filter(config.pushed_options_filter),
inactive_timer(io_service_arg),
inactive_timer(io_context_arg),
inactive_bytes(0),
inactive_last_sample(0)
{
@ -175,7 +175,7 @@ namespace openvpn {
housekeeping_schedule.init(Time::Duration::binary_ms(512), Time::Duration::binary_ms(1024));
// initialize transport-layer packet handler
transport = transport_factory->new_transport_client_obj(io_service, *this);
transport = transport_factory->new_transport_client_obj(io_context, *this);
transport->transport_start();
}
}
@ -486,7 +486,7 @@ namespace openvpn {
Base::process_push(received_options, *proto_context_options);
// initialize tun/routing
tun = tun_factory->new_tun_client_obj(io_service, *this, transport.get());
tun = tun_factory->new_tun_client_obj(io_context, *this, transport.get());
tun->tun_start(received_options, *transport, Base::dc_settings());
// initialize data channel after pushed options have been processed
@ -818,7 +818,7 @@ namespace openvpn {
}
#endif
asio::io_service& io_service;
asio::io_context& io_context;
TransportClientFactory::Ptr transport_factory;
TransportClient::Ptr transport;

View File

@ -124,17 +124,16 @@ namespace openvpn {
}
// cache a list of DNS-resolved IP addresses
template <class EPITER>
void set_endpoint_list(EPITER& endpoint_iterator)
template <class EPRANGE>
void set_endpoint_range(EPRANGE& endpoint_range)
{
EPITER end;
EPRANGE end;
res_addr_list.reset(new ResolvedAddrList());
while (endpoint_iterator != end)
for (const auto &i : endpoint_range)
{
ResolvedAddr::Ptr addr(new ResolvedAddr());
addr->addr = IP::Addr::from_asio(endpoint_iterator->endpoint().address());
addr->addr = IP::Addr::from_asio(i.endpoint().address());
res_addr_list->push_back(addr);
++endpoint_iterator;
}
OPENVPN_LOG_REMOTELIST("*** RemoteList::Item endpoint SET " << to_string());
}
@ -255,11 +254,11 @@ namespace openvpn {
virtual void pre_resolve_done() = 0;
};
PreResolve(asio::io_service& io_service_arg,
PreResolve(asio::io_context& io_context_arg,
const RemoteList::Ptr& remote_list_arg,
const SessionStats::Ptr& stats_arg)
: io_service(io_service_arg),
resolver(io_service_arg),
: io_context(io_context_arg),
resolver(io_context_arg),
notify_callback(nullptr),
remote_list(remote_list_arg),
stats(stats_arg),
@ -320,11 +319,11 @@ namespace openvpn {
{
// call into Asio to do the resolve operation
OPENVPN_LOG_REMOTELIST("*** PreResolve RESOLVE on " << item.server_host);
asio::ip::tcp::resolver::query query(item.server_host, "0");
resolver.async_resolve(query, [self=Ptr(this)](const asio::error_code& error, asio::ip::tcp::resolver::iterator endpoint_iterator)
{
self->resolve_callback(error, endpoint_iterator);
});
resolver.async_resolve(item.server_host, "",
[self=Ptr(this)](const asio::error_code& error, asio::ip::tcp::resolver::results_type results)
{
self->resolve_callback(error, results);
});
return;
}
}
@ -345,7 +344,7 @@ namespace openvpn {
// callback on resolve completion
void resolve_callback(const asio::error_code& error,
asio::ip::tcp::resolver::iterator endpoint_iterator)
asio::ip::tcp::resolver::results_type results)
{
if (notify_callback && index < remote_list->list.size())
{
@ -353,7 +352,7 @@ namespace openvpn {
if (!error)
{
// resolve succeeded
item.set_endpoint_list(endpoint_iterator);
item.set_endpoint_range(results);
}
else
{
@ -366,7 +365,7 @@ namespace openvpn {
}
}
asio::io_service& io_service;
asio::io_context& io_context;
asio::ip::tcp::resolver resolver;
NotifyCallback* notify_callback;
RemoteList::Ptr remote_list;
@ -577,11 +576,11 @@ namespace openvpn {
}
// cache a list of DNS-resolved IP addresses
template <class EPITER>
void set_endpoint_list(EPITER& endpoint_iterator)
template <class EPRANGE>
void set_endpoint_range(EPRANGE& endpoint_range)
{
Item& item = *list[primary_index()];
item.set_endpoint_list(endpoint_iterator);
item.set_endpoint_range(endpoint_range);
index.reset_secondary();
}

View File

@ -41,10 +41,10 @@ namespace openvpn {
virtual void action_thread_finished(const ActionThread* self, bool status) = 0;
};
ActionThread(asio::io_service& io_service_arg,
ActionThread(asio::io_context& io_context_arg,
const ActionList::Ptr& action_list,
Notify* completion_handler_arg)
: io_service(io_service_arg),
: io_context(io_context_arg),
thread(nullptr),
actions(action_list),
completion_handler(completion_handler_arg)
@ -63,7 +63,7 @@ namespace openvpn {
delete thread;
thread = nullptr;
// Necessary because no guarantee that completion_handler
// obj will remain in scope during io_service.post delay.
// obj will remain in scope during io_context.post delay.
completion_handler = nullptr;
}
}
@ -95,13 +95,13 @@ namespace openvpn {
{
OPENVPN_LOG("ActionThread Exception: " << e.what());
}
io_service.post([self=Ptr(this), status]()
{
self->completion_post(status);
});
asio::post(io_context, [self=Ptr(this), status]()
{
self->completion_post(status);
});
}
asio::io_service& io_service;
asio::io_context& io_context;
std::thread* thread;
ActionList::Ptr actions; // actions to execute in child thread
Notify* completion_handler; // completion handler

View File

@ -42,8 +42,8 @@ namespace openvpn {
IP::Addr bind_local_addr;
};
explicit SocketService(asio::io_service& io_service)
: SocketServiceBase(io_service)
explicit SocketService(asio::io_context& io_context)
: SocketServiceBase(io_context)
{
}
@ -51,8 +51,8 @@ namespace openvpn {
// Override the open method so we can bind immediately after open.
asio::error_code open(implementation_type& impl,
const protocol_type& protocol,
asio::error_code& ec)
const protocol_type& protocol,
asio::error_code& ec)
{
ec = SocketServiceBase::open(impl, protocol, ec);
if (ec)
@ -75,8 +75,8 @@ namespace openvpn {
struct Socket : public SocketBase
{
explicit Socket(asio::io_service& io_service)
: SocketBase(io_service)
explicit Socket(asio::io_context& io_context)
: SocketBase(io_context)
{
}

View File

@ -37,8 +37,8 @@ namespace openvpn {
public:
typedef RCPtr<ASIOSignals> Ptr;
ASIOSignals(asio::io_service& io_service)
: halt(false), signals_(io_service) {}
ASIOSignals(asio::io_context& io_context)
: halt(false), signals_(io_context) {}
enum {
S_SIGINT = (1<<0),

View File

@ -77,14 +77,14 @@ namespace openvpn {
};
RunContext()
: io_service(1),
exit_timer(io_service),
: io_context(1),
exit_timer(io_context),
thread_count(0),
halt(false),
log_context(this),
log_wrap()
{
signals.reset(new ASIOSignals(io_service));
signals.reset(new ASIOSignals(io_context));
signal_rearm();
#ifdef OPENVPN_EXIT_IN
@ -129,7 +129,7 @@ namespace openvpn {
void run()
{
if (!halt)
io_service.run();
io_context.run();
}
void join()
@ -195,10 +195,10 @@ namespace openvpn {
exit_timer.cancel();
if (signals)
io_service.post([sig=signals]()
{
sig->cancel();
});
asio::post(io_context, [sig=signals]()
{
sig->cancel();
});
unsigned int stopped = 0;
for (size_t i = 0; i < servlist.size(); ++i)
@ -251,7 +251,7 @@ namespace openvpn {
}
// these vars only used by main thread
asio::io_service io_service;
asio::io_context io_context;
typename Stats::Ptr stats;
ASIOSignals::Ptr signals;
AsioTimer exit_timer;

View File

@ -65,9 +65,9 @@ namespace openvpn {
typedef RCPtr<Factory> Ptr;
typedef Base::Config ProtoConfig;
Factory(asio::io_service& io_service_arg,
Factory(asio::io_context& io_context_arg,
const Base::Config& c)
: io_service(io_service_arg)
: io_context(io_context_arg)
{
if (c.tls_auth_enabled())
preval.reset(new Base::TLSAuthPreValidate(c, true));
@ -93,7 +93,7 @@ namespace openvpn {
return new ProtoConfig(*proto_context_config);
}
asio::io_service& io_service;
asio::io_context& io_context;
ProtoConfig::Ptr proto_context_config;
ManClientInstanceFactory::Ptr man_factory;
@ -267,16 +267,16 @@ namespace openvpn {
}
private:
Session(asio::io_service& io_service_arg,
Session(asio::io_context& io_context_arg,
const Factory& factory,
ManClientInstanceFactory::Ptr man_factory_arg,
TunClientInstanceFactory::Ptr tun_factory_arg)
: Base(factory.clone_proto_config(), factory.stats),
io_service(io_service_arg),
io_context(io_context_arg),
halt(false),
did_push(false),
did_client_halt_restart(false),
housekeeping_timer(io_service_arg),
housekeeping_timer(io_context_arg),
disconnect_at(Time::infinite()),
stats(factory.stats),
man_factory(man_factory_arg),
@ -559,7 +559,7 @@ namespace openvpn {
}
}
asio::io_service& io_service;
asio::io_context& io_context;
bool halt;
bool did_push;
bool did_client_halt_restart;
@ -580,7 +580,7 @@ namespace openvpn {
inline TransportClientInstanceRecv::Ptr ServerProto::Factory::new_client_instance()
{
return new Session(io_service, *this, man_factory, tun_factory);
return new Session(io_context, *this, man_factory, tun_factory);
}
}

View File

@ -60,8 +60,8 @@ namespace openvpn {
class AsioTimer : public asio::basic_waitable_timer<AsioClock>
{
public:
AsioTimer(asio::io_service& io_service)
: asio::basic_waitable_timer<AsioClock>(io_service)
AsioTimer(asio::io_context& io_context)
: asio::basic_waitable_timer<AsioClock>(io_context)
{
}

View File

@ -199,7 +199,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TransportClient::Ptr new_transport_client_obj(asio::io_service& io_service,
virtual TransportClient::Ptr new_transport_client_obj(asio::io_context& io_context,
TransportClientParent& parent);
private:
@ -246,13 +246,12 @@ namespace openvpn {
else
{
// resolve it
asio::ip::tcp::resolver::query query(proxy_host,
proxy_port);
parent.transport_pre_resolve();
resolver.async_resolve(query, [self=Ptr(this)](const asio::error_code& error, asio::ip::tcp::resolver::iterator endpoint_iterator)
{
self->do_resolve_(error, endpoint_iterator);
});
resolver.async_resolve(proxy_host, proxy_port,
[self=Ptr(this)](const asio::error_code& error, asio::ip::tcp::resolver::results_type results)
{
self->do_resolve_(error, results);
});
}
}
}
@ -314,14 +313,14 @@ namespace openvpn {
}
};
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TransportClientParent& parent_arg)
: io_service(io_service_arg),
socket(io_service_arg),
: io_context(io_context_arg),
socket(io_context_arg),
config(config_arg),
parent(parent_arg),
resolver(io_service_arg),
resolver(io_context_arg),
halt(false),
n_transactions(0),
proxy_established(false),
@ -836,14 +835,14 @@ namespace openvpn {
// do DNS resolve
void do_resolve_(const asio::error_code& error,
asio::ip::tcp::resolver::iterator endpoint_iterator)
asio::ip::tcp::resolver::results_type results)
{
if (!halt)
{
if (!error)
{
// save resolved endpoint list in proxy remote_list
proxy_remote_list().set_endpoint_list(endpoint_iterator);
proxy_remote_list().set_endpoint_range(results);
start_connect_();
}
else
@ -978,7 +977,7 @@ namespace openvpn {
std::string server_host;
std::string server_port;
asio::io_service& io_service;
asio::io_context& io_context;
asio::ip::tcp::socket socket;
ClientConfig::Ptr config;
TransportClientParent& parent;
@ -1001,9 +1000,9 @@ namespace openvpn {
std::unique_ptr<HTTP::HTMLSkip> html_skip;
};
inline TransportClient::Ptr ClientConfig::new_transport_client_obj(asio::io_service& io_service, TransportClientParent& parent)
inline TransportClient::Ptr ClientConfig::new_transport_client_obj(asio::io_context& io_context, TransportClientParent& parent)
{
return TransportClient::Ptr(new Client(io_service, this, parent));
return TransportClient::Ptr(new Client(io_context, this, parent));
}
}
} // namespace openvpn

View File

@ -54,7 +54,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TransportClient::Ptr new_transport_client_obj(asio::io_service& io_service,
virtual TransportClient::Ptr new_transport_client_obj(asio::io_context& io_context,
TransportClientParent& parent);
private:
@ -86,13 +86,12 @@ namespace openvpn {
}
else
{
asio::ip::tcp::resolver::query query(server_host,
server_port);
parent.transport_pre_resolve();
resolver.async_resolve(query, [self=Ptr(this)](const asio::error_code& error, asio::ip::tcp::resolver::iterator endpoint_iterator)
{
self->do_resolve_(error, endpoint_iterator);
});
resolver.async_resolve(server_host, server_port,
[self=Ptr(this)](const asio::error_code& error, asio::ip::tcp::resolver::results_type results)
{
self->do_resolve_(error, results);
});
}
}
}
@ -140,14 +139,14 @@ namespace openvpn {
virtual ~Client() { stop_(); }
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TransportClientParent& parent_arg)
: io_service(io_service_arg),
socket(io_service_arg),
: io_context(io_context_arg),
socket(io_context_arg),
config(config_arg),
parent(parent_arg),
resolver(io_service_arg),
resolver(io_context_arg),
halt(false)
{
}
@ -211,14 +210,14 @@ namespace openvpn {
// do DNS resolve
void do_resolve_(const asio::error_code& error,
asio::ip::tcp::resolver::iterator endpoint_iterator)
asio::ip::tcp::resolver::results_type results)
{
if (!halt)
{
if (!error)
{
// save resolved endpoint list in remote_list
config->remote_list->set_endpoint_list(endpoint_iterator);
config->remote_list->set_endpoint_range(results);
start_connect_();
}
else
@ -291,7 +290,7 @@ namespace openvpn {
std::string server_host;
std::string server_port;
asio::io_service& io_service;
asio::io_context& io_context;
asio::ip::tcp::socket socket;
ClientConfig::Ptr config;
TransportClientParent& parent;
@ -301,10 +300,10 @@ namespace openvpn {
bool halt;
};
inline TransportClient::Ptr ClientConfig::new_transport_client_obj(asio::io_service& io_service,
inline TransportClient::Ptr ClientConfig::new_transport_client_obj(asio::io_context& io_context,
TransportClientParent& parent)
{
return TransportClient::Ptr(new Client(io_service, this, parent));
return TransportClient::Ptr(new Client(io_context, this, parent));
}
}
} // namespace openvpn

View File

@ -88,7 +88,7 @@ namespace openvpn {
{
typedef RCPtr<TransportClientFactory> Ptr;
virtual TransportClient::Ptr new_transport_client_obj(asio::io_service& io_service,
virtual TransportClient::Ptr new_transport_client_obj(asio::io_context& io_context,
TransportClientParent& parent) = 0;
};

View File

@ -56,7 +56,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TransportClient::Ptr new_transport_client_obj(asio::io_service& io_service,
virtual TransportClient::Ptr new_transport_client_obj(asio::io_context& io_context,
TransportClientParent& parent);
private:
@ -88,13 +88,12 @@ namespace openvpn {
}
else
{
asio::ip::udp::resolver::query query(server_host,
server_port);
parent.transport_pre_resolve();
resolver.async_resolve(query, [self=Ptr(this)](const asio::error_code& error, asio::ip::udp::resolver::iterator endpoint_iterator)
{
self->do_resolve_(error, endpoint_iterator);
});
resolver.async_resolve(server_host, server_port,
[self=Ptr(this)](const asio::error_code& error, asio::ip::udp::resolver::results_type results)
{
self->do_resolve_(error, results);
});
}
}
}
@ -139,14 +138,14 @@ namespace openvpn {
virtual ~Client() { stop_(); }
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TransportClientParent& parent_arg)
: io_service(io_service_arg),
socket(io_service_arg),
: io_context(io_context_arg),
socket(io_context_arg),
config(config_arg),
parent(parent_arg),
resolver(io_service_arg),
resolver(io_context_arg),
halt(false)
{
}
@ -198,14 +197,14 @@ namespace openvpn {
// called after DNS resolution has succeeded or failed
void do_resolve_(const asio::error_code& error,
asio::ip::udp::resolver::iterator endpoint_iterator)
asio::ip::udp::resolver::results_type results)
{
if (!halt)
{
if (!error)
{
// save resolved endpoint list in remote_list
config->remote_list->set_endpoint_list(endpoint_iterator);
config->remote_list->set_endpoint_range(results);
start_connect_();
}
else
@ -273,7 +272,7 @@ namespace openvpn {
std::string server_host;
std::string server_port;
asio::io_service& io_service;
asio::io_context& io_context;
asio::ip::udp::socket socket;
ClientConfig::Ptr config;
TransportClientParent& parent;
@ -283,10 +282,10 @@ namespace openvpn {
bool halt;
};
inline TransportClient::Ptr ClientConfig::new_transport_client_obj(asio::io_service& io_service,
inline TransportClient::Ptr ClientConfig::new_transport_client_obj(asio::io_context& io_context,
TransportClientParent& parent)
{
return TransportClient::Ptr(new Client(io_service, this, parent));
return TransportClient::Ptr(new Client(io_context, this, parent));
}
}
} // namespace openvpn

View File

@ -57,7 +57,7 @@ namespace openvpn {
{
typedef RCPtr<TransportServerFactory> Ptr;
virtual TransportServer::Ptr new_server_obj(asio::io_service& io_service) = 0;
virtual TransportServer::Ptr new_server_obj(asio::io_context& io_context) = 0;
};
// Base class for the per-client-instance state of the TransportServer.

View File

@ -58,7 +58,7 @@ namespace openvpn {
public:
typedef RCPtr<Tun> Ptr;
Tun(asio::io_service& io_service,
Tun(asio::io_context& io_context,
const int socket,
const bool retain_sd_arg,
const bool tun_prefix_arg,
@ -67,7 +67,7 @@ namespace openvpn {
const SessionStats::Ptr& stats_arg)
: Base(read_handler_arg, frame_arg, stats_arg)
{
Base::stream = new asio::posix::stream_descriptor(io_service, socket);
Base::stream = new asio::posix::stream_descriptor(io_context, socket);
Base::name_ = "tun";
Base::retain_stream = retain_sd_arg;
Base::tun_prefix = tun_prefix_arg;
@ -97,7 +97,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TunClient::Ptr new_tun_client_obj(asio::io_service& io_service,
virtual TunClient::Ptr new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli);
@ -174,7 +174,7 @@ namespace openvpn {
if (tun_persist->persist_tun_state(sd, state))
OPENVPN_LOG("TunPersist: saving tun context:" << std::endl << tun_persist->options());
impl.reset(new TunImpl(io_service,
impl.reset(new TunImpl(io_context,
sd,
true,
config->tun_prefix,
@ -236,10 +236,10 @@ namespace openvpn {
virtual ~Client() { stop_(); }
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TunClientParent& parent_arg)
: io_service(io_service_arg),
: io_context(io_context_arg),
config(config_arg),
parent(parent_arg),
halt(false),
@ -279,7 +279,7 @@ namespace openvpn {
}
asio::io_service& io_service;
asio::io_context& io_context;
TunPersist::Ptr tun_persist; // owns the tun socket descriptor
ClientConfig::Ptr config;
TunClientParent& parent;
@ -288,11 +288,11 @@ namespace openvpn {
TunProp::State::Ptr state;
};
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_service& io_service,
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli)
{
return TunClient::Ptr(new Client(io_service, this, parent));
return TunClient::Ptr(new Client(io_context, this, parent));
}
}

View File

@ -68,7 +68,7 @@ namespace openvpn {
{
typedef RCPtr<TunClientFactory> Ptr;
virtual TunClient::Ptr new_tun_client_obj(asio::io_service& io_service,
virtual TunClient::Ptr new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli) = 0;

View File

@ -42,7 +42,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TunClient::Ptr new_tun_client_obj(asio::io_service& io_service,
virtual TunClient::Ptr new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli);
private:
@ -93,25 +93,25 @@ namespace openvpn {
virtual void stop() {}
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TunClientParent& parent_arg)
: io_service(io_service_arg),
: io_context(io_context_arg),
config(config_arg),
parent(parent_arg)
{
}
asio::io_service& io_service;
asio::io_context& io_context;
ClientConfig::Ptr config;
TunClientParent& parent;
};
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_service& io_service,
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli)
{
return TunClient::Ptr(new Client(io_service, this, parent));
return TunClient::Ptr(new Client(io_context, this, parent));
}
}

View File

@ -231,7 +231,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TunClient::Ptr new_tun_client_obj(asio::io_service& io_service,
virtual TunClient::Ptr new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli);
private:
@ -276,7 +276,7 @@ namespace openvpn {
remove_cmds.reset(new ActionList());
// start tun
impl.reset(new TunImpl(io_service,
impl.reset(new TunImpl(io_context,
this,
config->frame,
config->stats,
@ -344,10 +344,10 @@ namespace openvpn {
virtual ~Client() { stop_(); }
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TunClientParent& parent_arg)
: io_service(io_service_arg),
: io_context(io_context_arg),
config(config_arg),
parent(parent_arg),
state(new TunProp::State()),
@ -389,7 +389,7 @@ namespace openvpn {
}
}
asio::io_service& io_service;
asio::io_context& io_context;
ClientConfig::Ptr config;
TunClientParent& parent;
TunImpl::Ptr impl;
@ -398,11 +398,11 @@ namespace openvpn {
bool halt;
};
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_service& io_service,
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli)
{
return TunClient::Ptr(new Client(io_service, this, parent));
return TunClient::Ptr(new Client(io_context, this, parent));
}
}

View File

@ -66,7 +66,7 @@ namespace openvpn {
public:
typedef RCPtr<Tun> Ptr;
Tun(asio::io_service& io_service,
Tun(asio::io_context& io_context,
ReadHandler read_handler_arg,
const Frame::Ptr& frame_arg,
const SessionStats::Ptr& stats_arg,
@ -123,7 +123,7 @@ namespace openvpn {
}
Base::name_ = ifr.ifr_name;
Base::stream = new asio::posix::stream_descriptor(io_service, fd.release());
Base::stream = new asio::posix::stream_descriptor(io_context, fd.release());
OPENVPN_LOG_TUN(Base::name_ << " opened");
}

View File

@ -455,7 +455,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TunClient::Ptr new_tun_client_obj(asio::io_service& io_service,
virtual TunClient::Ptr new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli);
@ -572,7 +572,7 @@ namespace openvpn {
OPENVPN_LOG("open " << state->iface_name << " SUCCEEDED");
// create ASIO wrapper for tun fd
tun_wrap->save_replace_sock(new TUNStream(io_service, fd));
tun_wrap->save_replace_sock(new TUNStream(io_context, fd));
// initialize failsafe blocker
if (config->enable_failsafe_block && !config->fsblock)
@ -664,10 +664,10 @@ namespace openvpn {
virtual ~Client() { stop_(); }
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TunClientParent& parent_arg)
: io_service(io_service_arg),
: io_context(io_context_arg),
config(config_arg),
parent(parent_arg),
halt(false),
@ -884,7 +884,7 @@ namespace openvpn {
}
}
asio::io_service& io_service;
asio::io_context& io_context;
TunWrap::Ptr tun_wrap; // contains the tun device fd
ClientConfig::Ptr config;
TunClientParent& parent;
@ -894,11 +894,11 @@ namespace openvpn {
ActionList::Ptr remove_cmds;
};
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_service& io_service,
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli)
{
return TunClient::Ptr(new Client(io_service, this, parent));
return TunClient::Ptr(new Client(io_context, this, parent));
}
}

View File

@ -97,7 +97,7 @@ namespace openvpn {
return new ClientConfig;
}
virtual TunClient::Ptr new_tun_client_obj(asio::io_service& io_service,
virtual TunClient::Ptr new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli);
@ -180,7 +180,7 @@ namespace openvpn {
OPENVPN_LOG(version.to_string());
// create ASIO wrapper for HANDLE
TAPStream* ts = new TAPStream(io_service, th);
TAPStream* ts = new TAPStream(io_context, th);
// persist tun settings state
if (tun_persist->persist_tun_state(ts, state))
@ -265,10 +265,10 @@ namespace openvpn {
virtual ~Client() { stop_(); }
private:
Client(asio::io_service& io_service_arg,
Client(asio::io_context& io_context_arg,
ClientConfig* config_arg,
TunClientParent& parent_arg)
: io_service(io_service_arg),
: io_context(io_context_arg),
config(config_arg),
parent(parent_arg),
halt(false),
@ -566,7 +566,7 @@ namespace openvpn {
Util::tap_process_logging(h);
}
asio::io_service& io_service;
asio::io_context& io_context;
TunPersist::Ptr tun_persist; // contains the TAP device HANDLE
ClientConfig::Ptr config;
TunClientParent& parent;
@ -576,11 +576,11 @@ namespace openvpn {
ActionList::Ptr remove_cmds;
};
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_service& io_service,
inline TunClient::Ptr ClientConfig::new_tun_client_obj(asio::io_context& io_context,
TunClientParent& parent,
TransportClient* transcli)
{
return TunClient::Ptr(new Client(io_service, this, parent));
return TunClient::Ptr(new Client(io_context, this, parent));
}
}

View File

@ -158,7 +158,7 @@ fi
#fi
# asio
CPPFLAGS="$CPPFLAGS -DASIO_STANDALONE -I$DEP_DIR/asio/asio/include"
CPPFLAGS="$CPPFLAGS -DASIO_STANDALONE -DASIO_NO_DEPRECATED -I$DEP_DIR/asio/asio/include"
# LZO compression
if [ "$LZO" = "1" ]; then