From f1acb1d230789a73c6b64db41bf7c199e6f453f3 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Thu, 23 Jan 2014 08:46:56 +0000 Subject: [PATCH] Check the newly connect()ed socket before assuming it has connect()ed. Exit the connect wait loop if the socket is set invalid. --- src/syncterm/conn.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/syncterm/conn.c b/src/syncterm/conn.c index 226bfb20b1..b736731f3b 100644 --- a/src/syncterm/conn.c +++ b/src/syncterm/conn.c @@ -451,6 +451,7 @@ int conn_socket_connect(struct bbslist *bbs) while(kbhit()) getch(); for(cur=res; cur && failcode==FAILURE_WHAT_FAILURE; cur=cur->ai_next) { +fprintf(stderr, "Looping...\n"); if(sock==INVALID_SOCKET) { sock=socket(cur->ai_family, cur->ai_socktype, cur->ai_protocol); if(sock==INVALID_SOCKET) { @@ -470,7 +471,7 @@ int conn_socket_connect(struct bbslist *bbs) #if (EAGAIN!=EWOULDBLOCK) case EWOULDBLOCK: #endif - for(;;) { + for(;sock!=INVALID_SOCKET;) { tv.tv_sec=1; tv.tv_usec=0; @@ -488,7 +489,11 @@ int conn_socket_connect(struct bbslist *bbs) sock=INVALID_SOCKET; continue; case 1: - goto connected; + if(socket_check(sock, NULL, NULL, 0)) + goto connected; + closesocket(sock); + sock=INVALID_SOCKET; + continue; default: break; } -- GitLab