diff options
Diffstat (limited to 'polyp/polyplib-context.c')
-rw-r--r-- | polyp/polyplib-context.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/polyp/polyplib-context.c b/polyp/polyplib-context.c index a15e4257..63b42eb3 100644 --- a/polyp/polyplib-context.c +++ b/polyp/polyplib-context.c @@ -336,11 +336,15 @@ finish: static struct sockaddr *resolve_server(const char *server, size_t *len) { struct sockaddr *sa; struct addrinfo hints, *result = NULL; - char *port; + char *port, host[256]; assert(server && len); + snprintf(host, sizeof(host), "%s", server); + host[strcspn(host, ":")] = 0; + if ((port = strrchr(server, ':'))) port++; + if (!port) port = DEFAULT_PORT; @@ -349,7 +353,7 @@ static struct sockaddr *resolve_server(const char *server, size_t *len) { hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = 0; - if (getaddrinfo(server, port, &hints, &result) != 0) + if (getaddrinfo(host, port, &hints, &result) != 0) return NULL; assert(result); |