MCPcopy Create free account
hub / github.com/assaultcube/AC / checkserverpongs

Function checkserverpongs

source/src/master.cpp:362–398  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

360}
361
362void checkserverpongs()
363{
364 ENetBuffer buf;
365 ENetAddress addr;
366 static uchar pong[MAXTRANS];
367 for(;;)
368 {
369 buf.data = pong;
370 buf.dataLength = sizeof(pong);
371 int len = enet_socket_receive(pingsocket, &addr, &buf, 1);
372 if(len <= 0) break;
373 loopv(gameservers)
374 {
375 gameserver &s = *gameservers[i];
376 if(s.address.host == addr.host && s.address.port == addr.port)
377 {
378 if(s.lastping && (!s.lastpong || ENET_TIME_GREATER(s.lastping, s.lastpong)))
379 {
380 mclient *c = findclient(s);
381 if(c)
382 {
383 c->registeredserver = true;
384 outputf(*c, "succreg\n");
385 if(!c->message && gbanlists.length())
386 {
387 c->message = gbanlists.last();
388 c->message->refs++;
389 }
390 }
391 }
392 if(!s.lastpong) updateserverlist = true;
393 s.lastpong = servtime ? servtime : 1;
394 break;
395 }
396 }
397 }
398}
399
400void bangameservers()
401{

Callers 1

checkclientsFunction · 0.85

Calls 1

enet_socket_receiveFunction · 0.50

Tested by

no test coverage detected