diff --git a/src/sbbs3/execnet.cpp b/src/sbbs3/execnet.cpp
index 32c5fdb806f3a161498f08efc131533be066457f..ae7b4694d065c3349ffb34d3493a59af81884da7 100644
--- a/src/sbbs3/execnet.cpp
+++ b/src/sbbs3/execnet.cpp
@@ -56,7 +56,7 @@ int sbbs_t::exec_net(csi_t* csi)
 					addr.sin_family = AF_INET;
 
 					if((i=bind(sock, (struct sockaddr *) &addr, sizeof (addr)))!=0) {
-						csi->socket_error=ERROR_VALUE;
+						csi->socket_error=SOCKET_ERRNO;
 						close_socket(sock);
 						return(0);
 					}
@@ -80,7 +80,7 @@ int sbbs_t::exec_net(csi_t* csi)
 			csi->socket_error=0;
 			if(lp && *lp) {
 				csi->logic=close_socket((SOCKET)*lp);
-				csi->socket_error=ERROR_VALUE;
+				csi->socket_error=SOCKET_ERRNO;
 				for(i=0;i<csi->sockets;i++)
 					if(csi->socket[i]==(SOCKET)*lp)
 						csi->socket[i]=0; 
@@ -99,7 +99,7 @@ int sbbs_t::exec_net(csi_t* csi)
 			if(socket_check(*lp,NULL,NULL,0)==TRUE)
 				csi->logic=LOGIC_TRUE;
 			else
-				csi->socket_error=ERROR_VALUE;
+				csi->socket_error=SOCKET_ERRNO;
 				
 			return(0);
 		case CS_SOCKET_CONNECT:
@@ -131,7 +131,7 @@ int sbbs_t::exec_net(csi_t* csi)
 			addr.sin_port   = htons(w);
 
 			if((i=connect(*lp, (struct sockaddr *)&addr, sizeof(addr)))!=0) {
-				csi->socket_error=ERROR_VALUE;
+				csi->socket_error=SOCKET_ERRNO;
 				return(0);
 			}
 			csi->logic=LOGIC_TRUE;
@@ -157,7 +157,7 @@ int sbbs_t::exec_net(csi_t* csi)
 			if(ioctlsocket(*lp1, FIONREAD, (ulong*)lp2)==0) 
 				csi->logic=LOGIC_TRUE;
 			else
-				csi->socket_error=ERROR_VALUE;
+				csi->socket_error=SOCKET_ERRNO;
 			return(0);
 		case CS_SOCKET_PEEK:
 		case CS_SOCKET_READ:
@@ -188,7 +188,7 @@ int sbbs_t::exec_net(csi_t* csi)
 				}
 				*pp=copystrvar(csi,*pp,buf); 
 			} else
-				csi->socket_error=ERROR_VALUE;
+				csi->socket_error=SOCKET_ERRNO;
 			return(0);
 		case CS_SOCKET_READLINE:
 			lp=getintvar(csi,*(int32_t *)csi->ip);			/* socket */
@@ -226,7 +226,7 @@ int sbbs_t::exec_net(csi_t* csi)
 				}
 
 				if(recv(*lp, &ch, 1, 0)!=1) {
-					csi->socket_error=ERROR_VALUE;
+					csi->socket_error=SOCKET_ERRNO;
 					return(0);
 				}
 
@@ -262,7 +262,7 @@ int sbbs_t::exec_net(csi_t* csi)
 			if(sendsocket(*lp,*pp,strlen(*pp))>0)
 				csi->logic=LOGIC_TRUE;
 			else
-				csi->socket_error=ERROR_VALUE;
+				csi->socket_error=SOCKET_ERRNO;
 			return(0);
 
 		/* FTP Functions */
@@ -451,7 +451,7 @@ bool sbbs_t::ftp_cmd(csi_t* csi, SOCKET sock, const char* cmdsrc, char* rsp)
 
 		len=strlen(cmd);
 		if(sendsocket(sock,cmd,len)!=len) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			return(FALSE);
 		}
 	}
@@ -483,7 +483,7 @@ bool sbbs_t::ftp_cmd(csi_t* csi, SOCKET sock, const char* cmdsrc, char* rsp)
 				}
 
 				if(recv(sock, &ch, 1, 0)!=1) {
-					csi->socket_error=ERROR_VALUE;
+					csi->socket_error=SOCKET_ERRNO;
 					return(FALSE);
 				}
 
@@ -531,7 +531,7 @@ SOCKET sbbs_t::ftp_data_sock(csi_t* csi, SOCKET ctrl_sock, SOCKADDR_IN* addr)
 	}
 
 	if((data_sock=open_socket(PF_INET, SOCK_STREAM, "ftp"))==INVALID_SOCKET) {
-		csi->socket_error=ERROR_VALUE;
+		csi->socket_error=SOCKET_ERRNO;
 		return(INVALID_SOCKET);
 	}
 
@@ -540,7 +540,7 @@ SOCKET sbbs_t::ftp_data_sock(csi_t* csi, SOCKET ctrl_sock, SOCKADDR_IN* addr)
 	addr->sin_family = AF_INET;
 
 	if(bind(data_sock, (struct sockaddr *)addr,xp_sockaddr_len(addr))!= 0) {
-		csi->socket_error=ERROR_VALUE;
+		csi->socket_error=SOCKET_ERRNO;
 		close_socket(data_sock);
 		return(INVALID_SOCKET);
 	}
@@ -580,7 +580,7 @@ SOCKET sbbs_t::ftp_data_sock(csi_t* csi, SOCKET ctrl_sock, SOCKADDR_IN* addr)
 
 		addr_len=sizeof(SOCKADDR_IN);
 		if(getsockname(data_sock, (struct sockaddr *)addr,&addr_len)!=0) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			close_socket(data_sock);
 			return(INVALID_SOCKET);
 		} 
@@ -588,13 +588,13 @@ SOCKET sbbs_t::ftp_data_sock(csi_t* csi, SOCKET ctrl_sock, SOCKADDR_IN* addr)
 		SOCKADDR_IN ctrl_addr;
 		addr_len=sizeof(ctrl_addr);
 		if(getsockname(ctrl_sock, (struct sockaddr *)&ctrl_addr,&addr_len)!=0) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			close_socket(data_sock);
 			return(INVALID_SOCKET);
 		} 
 
 		if(listen(data_sock, 1)!= 0) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			close_socket(data_sock);
 			return(INVALID_SOCKET);
 		}
@@ -647,7 +647,7 @@ bool sbbs_t::ftp_get(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest, bool d
 
 		/* TODO: IPv6 */
 		if(connect(data_sock,&addr.addr,sizeof(SOCKADDR_IN))!=0) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			close_socket(data_sock);
 			return(false);
 		}
