52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
}
buf->data = ((char *)buf->data) + len;
((char *)buf->data)[0] = 0;
buf->dataLength -= len;
}
}
static uchar *
stripheader(uchar *b)
{
char *s = strstr((char *)b, "\n\r\n");
if (!s)
s = strstr((char *)b, "\n\n");
return s ? (uchar *)s : b;
}
static ENetAddress masterserver = { ENET_HOST_ANY, 80 };
static int updmaster = 0;
static OFString *masterbase;
static OFString *masterpath;
static uchar masterrep[MAXTRANS];
static ENetBuffer masterb;
static void
updatemasterserver(int seconds)
{
// send alive signal to masterserver every hour of uptime
if (seconds > updmaster) {
|
|
|
|
|
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
}
buf->data = ((char *)buf->data) + len;
((char *)buf->data)[0] = 0;
buf->dataLength -= len;
}
}
static unsigned char *
stripheader(unsigned char *b)
{
char *s = strstr((char *)b, "\n\r\n");
if (!s)
s = strstr((char *)b, "\n\n");
return s ? (unsigned char *)s : b;
}
static ENetAddress masterserver = { ENET_HOST_ANY, 80 };
static int updmaster = 0;
static OFString *masterbase;
static OFString *masterpath;
static unsigned char masterrep[MAXTRANS];
static ENetBuffer masterb;
static void
updatemasterserver(int seconds)
{
// send alive signal to masterserver every hour of uptime
if (seconds > updmaster) {
|
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
{
bool busy = mssock != ENET_SOCKET_NULL;
httpgetrecieve(&masterb);
if (busy && mssock == ENET_SOCKET_NULL)
printf("masterserver reply: %s\n", stripheader(masterrep));
}
uchar *
retrieveservers(uchar *buf, int buflen)
{
OFString *path =
[OFString stringWithFormat:@"%@retrieve.do?item=list", masterpath];
httpgetsend(
&masterserver, masterbase, path, @"cubeserver", @"Cube Server");
ENetBuffer eb;
buf[0] = 0;
|
|
|
|
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
{
bool busy = mssock != ENET_SOCKET_NULL;
httpgetrecieve(&masterb);
if (busy && mssock == ENET_SOCKET_NULL)
printf("masterserver reply: %s\n", stripheader(masterrep));
}
unsigned char *
retrieveservers(unsigned char *buf, int buflen)
{
OFString *path =
[OFString stringWithFormat:@"%@retrieve.do?item=list", masterpath];
httpgetsend(
&masterserver, masterbase, path, @"cubeserver", @"Cube Server");
ENetBuffer eb;
buf[0] = 0;
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
{
checkmasterreply();
updatemasterserver(seconds);
// reply all server info requests
ENetBuffer buf;
ENetAddress addr;
uchar pong[MAXTRANS], *p;
int len;
enet_uint32 events = ENET_SOCKET_WAIT_RECEIVE;
buf.data = pong;
while (enet_socket_wait(pongsock, &events, 0) >= 0 && events) {
buf.dataLength = sizeof(pong);
len = enet_socket_receive(pongsock, &addr, &buf, 1);
if (len < 0)
|
|
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
{
checkmasterreply();
updatemasterserver(seconds);
// reply all server info requests
ENetBuffer buf;
ENetAddress addr;
unsigned char pong[MAXTRANS], *p;
int len;
enet_uint32 events = ENET_SOCKET_WAIT_RECEIVE;
buf.data = pong;
while (enet_socket_wait(pongsock, &events, 0) >= 0 && events) {
buf.dataLength = sizeof(pong);
len = enet_socket_receive(pongsock, &addr, &buf, 1);
if (len < 0)
|