net_udp.c, net_wins.c, net_wipx.c: Add more informative debug messages.

git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@227 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
Ozkan Sezer 2010-06-22 18:11:00 +00:00
parent bfe38b58b4
commit 42c47095a1
3 changed files with 75 additions and 14 deletions

View file

@ -38,6 +38,7 @@ static in_addr_t myAddr;
sys_socket_t UDP_Init (void)
{
int err;
char *colon;
char buff[MAXHOSTNAMELEN];
struct hostent *local;
@ -50,7 +51,9 @@ sys_socket_t UDP_Init (void)
myAddr = htonl(INADDR_LOOPBACK);
if (gethostname(buff, MAXHOSTNAMELEN) != 0)
{
Con_SafePrintf("UDP_Init: WARNING: gethostname failed\n");
err = SOCKETERRNO;
Con_SafePrintf("UDP_Init: gethostname failed (%s)\n",
socketerror(err));
}
else
{
@ -58,7 +61,8 @@ sys_socket_t UDP_Init (void)
local = gethostbyname(buff);
if (local == NULL)
{
Con_SafePrintf("UDP_Init: WARNING: gethostbyname failed\n");
Con_SafePrintf("UDP_Init: gethostbyname failed (%s)\n",
hstrerror(h_errno));
}
else
{
@ -124,9 +128,14 @@ sys_socket_t UDP_OpenSocket (int port)
sys_socket_t newsocket;
struct sockaddr_in address;
int _true = 1;
int err;
if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
{
err = SOCKETERRNO;
Con_SafePrintf("UDP_OpenSocket: %s\n", socketerror(err));
return INVALID_SOCKET;
}
if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR)
goto ErrorReturn;
@ -139,6 +148,8 @@ sys_socket_t UDP_OpenSocket (int port)
return newsocket;
ErrorReturn:
err = SOCKETERRNO;
Con_SafePrintf("UDP_OpenSocket: %s\n", socketerror(err));
UDP_CloseSocket (newsocket);
return INVALID_SOCKET;
}
@ -228,7 +239,8 @@ sys_socket_t UDP_CheckNewConnections (void)
if (ioctl (net_acceptsocket, FIONREAD, &available) == -1)
{
Sys_Error ("UDP: ioctlsocket (FIONREAD) failed");
int err = SOCKETERRNO;
Sys_Error ("UDP: ioctlsocket (FIONREAD) failed (%s)", socketerror(err));
}
if (available)
return net_acceptsocket;
@ -250,6 +262,7 @@ int UDP_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr)
int err = SOCKETERRNO;
if (err == EWOULDBLOCK || err == ECONNREFUSED)
return 0;
Con_SafePrintf ("UDP_Read, recvfrom: %s\n", socketerror(err));
}
return ret;
}
@ -264,6 +277,8 @@ static int UDP_MakeSocketBroadcastCapable (sys_socket_t socketid)
if (setsockopt(socketid, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i))
== SOCKET_ERROR)
{
int err = SOCKETERRNO;
Con_SafePrintf ("UDP, setsockopt: %s\n", socketerror(err));
return -1;
}
net_broadcastsocket = socketid;
@ -305,6 +320,7 @@ int UDP_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr
int err = SOCKETERRNO;
if (err == EWOULDBLOCK)
return 0;
Con_SafePrintf ("UDP_Write, sendto: %s\n", socketerror(err));
}
return ret;
}
@ -376,7 +392,7 @@ int UDP_GetNameFromAddr (struct qsockaddr *addr, char *name)
//=============================================================================
int UDP_GetAddrFromName(char *name, struct qsockaddr *addr)
int UDP_GetAddrFromName (char *name, struct qsockaddr *addr)
{
struct hostent *hostentry;

View file

@ -37,6 +37,8 @@ static in_addr_t myAddr;
int winsock_initialized = 0;
WSADATA winsockdata;
#define __wsaerr_static /* not static: used by net_wipx.c too */
#include "wsaerror.h"
//=============================================================================
@ -73,20 +75,31 @@ static void WINS_GetLocalAddress (void)
struct hostent *local = NULL;
char buff[MAXHOSTNAMELEN];
in_addr_t addr;
int err;
if (myAddr != INADDR_ANY)
return;
if (gethostname(buff, MAXHOSTNAMELEN) == SOCKET_ERROR)
{
err = SOCKETERRNO;
Con_SafePrintf("WINS_GetLocalAddress: gethostname failed (%s)\n",
socketerror(err));
return;
}
buff[MAXHOSTNAMELEN - 1] = 0;
blocktime = Sys_FloatTime();
WSASetBlockingHook(BlockingHook);
local = gethostbyname(buff);
err = WSAGetLastError();
WSAUnhookBlockingHook();
if (local == NULL)
{
Con_SafePrintf("WINS_GetLocalAddress: gethostbyname failed (%s)\n",
__WSAE_StrError(err));
return;
}
myAddr = *(in_addr_t *)local->h_addr_list[0];
@ -108,7 +121,8 @@ sys_socket_t WINS_Init (void)
err = WSAStartup(MAKEWORD(1,1), &winsockdata);
if (err != 0)
{
Con_SafePrintf ("Winsock initialization failed.\n");
Con_SafePrintf("Winsock initialization failed (%s)\n",
socketerror(err));
return INVALID_SOCKET;
}
}
@ -117,7 +131,9 @@ sys_socket_t WINS_Init (void)
// determine my name & address
if (gethostname(buff, MAXHOSTNAMELEN) != 0)
{
Con_SafePrintf("WINS_Init: WARNING: gethostname failed\n");
err = SOCKETERRNO;
Con_SafePrintf("WINS_Init: gethostname failed (%s)\n",
socketerror(err));
}
else
{
@ -201,9 +217,14 @@ sys_socket_t WINS_OpenSocket (int port)
sys_socket_t newsocket;
struct sockaddr_in address;
u_long _true = 1;
int err;
if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
{
err = SOCKETERRNO;
Con_SafePrintf("WINS_OpenSocket: %s\n", socketerror(err));
return INVALID_SOCKET;
}
if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR)
goto ErrorReturn;
@ -217,11 +238,17 @@ sys_socket_t WINS_OpenSocket (int port)
if (tcpipAvailable)
{
Sys_Error ("Unable to bind to %s", WINS_AddrToString((struct qsockaddr *)&address));
err = SOCKETERRNO;
Sys_Error ("Unable to bind to %s (%s)",
WINS_AddrToString ((struct qsockaddr *) &address),
socketerror(err));
return INVALID_SOCKET; /* not reached */
}
/* else: we are still in init phase, no need to error */
ErrorReturn:
err = SOCKETERRNO;
Con_SafePrintf("WINS_OpenSocket: %s\n", socketerror(err));
closesocket (newsocket);
return INVALID_SOCKET;
}
@ -328,6 +355,7 @@ int WINS_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr
int err = SOCKETERRNO;
if (err == EWOULDBLOCK || err == ECONNREFUSED)
return 0;
Con_SafePrintf ("WINS_Read, recvfrom: %s\n", socketerror(err));
}
return ret;
}
@ -342,6 +370,8 @@ static int WINS_MakeSocketBroadcastCapable (sys_socket_t socketid)
if (setsockopt(socketid, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i))
== SOCKET_ERROR)
{
int err = SOCKETERRNO;
Con_SafePrintf ("UDP, setsockopt: %s\n", socketerror(err));
return -1;
}
net_broadcastsocket = socketid;
@ -384,6 +414,7 @@ int WINS_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *add
int err = SOCKETERRNO;
if (err == EWOULDBLOCK)
return 0;
Con_SafePrintf ("WINS_Write, sendto: %s\n", socketerror(err));
}
return ret;
}

