Skip to content

Commit

Permalink
Merge pull request #244 from GobySoft/fix-asio-resolve-service-names
Browse files Browse the repository at this point in the history
Fix ASIO Host not found error when only loopback is configured
  • Loading branch information
tsaubergine authored Jun 27, 2022
2 parents a1283a4 + 6a1b9cd commit c73c239
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 8 deletions.
7 changes: 4 additions & 3 deletions src/acomms/modemdriver/iridium_shore_driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ void goby::acomms::IridiumShoreDriver::do_work()
iridium_driver_cfg().hangup_seconds_after_empty())))
{
glog.is(DEBUG1) && glog << "Hanging up by disconnecting" << std::endl;
typedef boost::bimap<ModemId,
std::shared_ptr<RUDICSConnection> >::left_map::iterator LeftIt;
typedef boost::bimap<ModemId, std::shared_ptr<RUDICSConnection>>::left_map::iterator
LeftIt;
LeftIt client_it = clients_.left.find(id);
if (client_it != clients_.left.end())
rudics_server_->disconnect(client_it->second);
Expand Down Expand Up @@ -433,7 +433,8 @@ void goby::acomms::IridiumShoreDriver::send_sbd_mt(const std::string& bytes,
tcp::resolver resolver(io_service);
tcp::resolver::query query(
iridium_shore_driver_cfg().mt_sbd_server_address(),
goby::util::as<std::string>(iridium_shore_driver_cfg().mt_sbd_server_port()));
goby::util::as<std::string>(iridium_shore_driver_cfg().mt_sbd_server_port()),
boost::asio::ip::resolver_query_base::numeric_service);
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;

Expand Down
5 changes: 3 additions & 2 deletions src/acomms/modemdriver/udp_driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,9 @@ void goby::acomms::UDPDriver::startup(const protobuf::DriverConfig& cfg)
<< "Resolving receiver: " << remote.ShortDebugString() << std::endl;

boost::asio::ip::udp::resolver resolver(io_context_);
boost::asio::ip::udp::resolver::query query(boost::asio::ip::udp::v4(), remote.ip(),
goby::util::as<std::string>(remote.port()));
boost::asio::ip::udp::resolver::query query(
boost::asio::ip::udp::v4(), remote.ip(), goby::util::as<std::string>(remote.port()),
boost::asio::ip::resolver_query_base::numeric_service);
boost::asio::ip::udp::resolver::iterator endpoint_iterator = resolver.resolve(query);
const boost::asio::ip::udp::endpoint& receiver = *endpoint_iterator;
receivers_.insert(std::make_pair(remote.modem_id(), receiver));
Expand Down
3 changes: 2 additions & 1 deletion src/middleware/io/detail/tcp_client_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ class TCPClientThread
boost::asio::ip::tcp::resolver resolver(this->mutable_io());
remote_endpoint_ =
*resolver.resolve({boost::asio::ip::tcp::v4(), this->cfg().remote_address(),
std::to_string(this->cfg().remote_port())});
std::to_string(this->cfg().remote_port()),
boost::asio::ip::resolver_query_base::numeric_service});

auto ready = ThreadState::SUBSCRIPTIONS_COMPLETE;
this->interthread().template publish<line_in_group>(ready);
Expand Down
3 changes: 2 additions & 1 deletion src/middleware/io/udp_one_to_many.h
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ void goby::middleware::io::UDPOneToManyThread<
boost::asio::ip::udp::resolver resolver(this->mutable_io());
boost::asio::ip::udp::endpoint remote_endpoint =
*resolver.resolve({boost::asio::ip::udp::v4(), io_msg->udp_dest().addr(),
std::to_string(io_msg->udp_dest().port())});
std::to_string(io_msg->udp_dest().port()),
boost::asio::ip::resolver_query_base::numeric_service});

this->mutable_socket().async_send_to(
boost::asio::buffer(io_msg->data()), remote_endpoint,
Expand Down
3 changes: 2 additions & 1 deletion src/middleware/io/udp_point_to_point.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ class UDPPointToPointThread
boost::asio::ip::udp::resolver resolver(this->mutable_io());
remote_endpoint_ =
*resolver.resolve({boost::asio::ip::udp::v4(), this->cfg().remote_address(),
std::to_string(this->cfg().remote_port())});
std::to_string(this->cfg().remote_port()),
boost::asio::ip::resolver_query_base::numeric_service});

auto ready = ThreadState::SUBSCRIPTIONS_COMPLETE;
this->interthread().template publish<line_in_group>(ready);
Expand Down

0 comments on commit c73c239

Please sign in to comment.