Skip to content

Commit ead6999

Browse files
committed
Migrate 3 network rate server cvars
Also make negative rate limit behave the same as 0 (i.e. unlimited)
1 parent e5ffb2b commit ead6999

5 files changed

Lines changed: 18 additions & 26 deletions

File tree

src/engine/server/server.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,14 +306,14 @@ extern cvar_t *sv_killserver;
306306
extern cvar_t *sv_mapname;
307307
extern cvar_t *sv_mapChecksum;
308308
extern cvar_t *sv_serverid;
309-
extern cvar_t *sv_maxRate;
309+
extern Cvar::Cvar<int> sv_maxRate;
310310

311-
extern cvar_t *sv_lanForceRate;
311+
extern Cvar::Cvar<bool> sv_lanForceRate;
312312

313313
extern cvar_t *sv_showAverageBPS; // NERVE - SMF - net debugging
314314

315315
// TTimo - autodl
316-
extern cvar_t *sv_dl_maxRate;
316+
extern Cvar::Cvar<int> sv_dl_maxRate;
317317

318318
//fretn
319319
extern cvar_t *sv_fullmsg;

src/engine/server/sv_client.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -907,13 +907,13 @@ void SV_WriteDownloadToClient( client_t *cl, msg_t *msg )
907907
// show_bug.cgi?id=509
908908
// for autodownload, we use a separate max rate value
909909
// we do this every time because the client might change its rate during the download
910-
if ( sv_dl_maxRate->integer < rate )
910+
if ( sv_dl_maxRate.Get() < rate )
911911
{
912-
rate = sv_dl_maxRate->integer;
912+
rate = sv_dl_maxRate.Get();
913913

914914
if ( bTellRate )
915915
{
916-
Log::Notice( "'%s' downloading at sv_dl_maxrate (%d)", cl->name, sv_dl_maxRate->integer );
916+
Log::Notice( "'%s' downloading at sv_dl_maxrate (%d)", cl->name, sv_dl_maxRate.Get() );
917917
}
918918
}
919919
else if ( bTellRate )
@@ -1025,7 +1025,7 @@ void SV_UserinfoChanged( client_t *cl )
10251025
// Internet server, assume that they don't need a rate choke
10261026
if ( Sys_IsLANAddress( cl->netchan.remoteAddress )
10271027
&& sv_networkScope.Get() <= 1
1028-
&& sv_lanForceRate->integer == 1 )
1028+
&& sv_lanForceRate.Get() )
10291029
{
10301030
cl->rate = NETWORK_LAN_RATE; // lans should not rate limit (though sv_maxRate still applies?)
10311031
}

src/engine/server/sv_init.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,6 @@ void SV_Init()
607607
// serverinfo vars
608608
sv_mapname = Cvar_Get( "mapname", "nomap", CVAR_SERVERINFO | CVAR_ROM );
609609
Cvar::Latch( sv_maxClients );
610-
sv_maxRate = Cvar_Get( "sv_maxRate", "0", CVAR_SERVERINFO );
611610
Cvar::SetValue( "layout", "" ); // TODO: declare in sgame
612611
Cvar::AddFlags( "layout", Cvar::SERVERINFO );
613612

@@ -619,13 +618,8 @@ void SV_Init()
619618

620619
sv_killserver = Cvar_Get( "sv_killserver", "0", 0 );
621620

622-
sv_lanForceRate = Cvar_Get( "sv_lanForceRate", "1", 0 );
623-
624621
sv_showAverageBPS = Cvar_Get( "sv_showAverageBPS", "0", 0 ); // NERVE - SMF - net debugging
625622

626-
// the download netcode tops at 18/20 kb/s, no need to make you think you can go above
627-
sv_dl_maxRate = Cvar_Get( "sv_dl_maxRate", "42000", 0 );
628-
629623
// fretn - note: redirecting of clients to other servers relies on this,
630624
// ET://someserver.com
631625
sv_fullmsg = Cvar_Get( "sv_fullmsg", "Server is full.", 0 );

src/engine/server/sv_main.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ Cvar::Cvar<int> sv_padPackets("sv_padPackets", "(debugging) add n NOP bytes to e
7474
cvar_t *sv_killserver; // menu system can set to 1 to shut server down
7575
cvar_t *sv_mapname;
7676
cvar_t *sv_serverid;
77-
cvar_t *sv_maxRate;
77+
Cvar::Cvar<int> sv_maxRate("sv_maxRate", "max bytes/sec to send to a client (0 = unlimited)", Cvar::SERVERINFO, 0);
7878

79-
cvar_t *sv_lanForceRate; // TTimo - dedicated 1 (LAN) server forces local client rates to 99999 (bug #491)
79+
Cvar::Cvar<bool> sv_lanForceRate("sv_lanForceRate", "make LAN clients use max network rate", Cvar::NONE, true);
8080

81-
cvar_t *sv_dl_maxRate;
81+
Cvar::Cvar<int> sv_dl_maxRate("sv_dl_maxRate", "max bytes/sec for UDP pak download", Cvar::NONE, 42000);
8282

8383
cvar_t *sv_showAverageBPS; // NERVE - SMF - net debugging
8484

src/engine/server/sv_snapshot.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -780,29 +780,27 @@ static int SV_RateMsec( client_t *client, int messageSize )
780780
}
781781

782782
// low watermark for sv_maxRate, never 0 < sv_maxRate < 1000 (0 is no limitation)
783-
if ( sv_maxRate->integer && sv_maxRate->integer < NETWORK_MIN_RATE )
783+
if ( sv_maxRate.Get() > 0 && sv_maxRate.Get() < NETWORK_MIN_RATE )
784784
{
785-
Cvar_Set( "sv_MaxRate", XSTRING(NETWORK_MIN_RATE) );
785+
Log::Warn( "sv_maxRate too low, increasing to %d", NETWORK_MIN_RATE );
786+
sv_maxRate.Set( NETWORK_MIN_RATE );
786787
}
787788

788789
rate = client->rate;
789790

790791
// work on the appropriate max rate (client or download)
791792
if ( !*client->downloadName )
792793
{
793-
maxRate = sv_maxRate->integer;
794+
maxRate = sv_maxRate.Get();
794795
}
795796
else
796797
{
797-
maxRate = sv_dl_maxRate->integer;
798+
maxRate = sv_dl_maxRate.Get();
798799
}
799800

800-
if ( maxRate )
801+
if ( maxRate > 0 )
801802
{
802-
if ( maxRate < rate )
803-
{
804-
rate = maxRate;
805-
}
803+
rate = std::min( rate, maxRate );
806804
}
807805

808806
rateMsec = ( messageSize + HEADER_RATE_BYTES ) * 1000 / rate;
@@ -835,7 +833,7 @@ void SV_SendMessageToClient( msg_t *msg, client_t *client )
835833
// TTimo - show_bug.cgi?id=491
836834
// added sv_lanForceRate check
837835
if ( client->netchan.remoteAddress.type == netadrtype_t::NA_LOOPBACK ||
838-
( sv_lanForceRate->integer && Sys_IsLANAddress( client->netchan.remoteAddress ) ) )
836+
( sv_lanForceRate.Get() && Sys_IsLANAddress( client->netchan.remoteAddress ) ) )
839837
{
840838
client->nextSnapshotTime = svs.time - 1;
841839
return;

0 commit comments

Comments
 (0)