@@ -666,7 +666,7 @@ bool sbbs_t::ftp_get(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest, bool d
 
 	if(!(csi->ftp_mode&CS_FTP_PASV)) {	/* Normal (Active) FTP */
 		if(!socket_readable(data_sock, TIMEOUT_SOCK_LISTEN * 1000)) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			closesocket(data_sock);
 			return(false);
 		}
@@ -676,7 +676,7 @@ bool sbbs_t::ftp_get(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest, bool d
 		addr_len=sizeof(addr);
 		if((accept_sock=accept_socket(data_sock,&addr,&addr_len))
 			==INVALID_SOCKET) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			closesocket(data_sock);
 			return(false);
 		}
@@ -769,7 +769,7 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 
 		if(connect(data_sock,&addr.addr,sizeof(addr.in))!=0) {
 			bprintf("ftp: failure, line %d",__LINE__);
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			close_socket(data_sock);
 			return(false);
 		}
@@ -793,7 +793,7 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 
 	if(!(csi->ftp_mode&CS_FTP_PASV)) {	/* Normal (Active) FTP */
 		if(!socket_readable(data_sock, TIMEOUT_SOCK_LISTEN * 1000)) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			closesocket(data_sock);
 			fclose(fp);
 			return(false);
@@ -804,7 +804,7 @@ bool sbbs_t::ftp_put(csi_t* csi, SOCKET ctrl_sock, char* src, char* dest)
 		addr_len=sizeof(addr);
 		if((accept_sock=accept_socket(data_sock,&addr,&addr_len))
 			==INVALID_SOCKET) {
-			csi->socket_error=ERROR_VALUE;
+			csi->socket_error=SOCKET_ERRNO;
 			closesocket(data_sock);
 			fclose(fp);
 			return(false);
diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index f4996158eeac9ed3e4aa6658443e26027dd228a2..c9de7f21205c137252b19b35f9b3f2a2ae8c4ab7 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -310,8 +310,8 @@ static int ftp_close_socket(SOCKET* sock, CRYPT_SESSION *sess, int line)
 		startup->socket_open(startup->cbdata,FALSE);
 
 	if(result!=0) {
-		if(ERROR_VALUE!=ENOTSOCK)
-			lprintf(LOG_WARNING,"%04d !ERROR %d closing socket from line %u",*sock,ERROR_VALUE,line);
+		if(SOCKET_ERRNO!=ENOTSOCK)
+			lprintf(LOG_WARNING,"%04d !ERROR %d closing socket from line %u",*sock,SOCKET_ERRNO,line);
 	}
 	*sock=INVALID_SOCKET;
 
@@ -385,16 +385,16 @@ static int sockprintf(SOCKET sock, CRYPT_SESSION sess, char *fmt, ...)
 	else {
 		while((result=sendsocket(sock,sbuf,len))!=len) {
 			if(result==SOCKET_ERROR) {
-				if(ERROR_VALUE==EWOULDBLOCK) {
+				if(SOCKET_ERRNO==EWOULDBLOCK) {
 					YIELD();
 					continue;
 				}
-				if(ERROR_VALUE==ECONNRESET)
+				if(SOCKET_ERRNO==ECONNRESET)
 					lprintf(LOG_WARNING,"%04d Connection reset by peer on send",sock);
-				else if(ERROR_VALUE==ECONNABORTED)
+				else if(SOCKET_ERRNO==ECONNABORTED)
 					lprintf(LOG_WARNING,"%04d Connection aborted by peer on send",sock);
 				else
-					lprintf(LOG_WARNING,"%04d !ERROR %d sending",sock,ERROR_VALUE);
+					lprintf(LOG_WARNING,"%04d !ERROR %d sending",sock,SOCKET_ERRNO);
 				return(0);
 			}
 			lprintf(LOG_WARNING,"%04d !ERROR: short send: %u instead of %u",sock,result,len);
@@ -409,15 +409,15 @@ void recverror(SOCKET socket, int rd, int line)
 		lprintf(LOG_NOTICE,"%04d Socket closed by peer on receive (line %u)"
 			,socket, line);
 	else if(rd==SOCKET_ERROR) {
-		if(ERROR_VALUE==ECONNRESET)
+		if(SOCKET_ERRNO==ECONNRESET)
 			lprintf(LOG_NOTICE,"%04d Connection reset by peer on receive (line %u)"
 				,socket, line);
-		else if(ERROR_VALUE==ECONNABORTED)
+		else if(SOCKET_ERRNO==ECONNABORTED)
 			lprintf(LOG_NOTICE,"%04d Connection aborted by peer on receive (line %u)"
 				,socket, line);
 		else
 			lprintf(LOG_NOTICE,"%04d !ERROR %d receiving on socket (line %u)"
-				,socket, ERROR_VALUE, line);
+				,socket, SOCKET_ERRNO, line);
 	} else
 		lprintf(LOG_WARNING,"%04d !ERROR: recv on socket returned unexpected value: %d (line %u)"
 			,socket, rd, line);
@@ -722,23 +722,23 @@ static void send_thread(void* arg)
 #endif
 		if(wr<1) {
 			if(wr==SOCKET_ERROR) {
-				if(ERROR_VALUE==EWOULDBLOCK) {
+				if(SOCKET_ERRNO==EWOULDBLOCK) {
 					/*lprintf(LOG_WARNING,"%04d DATA send would block, retrying",xfer.ctrl_sock);*/
 					YIELD();
 					continue;
 				}
-				else if(ERROR_VALUE==ECONNRESET)
+				else if(SOCKET_ERRNO==ECONNRESET)
 					lprintf(LOG_WARNING,"%04d <%s> DATA Connection reset by peer, sending on socket %d"
 						,xfer.ctrl_sock, xfer.user->alias,*xfer.data_sock);
-				else if(ERROR_VALUE==ECONNABORTED)
+				else if(SOCKET_ERRNO==ECONNABORTED)
 					lprintf(LOG_WARNING,"%04d <%s> DATA Connection aborted by peer, sending on socket %d"
 						,xfer.ctrl_sock, xfer.user->alias,*xfer.data_sock);
 				else
 					lprintf(LOG_WARNING,"%04d <%s> !DATA ERROR %d sending on data socket %d"
-						,xfer.ctrl_sock, xfer.user->alias,ERROR_VALUE,*xfer.data_sock);
+						,xfer.ctrl_sock, xfer.user->alias,SOCKET_ERRNO,*xfer.data_sock);
 				/* Send NAK */
 				sockprintf(xfer.ctrl_sock,xfer.ctrl_sess,"426 Error %d sending on DATA channel"
-					,ERROR_VALUE);
+					,SOCKET_ERRNO);
 				error=TRUE;
 				break;
 			}
@@ -749,7 +749,7 @@ static void send_thread(void* arg)
 				break;
 			}
 			lprintf(LOG_ERR,"%04d <%s> !DATA ERROR %d (%d) sending on socket %d"
-				,xfer.ctrl_sock, xfer.user->alias, wr, ERROR_VALUE, *xfer.data_sock);
+				,xfer.ctrl_sock, xfer.user->alias, wr, SOCKET_ERRNO, *xfer.data_sock);
 			sockprintf(xfer.ctrl_sock,xfer.ctrl_sess,"451 DATA send error");
 			error=TRUE;
 			break;
@@ -1010,23 +1010,23 @@ static void receive_thread(void* arg)
 				break;
 			}
 			if(rd==SOCKET_ERROR) {
-				if(ERROR_VALUE==EWOULDBLOCK) {
+				if(SOCKET_ERRNO==EWOULDBLOCK) {
 					/*lprintf(LOG_WARNING,"%04d DATA recv would block, retrying",xfer.ctrl_sock);*/
 					YIELD();
 					continue;
 				}
-				else if(ERROR_VALUE==ECONNRESET)
+				else if(SOCKET_ERRNO==ECONNRESET)
 					lprintf(LOG_WARNING,"%04d <%s> DATA Connection reset by peer, receiving on socket %d"
 						,xfer.ctrl_sock, xfer.user->alias,*xfer.data_sock);
-				else if(ERROR_VALUE==ECONNABORTED)
+				else if(SOCKET_ERRNO==ECONNABORTED)
 					lprintf(LOG_WARNING,"%04d <%s> DATA Connection aborted by peer, receiving on socket %d"
 						,xfer.ctrl_sock, xfer.user->alias,*xfer.data_sock);
 				else
 					lprintf(LOG_WARNING,"%04d <%s> !DATA ERROR %d receiving on data socket %d"
-						,xfer.ctrl_sock, xfer.user->alias,ERROR_VALUE,*xfer.data_sock);
+						,xfer.ctrl_sock, xfer.user->alias,SOCKET_ERRNO,*xfer.data_sock);
 				/* Send NAK */
 				sockprintf(xfer.ctrl_sock,xfer.ctrl_sess,"426 Error %d receiving on DATA channel"
-					,ERROR_VALUE);
+					,SOCKET_ERRNO);
 				error=TRUE;
 				break;
 			}
@@ -1253,8 +1253,8 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 	if(pasv_sock==INVALID_SOCKET) {	/* !PASV */
 
 		if((*data_sock=socket(addr->addr.sa_family, SOCK_STREAM, IPPROTO_IP)) == INVALID_SOCKET) {
-			lprintf(LOG_ERR,"%04d <%s> !DATA ERROR %d opening socket", ctrl_sock, user->alias, ERROR_VALUE);
-			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d opening socket",ERROR_VALUE);
+			lprintf(LOG_ERR,"%04d <%s> !DATA ERROR %d opening socket", ctrl_sock, user->alias, SOCKET_ERRNO);
+			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d opening socket",SOCKET_ERRNO);
 			if(tmpfile && !(startup->options&FTP_OPT_KEEP_TEMP_FILES))
 				ftp_remove(ctrl_sock, __LINE__, filename, user->alias, LOG_ERR);
 			*inprogress=FALSE;
@@ -1272,7 +1272,7 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 		addr_len = sizeof(server_addr);
 		if((result=getsockname(ctrl_sock, &server_addr.addr,&addr_len))!=0) {
 			lprintf(LOG_CRIT,"%04d <%s> !DATA ERROR %d (%d) getting address/port of command socket (%u)"
-				,ctrl_sock, user->alias,result,ERROR_VALUE,pasv_sock);
+				,ctrl_sock, user->alias,result,SOCKET_ERRNO,pasv_sock);
 			return;
 		}
 
@@ -1285,8 +1285,8 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 		}
 		if(result!=0) {
 			lprintf(LOG_ERR,"%04d <%s> DATA ERROR %d (%d) binding socket %d"
-				,ctrl_sock, user->alias, result, ERROR_VALUE, *data_sock);
-			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d binding socket",ERROR_VALUE);
+				,ctrl_sock, user->alias, result, SOCKET_ERRNO, *data_sock);
+			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d binding socket",SOCKET_ERRNO);
 			if(tmpfile && !(startup->options&FTP_OPT_KEEP_TEMP_FILES))
 				ftp_remove(ctrl_sock, __LINE__, filename, user->alias, LOG_ERR);
 			*inprogress=FALSE;
@@ -1297,9 +1297,9 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 		result=connect(*data_sock, &addr->addr,xp_sockaddr_len(addr));
 		if(result!=0) {
 			lprintf(LOG_WARNING,"%04d <%s> !DATA ERROR %d (%d) connecting to client %s port %u on socket %d"
-					,ctrl_sock, user->alias,result,ERROR_VALUE
+					,ctrl_sock, user->alias,result,SOCKET_ERRNO
 					,host_ip,inet_addrport(addr),*data_sock);
-			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d connecting to socket",ERROR_VALUE);
+			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d connecting to socket",SOCKET_ERRNO);
 			if(tmpfile && !(startup->options&FTP_OPT_KEEP_TEMP_FILES))
 				ftp_remove(ctrl_sock, __LINE__, filename, user->alias, LOG_ERR);
 			*inprogress=FALSE;
@@ -1328,7 +1328,7 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 			addr_len=sizeof(*addr);
 			if((result=getsockname(pasv_sock, &addr->addr,&addr_len))!=0)
 				lprintf(LOG_CRIT,"%04d <%s> PASV !DATA ERROR %d (%d) getting address/port of passive socket (%u)"
-					,ctrl_sock, user->alias,result,ERROR_VALUE,pasv_sock);
+					,ctrl_sock, user->alias,result,SOCKET_ERRNO,pasv_sock);
 			else
 				lprintf(LOG_DEBUG,"%04d <%s> PASV DATA socket %d listening on %s port %u"
 					,ctrl_sock, user->alias,pasv_sock,host_ip,inet_addrport(addr));
@@ -1337,7 +1337,7 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 		if (!socket_readable(pasv_sock, TIMEOUT_SOCKET_LISTEN * 1000)) {
 			lprintf(LOG_WARNING,"%04d <%s> PASV !WARNING socket not readable"
 				,ctrl_sock, user->alias);
-			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d selecting socket for connection",ERROR_VALUE);
+			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d selecting socket for connection",SOCKET_ERRNO);
 			if(tmpfile && !(startup->options&FTP_OPT_KEEP_TEMP_FILES))
 				ftp_remove(ctrl_sock, __LINE__, filename, user->alias, LOG_ERR);
 			*inprogress=FALSE;
@@ -1354,8 +1354,8 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 #endif
 		if(*data_sock==INVALID_SOCKET) {
 			lprintf(LOG_WARNING,"%04d <%s> PASV !DATA ERROR %d accepting connection on socket %d"
-				,ctrl_sock, user->alias,ERROR_VALUE,pasv_sock);
-			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d accepting connection",ERROR_VALUE);
+				,ctrl_sock, user->alias,SOCKET_ERRNO,pasv_sock);
+			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d accepting connection",SOCKET_ERRNO);
 			if(tmpfile && !(startup->options&FTP_OPT_KEEP_TEMP_FILES))
 				ftp_remove(ctrl_sock, __LINE__, filename, user->alias, LOG_ERR);
 			*inprogress=FALSE;
@@ -1384,9 +1384,9 @@ static void filexfer(union xp_sockaddr* addr, SOCKET ctrl_sock, CRYPT_SESSION ct
 
 		if(ioctlsocket(*data_sock, FIONBIO, &l)!=0) {
 			lprintf(LOG_ERR,"%04d <%s> !DATA ERROR %d disabling socket blocking"
-				,ctrl_sock, user->alias, ERROR_VALUE);
+				,ctrl_sock, user->alias, SOCKET_ERRNO);
 			sockprintf(ctrl_sock,ctrl_sess,"425 Error %d disabling socket blocking"
-				,ERROR_VALUE);
+				,SOCKET_ERRNO);
 			break;
 		}
 
@@ -2244,9 +2244,9 @@ static void ctrl_thread(void* arg)
 
 	if((i=ioctlsocket(sock, FIONBIO, &l))!=0) {
 		lprintf(LOG_ERR,"%04d !ERROR %d (%d) disabling socket blocking"
-			,sock, i, ERROR_VALUE);
+			,sock, i, SOCKET_ERRNO);
 		sockprintf(sock,sess,"425 Error %d disabling socket blocking"
-			,ERROR_VALUE);
+			,SOCKET_ERRNO);
 		ftp_close_socket(&sock,&sess,__LINE__);
 		thread_down();
 		return;
@@ -2261,7 +2261,7 @@ static void ctrl_thread(void* arg)
 	addr_len = sizeof(local_addr);
 	if(getsockname(sock, (struct sockaddr *)&local_addr, &addr_len) != 0) {
 		lprintf(LOG_CRIT,"%04d [%s] !ERROR %d getting local address/port of socket"
-			,sock, host_ip, ERROR_VALUE);
+			,sock, host_ip, SOCKET_ERRNO);
 		ftp_close_socket(&sock,&sess,__LINE__);
 		thread_down();
 		return;
