MCPcopy Index your code
hub / github.com/assaultcube/AC / serverms

Function serverms

source/src/serverms.cpp:181–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

179extern int getpongflags(enet_uint32 ip);
180
181void serverms(int mode, int numplayers, int minremain, char *smapname, int millis, const ENetAddress &localaddr, int *mnum, int *msend, int *mrec, int *cnum, int *csend, int *crec, int protocol_version, const char *servdesccur, int _interm)
182{
183 flushmasteroutput();
184 updatemasterserver(millis, localaddr.port, _interm);
185
186 static ENetSocketSet sockset;
187 ENET_SOCKETSET_EMPTY(sockset);
188 ENetSocket maxsock = pongsock;
189 ENET_SOCKETSET_ADD(sockset, pongsock);
190 if(mastersock != ENET_SOCKET_NULL)
191 {
192 maxsock = max(maxsock, mastersock);
193 ENET_SOCKETSET_ADD(sockset, mastersock);
194 }
195 if(lansock != ENET_SOCKET_NULL)
196 {
197 maxsock = max(maxsock, lansock);
198 ENET_SOCKETSET_ADD(sockset, lansock);
199 }
200 if(enet_socketset_select(maxsock, &sockset, NULL, 0) <= 0) return;
201
202 // reply all server info requests
203 static uchar data[MAXTRANS];
204 ENetBuffer buf;
205 ENetAddress addr;
206 buf.data = data;
207 int len;
208
209 loopi(2)
210 {
211 ENetSocket sock = i ? lansock : pongsock;
212 if(sock == ENET_SOCKET_NULL || !ENET_SOCKETSET_CHECK(sockset, sock)) continue;
213
214 buf.dataLength = sizeof(data);
215 len = enet_socket_receive(sock, &addr, &buf, 1);
216 if(len < 0) continue;
217
218 // ping & pong buf
219 ucharbuf pi(data, len), po(&data[len], sizeof(data)-len);
220 bool std = false;
221 if(getint(pi) != 0) // std pong
222 {
223 extern struct servercommandline scl;
224 (*mnum)++; *mrec += len; std = true;
225 putint(po, protocol_version);
226 putint(po, mode);
227 putint(po, numplayers);
228 putint(po, minremain);
229 sendstring(smapname, po);
230 sendstring(servdesccur, po);
231 putint(po, scl.maxclients);
232 putint(po, getpongflags(addr.host));
233 if(pi.remaining())
234 {
235 int query = getint(pi);
236 switch(query)
237 {
238 case EXTPING_NAMELIST:

Callers 1

serversliceFunction · 0.85

Calls 15

flushmasteroutputFunction · 0.85
updatemasterserverFunction · 0.85
maxFunction · 0.85
getintFunction · 0.85
putintFunction · 0.85
sendstringFunction · 0.85
getpongflagsFunction · 0.85
extping_namelistFunction · 0.85
extping_serverinfoFunction · 0.85
extping_maprotFunction · 0.85
extping_uplinkstatsFunction · 0.85
valid_clientFunction · 0.85

Tested by

no test coverage detected