1
0
mirror of https://github.com/janet-lang/janet synced 2024-12-26 00:10:27 +00:00

Don't bind when address info doesn't exist

Simple logic issue, something overlooked.
This commit is contained in:
llmII 2021-09-06 09:06:40 -05:00
parent 1ce2361daf
commit 2a4bcc262f
No known key found for this signature in database
GPG Key ID: E3AD2E259F58A9A0

View File

@ -429,23 +429,25 @@ JANET_CORE_FN(cfun_net_connect,
}
}
/* Check all addrinfos in a loop for the first that we can bind to. */
struct addrinfo *rp = NULL;
for (rp = ai; rp != NULL; rp = rp->ai_next) {
if (ai != NULL) {
/* Check all addrinfos in a loop for the first that we can bind to. */
struct addrinfo *rp = NULL;
for (rp = ai; rp != NULL; rp = rp->ai_next) {
#ifdef JANET_WINDOWS
sock = WSASocketW(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
sock = WSASocketW(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
#else
sock = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
sock = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
#endif
if (!JSOCKVALID(sock)) continue;
if (!JSOCKVALID(sock)) continue;
/* Bind */
if (bind(sock, rp->ai_addr, (int) rp->ai_addrlen) == 0) break;
JSOCKCLOSE(sock);
}
freeaddrinfo(ai);
if (NULL == rp) {
janet_panic("could not bind outgoing address");
/* Bind */
if (bind(sock, rp->ai_addr, (int) rp->ai_addrlen) == 0) break;
JSOCKCLOSE(sock);
}
freeaddrinfo(ai);
if (NULL == rp) {
janet_panic("could not bind outgoing address");
}
}
/* Connect to socket */