diff -urN ncat-0.10rc3/ncat_main.c ncat-0.10rc3-fixed/ncat_main.c
--- ncat-0.10rc3/ncat_main.c	2006-01-10 03:29:08.000000000 +0300
+++ ncat-0.10rc3-fixed/ncat_main.c	2007-07-09 09:58:58.000000000 +0400
@@ -23,6 +23,7 @@
 {
     struct sockaddr_in ss;
     struct sockaddr_in6 ss6;
+    struct sockaddr_storage sst;
     
     struct conn_state cs;
 
@@ -271,7 +272,7 @@
 	}
 
 	/* resolve hostname */
-	if (!resolve(argv[optind], (struct sockaddr_storage *) &ss)) {
+	if (!resolve(argv[optind], (struct sockaddr_storage *) &sst)) {
 	    /* host failed to resolve :( */
 	    fprintf(stderr,
 		    "%s: Could not resolve target hostname %s. QUITTING.\n",
@@ -297,6 +298,8 @@
 
 	/* IPv6 connect() */
 	if (oipv == 6) {
+            memcpy(&ss6,&sst,sizeof(ss6));
+	
 	    ss6.sin6_family = AF_INET6;
 	    ss_len = sizeof(struct sockaddr_in6);
 
@@ -329,6 +332,8 @@
 	}
 	/* IPv4 connect() - default. */
 	else {
+            memcpy(&ss,&sst,sizeof(ss)); 
+
 	    ss.sin_family = AF_INET;
 	    ss_len = sizeof(struct sockaddr_in);
 
