vfprintf(stderr, p, ap);
va_end(ap);
fputc('\n', stderr);
- if (logctx) {
- log_free(logctx);
- logctx = NULL;
- }
}
void connection_fatal(void *frontend, char *p, ...)
{
}
}
+const int share_can_be_downstream = TRUE;
+const int share_can_be_upstream = TRUE;
+
int main(int argc, char **argv)
{
int sending;
q += 2;
conf_set_int(conf, CONF_protocol, PROT_TELNET);
p = q;
- while (*p && *p != ':' && *p != '/')
- p++;
+ p += host_strcspn(p, ":/");
c = *p;
if (*p)
*p++ = '\0';
}
}
- /*
- * Trim off a colon suffix if it's there.
- */
- host[strcspn(host, ":")] = '\0';
+ /*
+ * Trim a colon suffix off the hostname if it's there. In
+ * order to protect unbracketed IPv6 address literals
+ * against this treatment, we do not do this if there's
+ * _more_ than one colon.
+ */
+ {
+ char *c = host_strchr(host, ':');
+
+ if (c) {
+ char *d = host_strchr(c+1, ':');
+ if (!d)
+ *c = '\0';
+ }
+ }
/*
* Remove any remaining whitespace.