@@ -2311,8 +2311,8 @@ static void ctrl_thread(void* arg)
 	/* For PASV mode */
 	addr_len=sizeof(pasv_addr);
 	if((result=getsockname(sock, &pasv_addr.addr,&addr_len))!=0) {
-		lprintf(LOG_CRIT,"%04d !ERROR %d (%d) getting address/por of socket", sock, result, ERROR_VALUE);
-		sockprintf(sock,sess,"425 Error %d getting address/port",ERROR_VALUE);
+		lprintf(LOG_CRIT,"%04d !ERROR %d (%d) getting address/por of socket", sock, result, SOCKET_ERRNO);
+		sockprintf(sock,sess,"425 Error %d getting address/port",SOCKET_ERRNO);
 		ftp_close_socket(&sock,&sess,__LINE__);
 		thread_down();
 		return;
@@ -2994,16 +2994,16 @@ static void ctrl_thread(void* arg)
 				ftp_close_socket(&pasv_sock,&pasv_sess,__LINE__);
 
 			if((pasv_sock=ftp_open_socket(pasv_addr.addr.sa_family, SOCK_STREAM))==INVALID_SOCKET) {
-				lprintf(LOG_WARNING,"%04d <%s> !PASV ERROR %d opening socket", sock, user.alias, ERROR_VALUE);
-				sockprintf(sock,sess,"425 Error %d opening PASV data socket", ERROR_VALUE);
+				lprintf(LOG_WARNING,"%04d <%s> !PASV ERROR %d opening socket", sock, user.alias, SOCKET_ERRNO);
+				sockprintf(sock,sess,"425 Error %d opening PASV data socket", SOCKET_ERRNO);
 				continue;
 			}
 
 			reuseaddr=FALSE;
 			if((result=setsockopt(pasv_sock,SOL_SOCKET,SO_REUSEADDR,(char*)&reuseaddr,sizeof(reuseaddr)))!=0) {
 				lprintf(LOG_WARNING,"%04d <%s> !PASV ERROR %d disabling REUSEADDR socket option"
-					,sock, user.alias, ERROR_VALUE);
-				sockprintf(sock,sess,"425 Error %d disabling REUSEADDR socket option", ERROR_VALUE);
+					,sock, user.alias, SOCKET_ERRNO);
+				sockprintf(sock,sess,"425 Error %d disabling REUSEADDR socket option", SOCKET_ERRNO);
 				continue;
 			}
 
@@ -3025,8 +3025,8 @@ static void ctrl_thread(void* arg)
 			}
 			if(result!= 0) {
 				lprintf(LOG_ERR,"%04d <%s> !PASV ERROR %d (%d) binding socket to port %u"
-					,sock, user.alias, result, ERROR_VALUE, port);
-				sockprintf(sock,sess,"425 Error %d binding data socket",ERROR_VALUE);
+					,sock, user.alias, result, SOCKET_ERRNO, port);
+				sockprintf(sock,sess,"425 Error %d binding data socket",SOCKET_ERRNO);
 				ftp_close_socket(&pasv_sock,&pasv_sess,__LINE__);
 				continue;
 			}
@@ -3036,16 +3036,16 @@ static void ctrl_thread(void* arg)
 			addr_len=sizeof(addr);
 			if((result=getsockname(pasv_sock, &addr.addr,&addr_len))!=0) {
 				lprintf(LOG_CRIT,"%04d <%s> !PASV ERROR %d (%d) getting address/port of socket"
-					,sock, user.alias, result, ERROR_VALUE);
-				sockprintf(sock,sess,"425 Error %d getting address/port",ERROR_VALUE);
+					,sock, user.alias, result, SOCKET_ERRNO);
+				sockprintf(sock,sess,"425 Error %d getting address/port",SOCKET_ERRNO);
 				ftp_close_socket(&pasv_sock,&pasv_sess,__LINE__);
 				continue;
 			}
 
 			if((result=listen(pasv_sock, 1))!= 0) {
 				lprintf(LOG_ERR,"%04d <%s> !PASV ERROR %d (%d) listening on port %u"
-					,sock, user.alias, result, ERROR_VALUE,port);
-				sockprintf(sock,sess,"425 Error %d listening on data socket",ERROR_VALUE);
+					,sock, user.alias, result, SOCKET_ERRNO,port);
+				sockprintf(sock,sess,"425 Error %d listening on data socket",SOCKET_ERRNO);
 				ftp_close_socket(&pasv_sock,&pasv_sess,__LINE__);
 				continue;
 			}
@@ -5016,7 +5016,7 @@ static void cleanup(int code, int line)
 
 #ifdef _WINSOCKAPI_
 	if(WSAInitialized && WSACleanup()!=0)
-		lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",ERROR_VALUE);
+		lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",SOCKET_ERRNO);
 #endif
 
 	thread_down();
@@ -5205,7 +5205,7 @@ void ftp_server(void* arg)
 		ftp_set = xpms_create(startup->bind_retry_count, startup->bind_retry_delay, lprintf);
 
 		if(ftp_set == NULL) {
-			lprintf(LOG_CRIT,"!ERROR %d creating FTP socket set", ERROR_VALUE);
+			lprintf(LOG_CRIT,"!ERROR %d creating FTP socket set", SOCKET_ERRNO);
 			cleanup(1, __LINE__);
 			return;
 		}
diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index 8f2d03bed0cf05741b093ff00475f21b100e1c63..82dfd1972c819e50d1c9d78be06fc2628ac9cf5d 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -69,7 +69,7 @@ static JSBool js_system_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
 
 	switch(tiny) {
 		case GLOB_PROP_SOCKET_ERRNO:
-			*vp=DOUBLE_TO_JSVAL(ERROR_VALUE);
+			*vp=DOUBLE_TO_JSVAL(SOCKET_ERRNO);
 			break;
 		case GLOB_PROP_SOCKET_ERRNO_STR:
 			if((js_str=JS_NewStringCopyZ(cx, SOCKET_STRERROR(err, sizeof(err))))==NULL)
diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c
index 945c802d367afb3e1c5031020eeac7f09a04aa8f..a36f54a7a1c1fc1cba4255905cee8fba37b02039 100644
--- a/src/sbbs3/js_internal.c
+++ b/src/sbbs3/js_internal.c
@@ -1326,8 +1326,8 @@ js_handle_events(JSContext *cx, js_callback_t *cb, volatile bool *terminated)
 				break;
 			case -1:	// Error...
 				JS_RESUMEREQUEST(cx, rc);
-				if (ERROR_VALUE != EINTR) {
-					JS_ReportError(cx, "poll() returned with error %d", ERROR_VALUE);
+				if (SOCKET_ERRNO != EINTR) {
+					JS_ReportError(cx, "poll() returned with error %d", SOCKET_ERRNO);
 					ret = JS_FALSE;
 					goto done;
 				}
diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c
index 44170032346bf5576ce2052f1d7aedc167e55f32..0310ce212ebc85a3cea042429df05c8d601c4551 100644
--- a/src/sbbs3/js_socket.c
+++ b/src/sbbs3/js_socket.c
@@ -251,7 +251,7 @@ static void do_js_close(JSContext *cx, js_socket_private_t *p, bool finalize)
 	}
 	if(p->external==false) {
 		close_socket(p->sock);
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 	}
 	else {
 		if (!finalize)
@@ -433,7 +433,7 @@ static off_t js_socket_sendfilesocket(js_socket_private_t *p, int file, off_t *o
 			wr=js_socket_sendsocket(p,buf+i,rd-i,false);
 			if(wr>0)
 				continue;
-			if(wr==SOCKET_ERROR && ERROR_VALUE==EWOULDBLOCK) {
+			if(wr==SOCKET_ERROR && SOCKET_ERRNO==EWOULDBLOCK) {
 				wr=0;
 				SLEEP(1);
 				continue;
@@ -786,8 +786,8 @@ js_bind(JSContext *cx, uintN argc, jsval *arglist)
 	for(tres=res; tres; tres=tres->ai_next) {
 		if(bind(p->sock, tres->ai_addr, tres->ai_addrlen)!=0) {
 			if (tres->ai_next == NULL) {
-				store_socket_error(p, ERROR_VALUE, NULL);
-				dbprintf(TRUE, p, "bind failed with error %d",ERROR_VALUE);
+				store_socket_error(p, SOCKET_ERRNO, NULL);
+				dbprintf(TRUE, p, "bind failed with error %d",SOCKET_ERRNO);
 				freeaddrinfo(res);
 				JS_RESUMEREQUEST(cx, rc);
 				return(JS_TRUE);
@@ -824,8 +824,8 @@ js_listen(JSContext *cx, uintN argc, jsval *arglist)
 
 	rc=JS_SUSPENDREQUEST(cx);
 	if(listen(p->sock, backlog)!=0) {
-		store_socket_error(p, ERROR_VALUE, NULL);
-		dbprintf(TRUE, p, "listen failed with error %d",ERROR_VALUE);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
+		dbprintf(TRUE, p, "listen failed with error %d",SOCKET_ERRNO);
 		JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
 		JS_RESUMEREQUEST(cx, rc);
 		return(JS_TRUE);
@@ -859,8 +859,8 @@ js_accept(JSContext *cx, uintN argc, jsval *arglist)
 	rc=JS_SUSPENDREQUEST(cx);
 	if(p->set) {
 		if((new_socket=xpms_accept(p->set,&(p->remote_addr),&addrlen,XPMS_FOREVER,XPMS_FLAGS_NONE,NULL))==INVALID_SOCKET) {
-			store_socket_error(p, ERROR_VALUE, NULL);
-			dbprintf(TRUE, p, "accept failed with error %d",ERROR_VALUE);
+			store_socket_error(p, SOCKET_ERRNO, NULL);
+			dbprintf(TRUE, p, "accept failed with error %d",SOCKET_ERRNO);
 			JS_RESUMEREQUEST(cx, rc);
 			return(JS_TRUE);
 		}
@@ -868,8 +868,8 @@ js_accept(JSContext *cx, uintN argc, jsval *arglist)
 	}
 	else {
 		if((new_socket=accept_socket(p->sock,&(p->remote_addr),&addrlen))==INVALID_SOCKET) {
-			store_socket_error(p, ERROR_VALUE, NULL);
-			dbprintf(TRUE, p, "accept failed with error %d",ERROR_VALUE);
+			store_socket_error(p, SOCKET_ERRNO, NULL);
+			dbprintf(TRUE, p, "accept failed with error %d",SOCKET_ERRNO);
 			JS_RESUMEREQUEST(cx, rc);
 			return(JS_TRUE);
 		}
@@ -980,7 +980,7 @@ js_connect_event(JSContext *cx, uintN argc, jsval *arglist, js_socket_private_t
 #else
 	if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1) {
 #endif
-		JS_ReportError(cx, "Error %d creating socket pair", ERROR_VALUE);
+		JS_ReportError(cx, "Error %d creating socket pair", SOCKET_ERRNO);
 		return JS_FALSE;
 	}
 
@@ -1097,7 +1097,7 @@ js_connect(JSContext *cx, uintN argc, jsval *arglist)
 		result = connect(p->sock, cur->ai_addr, cur->ai_addrlen);
 
 		if(result == SOCKET_ERROR) {
-			result = ERROR_VALUE;
+			result = SOCKET_ERRNO;
 			if(result == EWOULDBLOCK || result == EINPROGRESS) {
 				result = ETIMEDOUT;
 				if (socket_writable(p->sock, timeout)) {
@@ -1165,7 +1165,7 @@ js_send(JSContext *cx, uintN argc, jsval *arglist)
 		dbprintf(false, p, "sent %d of %lu bytes",ret,len);
 		JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(ret));
 	} else {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		dbprintf(TRUE, p, "send of %lu bytes failed",len);
 	}
 	free(cp);
@@ -1204,7 +1204,7 @@ js_sendline(JSContext *cx, uintN argc, jsval *arglist)
 		dbprintf(false, p, "sent %lu bytes",len+2);
 		JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
 	} else {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		dbprintf(TRUE, p, "send of %lu bytes failed",len+2);
 	}
 	free(cp);
@@ -1283,7 +1283,7 @@ js_sendto(JSContext *cx, uintN argc, jsval *arglist)
 			dbprintf(false, p, "sent %lu bytes",len);
 			JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
 		} else {
-			store_socket_error(p, ERROR_VALUE, NULL);
+			store_socket_error(p, SOCKET_ERRNO, NULL);
 			dbprintf(TRUE, p, "send of %lu bytes failed to %s",len, ip_addr);
 		}
 	}
@@ -1334,7 +1334,7 @@ js_sendfile(JSContext *cx, uintN argc, jsval *arglist)
 		dbprintf(false, p, "sent %"PRIdOFF" bytes",len);
 		JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
 	} else {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		dbprintf(TRUE, p, "send of %s failed",fname);
 	}
 	free(fname);
@@ -1395,7 +1395,7 @@ js_sendbin(JSContext *cx, uintN argc, jsval *arglist)
 		dbprintf(false, p, "sent %u bytes (binary)",size);
 		JS_SET_RVAL(cx, arglist, JSVAL_TRUE);
 	} else {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		dbprintf(TRUE, p, "send of %u bytes (binary) failed",size);
 	}
 
@@ -1439,7 +1439,7 @@ js_recv(JSContext *cx, uintN argc, jsval *arglist)
 	len = js_socket_recv(cx,p,buf,len,0,timeout);
 	JS_RESUMEREQUEST(cx, rc);
 	if(len<0) {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		JS_SET_RVAL(cx, arglist, JSVAL_NULL);
 		free(buf);
 		return(JS_TRUE);
@@ -1531,7 +1531,7 @@ js_recvfrom(JSContext *cx, uintN argc, jsval *arglist)
 		JS_RESUMEREQUEST(cx, rc);
 
 		if(rd!=len) {
-			store_socket_error(p, ERROR_VALUE, NULL);
+			store_socket_error(p, SOCKET_ERRNO, NULL);
 			return(JS_TRUE);
 		}
 
@@ -1546,7 +1546,7 @@ js_recvfrom(JSContext *cx, uintN argc, jsval *arglist)
 		len = recvfrom(p->sock,buf,len,0,&addr.addr,&addrlen);
 		JS_RESUMEREQUEST(cx, rc);
 		if(len<0) {
-			store_socket_error(p, ERROR_VALUE, NULL);
+			store_socket_error(p, SOCKET_ERRNO, NULL);
 			free(buf);
 			return(JS_TRUE);
 		}
@@ -1626,7 +1626,7 @@ js_peek(JSContext *cx, uintN argc, jsval *arglist)
 		len=0;
 	JS_RESUMEREQUEST(cx, rc);
 	if(len<0) {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		JS_SET_RVAL(cx, arglist, JSVAL_NULL);
 		free(buf);
 		return(JS_TRUE);
@@ -1641,7 +1641,7 @@ js_peek(JSContext *cx, uintN argc, jsval *arglist)
 	JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(str));
 	rc=JS_SUSPENDREQUEST(cx);
 	dbprintf(false, p, "received %u bytes, lasterror=%d"
-		,len,ERROR_VALUE);
+		,len,SOCKET_ERRNO);
 	JS_RESUMEREQUEST(cx, rc);
 
 	return(JS_TRUE);
@@ -1657,7 +1657,7 @@ js_sock_read_check(js_socket_private_t *p, time_t start, int32 timeout, int i)
 	bool		rd;
 
 	if(!socket_check(p->sock,&rd,NULL,1000)) {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		return 2;
 	}
 
@@ -1726,7 +1726,7 @@ js_recvline(JSContext *cx, uintN argc, jsval *arglist)
 
 		if((got=js_socket_recv(cx, p, &ch, 1, 0, i?1:timeout))!=1) {
 			if(p->session == -1)
-				store_socket_error(p, ERROR_VALUE, NULL);
+				store_socket_error(p, SOCKET_ERRNO, NULL);
 			if (i == 0) {			// no data received
 				JS_RESUMEREQUEST(cx, rc);
 				free(buf);			// so return null (not an empty string)
@@ -1754,7 +1754,7 @@ js_recvline(JSContext *cx, uintN argc, jsval *arglist)
 	JS_SET_RVAL(cx, arglist, STRING_TO_JSVAL(str));
 	rc=JS_SUSPENDREQUEST(cx);
 	dbprintf(false, p, "received %u bytes (recvline) lasterror=%d"
-		,i,ERROR_VALUE);
+		,i,SOCKET_ERRNO);
 	JS_RESUMEREQUEST(cx, rc);
 
 	return(JS_TRUE);
@@ -1805,7 +1805,7 @@ js_recvbin(JSContext *cx, uintN argc, jsval *arglist)
 	}
 
 	if(rd!=size)
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 
 	JS_RESUMEREQUEST(cx, rc);
 	return(JS_TRUE);
@@ -1853,9 +1853,9 @@ js_getsockopt(JSContext *cx, uintN argc, jsval *arglist)
 		}
 		JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(val));
 	} else {
-		store_socket_error(p, ERROR_VALUE, NULL);
+		store_socket_error(p, SOCKET_ERRNO, NULL);
 		dbprintf(TRUE, p, "error %d getting option %d"
-			,ERROR_VALUE,opt);
+			,SOCKET_ERRNO,opt);
 	}
 
 	JS_RESUMEREQUEST(cx, rc);
@@ -1908,7 +1908,7 @@ js_setsockopt(JSContext *cx, uintN argc, jsval *arglist)
 
 	JS_SET_RVAL(cx, arglist, BOOLEAN_TO_JSVAL(
 		setsockopt(p->sock, level, opt, vp, len)==0));
-	store_socket_error(p, ERROR_VALUE, NULL);
+	store_socket_error(p, SOCKET_ERRNO, NULL);
 
 	JS_RESUMEREQUEST(cx, rc);
 	return(JS_TRUE);
@@ -1945,7 +1945,7 @@ js_ioctlsocket(JSContext *cx, uintN argc, jsval *arglist)
 		JS_RESUMEREQUEST(cx, rc);
 	}
 
-	store_socket_error(p, ERROR_VALUE, NULL);
+	store_socket_error(p, SOCKET_ERRNO, NULL);
 
 	return(JS_TRUE);
 }
