Skip to content
Snippets Groups Projects
Commit e2094fb9 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Stop using select() in SyncTERM completely.

parent 99f25324
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #1584 passed
...@@ -441,9 +441,6 @@ int conn_socket_connect(struct bbslist *bbs) ...@@ -441,9 +441,6 @@ int conn_socket_connect(struct bbslist *bbs)
{ {
SOCKET sock=INVALID_SOCKET; SOCKET sock=INVALID_SOCKET;
int nonblock; int nonblock;
struct timeval tv;
fd_set wfd;
fd_set efd;
int failcode=FAILURE_WHAT_FAILURE; int failcode=FAILURE_WHAT_FAILURE;
struct addrinfo hints; struct addrinfo hints;
struct addrinfo *res=NULL; struct addrinfo *res=NULL;
...@@ -509,40 +506,15 @@ int conn_socket_connect(struct bbslist *bbs) ...@@ -509,40 +506,15 @@ int conn_socket_connect(struct bbslist *bbs)
case EWOULDBLOCK: case EWOULDBLOCK:
#endif #endif
for(;sock!=INVALID_SOCKET;) { for(;sock!=INVALID_SOCKET;) {
tv.tv_sec=1; if (socket_readable(sock, 1000)) {
tv.tv_usec=0; if (socket_recvdone(sock, 0)) {
FD_ZERO(&wfd);
FD_SET(sock, &wfd);
FD_ZERO(&efd);
FD_SET(sock, &efd);
switch(select(sock+1, NULL, &wfd, &efd, &tv)) {
case 0:
if(kbhit()) {
failcode=FAILURE_ABORTED;
closesocket(sock);
sock=INVALID_SOCKET;
}
break;
case -1:
closesocket(sock);
sock=INVALID_SOCKET;
continue;
case 1:
if(FD_ISSET(sock, &efd)) {
closesocket(sock); closesocket(sock);
sock=INVALID_SOCKET; sock=INVALID_SOCKET;
continue; continue;
} }
else { else {
if(socket_check(sock, NULL, NULL, 0))
goto connected; goto connected;
closesocket(sock);
sock=INVALID_SOCKET;
continue;
} }
default:
break;
} }
} }
...@@ -560,7 +532,7 @@ connected: ...@@ -560,7 +532,7 @@ connected:
res=NULL; res=NULL;
nonblock=0; nonblock=0;
ioctlsocket(sock, FIONBIO, &nonblock); ioctlsocket(sock, FIONBIO, &nonblock);
if(socket_check(sock, NULL, NULL, 0)) { if (!socket_recvdone(sock, 0)) {
int keepalives = TRUE; int keepalives = TRUE;
setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void*)&keepalives, sizeof(keepalives)); setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void*)&keepalives, sizeof(keepalives));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment