Merge "Remove vestigial 'sortlist' code"
diff --git a/gethnamaddr.cpp b/gethnamaddr.cpp
index 66f3a8e..c9a6b2a 100644
--- a/gethnamaddr.cpp
+++ b/gethnamaddr.cpp
@@ -106,13 +106,10 @@
     char ac;
 } align;
 
-static struct hostent* getanswer(const querybuf*, int, const char*, int, res_state, struct hostent*,
-                                 char*, size_t, int*);
 static void convert_v4v6_hostent(struct hostent* hp, char** bpp, char* ep,
                                  const std::function<void(struct hostent* hp)>& mapping_param,
                                  const std::function<void(char* src, char* dst)>& mapping_addr);
 static void pad_v4v6_hostent(struct hostent* hp, char** bpp, char* ep);
-static void addrsort(char**, int, res_state);
 
 static int dns_gethtbyaddr(const unsigned char* uaddr, int len, int af,
                            const android_net_context* netcontext, getnamaddr* info,
@@ -145,8 +142,7 @@
     } while (0)
 
 static struct hostent* getanswer(const querybuf* answer, int anslen, const char* qname, int qtype,
-                                 res_state res, struct hostent* hent, char* buf, size_t buflen,
-                                 int* he) {
+                                 struct hostent* hent, char* buf, size_t buflen, int* he) {
     const HEADER* hp;
     const uint8_t* cp;
     int n;
@@ -369,12 +365,6 @@
     }
     if (haveanswer) {
         *hap = NULL;
-        /*
-         * Note: we sort even if host can take only one address
-         * in its return structures - should give it the "best"
-         * address in that case, not some random one
-         */
-        if (res->nsort && haveanswer > 1 && qtype == T_A) addrsort(addr_ptrs, haveanswer, res);
         if (!hent->h_name) {
             n = (int) strlen(qname) + 1; /* for the \0 */
             if (n > ep - bp || n >= MAXHOSTNAMELEN) goto no_recovery;
@@ -691,44 +681,6 @@
                          });
 }
 
-static void addrsort(char** ap, int num, res_state res) {
-    int i, j;
-    char** p;
-    short aval[MAXADDRS];
-    int needsort = 0;
-
-    _DIAGASSERT(ap != NULL);
-
-    p = ap;
-    for (i = 0; i < num; i++, p++) {
-        for (j = 0; (unsigned) j < res->nsort; j++)
-            if (res->sort_list[j].addr.s_addr ==
-                (((struct in_addr*) (void*) (*p))->s_addr & res->sort_list[j].mask))
-                break;
-        aval[i] = j;
-        if (needsort == 0 && i > 0 && j < aval[i - 1]) needsort = i;
-    }
-    if (!needsort) return;
-
-    while (needsort < num) {
-        for (j = needsort - 1; j >= 0; j--) {
-            if (aval[j] > aval[j + 1]) {
-                char* hp;
-
-                i = aval[j];
-                aval[j] = aval[j + 1];
-                aval[j + 1] = i;
-
-                hp = ap[j];
-                ap[j] = ap[j + 1];
-                ap[j + 1] = hp;
-            } else
-                break;
-        }
-        needsort++;
-    }
-}
-
 static int dns_gethtbyname(const char* name, int addr_type, getnamaddr* info) {
     int n, type;
     info->hp->h_addrtype = addr_type;
@@ -759,7 +711,7 @@
         // See also herrnoToAiErrno().
         return herrnoToAiErrno(he);
     }
-    hostent* hp = getanswer(buf.get(), n, name, type, res, info->hp, info->buf, info->buflen, &he);
+    hostent* hp = getanswer(buf.get(), n, name, type, info->hp, info->buf, info->buflen, &he);
     if (hp == NULL) return herrnoToAiErrno(he);
 
     return 0;
@@ -824,7 +776,7 @@
         // See also herrnoToAiErrno().
         return herrnoToAiErrno(he);
     }
-    hostent* hp = getanswer(buf.get(), n, qbuf, T_PTR, res, info->hp, info->buf, info->buflen, &he);
+    hostent* hp = getanswer(buf.get(), n, qbuf, T_PTR, info->hp, info->buf, info->buflen, &he);
     if (hp == NULL) return herrnoToAiErrno(he);
 
     char* bf = (char*) (hp->h_addr_list + 2);
diff --git a/res_init.cpp b/res_init.cpp
index c59e126..ecfb35d 100644
--- a/res_init.cpp
+++ b/res_init.cpp
@@ -120,10 +120,7 @@
     if (statp->_u._ext.ext != NULL) {
         memset(statp->_u._ext.ext, 0, sizeof(*statp->_u._ext.ext));
         statp->_u._ext.ext->nsaddrs[0].sin = statp->nsaddr;
-        strcpy(statp->_u._ext.ext->nsuffix, "ip6.arpa");
-        strcpy(statp->_u._ext.ext->nsuffix2, "ip6.int");
     }
-    statp->nsort = 0;
     res_setservers(statp, u, nserv);
 
     if (nserv > 0) {
diff --git a/res_state_ext.h b/res_state_ext.h
index 6ed3398..d0dbc1a 100644
--- a/res_state_ext.h
+++ b/res_state_ext.h
@@ -8,15 +8,6 @@
 // TODO: consider inlining into res_state
 struct res_state_ext {
     sockaddr_union nsaddrs[MAXNS];
-    struct sort_list {
-        int af;
-        union {
-            struct in_addr ina;
-            struct in6_addr in6a;
-        } addr, mask;
-    } sort_list[MAXRESOLVSORT];
-    char nsuffix[64];
-    char nsuffix2[64];
 };
 
 #endif  // NETD_RES_STATE_EXT_H
diff --git a/resolv_private.h b/resolv_private.h
index b0bae72..8ab6939 100644
--- a/resolv_private.h
+++ b/resolv_private.h
@@ -79,7 +79,6 @@
  * Global defines and variables for resolver stub.
  */
 #define RES_TIMEOUT 5000 /* min. milliseconds between retries */
-#define MAXRESOLVSORT 10  /* number of net to sort on */
 #define RES_MAXNDOTS 15   /* should reflect bit field size */
 #define RES_DFLRETRY 2    /* Default #/tries. */
 #define RES_MAXTIME 65535 /* Infinity, in milliseconds. */
@@ -95,19 +94,10 @@
     uint16_t id;                              // current message id
     std::vector<std::string> search_domains;  // domains to search
     unsigned ndots : 4;                       // threshold for initial abs. query
-    unsigned nsort : 4;                       // number of elements in sort_list[]
-    char unused[3];
-    struct {
-        struct in_addr addr;
-        uint32_t mask;
-    } sort_list[MAXRESOLVSORT];
     unsigned _mark;       /* If non-0 SET_MARK to _mark on all request sockets */
     int _vcsock;          /* PRIVATE: for res_send VC i/o */
     uint32_t _flags;      /* PRIVATE: see below */
-    uint32_t _pad;        /* make _u 64 bit aligned */
     union {
-        /* On an 32-bit arch this means 512b total. */
-        char pad[72 - 4 * sizeof(int) - 2 * sizeof(void*)];
         struct {
             uint16_t nscount;
             uint16_t nstimes[MAXNS]; /* ms. */