@@ -63,10 +63,15 @@ if (!port) { /* FIXME: Throw exception */ return nil; } + + if (sock >= 0) { + /* FIXME: Throw exception */ + return nil; + } memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; @@ -110,10 +115,15 @@ if (!port) { /* FIXME: Throw exception */ return nil; } + + if (sock >= 0) { + /* FIXME: Throw exception */ + return nil; + } if ((sock = socket(family, SOCK_STREAM, 0)) < 0) { /* FIXME: Throw exception */ return nil; } @@ -274,9 +284,13 @@ { if (sock < 0) { /* FIXME: Throw exception */ return nil; } + + if (saddr != NULL) + [self freeMem: saddr]; + saddr_len = 0; return self; } @end