mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-26 06:10:56 +00:00
sezero's NET_SendToAll fix
Here's a patch to NET_SendToAll() which was always broken: it never skipped non-connected clients. Depending on the compiler, it would wait the whole 5 seconds of its blocktime before it gave up. While there, changed its blocktime argument to double (the comparison is against a double.)
This commit is contained in:
parent
1dfb914c46
commit
d4ae231f34
4 changed files with 7 additions and 9 deletions
|
@ -287,7 +287,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.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -736,19 +736,17 @@ NET_CanSendMessage (qsocket_t * sock)
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
NET_SendToAll (sizebuf_t *data, int blocktime)
|
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 state1[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;
|
for (i = 0, host_client = svs.clients; i < svs.maxclients;
|
||||||
i++, host_client++) {
|
i++, host_client++) {
|
||||||
if (!host_client->netconnection)
|
if (host_client->netconnection && host_client->active) {
|
||||||
continue;
|
|
||||||
if (host_client->active) {
|
|
||||||
if (host_client->netconnection->driver == 0) {
|
if (host_client->netconnection->driver == 0) {
|
||||||
NET_SendMessage (host_client->netconnection, data);
|
NET_SendMessage (host_client->netconnection, data);
|
||||||
state1[i] = true;
|
state1[i] = true;
|
||||||
|
|
|
@ -487,7 +487,7 @@ 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)
|
||||||
Sys_Printf
|
Sys_Printf
|
||||||
("Host_ShutdownServer: NET_SendToAll failed for %u clients\n",
|
("Host_ShutdownServer: NET_SendToAll failed for %u clients\n",
|
||||||
|
|
|
@ -858,7 +858,7 @@ SV_SendReconnect (void)
|
||||||
|
|
||||||
MSG_WriteByte (&msg, svc_stufftext);
|
MSG_WriteByte (&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);
|
||||||
|
|
Loading…
Reference in a new issue