diff --git a/libbb/xconnect.c b/libbb/xconnect.c
index 93c3cd5..6e85322 100644
--- a/libbb/xconnect.c
+++ b/libbb/xconnect.c
@@ -83,25 +83,13 @@
 /* "New" networking API */
 
 
-/* So far we do not expose struct and helpers to libbb */
-typedef struct len_and_sockaddr {
-	int len;
-	union {
-		struct sockaddr sa;
-		struct sockaddr_in sin;
-#if ENABLE_FEATURE_IPV6
-		struct sockaddr_in6 sin6;
-#endif
-	};
-} len_and_sockaddr;
 //extern int xsocket_stream_ip4or6(sa_family_t *fp);
-//extern len_and_sockaddr* host2sockaddr(const char *host, int def_port);
 //extern len_and_sockaddr* dotted2sockaddr(const char *dotted, int def_port);
 
 /* peer: "1.2.3.4[:port]", "www.google.com[:port]"
- * def_port: if neither of above specifies port #
+ * port: if neither of above specifies port #
  */
-static len_and_sockaddr* str2sockaddr(const char *host, int def_port, int ai_flags)
+static len_and_sockaddr* str2sockaddr(const char *host, int port, int ai_flags)
 {
 	int rc;
 	len_and_sockaddr *r; // = NULL;
@@ -126,12 +114,13 @@
 		}
 	}
 	if (cp) {
-		host = safe_strncpy(alloca(cp - host + 1), host, cp - host);
+		int sz = cp - host + 1;
+		host = safe_strncpy(alloca(sz), host, sz);
 		if (ENABLE_FEATURE_IPV6 && *cp != ':')
 			cp++; /* skip ']' */
 		cp++; /* skip ':' */
 	} else {
-		utoa_to_buf(def_port, service, sizeof(service));
+		utoa_to_buf(port, service, sizeof(service));
 		cp = service;
 	}
 
@@ -154,14 +143,14 @@
 	return r;
 }
 
-static len_and_sockaddr* host2sockaddr(const char *host, int def_port)
+len_and_sockaddr* host2sockaddr(const char *host, int port)
 {
-	return str2sockaddr(host, def_port, 0);
+	return str2sockaddr(host, port, 0);
 }
 
-static len_and_sockaddr* dotted2sockaddr(const char *host, int def_port)
+static len_and_sockaddr* dotted2sockaddr(const char *host, int port)
 {
-	return str2sockaddr(host, def_port, NI_NUMERICHOST);
+	return str2sockaddr(host, port, NI_NUMERICHOST);
 }
 
 static int xsocket_stream_ip4or6(len_and_sockaddr *lsa)
@@ -185,7 +174,7 @@
 	int fd;
 	len_and_sockaddr *lsa;
 
-	if (bindaddr) {
+	if (bindaddr && bindaddr[0]) {
 		lsa = dotted2sockaddr(bindaddr, port);
 		/* currently NULL check is in str2sockaddr */
 		//if (!lsa)
