mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-16 09:21:36 +00:00
git-svn-id: https://svn.eduke32.com/eduke32@1125 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
54128e127c
commit
5be3b76e85
3 changed files with 122 additions and 104 deletions
|
@ -914,96 +914,3 @@ int getexternaladdress(char *buffer, const char *host, int port)
|
||||||
Bmemcpy(buffer,&ipaddr,j);
|
Bmemcpy(buffer,&ipaddr,j);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
int getversionfromwebsite(char *buffer) // FIXME: this probably belongs in game land
|
|
||||||
{
|
|
||||||
int bytes_sent, i=0, j=0;
|
|
||||||
struct sockaddr_in dest_addr;
|
|
||||||
struct hostent *h;
|
|
||||||
char *host = "eduke32.sourceforge.net";
|
|
||||||
char *req = "GET http://eduke32.sourceforge.net/VERSION HTTP/1.0\r\n\r\n";
|
|
||||||
char tempbuf[2048],otherbuf[16],ver[16];
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
if (wsainitialized == 0)
|
|
||||||
{
|
|
||||||
WSADATA ws;
|
|
||||||
|
|
||||||
if (WSAStartup(0x101,&ws) == SOCKET_ERROR)
|
|
||||||
{
|
|
||||||
initprintf("update: Winsock error in getversionfromwebsite() (%d)\n",errno);
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
wsainitialized = 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((h=gethostbyname(host)) == NULL)
|
|
||||||
{
|
|
||||||
initprintf("update: gethostbyname() error in getversionfromwebsite() (%d)\n",h_errno);
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
dest_addr.sin_addr.s_addr = ((struct in_addr *)(h->h_addr))->s_addr;
|
|
||||||
dest_addr.sin_family = AF_INET;
|
|
||||||
dest_addr.sin_port = htons(80);
|
|
||||||
|
|
||||||
memset(&(dest_addr.sin_zero), '\0', 8);
|
|
||||||
|
|
||||||
|
|
||||||
mysock = socket(PF_INET, SOCK_STREAM, 0);
|
|
||||||
|
|
||||||
if (mysock == INVALID_SOCKET)
|
|
||||||
{
|
|
||||||
initprintf("update: socket() error in getversionfromwebsite() (%d)\n",errno);
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
initprintf("Connecting to \"http://%s\"\n",host);
|
|
||||||
if (connect(mysock, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
|
|
||||||
{
|
|
||||||
initprintf("update: connect() error in getversionfromwebsite() (%d)\n",errno);
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes_sent = send(mysock, req, strlen(req), 0);
|
|
||||||
if (bytes_sent == SOCKET_ERROR)
|
|
||||||
{
|
|
||||||
initprintf("update: send() error in getversionfromwebsite() (%d)\n",errno);
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// initprintf("sent %d bytes\n",bytes_sent);
|
|
||||||
recv(mysock, (char *)&tempbuf, sizeof(tempbuf), 0);
|
|
||||||
closesocket(mysock);
|
|
||||||
|
|
||||||
memcpy(&otherbuf,&tempbuf,sizeof(otherbuf));
|
|
||||||
|
|
||||||
strtok(otherbuf," ");
|
|
||||||
if (atol(strtok(NULL," ")) == 200)
|
|
||||||
{
|
|
||||||
for (i=0;(unsigned)i<strlen(tempbuf);i++) // HACK: all of this needs to die a fiery death; we just skip to the content
|
|
||||||
{
|
|
||||||
// instead of actually parsing any of the http headers
|
|
||||||
if (i > 4)
|
|
||||||
if (tempbuf[i-1] == '\n' && tempbuf[i-2] == '\r' && tempbuf[i-3] == '\n' && tempbuf[i-4] == '\r')
|
|
||||||
{
|
|
||||||
while (j < 9)
|
|
||||||
{
|
|
||||||
ver[j] = tempbuf[i];
|
|
||||||
i++, j++;
|
|
||||||
}
|
|
||||||
ver[j] = '\0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (j)
|
|
||||||
{
|
|
||||||
strcpy(buffer,ver);
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "mmulti_unstable.h"
|
#include "mmulti_unstable.h"
|
||||||
#include "enet/enet.h"
|
#include "enet/enet.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
#include "baselayer.h"
|
||||||
|
|
||||||
|
|
||||||
//STL
|
//STL
|
||||||
|
@ -169,6 +170,11 @@ void initmultiplayers(int argc, char **argv, char damultioption, char dacomrateo
|
||||||
{
|
{
|
||||||
long i;
|
long i;
|
||||||
|
|
||||||
|
UNREFERENCED_PARAMETER(argc);
|
||||||
|
UNREFERENCED_PARAMETER(damultioption);
|
||||||
|
UNREFERENCED_PARAMETER(dacomrateoption);
|
||||||
|
UNREFERENCED_PARAMETER(dapriority);
|
||||||
|
|
||||||
initcrc();
|
initcrc();
|
||||||
for(i=0;i<MAXPLAYERS;i++)
|
for(i=0;i<MAXPLAYERS;i++)
|
||||||
{
|
{
|
||||||
|
@ -331,6 +337,8 @@ void sendpacket(long other, char *bufptr, long messleng)
|
||||||
|
|
||||||
void setpackettimeout(long datimeoutcount, long daresendagaincount)
|
void setpackettimeout(long datimeoutcount, long daresendagaincount)
|
||||||
{
|
{
|
||||||
|
UNREFERENCED_PARAMETER(datimeoutcount);
|
||||||
|
UNREFERENCED_PARAMETER(daresendagaincount);
|
||||||
// Don't do this it keeps '/f4' from working
|
// Don't do this it keeps '/f4' from working
|
||||||
// Though /f4 feels weird on my mouse.... slugish is the word...
|
// Though /f4 feels weird on my mouse.... slugish is the word...
|
||||||
/*
|
/*
|
||||||
|
@ -372,6 +380,7 @@ int getoutputcirclesize(void)
|
||||||
|
|
||||||
void setsocket(short newsocket)
|
void setsocket(short newsocket)
|
||||||
{
|
{
|
||||||
|
UNREFERENCED_PARAMETER(newsocket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -604,7 +613,6 @@ void deinit_network_transport(gcomtype *gcom)
|
||||||
|
|
||||||
#if PLATFORM_WIN32
|
#if PLATFORM_WIN32
|
||||||
# include <winsock.h>
|
# include <winsock.h>
|
||||||
# define EAGAIN WSAEWOULDBLOCK
|
|
||||||
# define EWOULDBLOCK WSAEWOULDBLOCK
|
# define EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
# define ECONNREFUSED WSAECONNRESET
|
# define ECONNREFUSED WSAECONNRESET
|
||||||
# define socklen_t size_t
|
# define socklen_t size_t
|
||||||
|
@ -637,7 +645,6 @@ void deinit_network_transport(gcomtype *gcom)
|
||||||
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include "cache1d.h" /* kopen4load for cfg file. */
|
#include "cache1d.h" /* kopen4load for cfg file. */
|
||||||
#include "baselayer.h" /* getticks */
|
|
||||||
|
|
||||||
#define IPSEG1(ip) ((((unsigned int) ip) & 0xFF000000) >> 24)
|
#define IPSEG1(ip) ((((unsigned int) ip) & 0xFF000000) >> 24)
|
||||||
#define IPSEG2(ip) ((((unsigned int) ip) & 0x00FF0000) >> 16)
|
#define IPSEG2(ip) ((((unsigned int) ip) & 0x00FF0000) >> 16)
|
||||||
|
@ -660,6 +667,7 @@ static struct {
|
||||||
volatile int ctrlc_pressed = 0;
|
volatile int ctrlc_pressed = 0;
|
||||||
static void siginthandler(int sigint)
|
static void siginthandler(int sigint)
|
||||||
{
|
{
|
||||||
|
UNREFERENCED_PARAMETER(sigint);
|
||||||
ctrlc_pressed = 1;
|
ctrlc_pressed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -766,7 +774,7 @@ static int get_udp_packet(int *ip, short *_port, void *pkt, size_t pktsize)
|
||||||
|
|
||||||
/* FIXME: Will this ever receive a partial packet? */
|
/* FIXME: Will this ever receive a partial packet? */
|
||||||
int rc = recvfrom(udpsocket, pkt, pktsize, 0,
|
int rc = recvfrom(udpsocket, pkt, pktsize, 0,
|
||||||
(struct sockaddr *) &addr, (int *)&fromlen);
|
(struct sockaddr *) &addr, (unsigned int *)&fromlen);
|
||||||
|
|
||||||
if (rc == -1)
|
if (rc == -1)
|
||||||
err = neterrno();
|
err = neterrno();
|
||||||
|
@ -887,7 +895,7 @@ static char *read_whole_file(const char *cfgfile)
|
||||||
if (cfgfile == NULL)
|
if (cfgfile == NULL)
|
||||||
return(NULL);
|
return(NULL);
|
||||||
|
|
||||||
handle = kopen4load(cfgfile, 0);
|
handle = kopen4load((char *)cfgfile, 0);
|
||||||
if (handle == -1)
|
if (handle == -1)
|
||||||
{
|
{
|
||||||
initprintf("ERROR: Failed to open config file [%s].\n", cfgfile);
|
initprintf("ERROR: Failed to open config file [%s].\n", cfgfile);
|
||||||
|
@ -951,7 +959,7 @@ static int set_socket_blockmode(int onOrOff)
|
||||||
rc = (ioctlsocket(udpsocket, FIONBIO, &flags) == 0);
|
rc = (ioctlsocket(udpsocket, FIONBIO, &flags) == 0);
|
||||||
#else
|
#else
|
||||||
flags = fcntl(udpsocket, F_GETFL, 0);
|
flags = fcntl(udpsocket, F_GETFL, 0);
|
||||||
if (flags != -1)
|
if ((signed)flags != -1)
|
||||||
{
|
{
|
||||||
if (onOrOff)
|
if (onOrOff)
|
||||||
flags &= ~O_NONBLOCK;
|
flags &= ~O_NONBLOCK;
|
||||||
|
@ -996,7 +1004,7 @@ static int open_udp_socket(int ip, int port)
|
||||||
initprintf("Stun is currently %s\n", (natfree) ? "Enabled":"Disabled");
|
initprintf("Stun is currently %s\n", (natfree) ? "Enabled":"Disabled");
|
||||||
|
|
||||||
udpsocket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
udpsocket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||||
if (udpsocket == -1)
|
if ((signed)udpsocket == -1)
|
||||||
{
|
{
|
||||||
initprintf("socket creation failed: %s\n", netstrerror());
|
initprintf("socket creation failed: %s\n", netstrerror());
|
||||||
return(0);
|
return(0);
|
||||||
|
@ -1029,6 +1037,9 @@ static int open_udp_socket(int ip, int port)
|
||||||
/* server init. */
|
/* server init. */
|
||||||
static int wait_for_other_players(gcomtype *gcom, int myip)
|
static int wait_for_other_players(gcomtype *gcom, int myip)
|
||||||
{
|
{
|
||||||
|
UNREFERENCED_PARAMETER(gcom);
|
||||||
|
UNREFERENCED_PARAMETER(myip);
|
||||||
|
|
||||||
initprintf("Server code NOT implemented!\n");
|
initprintf("Server code NOT implemented!\n");
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
@ -1036,6 +1047,9 @@ static int wait_for_other_players(gcomtype *gcom, int myip)
|
||||||
/* client init. */
|
/* client init. */
|
||||||
static int connect_to_server(gcomtype *gcom, int myip)
|
static int connect_to_server(gcomtype *gcom, int myip)
|
||||||
{
|
{
|
||||||
|
UNREFERENCED_PARAMETER(gcom);
|
||||||
|
UNREFERENCED_PARAMETER(myip);
|
||||||
|
|
||||||
initprintf("Client code NOT implemented!\n");
|
initprintf("Client code NOT implemented!\n");
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
@ -1581,7 +1595,7 @@ void deinit_network_transport(gcomtype *gcom)
|
||||||
free(gcom);
|
free(gcom);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (udpsocket != -1)
|
if ((signed)udpsocket != -1)
|
||||||
{
|
{
|
||||||
initprintf(" ...closing socket...\n");
|
initprintf(" ...closing socket...\n");
|
||||||
set_socket_blockmode(1); /* block while socket drains. */
|
set_socket_blockmode(1); /* block while socket drains. */
|
||||||
|
@ -1601,7 +1615,7 @@ void callcommit(void)
|
||||||
int ip, i, rc;
|
int ip, i, rc;
|
||||||
short port;
|
short port;
|
||||||
|
|
||||||
if (udpsocket == -1)
|
if ((signed)udpsocket == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
process_udp_send_queue();
|
process_udp_send_queue();
|
||||||
|
|
|
@ -48,12 +48,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#undef UNREFERENCED_PARAMETER
|
#undef UNREFERENCED_PARAMETER
|
||||||
#ifndef ENET_NETWORKING
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
|
#include <winsock2.h>
|
||||||
|
#include <ws2tcpip.h>
|
||||||
extern int getversionfromwebsite(char *buffer);
|
extern int getversionfromwebsite(char *buffer);
|
||||||
#define UPDATEINTERVAL 604800 // 1w
|
#define UPDATEINTERVAL 604800 // 1w
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
static int usecwd = 0;
|
static int usecwd = 0;
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
@ -74,7 +74,9 @@ static int g_NoSound = 0;
|
||||||
static int g_NoMusic = 0;
|
static int g_NoMusic = 0;
|
||||||
static char *CommandMap = NULL;
|
static char *CommandMap = NULL;
|
||||||
static char *CommandName = NULL;
|
static char *CommandName = NULL;
|
||||||
|
#ifndef ENET_NETWORKING
|
||||||
static char *CommandNet = NULL;
|
static char *CommandNet = NULL;
|
||||||
|
#endif
|
||||||
static int g_KeepAddr = 0;
|
static int g_KeepAddr = 0;
|
||||||
int CommandWeaponChoice = 0;
|
int CommandWeaponChoice = 0;
|
||||||
static struct strllist
|
static struct strllist
|
||||||
|
@ -168,6 +170,101 @@ unsigned int g_FrameDelay = 0;
|
||||||
extern char forcegl;
|
extern char forcegl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
int getversionfromwebsite(char *buffer) // FIXME: this probably belongs in game land
|
||||||
|
{
|
||||||
|
int wsainitialized = 0;
|
||||||
|
int bytes_sent, i=0, j=0;
|
||||||
|
struct sockaddr_in dest_addr;
|
||||||
|
struct hostent *h;
|
||||||
|
char *host = "eduke32.sourceforge.net";
|
||||||
|
char *req = "GET http://eduke32.sourceforge.net/VERSION HTTP/1.0\r\n\r\n";
|
||||||
|
char tempbuf[2048],otherbuf[16],ver[16];
|
||||||
|
SOCKET mysock;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
if (wsainitialized == 0)
|
||||||
|
{
|
||||||
|
WSADATA ws;
|
||||||
|
|
||||||
|
if (WSAStartup(0x101,&ws) == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
initprintf("update: Winsock error in getversionfromwebsite() (%d)\n",errno);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
wsainitialized = 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ((h=gethostbyname(host)) == NULL)
|
||||||
|
{
|
||||||
|
initprintf("update: gethostbyname() error in getversionfromwebsite() (%d)\n",h_errno);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
dest_addr.sin_addr.s_addr = ((struct in_addr *)(h->h_addr))->s_addr;
|
||||||
|
dest_addr.sin_family = AF_INET;
|
||||||
|
dest_addr.sin_port = htons(80);
|
||||||
|
|
||||||
|
memset(&(dest_addr.sin_zero), '\0', 8);
|
||||||
|
|
||||||
|
|
||||||
|
mysock = socket(PF_INET, SOCK_STREAM, 0);
|
||||||
|
|
||||||
|
if (mysock == INVALID_SOCKET)
|
||||||
|
{
|
||||||
|
initprintf("update: socket() error in getversionfromwebsite() (%d)\n",errno);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
initprintf("Connecting to \"http://%s\"\n",host);
|
||||||
|
if (connect(mysock, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
initprintf("update: connect() error in getversionfromwebsite() (%d)\n",errno);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bytes_sent = send(mysock, req, strlen(req), 0);
|
||||||
|
if (bytes_sent == SOCKET_ERROR)
|
||||||
|
{
|
||||||
|
initprintf("update: send() error in getversionfromwebsite() (%d)\n",errno);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// initprintf("sent %d bytes\n",bytes_sent);
|
||||||
|
recv(mysock, (char *)&tempbuf, sizeof(tempbuf), 0);
|
||||||
|
closesocket(mysock);
|
||||||
|
|
||||||
|
memcpy(&otherbuf,&tempbuf,sizeof(otherbuf));
|
||||||
|
|
||||||
|
strtok(otherbuf," ");
|
||||||
|
if (atol(strtok(NULL," ")) == 200)
|
||||||
|
{
|
||||||
|
for (i=0;(unsigned)i<strlen(tempbuf);i++) // HACK: all of this needs to die a fiery death; we just skip to the content
|
||||||
|
{
|
||||||
|
// instead of actually parsing any of the http headers
|
||||||
|
if (i > 4)
|
||||||
|
if (tempbuf[i-1] == '\n' && tempbuf[i-2] == '\r' && tempbuf[i-3] == '\n' && tempbuf[i-4] == '\r')
|
||||||
|
{
|
||||||
|
while (j < 9)
|
||||||
|
{
|
||||||
|
ver[j] = tempbuf[i];
|
||||||
|
i++, j++;
|
||||||
|
}
|
||||||
|
ver[j] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j)
|
||||||
|
{
|
||||||
|
strcpy(buffer,ver);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int kopen4loadfrommod(char *filename, char searchfirst)
|
int kopen4loadfrommod(char *filename, char searchfirst)
|
||||||
{
|
{
|
||||||
static char fn[BMAX_PATH];
|
static char fn[BMAX_PATH];
|
||||||
|
@ -8831,6 +8928,7 @@ static void comlinehelp(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef ENET_NETWORKING
|
||||||
static signed int rancid_players = 0;
|
static signed int rancid_players = 0;
|
||||||
static char rancid_ip_strings[MAXPLAYERS][32], rancid_local_port_string[8];
|
static char rancid_ip_strings[MAXPLAYERS][32], rancid_local_port_string[8];
|
||||||
|
|
||||||
|
@ -8911,7 +9009,6 @@ static inline int stringsort(const char *p1, const char *p2)
|
||||||
return Bstrcmp(&p1[0],&p2[0]);
|
return Bstrcmp(&p1[0],&p2[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ENET_NETWORKING
|
|
||||||
// Not supported with the enet network backend currently
|
// Not supported with the enet network backend currently
|
||||||
static void setup_rancid_net(const char *fn)
|
static void setup_rancid_net(const char *fn)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue