git-svn-id: https://svn.eduke32.com/eduke32@1136 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2008-11-14 19:55:48 +00:00
parent 4f029a0097
commit a0b49f13e4
3 changed files with 155 additions and 150 deletions

View file

@ -1773,32 +1773,32 @@ static void deinitialize_sockets(void)
#endif
}
int isvalidipaddress(char *st)
{
int i, bcnt, num;
bcnt = 0; num = 0;
for (i=0;st[i];i++)
{
if (st[i] == '.') { bcnt++; num = 0; continue; }
if (st[i] == ':')
{
if (bcnt != 3) return(0);
num = 0;
for (i++;st[i];i++)
{
if ((st[i] >= '0') && (st[i] <= '9'))
{ num = num*10+st[i]-'0'; if (num >= 65536) return(0); }
else return(0);
}
return(1);
}
if ((st[i] >= '0') && (st[i] <= '9'))
{ num = num*10+st[i]-'0'; if (num >= 256) return(0); }
}
return(bcnt == 3);
}
int isvalidipaddress(char *st)
{
int i, bcnt, num;
bcnt = 0; num = 0;
for (i=0;st[i];i++)
{
if (st[i] == '.') { bcnt++; num = 0; continue; }
if (st[i] == ':')
{
if (bcnt != 3) return(0);
num = 0;
for (i++;st[i];i++)
{
if ((st[i] >= '0') && (st[i] <= '9'))
{ num = num*10+st[i]-'0'; if (num >= 65536) return(0); }
else return(0);
}
return(1);
}
if ((st[i] >= '0') && (st[i] <= '9'))
{ num = num*10+st[i]-'0'; if (num >= 256) return(0); }
}
return(bcnt == 3);
}
static int parse_udp_config(int argc, char **argv, gcomtype *gcom)
{
@ -1812,106 +1812,106 @@ static int parse_udp_config(int argc, char **argv, gcomtype *gcom)
if (buf == NULL)
{
// do JF-style argv parsing here
int i, j, daindex;
int danetmode = 255;
char *st;
daindex = 0;
// if (!argv) return 0;
// go looking for the port, if specified
for (i=0;i<argc;i++)
{
if (argv[i][0] != '-' && argv[i][0] != '/') continue;
if ((argv[i][1] == 'p' || argv[i][1] == 'P') && argv[i][2])
{
char *p;
j = strtol(argv[i]+2, &p, 10);
if (!(*p) && j > 1024 && j<65535) udpport = j;
initprintf("mmulti_unstable: Using port %d\n", udpport);
}
}
for (i=0;i<argc;i++)
{
//if (((argv[i][0] == '/') || (argv[i][0] == '-')) &&
// ((argv[i][1] == 'N') || (argv[i][1] == 'n')) &&
// ((argv[i][2] == 'E') || (argv[i][2] == 'e')) &&
// ((argv[i][3] == 'T') || (argv[i][3] == 't')) &&
// (!argv[i][4]))
// { foundnet = 1; continue; }
//if (!foundnet) continue;
if ((argv[i][0] == '-') || (argv[i][0] == '/'))
{
if ((argv[i][1] == 'N') || (argv[i][1] == 'n') || (argv[i][1] == 'I') || (argv[i][1] == 'i'))
{
gcom->numplayers = 1;
if (argv[i][2] == '0')
{
danetmode = 0;
udpmode = udpmode_client;
if ((argv[i][3] == ':') && (argv[i][4] >= '0') && (argv[i][4] <= '9'))
{
udpmode = udpmode_server;
gcom->numplayers = (argv[i][4]-'0');
if ((argv[i][5] >= '0') && (argv[i][5] <= '9')) gcom->numplayers = gcom->numplayers*10+(argv[i][5]-'0');
initprintf("mmulti_unstable: %d-player game server\n", gcom->numplayers--);
}
initprintf("mmulti_unstable: Master-slave mode\n");
}
else if (argv[i][2] == '1')
{
danetmode = 1;
udpmode = udpmode_peer;
myconnectindex = daindex;
// daindex++;
initprintf("mmulti_unstable: Peer-to-peer mode\n");
}
continue;
}
else if ((argv[i][1] == 'P') || (argv[i][1] == 'p')) continue;
}
st = strdup(argv[i]); if (!st) break;
if (isvalidipaddress(st))
{
// if ((danetmode == 1) && (daindex == myconnectindex)) daindex++;
/* for (j=0;st[j];j++)
{
if (st[j] == ':')
{ allowed_addresses[daindex].port = htons((unsigned short)atol(&st[j+1])); st[j] = 0; break; }
}
allowed_addresses[daindex].host = inet_addr(st); */
parse_interface(st, &allowed_addresses[daindex].host, &allowed_addresses[daindex].port);
initprintf("mmulti_unstable: Player %d at %s:%d\n",daindex,st,allowed_addresses[daindex].port);
daindex++;
}
/* else
{
struct hostent * lph;
unsigned short pt = BUILD_DEFAULT_UDP_PORT;
for (j=0;st[j];j++)
if (st[j] == ':')
{ pt = (unsigned short)atol(&st[j+1]); st[j] = 0; break; }
if ((lph = gethostbyname(st)))
{
if ((danetmode == 1) && (daindex == myconnectindex)) daindex++;
allowed_addresses[daindex].host = *(int *)lph->h_addr;
allowed_addresses[daindex].port = pt;
initprintf("mmulti: Player %d at %s:%d (%s)\n",daindex,
inet_ntoa(*(struct in_addr *)lph->h_addr),ntohs(pt),argv[i]);
daindex++;
}
else initprintf("mmulti: Failed resolving %s\n",argv[i]);
} */
free(st);
}
if ((danetmode == 255) && (daindex)) { gcom->numplayers = 2; udpmode = udpmode_client; } //an IP w/o /n# defaults to /n0
// if ((numplayers >= 2) && (daindex) && (!danetmode)) myconnectindex = 1;
if (daindex > gcom->numplayers) gcom->numplayers = daindex;
int i, j, daindex;
int danetmode = 255;
char *st;
daindex = 0;
// if (!argv) return 0;
// go looking for the port, if specified
for (i=0;i<argc;i++)
{
if (argv[i][0] != '-' && argv[i][0] != '/') continue;
if ((argv[i][1] == 'p' || argv[i][1] == 'P') && argv[i][2])
{
char *p;
j = strtol(argv[i]+2, &p, 10);
if (!(*p) && j > 1024 && j<65535) udpport = j;
initprintf("mmulti_unstable: Using port %d\n", udpport);
}
}
for (i=0;i<argc;i++)
{
//if (((argv[i][0] == '/') || (argv[i][0] == '-')) &&
// ((argv[i][1] == 'N') || (argv[i][1] == 'n')) &&
// ((argv[i][2] == 'E') || (argv[i][2] == 'e')) &&
// ((argv[i][3] == 'T') || (argv[i][3] == 't')) &&
// (!argv[i][4]))
// { foundnet = 1; continue; }
//if (!foundnet) continue;
if ((argv[i][0] == '-') || (argv[i][0] == '/'))
{
if ((argv[i][1] == 'N') || (argv[i][1] == 'n') || (argv[i][1] == 'I') || (argv[i][1] == 'i'))
{
gcom->numplayers = 1;
if (argv[i][2] == '0')
{
danetmode = 0;
udpmode = udpmode_client;
if ((argv[i][3] == ':') && (argv[i][4] >= '0') && (argv[i][4] <= '9'))
{
udpmode = udpmode_server;
gcom->numplayers = (argv[i][4]-'0');
if ((argv[i][5] >= '0') && (argv[i][5] <= '9')) gcom->numplayers = gcom->numplayers*10+(argv[i][5]-'0');
initprintf("mmulti_unstable: %d-player game server\n", gcom->numplayers--);
}
initprintf("mmulti_unstable: Master-slave mode\n");
}
else if (argv[i][2] == '1')
{
danetmode = 1;
udpmode = udpmode_peer;
myconnectindex = daindex;
// daindex++;
initprintf("mmulti_unstable: Peer-to-peer mode\n");
}
continue;
}
else if ((argv[i][1] == 'P') || (argv[i][1] == 'p')) continue;
}
st = strdup(argv[i]); if (!st) break;
if (isvalidipaddress(st))
{
// if ((danetmode == 1) && (daindex == myconnectindex)) daindex++;
/* for (j=0;st[j];j++)
{
if (st[j] == ':')
{ allowed_addresses[daindex].port = htons((unsigned short)atol(&st[j+1])); st[j] = 0; break; }
}
allowed_addresses[daindex].host = inet_addr(st); */
parse_interface(st, &allowed_addresses[daindex].host, &allowed_addresses[daindex].port);
initprintf("mmulti_unstable: Player %d at %s:%d\n",daindex,st,allowed_addresses[daindex].port);
daindex++;
}
else
{
struct hostent * lph;
unsigned short pt = BUILD_DEFAULT_UDP_PORT;
for (j=0;st[j];j++)
if (st[j] == ':')
{ pt = (unsigned short)atol(&st[j+1]); st[j] = 0; break; }
if ((lph = gethostbyname(st)))
{
// if ((danetmode == 1) && (daindex == myconnectindex)) daindex++;
allowed_addresses[daindex].host = ntohl(*(int *)lph->h_addr);
allowed_addresses[daindex].port = pt;
initprintf("mmulti_unstable: Player %d at %s:%d (%s)\n",daindex,
inet_ntoa(*(struct in_addr *)lph->h_addr),pt,argv[i]);
daindex++;
}
else initprintf("mmulti_unstable: Failed resolving %s\n",argv[i]);
}
free(st);
}
if ((danetmode == 255) && (daindex)) { gcom->numplayers = 2; udpmode = udpmode_client; } //an IP w/o /n# defaults to /n0
// if ((numplayers >= 2) && (daindex) && (!danetmode)) myconnectindex = 1;
if (daindex > gcom->numplayers) gcom->numplayers = daindex;
}
else
{
@ -1925,12 +1925,12 @@ static int parse_udp_config(int argc, char **argv, gcomtype *gcom)
if (Bstrcasecmp(tok, "interface") == 0)
{
if ((tok = get_token(&ptr)) &&
(parse_interface(tok, &ip, &udpport)))
(parse_interface(tok, &ip, &udpport)))
{
bogus = 0;
}
initprintf("mmulti_unstable: Using interface %s:%d\n",
static_ipstring(ip), (int) udpport);
static_ipstring(ip), (int) udpport);
}
else if (Bstrcasecmp(tok, "mode") == 0)
@ -2003,7 +2003,7 @@ static int parse_udp_config(int argc, char **argv, gcomtype *gcom)
}
free(buf);
}
}
if (open_udp_socket(ip, udpport))
{

View file

@ -101,7 +101,7 @@ int recfilep,totalreccnt;
int debug_on = 0,actor_tog = 0;
static char *rtsptr;
//extern char syncstate;
//extern char syncstate;
extern int numlumps;
static FILE *frecfilep = (FILE *)NULL;
@ -652,7 +652,7 @@ void getpackets(void)
int i, j, k, l;
int other;
int packbufleng;
input_t *osyn, *nsyn;
sampletimer();
@ -1539,13 +1539,13 @@ static void checksync(void)
printext256(4L,130L,31,0,"Out Of Sync - Please restart game",0);
printext256(4L,138L,31,0,"RUN DN3DHELP.EXE for information.",0);
}
#if 0
#if 0
if (syncstate)
{
printext256(4L,160L,31,0,"Missed Network packet!",0);
printext256(4L,138L,31,0,"RUN DN3DHELP.EXE for information.",0);
}
#endif
#endif
}
void check_fta_sounds(int i)
@ -4036,12 +4036,12 @@ void displayrest(int smoothratio)
else if (ud.screen_size > 2)
{
i = scale(tilesizy[BOTTOMSTATUSBAR]+1,ud.statusbarscale,100);
// j = scale(2,ud.config.ScreenWidth,320);
// j = scale(2,ud.config.ScreenWidth,320);
}
else
{
i = 2;
// j = scale(2,ud.config.ScreenWidth,320);
// j = scale(2,ud.config.ScreenWidth,320);
}
j = scale(2,ud.config.ScreenWidth,320);
@ -9624,9 +9624,9 @@ static void checkcommandline(int argc, const char **argv)
#endif
if (!Bstrcasecmp(c+1,"net")
#ifdef RANCID_NETWORKING
|| !Bstrcasecmp(c+1,"rmnet")
|| !Bstrcasecmp(c+1,"rmnet")
#endif
)
)
{
g_NoSetup = TRUE;
firstnet = i;
@ -10523,7 +10523,7 @@ static void Startup(void)
for (i=0;i<MAXPLAYERS;i++)
g_player[i].playerreadyflag = 0;
#ifndef RANCID_NETWORKING
#ifndef RANCID_NETWORKING
// enet regression
if (CommandNet)
{
@ -10535,9 +10535,9 @@ static void Startup(void)
}
CommandNet = NULL;
}
#endif
#endif
#ifdef RANCID_NETWORKING
#ifdef RANCID_NETWORKING
// TODO: split this up in the same fine-grained manner as eduke32 network backend, to
// allow for event handling
initmultiplayers(netparamcount,netparam);
@ -10548,7 +10548,7 @@ static void Startup(void)
return;
}
#else
#else
if (initmultiplayersparms(netparamcount,netparam))
{
initprintf("Waiting for players...\n");
@ -10562,7 +10562,7 @@ static void Startup(void)
}
}
}
#endif
#endif
if (netparam) Bfree(netparam);
netparam = NULL;
@ -13180,10 +13180,15 @@ FRAGBONUS:
fadepal(0,0,0, 63,0,-7);
KB_FlushKeyboardQueue();
while (KB_KeyWaiting()==0)
{
handleevents();
getpackets();
int tc = totalclock;
while (KB_KeyWaiting()==0)
{
if (totalclock > tc + 600) break;
handleevents();
getpackets();
}
}
if (bonusonly || ud.multimode > 1) return;

View file

@ -1538,11 +1538,11 @@ void waitforeverybody()
while (1)
{
idle();
/*
sampletimer();
handleevents();
AudioUpdate();
*/
/*
sampletimer();
handleevents();
AudioUpdate();
*/
if (quitevent || keystatus[1]) gameexit("");