mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-02-02 22:11:22 +00:00
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:
parent
bfe38b58b4
commit
42c47095a1
3 changed files with 75 additions and 14 deletions
|
@ -38,6 +38,7 @@ static in_addr_t myAddr;
|
||||||
|
|
||||||
sys_socket_t UDP_Init (void)
|
sys_socket_t UDP_Init (void)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
char *colon;
|
char *colon;
|
||||||
char buff[MAXHOSTNAMELEN];
|
char buff[MAXHOSTNAMELEN];
|
||||||
struct hostent *local;
|
struct hostent *local;
|
||||||
|
@ -50,7 +51,9 @@ sys_socket_t UDP_Init (void)
|
||||||
myAddr = htonl(INADDR_LOOPBACK);
|
myAddr = htonl(INADDR_LOOPBACK);
|
||||||
if (gethostname(buff, MAXHOSTNAMELEN) != 0)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -58,7 +61,8 @@ sys_socket_t UDP_Init (void)
|
||||||
local = gethostbyname(buff);
|
local = gethostbyname(buff);
|
||||||
if (local == NULL)
|
if (local == NULL)
|
||||||
{
|
{
|
||||||
Con_SafePrintf("UDP_Init: WARNING: gethostbyname failed\n");
|
Con_SafePrintf("UDP_Init: gethostbyname failed (%s)\n",
|
||||||
|
hstrerror(h_errno));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -124,9 +128,14 @@ sys_socket_t UDP_OpenSocket (int port)
|
||||||
sys_socket_t newsocket;
|
sys_socket_t newsocket;
|
||||||
struct sockaddr_in address;
|
struct sockaddr_in address;
|
||||||
int _true = 1;
|
int _true = 1;
|
||||||
|
int err;
|
||||||
|
|
||||||
if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
|
if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
|
||||||
|
{
|
||||||
|
err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf("UDP_OpenSocket: %s\n", socketerror(err));
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
|
}
|
||||||
|
|
||||||
if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR)
|
if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR)
|
||||||
goto ErrorReturn;
|
goto ErrorReturn;
|
||||||
|
@ -139,6 +148,8 @@ sys_socket_t UDP_OpenSocket (int port)
|
||||||
return newsocket;
|
return newsocket;
|
||||||
|
|
||||||
ErrorReturn:
|
ErrorReturn:
|
||||||
|
err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf("UDP_OpenSocket: %s\n", socketerror(err));
|
||||||
UDP_CloseSocket (newsocket);
|
UDP_CloseSocket (newsocket);
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
@ -228,7 +239,8 @@ sys_socket_t UDP_CheckNewConnections (void)
|
||||||
|
|
||||||
if (ioctl (net_acceptsocket, FIONREAD, &available) == -1)
|
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)
|
if (available)
|
||||||
return net_acceptsocket;
|
return net_acceptsocket;
|
||||||
|
@ -250,6 +262,7 @@ int UDP_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr)
|
||||||
int err = SOCKETERRNO;
|
int err = SOCKETERRNO;
|
||||||
if (err == EWOULDBLOCK || err == ECONNREFUSED)
|
if (err == EWOULDBLOCK || err == ECONNREFUSED)
|
||||||
return 0;
|
return 0;
|
||||||
|
Con_SafePrintf ("UDP_Read, recvfrom: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
return ret;
|
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))
|
if (setsockopt(socketid, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i))
|
||||||
== SOCKET_ERROR)
|
== SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
|
int err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf ("UDP, setsockopt: %s\n", socketerror(err));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
net_broadcastsocket = socketid;
|
net_broadcastsocket = socketid;
|
||||||
|
@ -305,6 +320,7 @@ int UDP_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr
|
||||||
int err = SOCKETERRNO;
|
int err = SOCKETERRNO;
|
||||||
if (err == EWOULDBLOCK)
|
if (err == EWOULDBLOCK)
|
||||||
return 0;
|
return 0;
|
||||||
|
Con_SafePrintf ("UDP_Write, sendto: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
return ret;
|
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;
|
struct hostent *hostentry;
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,8 @@ static in_addr_t myAddr;
|
||||||
|
|
||||||
int winsock_initialized = 0;
|
int winsock_initialized = 0;
|
||||||
WSADATA winsockdata;
|
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;
|
struct hostent *local = NULL;
|
||||||
char buff[MAXHOSTNAMELEN];
|
char buff[MAXHOSTNAMELEN];
|
||||||
in_addr_t addr;
|
in_addr_t addr;
|
||||||
|
int err;
|
||||||
|
|
||||||
if (myAddr != INADDR_ANY)
|
if (myAddr != INADDR_ANY)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (gethostname(buff, MAXHOSTNAMELEN) == SOCKET_ERROR)
|
if (gethostname(buff, MAXHOSTNAMELEN) == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf("WINS_GetLocalAddress: gethostname failed (%s)\n",
|
||||||
|
socketerror(err));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
buff[MAXHOSTNAMELEN - 1] = 0;
|
buff[MAXHOSTNAMELEN - 1] = 0;
|
||||||
blocktime = Sys_FloatTime();
|
blocktime = Sys_FloatTime();
|
||||||
WSASetBlockingHook(BlockingHook);
|
WSASetBlockingHook(BlockingHook);
|
||||||
local = gethostbyname(buff);
|
local = gethostbyname(buff);
|
||||||
|
err = WSAGetLastError();
|
||||||
WSAUnhookBlockingHook();
|
WSAUnhookBlockingHook();
|
||||||
if (local == NULL)
|
if (local == NULL)
|
||||||
|
{
|
||||||
|
Con_SafePrintf("WINS_GetLocalAddress: gethostbyname failed (%s)\n",
|
||||||
|
__WSAE_StrError(err));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
myAddr = *(in_addr_t *)local->h_addr_list[0];
|
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);
|
err = WSAStartup(MAKEWORD(1,1), &winsockdata);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
Con_SafePrintf ("Winsock initialization failed.\n");
|
Con_SafePrintf("Winsock initialization failed (%s)\n",
|
||||||
|
socketerror(err));
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,7 +131,9 @@ sys_socket_t WINS_Init (void)
|
||||||
// determine my name & address
|
// determine my name & address
|
||||||
if (gethostname(buff, MAXHOSTNAMELEN) != 0)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -201,9 +217,14 @@ sys_socket_t WINS_OpenSocket (int port)
|
||||||
sys_socket_t newsocket;
|
sys_socket_t newsocket;
|
||||||
struct sockaddr_in address;
|
struct sockaddr_in address;
|
||||||
u_long _true = 1;
|
u_long _true = 1;
|
||||||
|
int err;
|
||||||
|
|
||||||
if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
|
if ((newsocket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
|
||||||
|
{
|
||||||
|
err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf("WINS_OpenSocket: %s\n", socketerror(err));
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
|
}
|
||||||
|
|
||||||
if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR)
|
if (ioctlsocket (newsocket, FIONBIO, &_true) == SOCKET_ERROR)
|
||||||
goto ErrorReturn;
|
goto ErrorReturn;
|
||||||
|
@ -217,11 +238,17 @@ sys_socket_t WINS_OpenSocket (int port)
|
||||||
|
|
||||||
if (tcpipAvailable)
|
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 */
|
/* else: we are still in init phase, no need to error */
|
||||||
|
|
||||||
ErrorReturn:
|
ErrorReturn:
|
||||||
|
err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf("WINS_OpenSocket: %s\n", socketerror(err));
|
||||||
closesocket (newsocket);
|
closesocket (newsocket);
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
@ -328,6 +355,7 @@ int WINS_Read (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *addr
|
||||||
int err = SOCKETERRNO;
|
int err = SOCKETERRNO;
|
||||||
if (err == EWOULDBLOCK || err == ECONNREFUSED)
|
if (err == EWOULDBLOCK || err == ECONNREFUSED)
|
||||||
return 0;
|
return 0;
|
||||||
|
Con_SafePrintf ("WINS_Read, recvfrom: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
return ret;
|
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))
|
if (setsockopt(socketid, SOL_SOCKET, SO_BROADCAST, (char *)&i, sizeof(i))
|
||||||
== SOCKET_ERROR)
|
== SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
|
int err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf ("UDP, setsockopt: %s\n", socketerror(err));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
net_broadcastsocket = socketid;
|
net_broadcastsocket = socketid;
|
||||||
|
@ -384,6 +414,7 @@ int WINS_Write (sys_socket_t socketid, byte *buf, int len, struct qsockaddr *add
|
||||||
int err = SOCKETERRNO;
|
int err = SOCKETERRNO;
|
||||||
if (err == EWOULDBLOCK)
|
if (err == EWOULDBLOCK)
|
||||||
return 0;
|
return 0;
|
||||||
|
Con_SafePrintf ("WINS_Write, sendto: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ static struct sockaddr_ipx broadcastaddr;
|
||||||
/* externs from net_wins.c: */
|
/* externs from net_wins.c: */
|
||||||
extern qboolean winsock_initialized;
|
extern qboolean winsock_initialized;
|
||||||
extern WSADATA winsockdata;
|
extern WSADATA winsockdata;
|
||||||
|
extern const char *__WSAE_StrError (int);
|
||||||
|
|
||||||
#define IPXSOCKETS 18
|
#define IPXSOCKETS 18
|
||||||
static sys_socket_t ipxsocket[IPXSOCKETS];
|
static sys_socket_t ipxsocket[IPXSOCKETS];
|
||||||
|
@ -59,7 +60,8 @@ sys_socket_t WIPX_Init (void)
|
||||||
err = WSAStartup(MAKEWORD(1,1), &winsockdata);
|
err = WSAStartup(MAKEWORD(1,1), &winsockdata);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
Con_SafePrintf("Winsock initialization failed.\n");
|
Con_SafePrintf("Winsock initialization failed (%s)\n",
|
||||||
|
socketerror(err));
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,7 +73,9 @@ sys_socket_t WIPX_Init (void)
|
||||||
// determine my name & address
|
// determine my name & address
|
||||||
if (gethostname(buff, MAXHOSTNAMELEN) != 0)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -138,6 +142,7 @@ void WIPX_Listen (qboolean state)
|
||||||
|
|
||||||
sys_socket_t WIPX_OpenSocket (int port)
|
sys_socket_t WIPX_OpenSocket (int port)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
sys_socket_t handle, newsocket;
|
sys_socket_t handle, newsocket;
|
||||||
struct sockaddr_ipx address;
|
struct sockaddr_ipx address;
|
||||||
u_long _true = 1;
|
u_long _true = 1;
|
||||||
|
@ -149,11 +154,14 @@ sys_socket_t WIPX_OpenSocket (int port)
|
||||||
}
|
}
|
||||||
if (handle == IPXSOCKETS)
|
if (handle == IPXSOCKETS)
|
||||||
{
|
{
|
||||||
|
Con_SafePrintf("WIPX_OpenSocket: Out of free IPX handles.\n");
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((newsocket = socket (AF_IPX, SOCK_DGRAM, NSPROTO_IPX)) == 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;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,12 +185,15 @@ sys_socket_t WIPX_OpenSocket (int port)
|
||||||
|
|
||||||
if (ipxAvailable)
|
if (ipxAvailable)
|
||||||
{
|
{
|
||||||
Sys_Error ("IPX bind failed");
|
err = SOCKETERRNO;
|
||||||
|
Sys_Error ("IPX bind failed (%s)", socketerror(err));
|
||||||
return INVALID_SOCKET; /* not reached */
|
return INVALID_SOCKET; /* not reached */
|
||||||
}
|
}
|
||||||
/* else: we are still in init phase, no need to error */
|
/* else: we are still in init phase, no need to error */
|
||||||
|
|
||||||
ErrorReturn:
|
ErrorReturn:
|
||||||
|
err = SOCKETERRNO;
|
||||||
|
Con_SafePrintf("WIPX_OpenSocket: %s\n", socketerror(err));
|
||||||
closesocket (newsocket);
|
closesocket (newsocket);
|
||||||
return INVALID_SOCKET;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
@ -217,7 +228,8 @@ sys_socket_t WIPX_CheckNewConnections (void)
|
||||||
|
|
||||||
if (ioctlsocket (ipxsocket[net_acceptsocket], FIONREAD, &available) == SOCKET_ERROR)
|
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)
|
if (available)
|
||||||
return net_acceptsocket;
|
return net_acceptsocket;
|
||||||
|
@ -240,6 +252,7 @@ int WIPX_Read (sys_socket_t handle, byte *buf, int len, struct qsockaddr *addr)
|
||||||
int err = SOCKETERRNO;
|
int err = SOCKETERRNO;
|
||||||
if (err == EWOULDBLOCK || err == ECONNREFUSED)
|
if (err == EWOULDBLOCK || err == ECONNREFUSED)
|
||||||
return 0;
|
return 0;
|
||||||
|
Con_SafePrintf ("WIPX_Read, recvfrom: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret < 4)
|
if (ret < 4)
|
||||||
|
@ -278,6 +291,7 @@ int WIPX_Write (sys_socket_t handle, byte *buf, int len, struct qsockaddr *addr)
|
||||||
int err = SOCKETERRNO;
|
int err = SOCKETERRNO;
|
||||||
if (err == EWOULDBLOCK)
|
if (err == EWOULDBLOCK)
|
||||||
return 0;
|
return 0;
|
||||||
|
Con_SafePrintf ("WIPX_Write, sendto: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -352,9 +366,9 @@ int WIPX_GetSocketAddr (sys_socket_t handle, struct qsockaddr *addr)
|
||||||
Q_memset(addr, 0, sizeof(struct qsockaddr));
|
Q_memset(addr, 0, sizeof(struct qsockaddr));
|
||||||
if (getsockname(socketid, (struct sockaddr *)addr, &addrlen) != 0)
|
if (getsockname(socketid, (struct sockaddr *)addr, &addrlen) != 0)
|
||||||
{
|
{
|
||||||
int err;
|
int err = SOCKETERRNO;
|
||||||
err = SOCKETERRNO;
|
|
||||||
/* FIXME: what action should be taken?... */
|
/* FIXME: what action should be taken?... */
|
||||||
|
Con_SafePrintf ("WIPX, getsockname: %s\n", socketerror(err));
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
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;
|
int n;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
|
|
Loading…
Reference in a new issue