From 51e62a56f6aa8d9e7150396154933b91fae9e79e Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 8 Oct 2019 18:14:10 -0700 Subject: [PATCH] ircd::net::socket: Switch to deadline timer. --- include/ircd/net/asio.h | 1 + include/ircd/net/socket.h | 2 +- ircd/net.cc | 11 ++++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/ircd/net/asio.h b/include/ircd/net/asio.h index 98916b3b9..fcc96b585 100644 --- a/include/ircd/net/asio.h +++ b/include/ircd/net/asio.h @@ -22,6 +22,7 @@ namespace ircd::net { namespace ip = asio::ip; + using asio::deadline_timer; using asio::steady_timer; using ircd::string; diff --git a/include/ircd/net/socket.h b/include/ircd/net/socket.h index 759594bfc..a8175ab38 100644 --- a/include/ircd/net/socket.h +++ b/include/ircd/net/socket.h @@ -57,7 +57,7 @@ struct ircd::net::socket ip::tcp::socket sd; asio::ssl::stream ssl; stat in, out; - steady_timer timer; + deadline_timer timer; uint64_t timer_sem[2] {0}; // handler, sender bool timer_set {false}; // boolean lockout bool timedout {false}; diff --git a/ircd/net.cc b/ircd/net.cc index 947e7d23d..aedc0b47c 100644 --- a/ircd/net.cc +++ b/ircd/net.cc @@ -4109,9 +4109,9 @@ noexcept timer.expires_from_now() }; - const auto ret + const milliseconds ret { - duration_cast(exp) + exp.total_milliseconds() }; timer_set = false; @@ -4154,7 +4154,12 @@ ircd::net::socket::set_timeout(const milliseconds &t, assert(timedout == false); ++timer_sem[1]; timer_set = true; - timer.expires_from_now(t); + const boost::posix_time::milliseconds pt + { + t.count() + }; + + timer.expires_from_now(pt); timer.async_wait(ios::handle(descriptor, std::move(handler))); }