+ xfree(c->host_port);
+ if (portnum)
+ {
+ char hostn[128];
+ sprintf(hostn, "%.80s:%d", host, portnum);
+ c->host_port = xstrdup(hostn);
+ }
+ else
+ c->host_port = xstrdup(host);
+ }
+
+ {
+ /*
+ * If the "<scheme>:" part of the host string is preceded by one
+ * or more comma-separated <name>=<value> pairs, these are taken
+ * to be options to be set on the connection object. Among other
+ * applications, this facility can be used to embed authentication
+ * in a host string:
+ * user=admin,password=secret,tcp:localhost:9999
+ */
+ char *remainder = c->host_port;
+ char *pcolon = strchr(remainder, ':');
+ char *pcomma;
+ char *pequals;
+ while ((pcomma = strchr(remainder, ',')) != 0 &&
+ (pcolon == 0 || pcomma < pcolon)) {
+ *pcomma = '\0';
+ if ((pequals = strchr(remainder, '=')) != 0) {
+ *pequals = '\0';
+ /*printf("# setting '%s'='%s'\n", remainder, pequals+1);*/
+ ZOOM_connection_option_set(c, remainder, pequals+1);
+ }
+ remainder = pcomma+1;
+ }
+
+ if (remainder != c->host_port) {
+ xfree(c->host_port);
+ c->host_port = xstrdup(remainder);
+ /*printf("# reset hp='%s'\n", remainder);*/
+ }