208943a63d7d5620b78217bb5593e9a17335d858
galt
  Mon Feb 6 17:59:56 2023 -0800
Problems found with newer gcc on Ubunto 20, compiled on a vm.

diff --git src/lib/net.c src/lib/net.c
index e202e21..baa3a02 100644
--- src/lib/net.c
+++ src/lib/net.c
@@ -111,36 +111,37 @@
 int res;
 res = connect(sd, address->ai_addr, address->ai_addrlen);
 char ipStr[NI_MAXHOST];
 getAddrAsString6n4((struct sockaddr_storage *)address->ai_addr, ipStr, sizeof ipStr);
 if (res < 0)
     {
     if (errno == EINPROGRESS)
 	{
 	struct timeval startTime;
 	gettimeofday(&startTime, NULL);
 	struct timeval remainingTime;
 	remainingTime.tv_sec = (long) (msTimeout/1000);
 	remainingTime.tv_usec = (long) (((msTimeout/1000)-remainingTime.tv_sec)*1000000);
 	while (1) 
 	    {
-	    fd_set mySet;
+	    fd_set mySet, exceptSet;
 	    FD_ZERO(&mySet);
 	    FD_SET(sd, &mySet);
+            exceptSet = mySet;
 	    // use tempTime (instead of using remainingTime directly) because on some platforms select() may modify the time val.
 	    struct timeval tempTime = remainingTime;
-	    res = select(sd+1, NULL, &mySet, &mySet, &tempTime);  
+	    res = select(sd+1, NULL, &mySet, &exceptSet, &tempTime);  
 	    if (res < 0) 
 		{
 		if (errno == EINTR)  // Ignore the interrupt 
 		    {
 		    // Subtract the elapsed time from remaining time since some platforms need this.
 		    struct timeval newTime;
 		    gettimeofday(&newTime, NULL);
 		    struct timeval elapsedTime = tvMinus(newTime, startTime);
 		    remainingTime = tvMinus(remainingTime, elapsedTime);
 		    if (remainingTime.tv_sec < 0)  // means our timeout has more than expired
 			{
 			remainingTime.tv_sec = 0;
 			remainingTime.tv_usec = 0;
 			}
 		    startTime = newTime;