Fix unix socket problems
diff --git a/jtux_network.c b/jtux_network.c
index d1980b7..2296577 100755
--- a/jtux_network.c
+++ b/jtux_network.c
@@ -110,6 +110,7 @@
 {
 	jclass cls_s_sockaddr_in = (*env)->FindClass(env, "jtux/UNetwork$s_sockaddr_in");
 	jclass cls_s_sockaddr_in6 = (*env)->FindClass(env, "jtux/UNetwork$s_sockaddr_in6");
+	jclass cls_s_sockaddr_un = (*env)->FindClass(env, "jtux/UNetwork$s_sockaddr_un");
 	jclass cls_s_in_addr = (*env)->FindClass(env, "jtux/UNetwork$s_in_addr");
 	jclass cls_s_in6_addr = (*env)->FindClass(env, "jtux/UNetwork$s_in6_addr");
 
@@ -181,6 +182,22 @@
 			return false;
 	}
 		break;
+	case AF_UNIX: {
+		struct sockaddr_un *saddr = (struct sockaddr_un *)sa_c;
+		jmethodID mid;
+
+		if (*sa == NULL) {
+			if ((mid = (*env)->GetMethodID(env, cls_s_sockaddr_un, "<init>", "()V")) == NULL)
+				return false;
+			if ((*sa = (*env)->NewObject(env, cls_s_sockaddr_un, mid)) == NULL)
+				return false;
+		}
+		if (!field_ctoj_int(env, cls_s_sockaddr_un, "sun_family", *sa, saddr->sun_family))
+			return false;
+		if (!field_ctoj_string(env, cls_s_sockaddr_un, "sun_path", *sa, saddr->sun_path))
+			return false;
+	}
+		break;
 	default:
 		return false; // ??? can't deal with it
 	}
@@ -193,13 +210,19 @@
 	int fd;
 	struct sockaddr_storage sa_c;
 	socklen_t sa_len_c;
-
-	JTHROW_neg1(fd = accept(socket_fd, (struct sockaddr *)&sa_c, &sa_len_c))
-	if (fd != -1) {
-		if (!sockaddr_ctoj(env, &sa, (struct sockaddr *)&sa_c))
-			return -1;
-		if (!set_IntHolder_int(env, sa_len, sa_len_c))
-			return -1;
+	if(sa==NULL)
+	{
+		JTHROW_neg1(fd = accept(socket_fd, NULL, 0))
+	}
+	else
+	{
+		JTHROW_neg1(fd = accept(socket_fd, (struct sockaddr *)&sa_c, &sa_len_c))
+		if (fd != -1) {
+			if (!sockaddr_ctoj(env, &sa, (struct sockaddr *)&sa_c))
+				return -1;
+			if (!set_IntHolder_int(env, sa_len, sa_len_c))
+				return -1;
+		}
 	}
 	return fd;
 }