@@ -395,13 +395,10 @@ static int LAN_GetServerCount( int source )
395
395
* LAN_GetServerInfo
396
396
* ====================
397
397
*/
398
- static void LAN_GetServerInfo ( int source, int n, char *buf, int buflen )
398
+ static void LAN_GetServerInfo ( int source, int n, trustedServerInfo_t &trustedInfo, std::string &info )
399
399
{
400
- char info[ MAX_STRING_CHARS ];
401
400
serverInfo_t *server = nullptr ;
402
401
403
- info[ 0 ] = ' \0 ' ;
404
-
405
402
switch ( source )
406
403
{
407
404
case AS_LOCAL:
@@ -421,32 +418,17 @@ static void LAN_GetServerInfo( int source, int n, char *buf, int buflen )
421
418
break ;
422
419
}
423
420
424
- if ( server && buf )
421
+ if ( server )
425
422
{
426
- buf[ 0 ] = ' \0 ' ;
427
- Info_SetValueForKey ( info, " hostname" , server->hostName , false );
428
- Info_SetValueForKey ( info, " serverload" , va ( " %i" , server->load ), false );
429
- Info_SetValueForKey ( info, " mapname" , server->mapName , false );
430
- Info_SetValueForKey ( info, " label" , server->label , false );
431
- Info_SetValueForKey ( info, " clients" , va ( " %i" , server->clients ), false );
432
- Info_SetValueForKey ( info, " bots" , va ( " %i" , server->bots ), false );
433
- Info_SetValueForKey ( info, " sv_maxclients" , va ( " %i" , server->maxClients ), false );
434
- Info_SetValueForKey ( info, " ping" , va ( " %i" , server->ping ), false );
435
- Info_SetValueForKey ( info, " minping" , va ( " %i" , server->minPing ), false );
436
- Info_SetValueForKey ( info, " maxping" , va ( " %i" , server->maxPing ), false );
437
- Info_SetValueForKey ( info, " game" , server->game , false );
438
- Info_SetValueForKey ( info, " nettype" , Util::enum_str ( server->responseProto ), false );
439
- Info_SetValueForKey ( info, " addr" , Net::AddressToString ( server->adr , true ).c_str (), false );
440
- Info_SetValueForKey ( info, " needpass" , va ( " %i" , server->needpass ), false ); // NERVE - SMF
441
- Info_SetValueForKey ( info, " gamename" , server->gameName , false ); // Arnout
442
- Q_strncpyz ( buf, info, buflen );
423
+ trustedInfo.responseProto = server->responseProto ;
424
+ Q_strncpyz ( trustedInfo.addr , Net::AddressToString ( server->adr , true ).c_str (), sizeof ( trustedInfo.addr ) );
425
+ Q_strncpyz ( trustedInfo.featuredLabel , server->label , sizeof ( trustedInfo.featuredLabel ) );
426
+ info = server->infoString ;
443
427
}
444
428
else
445
429
{
446
- if ( buf )
447
- {
448
- buf[ 0 ] = ' \0 ' ;
449
- }
430
+ trustedInfo = {};
431
+ info.clear ();
450
432
}
451
433
}
452
434
@@ -1419,11 +1401,8 @@ void CGameVM::QVMSyscall(int syscallNum, Util::Reader& reader, IPC::Channel& cha
1419
1401
break ;
1420
1402
1421
1403
case CG_LAN_GETSERVERINFO:
1422
- IPC::HandleMsg<LAN::GetServerInfoMsg>(channel, std::move (reader), [this ] (int source, int n, int len, std::string& info) {
1423
- std::unique_ptr<char []> buffer (new char [len]);
1424
- buffer[0 ] = ' \0 ' ;
1425
- LAN_GetServerInfo (source, n, buffer.get (), len);
1426
- info.assign (buffer.get ());
1404
+ IPC::HandleMsg<LAN::GetServerInfoMsg>(channel, std::move (reader), [this ] (int source, int n, trustedServerInfo_t& trustedInfo, std::string& info) {
1405
+ LAN_GetServerInfo (source, n, trustedInfo, info);
1427
1406
});
1428
1407
break ;
1429
1408
0 commit comments