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

Commit fc125e4e authored by Mike Yu's avatar Mike Yu
Browse files

resolv: drop polling timeout setting in DNSResponder

As there's already an eventfd in DNSResponder as a signal to
terminate the handler thread, polling timeout is not necessary
(at least now), so drop it.

Test: runtest passed
Change-Id: I32be7ea99f90ec6d161a07d4bd3976b095a9e40d
parent 7194979b
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -535,10 +535,9 @@ const char* DNSHeader::readHeader(const char* buffer, const char* buffer_end,
/* DNS responder */

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_service_(std::move(listen_service)),
      poll_timeout_ms_(poll_timeout_ms),
      error_rcode_(error_rcode) {}

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

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

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

@@ -138,8 +136,6 @@ class DNSResponder {
    // Address and service to listen on, currently limited to UDP.
    const std::string listen_address_;
    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.
    const ns_rcode error_rcode_;
    // Probability that a valid response is being sent instead of being sent
+1 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ void DnsResponderClient::SetupDNSServers(unsigned num_servers, const std::vector
        auto& server = (*servers)[i];
        auto& d = (*dns)[i];
        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) {
            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());
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ TEST_F(DnsResolverBinderTest, EventListener_onDnsEvent) {
    // Setup DNS responder server.
    constexpr char listen_addr[] = "127.0.0.3";
    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");
    ASSERT_TRUE(dns.startServer());

+8 −10
Original line number Diff line number Diff line
@@ -332,7 +332,7 @@ TEST_F(GetAddrInfoForNetContextTest, AlphabeticalHostname_NoData) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    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");
    ASSERT_TRUE(dns.startServer());
    const char* servers[] = {listen_addr};
@@ -359,7 +359,7 @@ TEST_F(GetAddrInfoForNetContextTest, AlphabeticalHostname) {
    constexpr char v4addr[] = "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_aaaa, v6addr);
    ASSERT_TRUE(dns.startServer());
@@ -417,8 +417,7 @@ TEST_F(GetAddrInfoForNetContextTest, ServerResponseError) {
    for (const auto& config : testConfigs) {
        SCOPED_TRACE(StringPrintf("rcode: %d", config.rcode));

        test::DNSResponder dns(listen_addr, listen_srv, 250,
                               config.rcode /*response specific rcode*/);
        test::DNSResponder dns(listen_addr, listen_srv, config.rcode /*response specific rcode*/);
        dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
        dns.setResponseProbability(0.0);  // always ignore requests and response preset rcode
        ASSERT_TRUE(dns.startServer());
@@ -442,7 +441,7 @@ TEST_F(GetAddrInfoForNetContextTest, ServerTimeout) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    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.setResponseProbability(0.0);  // always ignore requests and don't response
    ASSERT_TRUE(dns.startServer());
@@ -466,7 +465,7 @@ TEST_F(GetHostByNameForNetContextTest, AlphabeticalHostname) {
    constexpr char v4addr[] = "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_aaaa, v6addr);
    ASSERT_TRUE(dns.startServer());
@@ -501,7 +500,7 @@ TEST_F(GetHostByNameForNetContextTest, NoData) {
    constexpr char listen_addr[] = "127.0.0.3";
    constexpr char listen_srv[] = "53";
    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");
    ASSERT_TRUE(dns.startServer());
    const char* servers[] = {listen_addr};
@@ -544,8 +543,7 @@ TEST_F(GetHostByNameForNetContextTest, ServerResponseError) {
    for (const auto& config : testConfigs) {
        SCOPED_TRACE(StringPrintf("rcode: %d", config.rcode));

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