Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 764a0721 authored by Mike Yu's avatar Mike Yu Committed by Gerrit Code Review
Browse files

Merge "resolv: drop polling timeout setting in DNSResponder"

parents d737753d fc125e4e
Loading
Loading
Loading
Loading
+3 −5
Original line number Original line Diff line number Diff line
@@ -535,10 +535,9 @@ const char* DNSHeader::readHeader(const char* buffer, const char* buffer_end,
/* DNS responder */
/* DNS responder */


DNSResponder::DNSResponder(std::string listen_address, std::string listen_service,
DNSResponder::DNSResponder(std::string listen_address, std::string listen_service,
                           int poll_timeout_ms, ns_rcode error_rcode)
                           ns_rcode error_rcode)
    : listen_address_(std::move(listen_address)),
    : listen_address_(std::move(listen_address)),
      listen_service_(std::move(listen_service)),
      listen_service_(std::move(listen_service)),
      poll_timeout_ms_(poll_timeout_ms),
      error_rcode_(error_rcode) {}
      error_rcode_(error_rcode) {}


DNSResponder::~DNSResponder() {
DNSResponder::~DNSResponder() {
@@ -691,9 +690,8 @@ void DNSResponder::clearQueries() {
void DNSResponder::requestHandler() {
void DNSResponder::requestHandler() {
    epoll_event evs[EPOLL_MAX_EVENTS];
    epoll_event evs[EPOLL_MAX_EVENTS];
    while (true) {
    while (true) {
        int n = epoll_wait(epoll_fd_.get(), evs, EPOLL_MAX_EVENTS, poll_timeout_ms_);
        int n = epoll_wait(epoll_fd_.get(), evs, EPOLL_MAX_EVENTS, -1);
        if (n == 0) continue;
        if (n <= 0) {
        if (n < 0) {
            APLOGI("epoll_wait() failed, n=%d", n);
            APLOGI("epoll_wait() failed, n=%d", n);
            return;
            return;
        }
        }
+0 −4
Original line number Original line Diff line number Diff line
@@ -39,7 +39,6 @@ struct DNSRecord;


inline const std::string kDefaultListenAddr = "127.0.0.3";
inline const std::string kDefaultListenAddr = "127.0.0.3";
inline const std::string kDefaultListenService = "53";
inline const std::string kDefaultListenService = "53";
inline const int kDefaultPollTimoutMillis = -1;


/*
/*
 * Simple DNS responder, which replies to queries with the registered response
 * Simple DNS responder, which replies to queries with the registered response
@@ -50,7 +49,6 @@ class DNSResponder {
  public:
  public:
    DNSResponder(std::string listen_address = kDefaultListenAddr,
    DNSResponder(std::string listen_address = kDefaultListenAddr,
                 std::string listen_service = kDefaultListenService,
                 std::string listen_service = kDefaultListenService,
                 int poll_timeout_ms = kDefaultPollTimoutMillis,
                 ns_rcode error_rcode = ns_rcode::ns_r_servfail);
                 ns_rcode error_rcode = ns_rcode::ns_r_servfail);
    ~DNSResponder();
    ~DNSResponder();


@@ -138,8 +136,6 @@ class DNSResponder {
    // Address and service to listen on, currently limited to UDP.
    // Address and service to listen on, currently limited to UDP.
    const std::string listen_address_;
    const std::string listen_address_;
    const std::string listen_service_;
    const std::string listen_service_;
    // epoll_wait() timeout in ms.
    const int poll_timeout_ms_;
    // Error code to return for requests for an unknown name.
    // Error code to return for requests for an unknown name.
    const ns_rcode error_rcode_;
    const ns_rcode error_rcode_;
    // Probability that a valid response is being sent instead of being sent
    // Probability that a valid response is being sent instead of being sent
+1 −1
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ void DnsResponderClient::SetupDNSServers(unsigned num_servers, const std::vector
        auto& server = (*servers)[i];
        auto& server = (*servers)[i];
        auto& d = (*dns)[i];
        auto& d = (*dns)[i];
        server = StringPrintf("127.0.0.%u", i + 100);
        server = StringPrintf("127.0.0.%u", i + 100);
        d = std::make_unique<test::DNSResponder>(server, listen_srv, 250, ns_rcode::ns_r_servfail);
        d = std::make_unique<test::DNSResponder>(server, listen_srv, ns_rcode::ns_r_servfail);
        for (const auto& mapping : mappings) {
        for (const auto& mapping : mappings) {
            d->addMapping(mapping.entry.c_str(), ns_type::ns_t_a, mapping.ip4.c_str());
            d->addMapping(mapping.entry.c_str(), ns_type::ns_t_a, mapping.ip4.c_str());
            d->addMapping(mapping.entry.c_str(), ns_type::ns_t_aaaa, mapping.ip6.c_str());
            d->addMapping(mapping.entry.c_str(), ns_type::ns_t_aaaa, mapping.ip6.c_str());
+1 −1
Original line number Original line Diff line number Diff line
@@ -177,7 +177,7 @@ TEST_F(DnsResolverBinderTest, EventListener_onDnsEvent) {
    // Setup DNS responder server.
    // Setup DNS responder server.
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    constexpr char listen_srv[] = "53";
    test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
    test::DNSResponder dns(listen_addr, listen_srv, ns_rcode::ns_r_servfail);
    dns.addMapping("hi.example.com.", ns_type::ns_t_a, "1.2.3.4");
    dns.addMapping("hi.example.com.", ns_type::ns_t_a, "1.2.3.4");
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());


+8 −10
Original line number Original line Diff line number Diff line
@@ -334,7 +334,7 @@ TEST_F(GetAddrInfoForNetContextTest, AlphabeticalHostname_NoData) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    constexpr char listen_srv[] = "53";
    constexpr char v4_host_name[] = "v4only.example.com.";
    constexpr char v4_host_name[] = "v4only.example.com.";
    test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
    test::DNSResponder dns(listen_addr, listen_srv, ns_rcode::ns_r_servfail);
    dns.addMapping(v4_host_name, ns_type::ns_t_a, "1.2.3.3");
    dns.addMapping(v4_host_name, ns_type::ns_t_a, "1.2.3.3");
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());
    const char* servers[] = {listen_addr};
    const char* servers[] = {listen_addr};
@@ -361,7 +361,7 @@ TEST_F(GetAddrInfoForNetContextTest, AlphabeticalHostname) {
    constexpr char v4addr[] = "1.2.3.4";
    constexpr char v4addr[] = "1.2.3.4";
    constexpr char v6addr[] = "::1.2.3.4";
    constexpr char v6addr[] = "::1.2.3.4";


    test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
    test::DNSResponder dns(listen_addr, listen_srv, ns_rcode::ns_r_servfail);
    dns.addMapping(host_name, ns_type::ns_t_a, v4addr);
    dns.addMapping(host_name, ns_type::ns_t_a, v4addr);
    dns.addMapping(host_name, ns_type::ns_t_aaaa, v6addr);
    dns.addMapping(host_name, ns_type::ns_t_aaaa, v6addr);
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());
@@ -419,8 +419,7 @@ TEST_F(GetAddrInfoForNetContextTest, ServerResponseError) {
    for (const auto& config : testConfigs) {
    for (const auto& config : testConfigs) {
        SCOPED_TRACE(StringPrintf("rcode: %d", config.rcode));
        SCOPED_TRACE(StringPrintf("rcode: %d", config.rcode));


        test::DNSResponder dns(listen_addr, listen_srv, 250,
        test::DNSResponder dns(listen_addr, listen_srv, config.rcode /*response specific rcode*/);
                               config.rcode /*response specific rcode*/);
        dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
        dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
        dns.setResponseProbability(0.0);  // always ignore requests and response preset rcode
        dns.setResponseProbability(0.0);  // always ignore requests and response preset rcode
        ASSERT_TRUE(dns.startServer());
        ASSERT_TRUE(dns.startServer());
@@ -444,7 +443,7 @@ TEST_F(GetAddrInfoForNetContextTest, ServerTimeout) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    constexpr char listen_srv[] = "53";
    constexpr char host_name[] = "hello.example.com.";
    constexpr char host_name[] = "hello.example.com.";
    test::DNSResponder dns(listen_addr, listen_srv, 250, static_cast<ns_rcode>(-1) /*no response*/);
    test::DNSResponder dns(listen_addr, listen_srv, static_cast<ns_rcode>(-1) /*no response*/);
    dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
    dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
    dns.setResponseProbability(0.0);  // always ignore requests and don't response
    dns.setResponseProbability(0.0);  // always ignore requests and don't response
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());
@@ -468,7 +467,7 @@ TEST_F(GetHostByNameForNetContextTest, AlphabeticalHostname) {
    constexpr char v4addr[] = "1.2.3.4";
    constexpr char v4addr[] = "1.2.3.4";
    constexpr char v6addr[] = "::1.2.3.4";
    constexpr char v6addr[] = "::1.2.3.4";


    test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
    test::DNSResponder dns(listen_addr, listen_srv, ns_rcode::ns_r_servfail);
    dns.addMapping(host_name, ns_type::ns_t_a, v4addr);
    dns.addMapping(host_name, ns_type::ns_t_a, v4addr);
    dns.addMapping(host_name, ns_type::ns_t_aaaa, v6addr);
    dns.addMapping(host_name, ns_type::ns_t_aaaa, v6addr);
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());
@@ -503,7 +502,7 @@ TEST_F(GetHostByNameForNetContextTest, NoData) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    constexpr char listen_srv[] = "53";
    constexpr char v4_host_name[] = "v4only.example.com.";
    constexpr char v4_host_name[] = "v4only.example.com.";
    test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
    test::DNSResponder dns(listen_addr, listen_srv, ns_rcode::ns_r_servfail);
    dns.addMapping(v4_host_name, ns_type::ns_t_a, "1.2.3.3");
    dns.addMapping(v4_host_name, ns_type::ns_t_a, "1.2.3.3");
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());
    const char* servers[] = {listen_addr};
    const char* servers[] = {listen_addr};
@@ -546,8 +545,7 @@ TEST_F(GetHostByNameForNetContextTest, ServerResponseError) {
    for (const auto& config : testConfigs) {
    for (const auto& config : testConfigs) {
        SCOPED_TRACE(StringPrintf("rcode: %d", config.rcode));
        SCOPED_TRACE(StringPrintf("rcode: %d", config.rcode));


        test::DNSResponder dns(listen_addr, listen_srv, 250,
        test::DNSResponder dns(listen_addr, listen_srv, config.rcode /*response specific rcode*/);
                               config.rcode /*response specific rcode*/);
        dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
        dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
        dns.setResponseProbability(0.0);  // always ignore requests and response preset rcode
        dns.setResponseProbability(0.0);  // always ignore requests and response preset rcode
        ASSERT_TRUE(dns.startServer());
        ASSERT_TRUE(dns.startServer());
@@ -568,7 +566,7 @@ TEST_F(GetHostByNameForNetContextTest, ServerTimeout) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    constexpr char listen_srv[] = "53";
    constexpr char host_name[] = "hello.example.com.";
    constexpr char host_name[] = "hello.example.com.";
    test::DNSResponder dns(listen_addr, listen_srv, 250, static_cast<ns_rcode>(-1) /*no response*/);
    test::DNSResponder dns(listen_addr, listen_srv, static_cast<ns_rcode>(-1) /*no response*/);
    dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
    dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
    dns.setResponseProbability(0.0);  // always ignore requests and don't response
    dns.setResponseProbability(0.0);  // always ignore requests and don't response
    ASSERT_TRUE(dns.startServer());
    ASSERT_TRUE(dns.startServer());
Loading