packages/libadns/: Various minor fixes.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 6 May 2018 11:32:57 +0000 (12:32 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 6 May 2018 11:32:57 +0000 (12:32 +0100)
  * Don't try to use getprotobyname(3) to discover the UDP protocol
    number, because it doesn't work on Android.  Instead, just know
    that it's called `IPPROTO_UDP'.

  * Prefix the standard configuration paths for `/etc/resolv.conf' etc.

  * Include a minimal `resolv.conf' file which uses the Quad9 resolver.

packages/libadns/build.sh
packages/libadns/getprotoent.patch [new file with mode: 0644]
packages/libadns/resolvconf.patch [new file with mode: 0644]

index 9de7ac6..f795140 100644 (file)
@@ -8,3 +8,14 @@ TERMUX_PKG_HOMEPAGE="http://www.gnu.org/software/adns/"
 TERMUX_PKG_VERSION=1.5.0
 TERMUX_PKG_SHA256=7fc5eb4d315111a3a3a3f45ff143339ad4050185fbe6bff687f21364cb4ae841
 TERMUX_PKG_SRCURL="http://www.chiark.greenend.org.uk/~ian/adns/ftp/adns-$TERMUX_PKG_VERSION.tar.gz"
+TERMUX_PKG_CONFFILES="etc/resolv.conf"
+
+termux_step_post_make_install () {
+  cat >$TERMUX_PREFIX/etc/resolv.conf <<EOF
+### -*-conf-*-
+
+## Use Quad9 nameserver by default, since they appear to actually care about
+## privacy.
+nameserver 9.9.9.9
+EOF
+}
diff --git a/packages/libadns/getprotoent.patch b/packages/libadns/getprotoent.patch
new file mode 100644 (file)
index 0000000..9454bf9
--- /dev/null
@@ -0,0 +1,56 @@
+diff -ru src.orig/src/event.c src/src/event.c
+--- src.orig/src/event.c       2014-10-20 00:07:03.000000000 +0100
++++ src/src/event.c    2018-05-06 11:38:04.649495279 +0100
+@@ -97,7 +97,6 @@
+ void adns__tcp_tryconnect(adns_state ads, struct timeval now) {
+   int r, fd, tries;
+   adns_rr_addr *addr;
+-  struct protoent *proto;
+   for (tries=0; tries<ads->nservers; tries++) {
+     switch (ads->tcpstate) {
+@@ -115,13 +114,8 @@
+     assert(!ads->tcprecv.used);
+     assert(!ads->tcprecv_skip);
+-    proto= getprotobyname("tcp");
+-    if (!proto) {
+-      adns__diag(ads,-1,0,"unable to find protocol no. for TCP !");
+-      return;
+-    }
+     addr = &ads->servers[ads->tcpserver];
+-    fd= socket(addr->addr.sa.sa_family, SOCK_STREAM, proto->p_proto);
++    fd= socket(addr->addr.sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
+     if (fd<0) {
+       adns__diag(ads,-1,0,"cannot create TCP socket: %s",strerror(errno));
+       return;
+Only in src/src: event.c~
+diff -ru src.orig/src/setup.c src/src/setup.c
+--- src.orig/src/setup.c       2014-10-26 12:03:40.000000000 +0000
++++ src/src/setup.c    2018-05-06 11:37:06.194241291 +0100
+@@ -644,7 +644,6 @@
+ static int init_finish(adns_state ads) {
+   struct sockaddr_in sin;
+-  struct protoent *proto;
+   struct udpsocket *udp;
+   int i;
+   int r;
+@@ -659,7 +658,6 @@
+     addserver(ads,(struct sockaddr *)&sin, sizeof(sin));
+   }
+-  proto= getprotobyname("udp"); if (!proto) { r= ENOPROTOOPT; goto x_free; }
+   ads->nudpsockets= 0;
+   for (i=0; i<ads->nservers; i++) {
+     if (adns__udpsocket_by_af(ads, ads->servers[i].addr.sa.sa_family))
+@@ -667,7 +665,7 @@
+     assert(ads->nudpsockets < MAXUDP);
+     udp= &ads->udpsockets[ads->nudpsockets];
+     udp->af= ads->servers[i].addr.sa.sa_family;
+-    udp->fd= socket(udp->af,SOCK_DGRAM,proto->p_proto);
++    udp->fd= socket(udp->af,SOCK_DGRAM,IPPROTO_UDP);
+     if (udp->fd < 0) { r= errno; goto x_free; }
+     ads->nudpsockets++;
+     r= adns__setnonblock(ads,udp->fd);
+Only in src/src: setup.c~
diff --git a/packages/libadns/resolvconf.patch b/packages/libadns/resolvconf.patch
new file mode 100644 (file)
index 0000000..81c4bec
--- /dev/null
@@ -0,0 +1,15 @@
+diff -ru src.orig/src/setup.c src/src/setup.c
+--- src.orig/src/setup.c       2018-05-06 11:42:09.434371101 +0100
++++ src/src/setup.c    2018-05-06 11:53:46.345500988 +0100
+@@ -708,8 +708,8 @@
+   ccf_options(ads,"RES_OPTIONS",-1,res_options);
+   ccf_options(ads,"ADNS_RES_OPTIONS",-1,adns_res_options);
+-  readconfig(ads,"/etc/resolv.conf",1);
+-  readconfig(ads,"/etc/resolv-adns.conf",0);
++  readconfig(ads,"@TERMUX_PREFIX@/etc/resolv.conf",1);
++  readconfig(ads,"@TERMUX_PREFIX@/etc/resolv-adns.conf",0);
+   readconfigenv(ads,"RES_CONF");
+   readconfigenv(ads,"ADNS_RES_CONF");
+Only in src/src: setup.c~