Skip to content

Commit

Permalink
use resolver
Browse files Browse the repository at this point in the history
  • Loading branch information
qicosmos committed Mar 27, 2024
1 parent 50b3b1c commit f5c145e
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 31 deletions.
21 changes: 7 additions & 14 deletions include/ylt/coro_rpc/impl/coro_rpc_server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,14 +308,18 @@ class coro_rpc_server_base {
ELOGV(INFO, "begin to listen");
using asio::ip::tcp;
asio::error_code ec;
auto addr = asio::ip::address::from_string(address_, ec);
if (ec) {
asio::ip::tcp::resolver::query query(address_, std::to_string(port_));
asio::ip::tcp::resolver resolver(acceptor_.get_executor());
asio::ip::tcp::resolver::iterator it = resolver.resolve(query, ec);

asio::ip::tcp::resolver::iterator it_end;
if (ec || it == it_end) {
ELOGV(ERROR, "resolve address %s error : %s", address_.data(),
ec.message().data());
return coro_rpc::errc::bad_address;
}

auto endpoint = tcp::endpoint(addr, port_);
auto endpoint = it->endpoint();
acceptor_.open(endpoint.protocol(), ec);
if (ec) {
ELOGV(ERROR, "open failed, error : %s", ec.message().data());
Expand Down Expand Up @@ -420,13 +424,6 @@ class coro_rpc_server_base {
acceptor_close_waiter_.get_future().wait();
}

bool iequal(std::string_view a, std::string_view b) {
return std::equal(a.begin(), a.end(), b.begin(), b.end(),
[](char a, char b) {
return tolower(a) == tolower(b);
});
}

void init_address(std::string address) {
if (size_t pos = address.find(':'); pos != std::string::npos) {
auto port_sv = std::string_view(address).substr(pos + 1);
Expand All @@ -443,10 +440,6 @@ class coro_rpc_server_base {
address = address.substr(0, pos);
}

if (iequal(address, "localhost")) {
address = "127.0.0.1";
}

address_ = std::move(address);
}

Expand Down
23 changes: 8 additions & 15 deletions include/ylt/standalone/cinatra/coro_http_server.hpp
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
#pragma once

#include <asio/dispatch.hpp>
#include <cstdint>
#include <mutex>
#include <type_traits>

#include "asio/streambuf.hpp"
#include "async_simple/Promise.h"
#include "async_simple/coro/Lazy.h"
#include "cinatra/coro_http_client.hpp"
#include "cinatra/coro_http_response.hpp"
#include "cinatra/coro_http_router.hpp"
Expand Down Expand Up @@ -518,14 +510,19 @@ class coro_http_server {
CINATRA_LOG_INFO << "begin to listen";
using asio::ip::tcp;
asio::error_code ec;
auto addr = asio::ip::address::from_string(address_, ec);
if (ec) {

asio::ip::tcp::resolver::query query(address_, std::to_string(port_));
asio::ip::tcp::resolver resolver(acceptor_.get_executor());
asio::ip::tcp::resolver::iterator it = resolver.resolve(query, ec);

asio::ip::tcp::resolver::iterator it_end;
if (ec || it == it_end) {
CINATRA_LOG_ERROR << "bad address: " << address_
<< " error: " << ec.message();
return std::errc::bad_address;
}

auto endpoint = tcp::endpoint(addr, port_);
auto endpoint = it->endpoint();
acceptor_.open(endpoint.protocol(), ec);
if (ec) {
CINATRA_LOG_ERROR << "acceptor open failed"
Expand Down Expand Up @@ -807,10 +804,6 @@ class coro_http_server {
address = address.substr(0, pos);
}

if (iequal0(address, "localhost")) {
address = "127.0.0.1";
}

address_ = std::move(address);
}

Expand Down
4 changes: 2 additions & 2 deletions src/coro_rpc/tests/test_coro_rpc_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,13 @@ struct CoroServerTester : ServerTester {
}

{
coro_rpc_server server(1, 9001, "x.x.x");
coro_rpc_server server(1, 9001, "x.x.x.x");
[[maybe_unused]] auto r = server.async_start();
CHECK(server.get_errc() == coro_rpc::errc::bad_address);
}

{
coro_rpc_server server(1, "x.x.x:9001");
coro_rpc_server server(1, "x.x.x.x:9001");
[[maybe_unused]] auto r = server.async_start();
CHECK(server.get_errc() == coro_rpc::errc::bad_address);
}
Expand Down

0 comments on commit f5c145e

Please sign in to comment.