@@ -2040,7 +2040,7 @@ js_poll(JSContext *cx, uintN argc, jsval *arglist)
 		result = select(high+1,rd_set,wr_set,NULL,&tv);
 #endif
 
-	store_socket_error(p, ERROR_VALUE, NULL);
+	store_socket_error(p, SOCKET_ERRNO, NULL);
 
 	dbprintf(false, p, "poll: select/poll returned %d (errno %d)"
 		,result,p->last_error);
@@ -3174,7 +3174,7 @@ js_connected_socket_constructor(JSContext *cx, uintN argc, jsval *arglist)
 		}
 
 		if(connect(p->sock, cur->ai_addr, cur->ai_addrlen)) {
-			switch(ERROR_VALUE) {
+			switch(SOCKET_ERRNO) {
 				case EINPROGRESS:
 				case EINTR:
 				case EAGAIN:
@@ -3519,7 +3519,7 @@ js_socket_constructor(JSContext *cx, uintN argc, jsval *arglist)
 	memset(p,0,sizeof(js_socket_private_t));
 
 	if((p->sock=open_socket(domain,type,protocol))==INVALID_SOCKET) {
-		JS_ReportError(cx,"open_socket failed with error %d",ERROR_VALUE);
+		JS_ReportError(cx,"open_socket failed with error %d",SOCKET_ERRNO);
 		if(protocol)
 			free(protocol);
 		free(p);
diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index af80f577ce4bd71c2cafb03f8f983441166d7491..feb3aa378f0655e4da6d5b50b95ca65054bc77fe 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -340,7 +340,7 @@ static int do_bail(int code)
 {
 #if defined(_WINSOCKAPI_)
 	if(WSAInitialized && WSACleanup()!=0)
-		lprintf(LOG_ERR,"!WSACleanup ERROR %d",ERROR_VALUE);
+		lprintf(LOG_ERR,"!WSACleanup ERROR %d", SOCKET_ERRNO);
 #endif
 
 	cooked_tty();
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 98ed6338d30ac5b9538a405052257ab24d002dc6..19c1f20210c241ef982e7ebc7e3549a35f02401b 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -359,8 +359,8 @@ int mail_close_socket(SOCKET *sock, int *sess)
 		startup->socket_open(startup->cbdata,FALSE);
 	stats.sockets--;
 	if(result!=0) {
-		if(ERROR_VALUE!=ENOTSOCK)
-			lprintf(LOG_WARNING,"%04d !ERROR %d closing socket",*sock, ERROR_VALUE);
+		if(SOCKET_ERRNO!=ENOTSOCK)
+			lprintf(LOG_WARNING,"%04d !ERROR %d closing socket",*sock, SOCKET_ERRNO);
 	}
 #if 0 /*def _DEBUG */
 	else
@@ -435,16 +435,16 @@ int sockprintf(SOCKET sock, const char* prot, CRYPT_SESSION sess, char *fmt, ...
 		// It looks like this could stutter on partial sends -- Deuce
 		while((result=sendsocket(sock,sbuf,len))!=len) {
 			if(result==SOCKET_ERROR) {
-				if(ERROR_VALUE==EWOULDBLOCK) {
+				if(SOCKET_ERRNO==EWOULDBLOCK) {
 					YIELD();
 					continue;
 				}
-				if(ERROR_VALUE==ECONNRESET)
+				if(SOCKET_ERRNO==ECONNRESET)
 					lprintf(LOG_NOTICE,"%04d %s Connection reset by peer on send",sock,prot);
-				else if(ERROR_VALUE==ECONNABORTED)
+				else if(SOCKET_ERRNO==ECONNABORTED)
 					lprintf(LOG_NOTICE,"%04d %s Connection aborted by peer on send",sock, prot);
 				else
-					lprintf(LOG_NOTICE,"%04d %s !ERROR %d sending on socket",sock,prot,ERROR_VALUE);
+					lprintf(LOG_NOTICE,"%04d %s !ERROR %d sending on socket",sock,prot,SOCKET_ERRNO);
 				free(sbuf);
 				return(0);
 			}
@@ -461,15 +461,15 @@ static void sockerror(SOCKET socket, const char* prot, int rd, const char* actio
 		lprintf(LOG_NOTICE,"%04d %s Socket closed by peer on %s"
 			,socket, prot, action);
 	else if(rd==SOCKET_ERROR) {
-		if(ERROR_VALUE==ECONNRESET)
+		if(SOCKET_ERRNO==ECONNRESET)
 			lprintf(LOG_NOTICE,"%04d %s Connection reset by peer on %s"
 				,socket, prot, action);
-		else if(ERROR_VALUE==ECONNABORTED)
+		else if(SOCKET_ERRNO==ECONNABORTED)
 			lprintf(LOG_NOTICE,"%04d %s Connection aborted by peer on %s"
 				,socket, prot, action);
 		else
 			lprintf(LOG_NOTICE,"%04d %s !SOCKET ERROR %d on %s"
-				,socket, prot, ERROR_VALUE, action);
+				,socket, prot, SOCKET_ERRNO, action);
 	} else
 		lprintf(LOG_WARNING,"%04d %s !SOCKET ERROR: unexpected return value %d from %s"
 			,socket, prot, rd, action);
@@ -1107,7 +1107,7 @@ static bool pop3_client_thread(pop3_t* pop3)
 	socklen_t addr_len = sizeof(server_addr);
 	if((i=getsockname(socket, &server_addr.addr, &addr_len))!=0) {
 		lprintf(LOG_CRIT,"%04d %s !ERROR %d (%d) getting local address/port of socket"
-			,socket, client.protocol, i, ERROR_VALUE);
+			,socket, client.protocol, i, SOCKET_ERRNO);
 		return false;
 	}
 
@@ -2988,7 +2988,7 @@ static bool smtp_client_thread(smtp_t* smtp)
 
 	if((i=getsockname(socket, &server_addr.addr, &addr_len))!=0) {
 		lprintf(LOG_CRIT, "%04d %s !ERROR %d (%d) getting address/port of socket"
-			,socket, client.protocol, i, ERROR_VALUE);
+			,socket, client.protocol, i, SOCKET_ERRNO);
 		return false;
 	}
 
@@ -5263,7 +5263,7 @@ static BOOL sendmail_open_socket(SOCKET *sock, CRYPT_SESSION *session)
 		mail_close_socket(sock, session);
 
 	if((*sock=socket(AF_INET, SOCK_STREAM, IPPROTO_IP))==INVALID_SOCKET) {
-		lprintf(LOG_ERR,"0000 SEND !ERROR %d opening socket", ERROR_VALUE);
+		lprintf(LOG_ERR,"0000 SEND !ERROR %d opening socket", SOCKET_ERRNO);
 		return FALSE;
 	}
 	mail_open_socket(*sock,"smtp|sendmail");
@@ -5272,7 +5272,7 @@ static BOOL sendmail_open_socket(SOCKET *sock, CRYPT_SESSION *session)
 		long nbio=1;
 		if((i=ioctlsocket(*sock, FIONBIO, &nbio))!=0) {
 			lprintf(LOG_ERR,"%04d SEND !ERROR %d (%d) disabling blocking on socket"
-				,*sock, i, ERROR_VALUE);
+				,*sock, i, SOCKET_ERRNO);
 			return FALSE;
 		}
 	}
@@ -5283,7 +5283,7 @@ static BOOL sendmail_open_socket(SOCKET *sock, CRYPT_SESSION *session)
 
 	i=bind(*sock,(struct sockaddr *)&addr, sizeof(addr));
 	if(i!=0) {
-		lprintf(LOG_ERR,"%04d SEND !ERROR %d (%d) binding socket", *sock, i, ERROR_VALUE);
+		lprintf(LOG_ERR,"%04d SEND !ERROR %d (%d) binding socket", *sock, i, SOCKET_ERRNO);
 		return FALSE;
 	}
 	return TRUE;
@@ -5975,7 +5975,7 @@ static void cleanup(int code)
 
 #ifdef _WINSOCKAPI_
 	if(WSAInitialized && WSACleanup()!=0)
-		lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",ERROR_VALUE);
+		lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",SOCKET_ERRNO);
 #endif
 	thread_down();
 	if(terminate_server || code) {
@@ -6383,7 +6383,7 @@ void mail_server(void* arg)
 
 				if((i=ioctlsocket(client_socket, FIONBIO, &l))!=0) {
 					lprintf(LOG_CRIT,"%04d %s !ERROR %d (%d) disabling blocking on socket"
-						,client_socket, servprot, i, ERROR_VALUE);
+						,client_socket, servprot, i, SOCKET_ERRNO);
 					sockprintf(client_socket, servprot, session, is_smtp ? smtp_error : pop_error, "ioctlsocket error");
 					mswait(3000);
 					mail_close_socket(&client_socket, &session);
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 1a1701a614201a5e2129a58a6a0f9e3cde460ebb..5cdb530bf386e100b623c32d0ab624f3c9c33dbe 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -403,8 +403,8 @@ int close_socket(SOCKET sock)
 	shutdown(sock,SHUT_RDWR);	/* required on Unix */
 	result=closesocket(sock);
 	call_socket_open_callback(false);
-	if(result!=0 && ERROR_VALUE!=ENOTSOCK)
-		lprintf(LOG_WARNING,"!ERROR %d closing socket %d",ERROR_VALUE,sock);
+	if(result!=0 && SOCKET_ERRNO!=ENOTSOCK)
+		lprintf(LOG_WARNING,"!ERROR %d closing socket %d",SOCKET_ERRNO,sock);
 	return(result);
 }
 
@@ -2252,23 +2252,23 @@ void input_thread(void *arg)
 #endif
 				if(!sbbs->online)	// sbbs_t::hangup() called?
 					break;
-				if(ERROR_VALUE == EAGAIN)
+				if(SOCKET_ERRNO == EAGAIN)
 					continue;
-	        	if(ERROR_VALUE == ENOTSOCK)
+				if(SOCKET_ERRNO == ENOTSOCK)
     	            lprintf(LOG_NOTICE,"Node %d socket closed by peer on receive", sbbs->cfg.node_num);
-        	    else if(ERROR_VALUE==ECONNRESET)
+				else if(SOCKET_ERRNO==ECONNRESET)
 					lprintf(LOG_NOTICE,"Node %d connection reset by peer on receive", sbbs->cfg.node_num);
-				else if(ERROR_VALUE==ESHUTDOWN)
+				else if(SOCKET_ERRNO==ESHUTDOWN)
 					lprintf(LOG_NOTICE,"Node %d socket shutdown on receive", sbbs->cfg.node_num);
-        	    else if(ERROR_VALUE==ECONNABORTED)
+				else if(SOCKET_ERRNO==ECONNABORTED)
 					lprintf(LOG_NOTICE,"Node %d connection aborted by peer on receive", sbbs->cfg.node_num);
 				else
 					lprintf(LOG_WARNING,"Node %d !ERROR %d receiving from socket %d"
-        	        	,sbbs->cfg.node_num, ERROR_VALUE, sock);
+						,sbbs->cfg.node_num, SOCKET_ERRNO, sock);
 				break;
 #ifdef __unix__
 			} else  {
-				if(ERROR_VALUE != EAGAIN)  {
+				if(SOCKET_ERRNO != EAGAIN)  {
 					lprintf(LOG_ERR,"Node %d !ERROR %d (%s) on local spy socket %d receive"
 						, sbbs->cfg.node_num, errno, strerror(errno), sock);
 					close_socket(uspy_socket[sbbs->cfg.node_num-1]);
@@ -2312,7 +2312,7 @@ void input_thread(void *arg)
 			if(socket_check(sbbs->passthru_socket, NULL, &writable, 1000) && writable) {
 				if(sendsocket(sbbs->passthru_socket, (char*)wrbuf, wr) != wr)
 					lprintf(LOG_ERR, "Node %d ERROR %d writing to passthru socket"
-						,sbbs->cfg.node_num, ERROR_VALUE);
+						,sbbs->cfg.node_num, SOCKET_ERRNO);
 			} else
 				lprintf(LOG_WARNING, "Node %d could not write to passthru socket (writable=%d)"
 					, sbbs->cfg.node_num, (int)writable);
@@ -2421,17 +2421,17 @@ void passthru_thread(void* arg)
 
 		if(rd == SOCKET_ERROR)
 		{
-	        if(ERROR_VALUE == ENOTSOCK)
+			if(SOCKET_ERRNO == ENOTSOCK)
     	        lprintf(LOG_NOTICE,"Node %d passthru socket closed by peer on receive", sbbs->cfg.node_num);
-        	else if(ERROR_VALUE==ECONNRESET)
+			else if(SOCKET_ERRNO==ECONNRESET)
 				lprintf(LOG_NOTICE,"Node %d passthru connection reset by peer on receive", sbbs->cfg.node_num);
-			else if(ERROR_VALUE==ESHUTDOWN)
+			else if(SOCKET_ERRNO==ESHUTDOWN)
 				lprintf(LOG_NOTICE,"Node %d passthru socket shutdown on receive", sbbs->cfg.node_num);
-        	else if(ERROR_VALUE==ECONNABORTED)
+			else if(SOCKET_ERRNO==ECONNABORTED)
 				lprintf(LOG_NOTICE,"Node %d passthru connection aborted by peer on receive", sbbs->cfg.node_num);
 			else
 				lprintf(LOG_WARNING,"Node %d !ERROR %d receiving from passthru socket %d"
-        	        ,sbbs->cfg.node_num, ERROR_VALUE, sbbs->passthru_socket);
+					,sbbs->cfg.node_num, SOCKET_ERRNO, sbbs->passthru_socket);
 			break;
 		}
 
@@ -2666,15 +2666,15 @@ void output_thread(void* arg)
 #endif
 			i=sendsocket(sbbs->client_socket, (char*)buf+bufbot, buftop-bufbot);
 		if(i==SOCKET_ERROR) {
-			if(ERROR_VALUE == ENOTSOCK)
+			if(SOCKET_ERRNO == ENOTSOCK)
 				lprintf(LOG_NOTICE,"%s client socket closed on send", node);
-			else if(ERROR_VALUE==ECONNRESET)
+			else if(SOCKET_ERRNO==ECONNRESET)
 				lprintf(LOG_NOTICE,"%s connection reset by peer on send", node);
-			else if(ERROR_VALUE==ECONNABORTED)
+			else if(SOCKET_ERRNO==ECONNABORTED)
 				lprintf(LOG_NOTICE,"%s connection aborted by peer on send", node);
 			else
 				lprintf(LOG_WARNING,"%s !ERROR %d (%s) sending on socket %d"
-					,node, ERROR_VALUE, SOCKET_STRERROR(errmsg, sizeof errmsg), sbbs->client_socket);
+					,node, SOCKET_ERRNO, SOCKET_STRERROR(errmsg, sizeof errmsg), sbbs->client_socket);
 			sbbs->online=false;
 			/* was break; on 4/7/00 */
 			i=buftop-bufbot;	// Pretend we sent it all
@@ -2697,12 +2697,12 @@ void output_thread(void* arg)
 						,node, result, errno, i, spy_topic);
 			}
 			if(spy_socket[sbbs->cfg.node_num-1]!=INVALID_SOCKET)
-				if(sendsocket(spy_socket[sbbs->cfg.node_num-1],(char*)buf+bufbot,i) != i && ERROR_VALUE != EPIPE)
-					lprintf(LOG_ERR, "%s ERROR %d writing to spy socket", node, ERROR_VALUE);
+				if(sendsocket(spy_socket[sbbs->cfg.node_num-1],(char*)buf+bufbot,i) != i && SOCKET_ERRNO != EPIPE)
+					lprintf(LOG_ERR, "%s ERROR %d writing to spy socket", node, SOCKET_ERRNO);
 #ifdef __unix__
 			if(uspy_socket[sbbs->cfg.node_num-1]!=INVALID_SOCKET)
 				if(sendsocket(uspy_socket[sbbs->cfg.node_num-1],(char*)buf+bufbot,i) != i)
-					lprintf(LOG_ERR, "%s ERROR %d writing to UNIX spy socket", node, ERROR_VALUE);
+					lprintf(LOG_ERR, "%s ERROR %d writing to UNIX spy socket", node, SOCKET_ERRNO);
 #endif
 		}
 
