diff --git a/src/common/remoteio.c b/src/common/remoteio.c --- a/src/common/remoteio.c +++ b/src/common/remoteio.c @@ -739,6 +739,8 @@ int _remoteio_tcp_open(struct remoteio * struct addrinfo addrinfo_hints; struct addrinfo *addrinfo_res; + static char *default_port = REMOTEIO_DEFAULT_PORT; + /** only hostname should be free()-ed, not port, because both are from the same block of malloc()-ed @@ -755,7 +757,7 @@ int _remoteio_tcp_open(struct remoteio * port ++; } else - port = REMOTEIO_DEFAULT_PORT; + port = default_port; memset(&addrinfo_hints, '\0', sizeof(struct addrinfo)); addrinfo_hints.ai_family = AF_UNSPEC; @@ -767,9 +769,13 @@ int _remoteio_tcp_open(struct remoteio * #endif addrinfo_hints.ai_socktype = SOCK_STREAM; - tmp = getaddrinfo(server->hostname, port, &addrinfo_hints, &addrinfo_res); + tmp = getaddrinfo(hostname, port, &addrinfo_hints, &addrinfo_res); if(tmp) - fprintf(stderr, "error resolving %s:%s: %s\n", server->hostname, port, gai_strerror(tmp)); + { + fprintf(stderr, "error resolving %s:%s: %s\n", server->hostname, port, gai_strerror(tmp)); + free(hostname); + return 1; + } fprintf(stderr, "connecting to %s[%s]:%s\n", server->hostname, addrinfo_res->ai_canonname, port); free(hostname);