View file

@ -37,6 +37,7 @@ static struct sockaddr_ipx broadcastaddr;
/* externs from net_wins.c: */
extern qboolean winsock_initialized;
extern WSADATA winsockdata;
extern const char *__WSAE_StrError (int);
#define IPXSOCKETS 18
static sys_socket_t ipxsocket[IPXSOCKETS];
@ -59,7 +60,8 @@ sys_socket_t WIPX_Init (void)
err = WSAStartup(MAKEWORD(1,1), &winsockdata);
if (err != 0)
{
Con_SafePrintf("Winsock initialization failed.\n");
Con_SafePrintf("Winsock initialization failed (%s)\n",
socketerror(err));
return INVALID_SOCKET;
}
}
@ -71,7 +73,9 @@ sys_socket_t WIPX_Init (void)
// determine my name & address
if (gethostname(buff, MAXHOSTNAMELEN) != 0)
{
Con_SafePrintf("WIPX_Init: WARNING: gethostname failed\n");
err = SOCKETERRNO;
Con_SafePrintf("WIPX_Init: gethostname failed (%s)\n",
socketerror(err));
}
else
{
@ -138,6 +142,7 @@ void WIPX_Listen (qboolean state)
sys_socket_t WIPX_OpenSocket (int port)
{
int err;
sys_socket_t handle, newsocket;
struct sockaddr_ipx address;
u_long _true = 1;
@ -149,11 +154,14 @@ sys_socket_t WIPX_OpenSocket (int port)
}
if (handle == IPXSOCKETS)
{
Con_SafePrintf("WIPX_OpenSocket: Out of free IPX handles.\n");
return INVALID_SOCKET;
}
if ((newsocket = socket (AF_IPX, SOCK_DGRAM, NSPROTO_IPX)) == INVALID_SOCKET)
{
err = SOCKETERRNO;
Con_SafePrintf("WIPX_OpenSocket: %s\n", socketerror(err));
return INVALID_SOCKET;
}
@ -177,12 +185,15 @@ sys_socket_t WIPX_OpenSocket (int port)
if (ipxAvailable)
{
Sys_Error ("IPX bind failed");
err = SOCKETERRNO;
Sys_Error ("IPX bind failed (%s)", socketerror(err));
return INVALID_SOCKET; /* not reached */
}
/* else: we are still in init phase, no need to error */
ErrorReturn:
err = SOCKETERRNO;
Con_SafePrintf("WIPX_OpenSocket: %s\n", socketerror(err));
closesocket (newsocket);
return INVALID_SOCKET;
}
@ -217,7 +228,8 @@ sys_socket_t WIPX_CheckNewConnections (void)
if (ioctlsocket (ipxsocket[net_acceptsocket], FIONREAD, &available) == SOCKET_ERROR)
{
Sys_Error ("WIPX: ioctlsocket (FIONREAD) failed");
int err = SOCKETERRNO;
Sys_Error ("WIPX: ioctlsocket (FIONREAD) failed (%s)", socketerror(err));
}
if (available)
return net_acceptsocket;
@ -240,6 +252,7 @@ int WIPX_Read (sys_socket_t handle, byte *buf, int len, struct qsockaddr *addr)
int err = SOCKETERRNO;
if (err == EWOULDBLOCK || err == ECONNREFUSED)
return 0;
Con_SafePrintf ("WIPX_Read, recvfrom: %s\n", socketerror(err));
}
if (ret < 4)
@ -278,6 +291,7 @@ int WIPX_Write (sys_socket_t handle, byte *buf, int len, struct qsockaddr *addr)
int err = SOCKETERRNO;
if (err == EWOULDBLOCK)
return 0;
Con_SafePrintf ("WIPX_Write, sendto: %s\n", socketerror(err));
}
return ret;
@ -352,9 +366,9 @@ int WIPX_GetSocketAddr (sys_socket_t handle, struct qsockaddr *addr)
Q_memset(addr, 0, sizeof(struct qsockaddr));
if (getsockname(socketid, (struct sockaddr *)addr, &addrlen) != 0)
{
int err;
err = SOCKETERRNO;
int err = SOCKETERRNO;
/* FIXME: what action should be taken?... */
Con_SafePrintf ("WIPX, getsockname: %s\n", socketerror(err));
}
return 0;
@ -370,7 +384,7 @@ int WIPX_GetNameFromAddr (struct qsockaddr *addr, char *name)
//=============================================================================
int WIPX_GetAddrFromName(char *name, struct qsockaddr *addr)
int WIPX_GetAddrFromName (char *name, struct qsockaddr *addr)
{
int n;
char buf[32];