degesch: fix IPv6:port in irc_split_host_port()

This commit is contained in:
Přemysl Eric Janouch 2018-01-08 21:46:35 +01:00
parent 099a49e6d5
commit bf6d507bb2
Signed by: p
GPG Key ID: B715679E3A361BE6
1 changed files with 14 additions and 12 deletions

View File

@ -5642,25 +5642,27 @@ irc_finish_connection (struct server *s, int socket, const char *hostname)
refresh_prompt (s->ctx);
}
/// Unwrap IPv6 addresses in format_host_port_pair() format
static void
irc_split_host_port (char *s, char **host, char **port)
{
// FIXME: this won't work if this is an IPv6 address w/o a port
char *colon = strrchr (s, ':');
*host = s;
*port = "6667";
char *right_bracket = strchr (s, ']');
if (s[0] == '[' && right_bracket)
{
*right_bracket = '\0';
*host = s + 1;
s = right_bracket + 1;
}
char *colon = strchr (s, ':');
if (colon)
{
*colon = '\0';
*port = ++colon;
*port = colon + 1;
}
else
*port = "6667";
// Unwrap IPv6 addresses in format_host_port_pair() format
size_t host_end = strlen (s) - 1;
if (*s == '[' && s[host_end] == ']')
s++[host_end] = '\0';
*host = s;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -