summaryrefslogtreecommitdiff
path: root/src/lib/dcpomatic_socket.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-03-17 14:38:17 +0100
committerCarl Hetherington <cth@carlh.net>2025-03-22 13:29:58 +0100
commit7bd3e8150a0e321ec61cf4953baeb6f45d4611a9 (patch)
tree4553f01167d7a39c8f3ae8cdd1914f9f6e6a9af4 /src/lib/dcpomatic_socket.cc
parent9dd72fc481349f0b5ce985164441eecfa6485c19 (diff)
Remove deprecated/removed use of resolver::query.
Diffstat (limited to 'src/lib/dcpomatic_socket.cc')
-rw-r--r--src/lib/dcpomatic_socket.cc41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/lib/dcpomatic_socket.cc b/src/lib/dcpomatic_socket.cc
index f34d6fb53..9ccbd0af8 100644
--- a/src/lib/dcpomatic_socket.cc
+++ b/src/lib/dcpomatic_socket.cc
@@ -59,15 +59,17 @@ Socket::check ()
}
+#ifdef DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS
+
/** Blocking connect.
* @param endpoint End-point to connect to.
*/
void
-Socket::connect (boost::asio::ip::tcp::endpoint endpoint)
+Socket::connect(boost::asio::ip::basic_resolver_results<boost::asio::ip::tcp> endpoints)
{
set_deadline_from_now(_timeout);
boost::system::error_code ec = boost::asio::error::would_block;
- _socket.async_connect (endpoint, boost::lambda::var(ec) = boost::lambda::_1);
+ boost::asio::async_connect(_socket, endpoints, boost::lambda::var(ec) = boost::lambda::_1);
do {
_io_context.run_one();
} while (ec == boost::asio::error::would_block);
@@ -81,9 +83,36 @@ Socket::connect (boost::asio::ip::tcp::endpoint endpoint)
}
if (_send_buffer_size) {
- boost::asio::socket_base::send_buffer_size old_size;
- _socket.get_option(old_size);
+ boost::asio::socket_base::send_buffer_size new_size(*_send_buffer_size);
+ _socket.set_option(new_size);
+ }
+}
+
+#endif
+
+/** Blocking connect.
+ * @param endpoint End-point to connect to.
+ */
+void
+Socket::connect(boost::asio::ip::tcp::endpoint endpoint)
+{
+ set_deadline_from_now(_timeout);
+ boost::system::error_code ec = boost::asio::error::would_block;
+ _socket.async_connect (endpoint, boost::lambda::var(ec) = boost::lambda::_1);
+ do {
+ _io_context.run_one();
+ } while (ec == boost::asio::error::would_block);
+
+ if (ec) {
+ throw NetworkError (String::compose (_("error during async_connect (%1)"), ec.value ()));
+ }
+
+ if (!_socket.is_open ()) {
+ throw NetworkError (_("connect timed out"));
+ }
+
+ if (_send_buffer_size) {
boost::asio::socket_base::send_buffer_size new_size(*_send_buffer_size);
_socket.set_option(new_size);
}
@@ -94,8 +123,12 @@ void
Socket::connect(string host_name, int port)
{
boost::asio::ip::tcp::resolver resolver(_io_context);
+#ifdef DCPOMATIC_HAVE_BOOST_ASIO_IP_BASIC_RESOLVER_RESULTS
+ connect(resolver.resolve(host_name, fmt::to_string(port)));
+#else
boost::asio::ip::tcp::resolver::query query(host_name, fmt::to_string(port));
connect(*resolver.resolve(query));
+#endif
}