From e6d97cbecb8c4404c0454c141848e1afba11ce2f Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sun, 6 May 2018 12:32:57 +0100 Subject: [PATCH] packages/libadns/: Various minor fixes. * 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 | 11 ++++++++ packages/libadns/getprotoent.patch | 56 ++++++++++++++++++++++++++++++++++++++ packages/libadns/resolvconf.patch | 15 ++++++++++ 3 files changed, 82 insertions(+) create mode 100644 packages/libadns/getprotoent.patch create mode 100644 packages/libadns/resolvconf.patch diff --git a/packages/libadns/build.sh b/packages/libadns/build.sh index 9de7ac6b..f795140e 100644 --- a/packages/libadns/build.sh +++ b/packages/libadns/build.sh @@ -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 <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; inservers; 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 index 00000000..81c4bec0 --- /dev/null +++ b/packages/libadns/resolvconf.patch @@ -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~ -- 2.11.0