Andrew Geissler | 0903674 | 2021-06-25 14:25:14 -0500 | [diff] [blame^] | 1 | From 01974865e4d331eeaf25248bee1bb96539c450d9 Mon Sep 17 00:00:00 2001 |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Mon, 6 Apr 2015 23:02:21 -0700 |
Andrew Geissler | 4b740dc | 2020-05-05 08:54:39 -0500 | [diff] [blame] | 4 | Subject: [PATCH] resolve: musl does not implement res_ninit |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 5 | |
| 6 | ported from |
| 7 | http://git.alpinelinux.org/cgit/aports/plain/testing/connman/libresolv.patch |
| 8 | |
| 9 | Upstream-Status: Pending |
| 10 | |
| 11 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
Andrew Geissler | 4b740dc | 2020-05-05 08:54:39 -0500 | [diff] [blame] | 12 | |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 13 | --- |
Andrew Geissler | 4b740dc | 2020-05-05 08:54:39 -0500 | [diff] [blame] | 14 | gweb/gresolv.c | 34 +++++++++++++--------------------- |
| 15 | 1 file changed, 13 insertions(+), 21 deletions(-) |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 16 | |
| 17 | diff --git a/gweb/gresolv.c b/gweb/gresolv.c |
Andrew Geissler | 0903674 | 2021-06-25 14:25:14 -0500 | [diff] [blame^] | 18 | index 954e7cf..2a9bc51 100644 |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 19 | --- a/gweb/gresolv.c |
| 20 | +++ b/gweb/gresolv.c |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 21 | @@ -36,6 +36,7 @@ |
| 22 | #include <arpa/inet.h> |
| 23 | #include <arpa/nameser.h> |
| 24 | #include <net/if.h> |
| 25 | +#include <ctype.h> |
| 26 | |
| 27 | #include "gresolv.h" |
| 28 | |
Andrew Geissler | 0903674 | 2021-06-25 14:25:14 -0500 | [diff] [blame^] | 29 | @@ -878,8 +879,6 @@ GResolv *g_resolv_new(int index) |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 30 | resolv->index = index; |
| 31 | resolv->nameserver_list = NULL; |
| 32 | |
| 33 | - res_ninit(&resolv->res); |
| 34 | - |
| 35 | return resolv; |
| 36 | } |
| 37 | |
Andrew Geissler | 0903674 | 2021-06-25 14:25:14 -0500 | [diff] [blame^] | 38 | @@ -919,8 +918,6 @@ void g_resolv_unref(GResolv *resolv) |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 39 | |
| 40 | flush_nameservers(resolv); |
| 41 | |
| 42 | - res_nclose(&resolv->res); |
| 43 | - |
| 44 | g_free(resolv); |
| 45 | } |
| 46 | |
Andrew Geissler | 0903674 | 2021-06-25 14:25:14 -0500 | [diff] [blame^] | 47 | @@ -1023,24 +1020,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname, |
Patrick Williams | f1e5d69 | 2016-03-30 15:21:19 -0500 | [diff] [blame] | 48 | debug(resolv, "hostname %s", hostname); |
| 49 | |
| 50 | if (!resolv->nameserver_list) { |
| 51 | - int i; |
| 52 | - |
| 53 | - for (i = 0; i < resolv->res.nscount; i++) { |
| 54 | - char buf[100]; |
| 55 | - int family = resolv->res.nsaddr_list[i].sin_family; |
| 56 | - void *sa_addr = &resolv->res.nsaddr_list[i].sin_addr; |
| 57 | - |
| 58 | - if (family != AF_INET && |
| 59 | - resolv->res._u._ext.nsaddrs[i]) { |
| 60 | - family = AF_INET6; |
| 61 | - sa_addr = &resolv->res._u._ext.nsaddrs[i]->sin6_addr; |
| 62 | + FILE *f = fopen("/etc/resolv.conf", "r"); |
| 63 | + if (f) { |
| 64 | + char line[256], *s; |
| 65 | + int i; |
| 66 | + while (fgets(line, sizeof(line), f)) { |
| 67 | + if (strncmp(line, "nameserver", 10) || !isspace(line[10])) |
| 68 | + continue; |
| 69 | + for (s = &line[11]; isspace(s[0]); s++); |
| 70 | + for (i = 0; s[i] && !isspace(s[i]); i++); |
| 71 | + s[i] = 0; |
| 72 | + g_resolv_add_nameserver(resolv, s, 53, 0); |
| 73 | } |
| 74 | - |
| 75 | - if (family != AF_INET && family != AF_INET6) |
| 76 | - continue; |
| 77 | - |
| 78 | - if (inet_ntop(family, sa_addr, buf, sizeof(buf))) |
| 79 | - g_resolv_add_nameserver(resolv, buf, 53, 0); |
| 80 | + fclose(f); |
| 81 | } |
| 82 | |
| 83 | if (!resolv->nameserver_list) |