Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
// Send to the MS.
M_Memcpy(netbuffer, &mshpp, sizeof(mshpp));
doomcom->datalength = sizeof(ms_holepunch_packet_t);
doomcom->remotenode = (INT16)msnode;
I_NetSend();
}
void UnregisterServer(void)
{
if (con_state != MSCS_REGISTERED)
{
con_state = MSCS_NONE;
CloseConnection();
return;
}
con_state = MSCS_NONE;
CONS_Printf(M_GetText("Removing this server from the Master Server...\n"));
if (HMS_in_use())
{
HMS_unlist();
return;
}
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
if (MS_Connect(registered_server.ip, registered_server.port, 0))
{
CONS_Alert(CONS_ERROR, M_GetText("Cannot connect to the Master Server\n"));
return;
}
if (RemoveFromMasterSever() < 0)
CONS_Alert(CONS_ERROR, M_GetText("Cannot remove this server from the Master Server\n"));
CloseConnection();
MSCloseUDPSocket();
MSLastPing = 0;
}
void MasterClient_Ticker(void)
{
if (server && ms_RoomId > 0)
SendPingToMasterServer();
}
static void ServerName_OnChange(void)
{
if (con_state == MSCS_REGISTERED)
AddToMasterServer(false);
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
}
static void MasterServer_OnChange(void)
{
UnregisterServer();
RegisterServer();
}
#ifndef NONET
// Like recv, but waits until we've got enough data to fill the buffer.
static size_t recvfull(SOCKET_TYPE s, char *buf, size_t len, int flags)
{
/* Total received. */
size_t totallen = 0;
while(totallen < len)
{
ssize_t ret = (ssize_t)recv(s, buf + totallen, (int)(len - totallen), flags);
/* Error. */
if(ret == -1)
return (size_t)-1;
totallen += ret;
}
return totallen;
}
#endif