From: Amos Jeffries Date: Sun, 19 Feb 2017 04:18:27 +0000 (+1300) Subject: Cleanup: convert DNS nameserver list from wordlist to SBufList X-Git-Tag: M-staged-PR71~262 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a1098fbf1381947c40cca97ff6ed17c6dd07a74;p=thirdparty%2Fsquid.git Cleanup: convert DNS nameserver list from wordlist to SBufList --- diff --git a/src/SquidConfig.h b/src/SquidConfig.h index c83aac4f36..8770018f4d 100644 --- a/src/SquidConfig.h +++ b/src/SquidConfig.h @@ -234,7 +234,6 @@ public: size_t tcpRcvBufsz; size_t udpMaxHitObjsz; wordlist *mcast_group_list; - wordlist *dns_nameservers; CachePeer *peers; int npeers; @@ -531,6 +530,7 @@ public: char *storeId_extras; struct { + SBufList nameservers; int v4_first; ///< Place IPv4 first in the order of DNS results. ssize_t packet_max; ///< maximum size EDNS advertised for DNS replies. } dns; diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 17c864b583..a37a29ba97 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1300,16 +1300,42 @@ parseBytesUnits(const char *unit) return 0; } +static void +parse_SBufList(SBufList * list) +{ + while (char *token = ConfigParser::NextQuotedToken()) + list->push_back(SBuf(token)); +} + +// just dump a list, no directive name static void dump_SBufList(StoreEntry * entry, const SBufList &words) { - for (SBufList::const_iterator i = words.begin(); i != words.end(); ++i) { - entry->append(i->rawContent(), i->length()); + for (const auto &i : words) { + entry->append(i.rawContent(), i.length()); entry->append(" ",1); } entry->append("\n",1); } +// dump a SBufList type directive with name +static void +dump_SBufList(StoreEntry * entry, const char *name, SBufList &list) +{ + if (!list.empty()) { + entry->append(name, strlen(name)); + entry->append(" ", 1); + dump_SBufList(entry, list); + } +} + +static void +free_SBufList(SBufList *list) +{ + if (list) + list->clear(); +} + static void dump_acl(StoreEntry * entry, const char *name, ACL * ae) { diff --git a/src/cf.data.depend b/src/cf.data.depend index d78fe2a1d7..d11e7e2cd7 100644 --- a/src/cf.data.depend +++ b/src/cf.data.depend @@ -86,6 +86,7 @@ wccp2_amethod wccp2_service wccp2_service_info wordlist +SBufList sslproxy_ssl_bump acl sslproxy_ssl_bump_peeked acl sslproxy_cert_sign acl diff --git a/src/cf.data.pre b/src/cf.data.pre index 64e7dea1c2..d9cc7f8c5d 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -9328,10 +9328,10 @@ DOC_START DOC_END NAME: dns_nameservers -TYPE: wordlist +TYPE: SBufList DEFAULT: none DEFAULT_DOC: Use operating system definitions -LOC: Config.dns_nameservers +LOC: Config.dns.nameservers DOC_START Use this if you want to specify a list of DNS name servers (IP addresses) to use instead of those given in your diff --git a/src/dns_internal.cc b/src/dns_internal.cc index f4120cb181..4da508416f 100644 --- a/src/dns_internal.cc +++ b/src/dns_internal.cc @@ -416,9 +416,9 @@ static bool idnsParseNameservers(void) { bool result = false; - for (wordlist *w = Config.dns_nameservers; w; w = w->next) { - debugs(78, DBG_IMPORTANT, "Adding nameserver " << w->key << " from squid.conf"); - idnsAddNameserver(w->key); + for (auto &i : Config.dns.nameservers) { + debugs(78, DBG_IMPORTANT, "Adding nameserver " << i << " from squid.conf"); + idnsAddNameserver(i.c_str()); result = true; } return result; diff --git a/src/icmp/Makefile.am b/src/icmp/Makefile.am index 97f3cb1216..2d7a32c92a 100644 --- a/src/icmp/Makefile.am +++ b/src/icmp/Makefile.am @@ -47,6 +47,7 @@ COPIED_SOURCE= \ SquidNew.cc \ stub_HelperChildConfig.cc \ stub_libmem.cc \ + stub_SBuf.cc \ STUB.h \ time.cc @@ -108,5 +109,8 @@ stub_HelperChildConfig.cc: $(top_srcdir)/src/tests/stub_HelperChildConfig.cc stub_libmem.cc: $(top_srcdir)/src/tests/stub_libmem.cc STUB.h cp $(top_srcdir)/src/tests/stub_libmem.cc $@ +stub_SBuf.cc: $(top_srcdir)/src/tests/stub_SBuf.cc STUB.h + cp $(top_srcdir)/src/tests/stub_SBuf.cc $@ + STUB.h: $(top_srcdir)/src/tests/STUB.h cp $(top_srcdir)/src/tests/STUB.h $@