frontlib/nonblocksockets.c
changeset 7162 fe76d24a25d7
parent 7160 c42949cfdd92
child 7166 8d1d6adf5f82
--- a/frontlib/nonblocksockets.c	Thu May 31 18:54:40 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#include "nonblocksockets.h"
-#include "logging.h"
-#include <stdlib.h>
-
-static uint32_t get_peer_ip(TCPsocket sock) {
-	IPaddress *addr = SDLNet_TCP_GetPeerAddress(sock);
-	return SDLNet_Read32(&addr->host);
-}
-
-static bool connection_is_local(TCPsocket sock) {
-	return get_peer_ip(sock) == (uint32_t)((127UL<<24)+1); // 127.0.0.1
-}
-
-void flib_nbsocket_close(NonBlockSocket *nbsockptr) {
-	NonBlockSocket nbsock = *nbsockptr;
-	if(nbsock!=NULL) {
-		SDLNet_DelSocket(nbsock->sockset, (SDLNet_GenericSocket)nbsock->sock);
-		SDLNet_TCP_Close(nbsock->sock);
-		SDLNet_FreeSocketSet(nbsock->sockset);
-	}
-	free(nbsock);
-	*nbsockptr = NULL;
-}
-
-NonBlockSocket flib_nbsocket_accept(TCPsocket listensocket, bool localOnly) {
-	NonBlockSocket result = NULL;
-	if(!listensocket) {
-		flib_log_e("Attempt to accept a connection on a NULL socket.");
-		return NULL;
-	}
-	while(result==NULL) {
-		TCPsocket sock = SDLNet_TCP_Accept(listensocket);
-		if(!sock) {
-			// No incoming connections
-			return NULL;
-		}
-		if(localOnly && !connection_is_local(sock)) {
-			flib_log_i("Rejected nonlocal connection attempt from %s", flib_format_ip(get_peer_ip(sock)));
-			SDLNet_TCP_Close(sock);
-		} else {
-			result = malloc(sizeof(_NonBlockSocket));
-			if(result==NULL) {
-				flib_log_e("Out of memory!");
-				SDLNet_TCP_Close(sock);
-				return NULL;
-			}
-			result->sock = sock;
-			result->sockset = SDLNet_AllocSocketSet(1);
-			if(result->sockset==NULL) {
-				flib_log_e("Out of memory!");
-				SDLNet_TCP_Close(sock);
-				free(result);
-				return NULL;
-			}
-			SDLNet_AddSocket(result->sockset, (SDLNet_GenericSocket)result->sock);
-		}
-	}
-	return result;
-}
-
-int flib_nbsocket_recv(NonBlockSocket sock, void *data, int maxlen) {
-	if(!sock) {
-		flib_log_e("Attempt to receive on a NULL socket.");
-		return -1;
-	}
-	int readySockets = SDLNet_CheckSockets(sock->sockset, 0);
-	if(readySockets>0) {
-		int size = SDLNet_TCP_Recv(sock->sock, data, maxlen);
-		return size>0 ? size : -1;
-	} else if(readySockets==0) {
-		return 0;
-	} else {
-		flib_log_e("Error in select system call: %s", SDLNet_GetError());
-		return -1;
-	}
-}