@@ -3557,7 +3557,7 @@ bool sbbs_t::init()
 		addr_len=sizeof(addr);
 		if((result=getsockname(client_socket, &addr.addr, &addr_len))!=0) {
 			lprintf(LOG_CRIT,"%04d %s !ERROR %d (%d) getting local address/port of socket"
-				,client_socket, client.protocol, result, ERROR_VALUE);
+				,client_socket, client.protocol, result, SOCKET_ERRNO);
 			return(false);
 		}
 		inet_addrtop(&addr, local_addr, sizeof(local_addr));
@@ -3972,11 +3972,11 @@ void sbbs_t::spymsg(const char* msg)
 
 	if(cfg.node_num && spy_socket[cfg.node_num-1]!=INVALID_SOCKET)
 		if(sendsocket(spy_socket[cfg.node_num-1],str,strlen(str)) < 1)
-			lprintf(LOG_ERR, "Node %d ERROR %d writing to spy socket", cfg.node_num, ERROR_VALUE);
+			lprintf(LOG_ERR, "Node %d ERROR %d writing to spy socket", cfg.node_num, SOCKET_ERRNO);
 #ifdef __unix__
 	if(cfg.node_num && uspy_socket[cfg.node_num-1]!=INVALID_SOCKET)
 		if(sendsocket(uspy_socket[cfg.node_num-1],str,strlen(str)) < 1)
