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

Commit 57ff72e8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Rename nssocks to udpsocks"

parents 91be321d cc9bbc04
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -932,7 +932,7 @@ retry:
static std::vector<pollfd> extractUdpFdset(res_state statp, const short events = POLLIN) {
    std::vector<pollfd> fdset(statp->nsaddrs.size());
    for (size_t i = 0; i < statp->nsaddrs.size(); ++i) {
        fdset[i] = {.fd = statp->nssocks[i], .events = events};
        fdset[i] = {.fd = statp->udpsocks[i], .events = events};
    }
    return fdset;
}
@@ -969,10 +969,10 @@ static Result<std::vector<int>> udpRetryingPollWrapper(res_state statp, int ns,
            android::net::Experiments::getInstance()->getFlag("keep_listening_udp", 0);
    if (keepListeningUdp) return udpRetryingPoll(statp, finish);

    if (int n = retrying_poll(statp->nssocks[ns], POLLIN, finish); n <= 0) {
    if (int n = retrying_poll(statp->udpsocks[ns], POLLIN, finish); n <= 0) {
        return ErrnoError();
    }
    return std::vector<int>{statp->nssocks[ns]};
    return std::vector<int>{statp->udpsocks[ns]};
}

bool ignoreInvalidAnswer(res_state statp, const sockaddr_storage& from, const uint8_t* buf,
@@ -1013,9 +1013,9 @@ static int send_dg(res_state statp, res_params* params, const uint8_t* buf, int
    const sockaddr* nsap = reinterpret_cast<const sockaddr*>(&ss);
    const int nsaplen = sockaddrSize(nsap);

    if (statp->nssocks[*ns] == -1) {
        statp->nssocks[*ns].reset(socket(nsap->sa_family, SOCK_DGRAM | SOCK_CLOEXEC, 0));
        if (statp->nssocks[*ns] < 0) {
    if (statp->udpsocks[*ns] == -1) {
        statp->udpsocks[*ns].reset(socket(nsap->sa_family, SOCK_DGRAM | SOCK_CLOEXEC, 0));
        if (statp->udpsocks[*ns] < 0) {
            *terrno = errno;
            PLOG(DEBUG) << __func__ << ": socket(dg): ";
            switch (errno) {
@@ -1029,9 +1029,9 @@ static int send_dg(res_state statp, res_params* params, const uint8_t* buf, int
        }

        const uid_t uid = statp->enforce_dns_uid ? AID_DNS : statp->uid;
        resolv_tag_socket(statp->nssocks[*ns], uid, statp->pid);
        resolv_tag_socket(statp->udpsocks[*ns], uid, statp->pid);
        if (statp->_mark != MARK_UNSET) {
            if (setsockopt(statp->nssocks[*ns], SOL_SOCKET, SO_MARK, &(statp->_mark),
            if (setsockopt(statp->udpsocks[*ns], SOL_SOCKET, SO_MARK, &(statp->_mark),
                           sizeof(statp->_mark)) < 0) {
                *terrno = errno;
                statp->closeSockets();
@@ -1042,13 +1042,13 @@ static int send_dg(res_state statp, res_params* params, const uint8_t* buf, int
        // on the next socket operation when the server responds with an
        // ICMP port-unreachable error. This way we can detect the absence of
        // a nameserver without timing out.
        if (random_bind(statp->nssocks[*ns], nsap->sa_family) < 0) {
        if (random_bind(statp->udpsocks[*ns], nsap->sa_family) < 0) {
            *terrno = errno;
            dump_error("bind(dg)", nsap, nsaplen);
            statp->closeSockets();
            return (0);
        }
        if (connect(statp->nssocks[*ns], nsap, (socklen_t)nsaplen) < 0) {
        if (connect(statp->udpsocks[*ns], nsap, (socklen_t)nsaplen) < 0) {
            *terrno = errno;
            dump_error("connect(dg)", nsap, nsaplen);
            statp->closeSockets();
@@ -1056,7 +1056,7 @@ static int send_dg(res_state statp, res_params* params, const uint8_t* buf, int
        }
        LOG(DEBUG) << __func__ << ": new DG socket";
    }
    if (send(statp->nssocks[*ns], (const char*)buf, (size_t)buflen, 0) != buflen) {
    if (send(statp->udpsocks[*ns], (const char*)buf, (size_t)buflen, 0) != buflen) {
        *terrno = errno;
        PLOG(DEBUG) << __func__ << ": send: ";
        statp->closeSockets();
+2 −2
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ struct ResState {
        tcp_nssock.reset();
        _flags &= ~RES_F_VC;

        for (auto& sock : nssocks) {
        for (auto& sock : udpsocks) {
            sock.reset();
        }
    }
@@ -132,7 +132,7 @@ struct ResState {
    pid_t pid;                                  // pid of the app that sent the DNS lookup
    std::vector<std::string> search_domains{};  // domains to search
    std::vector<android::netdutils::IPSockAddr> nsaddrs;
    android::base::unique_fd nssocks[MAXNS];    // UDP sockets to nameservers
    android::base::unique_fd udpsocks[MAXNS];    // UDP sockets to nameservers and mdns responsder
    unsigned ndots : 4 = 1;                     // threshold for initial abs. query
    unsigned _mark;                             // If non-0 SET_MARK to _mark on all request sockets
    android::base::unique_fd tcp_nssock;        // TCP socket (but why not one per nameserver?)