]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
handle multiple search domains for GPST
authorDaniel Lenski <dlenski@gmail.com>
Fri, 28 Sep 2018 17:22:11 +0000 (10:22 -0700)
committerDaniel Lenski <dlenski@gmail.com>
Sun, 30 Sep 2018 21:35:54 +0000 (14:35 -0700)
Signed-off-by: Daniel Lenski <dlenski@gmail.com>
gpst.c

diff --git a/gpst.c b/gpst.c
index 2f029d212990efff5f4299fe01627bfd49069ffa..85aea2232c5057a7b0bebb9efe5aaad1c778603c 100644 (file)
--- a/gpst.c
+++ b/gpst.c
@@ -517,11 +517,16 @@ static int gpst_parse_config_xml(struct openconnect_info *vpninfo, xmlNode *xml_
                                if (!xmlnode_get_text(member, "member", &s))
                                        vpninfo->ip_info.nbns[ii++] = add_option(vpninfo, "WINS", s);
                } else if (xmlnode_is_named(xml_node, "dns-suffix")) {
-                       for (ii=0, member = xml_node->children; member && ii<1; member=member->next)
-                               if (!xmlnode_get_text(member, "member", &s)) {
-                                       vpninfo->ip_info.domain = add_option(vpninfo, "search", s);
-                                       ii++;
-                               }
+                       struct oc_text_buf *domains = buf_alloc();
+                       for (member = xml_node->children; member; member=member->next)
+                               if (!xmlnode_get_text(member, "member", &s))
+                                       buf_append(domains, "%s ", s);
+                       if (buf_error(domains) == 0) {
+                               domains->data[domains->pos-1] = '\0';
+                               vpninfo->ip_info.domain = add_option(vpninfo, "search", domains->data);
+                               domains->data = NULL;
+                       }
+                       buf_free(domains);
                } else if (xmlnode_is_named(xml_node, "access-routes")) {
                        for (member = xml_node->children; member; member=member->next) {
                                if (!xmlnode_get_text(member, "member", &s)) {