-			lprintf(LOG_ERR, "Node %d ERROR %d writing to spy socket", cfg.node_num, ERROR_VALUE);
+			lprintf(LOG_ERR, "Node %d ERROR %d writing to spy socket", cfg.node_num, SOCKET_ERRNO);
 #endif
 }
 
@@ -4862,7 +4862,7 @@ static void cleanup(int code)
 
 #ifdef _WINSOCKAPI_
 	if(WSAInitialized && WSACleanup()!=0)
-		lprintf(LOG_ERR,"!WSACleanup ERROR %d",ERROR_VALUE);
+		lprintf(LOG_ERR,"!WSACleanup ERROR %d",SOCKET_ERRNO);
 #endif
 
 	free_cfg(&scfg);
@@ -5197,7 +5197,7 @@ void bbs_thread(void* arg)
 	/* open a socket and wait for a client */
 	ts_set = xpms_create(startup->bind_retry_count, startup->bind_retry_delay, lprintf);
 	if(ts_set==NULL) {
-		lprintf(LOG_CRIT,"!ERROR %d creating Terminal Server socket set", ERROR_VALUE);
+		lprintf(LOG_CRIT,"!ERROR %d creating Terminal Server socket set", SOCKET_ERRNO);
 		cleanup(1);
 		return;
 	}
@@ -5504,7 +5504,7 @@ NO_SSH:
 		socklen_t addr_len = sizeof(local_addr);
 		if(getsockname(client_socket, (struct sockaddr *)&local_addr, &addr_len) != 0) {
 			lprintf(LOG_CRIT,"%04d %s [%s] !ERROR %d getting local address/port of socket"
-				,client_socket, client.protocol, host_ip, ERROR_VALUE);
+				,client_socket, client.protocol, host_ip, SOCKET_ERRNO);
 			close_socket(client_socket);
 			continue;
 		}
@@ -5813,7 +5813,7 @@ NO_SSH:
 
 			if(tmp_sock == INVALID_SOCKET) {
 				lprintf(LOG_ERR,"Node %d !ERROR %d creating passthru listen socket"
-					,new_node->cfg.node_num, ERROR_VALUE);
+					,new_node->cfg.node_num, SOCKET_ERRNO);
 				goto NO_PASSTHRU;
 			}
 
@@ -5840,7 +5840,7 @@ NO_SSH:
 
 			if(result != 0) {
 				lprintf(LOG_ERR,"Node %d !ERROR %d (%d) listening on passthru socket"
-					,new_node->cfg.node_num, result, ERROR_VALUE);
+					,new_node->cfg.node_num, result, SOCKET_ERRNO);
 				close_socket(tmp_sock);
 				goto NO_PASSTHRU;
 			}
@@ -5848,7 +5848,7 @@ NO_SSH:
 			tmp_addr_len=sizeof(tmp_addr);
 			if(getsockname(tmp_sock, (struct sockaddr *)&tmp_addr, &tmp_addr_len)) {
 				lprintf(LOG_CRIT,"Node %d !ERROR %d getting passthru listener address/port of socket"
-					,new_node->cfg.node_num, ERROR_VALUE);
+					,new_node->cfg.node_num, SOCKET_ERRNO);
 				close_socket(tmp_sock);
 				goto NO_PASSTHRU;
 			}
@@ -5859,7 +5859,7 @@ NO_SSH:
 
 			if(new_node->passthru_socket == INVALID_SOCKET) {
 				lprintf(LOG_ERR,"Node %d !ERROR %d creating passthru connecting socket"
-					,new_node->cfg.node_num, ERROR_VALUE);
+					,new_node->cfg.node_num, SOCKET_ERRNO);
 				close_socket(tmp_sock);
 				goto NO_PASSTHRU;
 			}
@@ -5871,7 +5871,7 @@ NO_SSH:
 
 			if(result != 0) {
 				lprintf(LOG_ERR,"Node %d !ERROR %d (%d) connecting to passthru socket: %s port %u"
-					,new_node->cfg.node_num, result, ERROR_VALUE, inet_ntoa(tmp_addr.sin_addr), htons(tmp_addr.sin_port));
+					,new_node->cfg.node_num, result, SOCKET_ERRNO, inet_ntoa(tmp_addr.sin_addr), htons(tmp_addr.sin_port));
 				close_socket(new_node->passthru_socket);
 				new_node->passthru_socket=INVALID_SOCKET;
 				close_socket(tmp_sock);
@@ -5882,7 +5882,7 @@ NO_SSH:
 
 			if(new_node->client_socket_dup == INVALID_SOCKET) {
 				lprintf(LOG_ERR,"Node %d !ERROR (%d) accepting on passthru socket"
-					,new_node->cfg.node_num, ERROR_VALUE);
+					,new_node->cfg.node_num, SOCKET_ERRNO);
 				lprintf(LOG_WARNING,"Node %d !WARNING native doors which use sockets will not function"
 					,new_node->cfg.node_num);
 				close_socket(new_node->passthru_socket);
diff --git a/src/sbbs3/mxlookup.c b/src/sbbs3/mxlookup.c
index acb7886f12fa957fc176025f3ec219bf590f1c4e..a7c0f7a489f020d7a22b385b1d921571ad0c7afb 100644
--- a/src/sbbs3/mxlookup.c
+++ b/src/sbbs3/mxlookup.c
@@ -175,7 +175,7 @@ int dns_getmx(char* name, char* mx, char* mx2
 
 	sock = socket(AF_INET, use_tcp ? SOCK_STREAM : SOCK_DGRAM, IPPROTO_IP);
 	if(sock == INVALID_SOCKET)
-		return(ERROR_VALUE);
+		return(SOCKET_ERRNO);
 
 	mail_open_socket(sock, "dns");
 	
@@ -187,7 +187,7 @@ int dns_getmx(char* name, char* mx, char* mx2
 
 	if(result != 0) {
 		mail_close_socket(&sock, &sess);
-		return(ERROR_VALUE);
+		return(SOCKET_ERRNO);
 	}
 
 	memset(&addr,0,sizeof(addr));
@@ -197,7 +197,7 @@ int dns_getmx(char* name, char* mx, char* mx2
 	
 	if((result=connect(sock, (struct sockaddr *)&addr, sizeof(addr)))!=0) {
 		mail_close_socket(&sock, &sess);
-		return(ERROR_VALUE);
+		return(SOCKET_ERRNO);
 	}
 
 	memset(&msghdr,0,sizeof(msghdr));
@@ -252,7 +252,7 @@ int dns_getmx(char* name, char* mx, char* mx2
 	i=send(sock,msg+offset,len,0);
 	if(i!=len) {
 		if(i==SOCKET_ERROR)
-			result=ERROR_VALUE;
+			result=SOCKET_ERRNO;
 		else
 			result=-2;
 		mail_close_socket(&sock, &sess);
diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 8b5d5baafc375f7502b377f8c1db644408a92ead..abdc700ce607f6a40a1654ee95baf27ead2832eb 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -568,7 +568,7 @@ static bool winsock_cleanup(void)
 	if(WSACleanup()==0)
 		return(TRUE);
 
-	lprintf(LOG_ERR,"!WinSock cleanup ERROR %d",ERROR_VALUE);
+	lprintf(LOG_ERR,"!WinSock cleanup ERROR %d",SOCKET_ERRNO);
 	return(FALSE);
 }
 
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 688396a3b1ce3e99f07d7093370142c01aa8505f..ee361201010a865d1b33e0cfaae9edc3d9d73066 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -293,7 +293,7 @@ static int close_socket(SOCKET sock)
 	if(startup!=NULL && startup->socket_open!=NULL)
 		startup->socket_open(startup->cbdata,false);
 	if(result!=0)
-		lprintf(LOG_WARNING,"%04d !ERROR %d closing socket: %s",sock, ERROR_VALUE, SOCKET_STRERROR(err, sizeof(err)));
+		lprintf(LOG_WARNING,"%04d !ERROR %d closing socket: %s",sock, SOCKET_ERRNO, SOCKET_STRERROR(err, sizeof(err)));
 
 	return(result);
 }
@@ -1781,7 +1781,7 @@ static void cleanup(int code)
 	if(WSAInitialized) {
 		char err[128];
 		if(WSACleanup()!=0)
-			lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d: %s",ERROR_VALUE, SOCKET_STRERROR(err, sizeof(err)));
+			lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d: %s",SOCKET_ERRNO, SOCKET_STRERROR(err, sizeof(err)));
 		WSAInitialized = false;
 	}
 #endif
@@ -1829,14 +1829,14 @@ void service_udp_sock_cb(SOCKET sock, void *cbdata)
 	optval=true;
 	if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&optval,sizeof(optval))!=0) {
 		lprintf(LOG_ERR,"%04d !ERROR %d setting %s socket option: %s"
-			,sock, ERROR_VALUE, serv->protocol, SOCKET_STRERROR(err, sizeof(err)));
+			,sock, SOCKET_ERRNO, serv->protocol, SOCKET_STRERROR(err, sizeof(err)));
 		close_socket(sock);
 		return;
 	}
    #ifdef BSD
 	if(setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char*)&optval,sizeof(optval))!=0) {
 		lprintf(LOG_ERR,"%04d !ERROR %d setting %s socket option: %s"
-			,sock, ERROR_VALUE, serv->protocol, SOCKET_STRERROR(err, sizeof(err)));
+			,sock, SOCKET_ERRNO, serv->protocol, SOCKET_STRERROR(err, sizeof(err)));
 		close_socket(sock);
 		return;
 	}
@@ -2172,11 +2172,11 @@ void services_thread(void* arg)
 				if(result==0)
 					continue;
 
-				if(ERROR_VALUE==EINTR)
+				if(SOCKET_ERRNO==EINTR)
 					lprintf(LOG_DEBUG,"0000 Services listening interrupted");
 				else
 					lprintf(LOG_WARNING,"0000 !ERROR %d polling sockets: %s"
-						, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+						, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 				continue;
 			}
 			nfdsi = 0;
@@ -2215,13 +2215,13 @@ void services_thread(void* arg)
 				if(result==0)
 					continue;
 
-				if(ERROR_VALUE==EINTR)
+				if(SOCKET_ERRNO==EINTR)
 					lprintf(LOG_DEBUG,"0000 Services listening interrupted");
