* net_main.c: Fix NET_SendToAll() so that it really skips non-connected

clients. While we're at it, change the type of the blocktime argument
to double (the comparison is against a double.) Rename the cryptic
state1 and state2 variables to something more indicative of thei
purpose, ie. msg_init and msg_sent. from uhexen2.
* net.h, host.c, sv_main.c: Adjust for the NET_SendToAll() argument type
change.


git-svn-id: http://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@200 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
sezero 2010-06-20 15:00:57 +00:00
parent 6b798a2ffa
commit 422fb4674a
4 changed files with 21 additions and 18 deletions

View File

@ -500,7 +500,7 @@ void Host_ShutdownServer(qboolean crash)
buf.maxsize = 4; buf.maxsize = 4;
buf.cursize = 0; buf.cursize = 0;
MSG_WriteByte(&buf, svc_disconnect); MSG_WriteByte(&buf, svc_disconnect);
count = NET_SendToAll(&buf, 5); count = NET_SendToAll(&buf, 5.0);
if (count) if (count)
Con_Printf("Host_ShutdownServer: NET_SendToAll failed for %u clients\n", count); Con_Printf("Host_ShutdownServer: NET_SendToAll failed for %u clients\n", count);

View File

@ -293,7 +293,7 @@ int NET_SendUnreliableMessage (struct qsocket_s *sock, sizebuf_t *data);
// returns 1 if the message was sent properly // returns 1 if the message was sent properly
// returns -1 if the connection died // returns -1 if the connection died
int NET_SendToAll(sizebuf_t *data, int blocktime); int NET_SendToAll(sizebuf_t *data, double blocktime);
// This is a reliable *blocking* send to all attached clients. // This is a reliable *blocking* send to all attached clients.

View File

@ -623,35 +623,38 @@ qboolean NET_CanSendMessage (qsocket_t *sock)
} }
int NET_SendToAll(sizebuf_t *data, int blocktime) int NET_SendToAll (sizebuf_t *data, double blocktime)
{ {
double start; double start;
int i; int i;
int count = 0; int count = 0;
qboolean state1 [MAX_SCOREBOARD]; qboolean msg_init[MAX_SCOREBOARD]; /* can we send */
qboolean state2 [MAX_SCOREBOARD]; qboolean state2[MAX_SCOREBOARD]; /* did we send */
for (i = 0, host_client = svs.clients; i < svs.maxclients; i++, host_client++) for (i = 0, host_client = svs.clients; i < svs.maxclients; i++, host_client++)
{ {
/*
if (!host_client->netconnection) if (!host_client->netconnection)
continue; continue;
if (host_client->active) if (host_client->active)
*/
if (host_client->netconnection && host_client->active)
{ {
if (host_client->netconnection->driver == 0) if (host_client->netconnection->driver == 0) /* Loop */
{ {
NET_SendMessage(host_client->netconnection, data); NET_SendMessage(host_client->netconnection, data);
state1[i] = true; msg_init[i] = true;
state2[i] = true; msg_sent[i] = true;
continue; continue;
} }
count++; count++;
state1[i] = false; msg_init[i] = false;
state2[i] = false; msg_sent[i] = false;
} }
else else
{ {
state1[i] = true; msg_init[i] = true;
state2[i] = true; msg_sent[i] = true;
} }
} }
@ -661,11 +664,11 @@ int NET_SendToAll(sizebuf_t *data, int blocktime)
count = 0; count = 0;
for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++) for (i=0, host_client = svs.clients ; i<svs.maxclients ; i++, host_client++)
{ {
if (! state1[i]) if (! msg_init[i])
{ {
if (NET_CanSendMessage (host_client->netconnection)) if (NET_CanSendMessage (host_client->netconnection))
{ {
state1[i] = true; msg_init[i] = true;
NET_SendMessage(host_client->netconnection, data); NET_SendMessage(host_client->netconnection, data);
} }
else else
@ -676,11 +679,11 @@ int NET_SendToAll(sizebuf_t *data, int blocktime)
continue; continue;
} }
if (! state2[i]) if (! msg_sent[i])
{ {
if (NET_CanSendMessage (host_client->netconnection)) if (NET_CanSendMessage (host_client->netconnection))
{ {
state2[i] = true; msg_sent[i] = true;
} }
else else
{ {

View File

@ -1229,7 +1229,7 @@ void SV_SendReconnect (void)
MSG_WriteChar (&msg, svc_stufftext); MSG_WriteChar (&msg, svc_stufftext);
MSG_WriteString (&msg, "reconnect\n"); MSG_WriteString (&msg, "reconnect\n");
NET_SendToAll (&msg, 5); NET_SendToAll (&msg, 5.0);
if (cls.state != ca_dedicated) if (cls.state != ca_dedicated)
Cmd_ExecuteString ("reconnect\n", src_command); Cmd_ExecuteString ("reconnect\n", src_command);