From a2dadc19f9836c04342f5b066479ff9c82fea86d Mon Sep 17 00:00:00 2001 From: Daniel Lenski Date: Fri, 28 Sep 2018 10:22:11 -0700 Subject: [PATCH] handle multiple search domains for GPST Signed-off-by: Daniel Lenski --- gpst.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gpst.c b/gpst.c index 2f029d21..85aea223 100644 --- 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)) {