-				else if(ERROR_VALUE == ENOTSOCK)
+				else if(SOCKET_ERRNO == ENOTSOCK)
             		lprintf(LOG_NOTICE,"0000 Services sockets closed");
 				else
 					lprintf(LOG_WARNING,"0000 !ERROR %d selecting sockets: %s"
-						, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+						, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 				continue;
 			}
 
@@ -2253,7 +2253,7 @@ void services_thread(void* arg)
 						if(udp_len<1) {
 							FREE_AND_NULL(udp_buf);
 							lprintf(LOG_WARNING,"%04d %s !ERROR %d recvfrom failed: %s"
-								,service[i].set->socks[j].sock, service[i].protocol, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+								,service[i].set->socks[j].sock, service[i].protocol, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 							continue;
 						}
 
@@ -2261,7 +2261,7 @@ void services_thread(void* arg)
 							==INVALID_SOCKET) {
 							FREE_AND_NULL(udp_buf);
 							lprintf(LOG_ERR,"%04d %s !ERROR %d opening socket: %s"
-								,service[i].set->socks[j].sock, service[i].protocol, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+								,service[i].set->socks[j].sock, service[i].protocol, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 							continue;
 						}
 
@@ -2274,7 +2274,7 @@ void services_thread(void* arg)
 							,(char*)&optval,sizeof(optval))!=0) {
 							FREE_AND_NULL(udp_buf);
 							lprintf(LOG_ERR,"%04d %s !ERROR %d setting socket option: %s"
-								,client_socket, service[i].protocol, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+								,client_socket, service[i].protocol, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 							close_socket(client_socket);
 							continue;
 						}
@@ -2283,7 +2283,7 @@ void services_thread(void* arg)
 							,(char*)&optval,sizeof(optval))!=0) {
 							FREE_AND_NULL(udp_buf);
 							lprintf(LOG_ERR,"%04d %s !ERROR %d setting socket option: %s"
-								,client_socket, service[i].protocol, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+								,client_socket, service[i].protocol, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 							close_socket(client_socket);
 							continue;
 						}
@@ -2296,14 +2296,14 @@ void services_thread(void* arg)
 							/* Failed to re-bind to same port number, use user port */
 							lprintf(LOG_NOTICE,"%04d %s ERROR %d re-binding socket to port %u failed, "
 								"using user port: %s"
-								,client_socket, service[i].protocol, ERROR_VALUE, service[i].port, SOCKET_STRERROR(error,sizeof(error)));
+								,client_socket, service[i].protocol, SOCKET_ERRNO, service[i].port, SOCKET_STRERROR(error,sizeof(error)));
 							inet_setaddrport(&addr, 0);
 							result=bind(client_socket, (struct sockaddr *) &addr, addr_len);
 						}
 						if(result!=0) {
 							FREE_AND_NULL(udp_buf);
 							lprintf(LOG_ERR,"%04d %s !ERROR %d re-binding socket to port %u: %s"
-								,client_socket, service[i].protocol, ERROR_VALUE, service[i].port, SOCKET_STRERROR(error,sizeof(error)));
+								,client_socket, service[i].protocol, SOCKET_ERRNO, service[i].port, SOCKET_STRERROR(error,sizeof(error)));
 							close_socket(client_socket);
 							continue;
 						}
@@ -2313,7 +2313,7 @@ void services_thread(void* arg)
 							,(struct sockaddr *)&client_addr, client_addr_len)!=0) {
 							FREE_AND_NULL(udp_buf);
 							lprintf(LOG_ERR,"%04d %s !ERROR %d connect failed: %s"
-								,client_socket, service[i].protocol, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+								,client_socket, service[i].protocol, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 							close_socket(client_socket);
 							continue;
 						}
@@ -2322,12 +2322,12 @@ void services_thread(void* arg)
 						/* TCP */
 						if((client_socket=accept(service[i].set->socks[j].sock
 							,(struct sockaddr *)&client_addr, &client_addr_len))==INVALID_SOCKET) {
-							if(ERROR_VALUE == ENOTSOCK || ERROR_VALUE == EINVAL)
+							if(SOCKET_ERRNO == ENOTSOCK || SOCKET_ERRNO == EINVAL)
 								lprintf(LOG_NOTICE,"%04d %s socket closed while listening"
 									,service[i].set->socks[j].sock, service[i].protocol);
 							else
 								lprintf(LOG_WARNING,"%04d %s !ERROR %d accepting connection: %s"
-									,service[i].set->socks[j].sock, service[i].protocol, ERROR_VALUE, SOCKET_STRERROR(error,sizeof(error)));
+									,service[i].set->socks[j].sock, service[i].protocol, SOCKET_ERRNO, SOCKET_STRERROR(error,sizeof(error)));
 	#ifdef _WIN32
 							if(WSAGetLastError()==WSAENOBUFS)	/* recycle (re-init WinSock) on this error */
 								break;
@@ -2350,7 +2350,7 @@ void services_thread(void* arg)
 					socklen_t addr_len = sizeof(local_addr);
 					if(getsockname(client_socket, (struct sockaddr *)&local_addr, &addr_len) != 0) {
 						lprintf(LOG_CRIT,"%04d %s [%s] !ERROR %d getting local address/port of socket"
-							,client_socket, service[i].protocol, host_ip, ERROR_VALUE);
+							,client_socket, service[i].protocol, host_ip, SOCKET_ERRNO);
 						FREE_AND_NULL(udp_buf);
 						close_socket(client_socket);
 						continue;
diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c
index 67be9b3e9dec205bfa6d0128c38ed63171be2915..17a93602833244252952fbab2f60b3eb983f153a 100644
--- a/src/sbbs3/sexyz.c
+++ b/src/sbbs3/sexyz.c
@@ -347,7 +347,7 @@ int sendbuf(SOCKET s, void *buf, size_t buflen)
 #endif
 			ret=sendsocket(s,(char *)buf+sent,buflen-sent);
 		if(ret==SOCKET_ERROR) {
-			switch(ERROR_VALUE) {
+			switch(SOCKET_ERRNO) {
 				case EAGAIN:
 				case ENOBUFS:
 #if (EAGAIN != EWOULDBLOCK)
@@ -363,8 +363,8 @@ int sendbuf(SOCKET s, void *buf, size_t buflen)
 						FD_SET(sock,&socket_set);
 
 					if((ret=select(sock+1,NULL,&socket_set,NULL,NULL))<1) {
-						if(ret==SOCKET_ERROR && ERROR_VALUE != EINTR) {
-							lprintf(LOG_ERR,"ERROR %d selecting socket", ERROR_VALUE);
+						if(ret==SOCKET_ERROR && SOCKET_ERRNO != EINTR) {
+							lprintf(LOG_ERR,"ERROR %d selecting socket", SOCKET_ERRNO);
 							goto disconnect;
 						}
 					}
@@ -408,7 +408,7 @@ void send_telnet_cmd(SOCKET sock, uchar cmd, uchar opt)
 
 /*
  * Returns -1 on disconnect, 0 on timeout, or the number of bytes read.
- * Does not muck around with ERROR_VALUE (hopefully)
+ * Does not muck around with SOCKET_ERRNO (hopefully)
  */
 static int recv_buffer(int timeout /* seconds */)
 {
@@ -439,7 +439,7 @@ static int recv_buffer(int timeout /* seconds */)
 		{
 			i=recv(sock,inbuf,sizeof(inbuf),0);
 			if(i==SOCKET_ERROR)
-				magic_errno=ERROR_VALUE;
+				magic_errno=SOCKET_ERRNO;
 		}
 		if(i==SOCKET_ERROR) {
 			switch(magic_errno) {
@@ -527,7 +527,7 @@ int recv_byte(void* unused, unsigned timeout /* seconds */)
 			if(i==0) {
 				lprintf(LOG_WARNING,"Socket Disconnected");
 			} else
-				lprintf(LOG_ERR,"recv error %d (%d)",i,ERROR_VALUE);
+				lprintf(LOG_ERR,"recv error %d (%d)",i,SOCKET_ERRNO);
 			return(NOINP); 
 		}
 
@@ -651,7 +651,7 @@ int send_byte(void* unused, uchar ch, unsigned timeout)
 		buf[0]=ch;
 
 	i=sendbuf(sock,buf,len);
-	
+
 	if(i==len) {
 		if(debug_tx)
 			lprintf(LOG_DEBUG,"TX: %s",chr(ch));
@@ -689,7 +689,7 @@ static void output_thread(void* arg)
 			WaitForEvent(outbuf.data_event, INFINITE);
 			if(outbuf.highwater_mark)
 				WaitForEvent(outbuf.highwater_event, outbuf_drain_timeout);
-			continue; 
+			continue;
 		}
 
         if(bufbot==buftop) { /* linear buf empty, read from ring buf */
@@ -703,15 +703,15 @@ static void output_thread(void* arg)
         }
 		i=sendbuf(sock, (char*)buf+bufbot, buftop-bufbot);
 		if(i==SOCKET_ERROR) {
-        	if(ERROR_VALUE == ENOTSOCK)
+			if(SOCKET_ERRNO == ENOTSOCK)
                 lprintf(LOG_ERR,"client socket closed on send");
-            else if(ERROR_VALUE==ECONNRESET) 
+			else if(SOCKET_ERRNO==ECONNRESET)
 				lprintf(LOG_ERR,"connection reset by peer on send");
-            else if(ERROR_VALUE==ECONNABORTED) 
+			else if(SOCKET_ERRNO==ECONNABORTED)
 				lprintf(LOG_ERR,"connection aborted by peer on send");
 			else
 				lprintf(LOG_ERR,"ERROR %d sending on socket %d"
-                	,ERROR_VALUE, sock);
+					,SOCKET_ERRNO, sock);
 			break;
 		}
 
diff --git a/src/sbbs3/sockopts.c b/src/sbbs3/sockopts.c
index 1bbdd38e6f90a138bfa324483214fd3cf4baca01..02f7853d1dabce09fb81cbde8d492372b76c280a 100644
--- a/src/sbbs3/sockopts.c
+++ b/src/sbbs3/sockopts.c
@@ -35,7 +35,7 @@ int set_socket_options(scfg_t* cfg, SOCKET sock, const char* protocol, char* err
 	result=getsockopt(sock,SOL_SOCKET,SO_TYPE,(void*)&type,&len);
 	if(result) {
 		safe_snprintf(error,errlen,"%d getting socket option type (%d)"
-			,ERROR_VALUE, SO_TYPE);
+			,SOCKET_ERRNO, SO_TYPE);
 		return(result);
 	}
 
diff --git a/src/sbbs3/telgate.cpp b/src/sbbs3/telgate.cpp
index dfb4d4c0b00a37597d5e69bf795a56dbbf0dd6d2..9bf0e3f608327be1d67719b07206d93a6c33fa93 100644
--- a/src/sbbs3/telgate.cpp
+++ b/src/sbbs3/telgate.cpp
@@ -277,8 +277,8 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 	addr.sin_family = AF_INET;
 
 	if((i=bind(remote_socket, (struct sockaddr *) &addr, sizeof (addr)))!=0) {
-		lprintf(LOG_NOTICE,"!TELGATE ERROR %d (%d) binding to socket %d",i, ERROR_VALUE, remote_socket);
-		bprintf("!ERROR %d (%d) binding to socket\r\n",i, ERROR_VALUE);
+		lprintf(LOG_NOTICE,"!TELGATE ERROR %d (%d) binding to socket %d",i, SOCKET_ERRNO, remote_socket);
+		bprintf("!ERROR %d (%d) binding to socket\r\n",i, SOCKET_ERRNO);
 		close_socket(remote_socket);
 		return false;
 	}
@@ -291,7 +291,7 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 	l=1;
 	if((i = ioctlsocket(remote_socket, FIONBIO, &l))!=0) {
 		lprintf(LOG_NOTICE,"!TELGATE ERROR %d (%d) disabling socket blocking"
-			,i, ERROR_VALUE);
+			,i, SOCKET_ERRNO);
 		close_socket(remote_socket);
 		return false;
 	}
@@ -303,9 +303,9 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 
 	if((i=nonblocking_connect(remote_socket, (struct sockaddr *)&addr, sizeof(addr), timeout))!=0) {
 		lprintf(LOG_NOTICE,"!TELGATE ERROR %d (%d) connecting to server: %s"
-			,i,ERROR_VALUE, destaddr);
+			,i,SOCKET_ERRNO, destaddr);
 		bprintf("!ERROR %d (%d) connecting to server: %s\r\n"
-			,i,ERROR_VALUE, destaddr);
+			,i,SOCKET_ERRNO, destaddr);
 		close_socket(remote_socket);
 		return false;
 	}
@@ -331,7 +331,7 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 		p++;	// Add NULL
 		l=p-(char*)buf;
 		if(sendsocket(remote_socket,(char*)buf,l) != (ssize_t)l)
-			lprintf(LOG_WARNING, "Error %d sending %lu bytes to server: %s", ERROR_VALUE, l, destaddr);
+			lprintf(LOG_WARNING, "Error %d sending %lu bytes to server: %s", SOCKET_ERRNO, l, destaddr);
 		mode|=TG_NOLF;	/* Send LF (to remote host) when Telnet client sends CRLF (when not in binary mode) */
 	} else if(!(mode & TG_RAW)) {
 		proxy = new TelnetProxy(remote_socket, this);
@@ -353,7 +353,7 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 		for(i = 0; send_strings[i] != NULL; ++i) {
 			ssize_t len = strlen(send_strings[i]);
 			if(sendsocket(remote_socket, send_strings[i], len) != len)
-				lprintf(LOG_WARNING, "Error %d sending %d character to server: %s", ERROR_VALUE, (int)len, destaddr);
+				lprintf(LOG_WARNING, "Error %d sending %d character to server: %s", SOCKET_ERRNO, (int)len, destaddr);
 		}
 	}
 
@@ -423,19 +423,19 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 				{
 					if((i=sendsocket(remote_socket,(char*)buf,rd))>=0)
 						break;
-					if(ERROR_VALUE!=EWOULDBLOCK)
+					if(SOCKET_ERRNO!=EWOULDBLOCK)
 						break;
 					mswait(500);
 				} 
 				if(i<0) {
-					lprintf(LOG_NOTICE,"!TELGATE ERROR %d sending on socket %d",ERROR_VALUE,remote_socket);
+					lprintf(LOG_NOTICE,"!TELGATE ERROR %d sending on socket %d",SOCKET_ERRNO,remote_socket);
 					break;
 				}
 			}
 		}
 		rd=recv(remote_socket,(char*)buf,sizeof(buf),0);
 		if(rd<0) {
-			if(ERROR_VALUE==EWOULDBLOCK) {
+			if(SOCKET_ERRNO==EWOULDBLOCK) {
 				if(mode&TG_NODESYNC) {
 					sync();
 				} else {
@@ -447,7 +447,7 @@ bool sbbs_t::telnet_gate(char* destaddr, uint mode, unsigned timeout, str_list_t
 				YIELD();
 				continue;
 			}
-			lprintf(LOG_NOTICE,"!TELGATE ERROR %d receiving on socket %d",ERROR_VALUE,remote_socket);
+			lprintf(LOG_NOTICE,"!TELGATE ERROR %d receiving on socket %d",SOCKET_ERRNO,remote_socket);
 			break;
 		}
 		if(!rd) {
diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index c91f966510ed728cf18b413b811e28f99be41e61..3b77c20b953f15559ae2ed8e453d58ad4560d0fb 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -686,16 +686,16 @@ static int sess_sendbuf(http_session_t *session, const char *buf, size_t len, vo
 			else {
 				result=sendsocket(session->socket,buf+sent,len-sent);
 				if(result==SOCKET_ERROR) {
-					if(ERROR_VALUE==ECONNRESET)
+					if(SOCKET_ERRNO==ECONNRESET)
 						lprintf(LOG_NOTICE,"%04d Connection reset by peer on send",session->socket);
-					else if(ERROR_VALUE==ECONNABORTED)
+					else if(SOCKET_ERRNO==ECONNABORTED)
 						lprintf(LOG_NOTICE,"%04d Connection aborted by peer on send",session->socket);
 #ifdef EPIPE
-					else if(ERROR_VALUE==EPIPE)
+					else if(SOCKET_ERRNO==EPIPE)
 						lprintf(LOG_NOTICE,"%04d Unable to send to peer",session->socket);
 #endif
 					else if(session->socket != INVALID_SOCKET)
-						lprintf(LOG_WARNING,"%04d !ERROR %d sending on socket",session->socket,ERROR_VALUE);
+						lprintf(LOG_WARNING,"%04d !ERROR %d sending on socket",session->socket,SOCKET_ERRNO);
 					*failed=true;
 					return(sent);
 				}
@@ -1013,8 +1013,8 @@ static int close_socket(SOCKET *sock)
 		startup->socket_open(startup->cbdata,false);
 	}
 	if(result!=0) {
-		if(ERROR_VALUE!=ENOTSOCK)
-			lprintf(LOG_WARNING,"%04d !ERROR %d closing socket",*sock, ERROR_VALUE);
+		if(SOCKET_ERRNO!=ENOTSOCK)
+			lprintf(LOG_WARNING,"%04d !ERROR %d closing socket",*sock, SOCKET_ERRNO);
 	}
 
 	return(result);
@@ -1512,7 +1512,7 @@ static off_t sock_sendfile(http_session_t *session,char *path, off_t start, off_
 	else {
 		if(start || end) {
 			if(lseek(file, start, SEEK_SET)==-1) {
-				lprintf(LOG_WARNING,"%04d !ERROR %d seeking to position %" PRIuOFF " in %s",session->socket,ERROR_VALUE,start,path);
+				lprintf(LOG_WARNING,"%04d !ERROR %d seeking to position %" PRIuOFF " in %s",session->socket,SOCKET_ERRNO,start,path);
 				close(file);
 				return(0);
 			}
@@ -2218,10 +2218,10 @@ static int sockreadline(http_session_t * session, char *buf, size_t length)
 
 		switch(sess_recv(session, &ch, 1, 0)) {
 			case -1:
-				if(session->is_tls || ERROR_VALUE!=EAGAIN) {
+				if(session->is_tls || SOCKET_ERRNO!=EAGAIN) {
 					if (!session->is_tls) {
 						if(startup->options&WEB_OPT_DEBUG_RX)
-							lprintf(LOG_DEBUG,"%04d !ERROR %d receiving on socket",session->socket,ERROR_VALUE);
+							lprintf(LOG_DEBUG,"%04d !ERROR %d receiving on socket",session->socket,SOCKET_ERRNO);
 					}
 					close_session_socket(session);
 					return(-1);
@@ -2329,7 +2329,7 @@ static int recvbufsocket(http_session_t *session, char *buf, long count)
 		i=sess_recv(session,buf+rd,count-rd,0);
 		switch(i) {
 			case -1:
-				if (ERROR_VALUE == EAGAIN && !session->is_tls)
+				if (SOCKET_ERRNO == EAGAIN && !session->is_tls)
 					break;
 				// Fall-through...
 			case 0:
@@ -3183,7 +3183,7 @@ static bool get_request_headers(http_session_t * session)
 		/* Multi-line headers */
 		while((i=sess_recv(session,&next_char,1,MSG_PEEK))>0
 			&& (next_char=='\t' || next_char==' ')) {
-			if(i==-1 && (session->is_tls || ERROR_VALUE != EAGAIN))
+			if(i==-1 && (session->is_tls || SOCKET_ERRNO != EAGAIN))
 				close_session_socket(session);
 			i=strlen(head_line);
 			if(i>sizeof(head_line)-1) {
@@ -4022,7 +4022,7 @@ static SOCKET fastcgi_connect(const char *orig_path, SOCKET client_sock)
 #endif
 		if(connect(sock, (struct sockaddr*)&addr, addr_len) != 0) {
 			lprintf(LOG_ERR, "%04d ERROR %d connecting to UNIX domain FastCGI socket: %s"
-				,client_sock, ERROR_VALUE, addr.sun_path);
+				,client_sock, SOCKET_ERRNO, addr.sun_path);
 			closesocket(sock);
 			sock = INVALID_SOCKET;
 		}
@@ -4050,7 +4050,7 @@ static SOCKET fastcgi_connect(const char *orig_path, SOCKET client_sock)
 			result=connect(sock, cur->ai_addr, cur->ai_addrlen);
 
 			if (result==SOCKET_ERROR) {
-				if((ERROR_VALUE==EWOULDBLOCK || ERROR_VALUE==EINPROGRESS)) {
+				if((SOCKET_ERRNO==EWOULDBLOCK || SOCKET_ERRNO==EINPROGRESS)) {
 					if (socket_writable(sock, 1000 /* TODO: Make configurable! */))
 						result=0;	/* success */
 					else
@@ -4832,7 +4832,7 @@ static bool exec_fastcgi(http_session_t *session)
 	int result = sendsocket(sock, (void *)msg, msglen);
 	if (result != msglen) {
 		lprintf(LOG_ERR, "%04d %s [%s] !ERROR %d sending %d bytes to FastCGI socket (send returned %d)"
-			,session->socket, session->client.protocol, session->host_ip, ERROR_VALUE, msglen, result);
+			,session->socket, session->client.protocol, session->host_ip, SOCKET_ERRNO, msglen, result);
 		free(msg);
 		closesocket(sock);
 		return false;
@@ -7000,7 +7000,7 @@ static void cleanup(int code)
 
 #ifdef _WINSOCKAPI_
 	if(WSAInitialized && WSACleanup()!=0)
-		lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",ERROR_VALUE);
+		lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",SOCKET_ERRNO);
 #endif
 
 	thread_down();
@@ -7319,7 +7319,7 @@ void web_server(void* arg)
 		ws_set = xpms_create(startup->bind_retry_count, startup->bind_retry_delay, lprintf);
 
 		if(ws_set == NULL) {
-			lprintf(LOG_CRIT,"!ERROR %d creating HTTP socket set", ERROR_VALUE);
+			lprintf(LOG_CRIT,"!ERROR %d creating HTTP socket set", SOCKET_ERRNO);
 			cleanup(1);
 			return;
 		}
@@ -7466,7 +7466,7 @@ void web_server(void* arg)
 			socklen_t addr_len = sizeof(local_addr);
 			if(getsockname(client_socket, (struct sockaddr *)&local_addr, &addr_len) != 0) {
 				lprintf(LOG_CRIT,"%04d %s !ERROR %d getting local address/port of socket"
-					,client_socket, session->is_tls ? "HTTPS":"HTTP", ERROR_VALUE);
+					,client_socket, session->is_tls ? "HTTPS":"HTTP", SOCKET_ERRNO);
 				close_socket(&client_socket);
 				continue;
 			}