Commit Graph

200 Commits

Author SHA1 Message Date
ineed bots 47c9641939 Fix bad client reliableAcknowledge DOS exploit
Having a reliableAcknowledge of 0x7FFFFFFF causes a massive
loop to be executed in SV_UpdateServerCommandsToClient due to the + 1 overflow.
2023-04-19 14:10:29 +01:00
Zack Middleton 4fa93fbfd4 Fix client kicked as unpure when missing the latest cgame/ui pk3s
In 2013 ioquake3 stopped referencing the pk3 file that qagame.qvm was
loaded from. This had the unintended side affect of causing
non-dedicated pure servers to no longer reference a pk3 that only
contains the three QVM files.

Non-dedicated pure servers did not reference the pk3 containing the
latest cgame.qvm so if client did not have the pk3 file they were kicked
as unpure instead of the client trying to download the pk3 file.

Also make server touch ui.qvm since it's required to pass pure check and
may be separate from cgame.qvm.
2018-05-22 14:43:11 -05:00
Zack Middleton 3bf48877f3 Fix "Going to CS_ZOMBIE for [clientname]" developer message
Client name was cleared before printing the message resulting in
a blank name.
2018-04-03 21:37:59 -05:00
Zack Middleton b61e2998f3 Fix exploit to reset player by sending wrong serverId
If client sends wrong serverId but is already active in the world
(CS_ACTIVE) don't resend initial gamestate for the map. This isn't a
valid situation. The player should be CS_CONNECTED or CS_PRIMED.

Resending gamestate to an active player will cause them to respawn
without dying or disconnecting. If the player had a CTF flag it gets
lost until the map is changed or restarted.

Reported by Ensiform at:

    https://bugzilla.icculus.org/show_bug.cgi?id=6324
2018-04-03 21:37:15 -05:00
Zack Middleton adef4e6c9e Don't register fs_game cvar everywhere just to get the value 2018-01-21 06:02:08 -06:00
Thomas Köppe ed1794fe17 Change shift expressions to unsigned types. Shifting signed values to
a result that is not representable has undefined behaviour.
2018-01-21 06:01:50 -06:00
Edward Betts fe42b8653d Correct spelling mistakes. 2017-11-22 01:40:20 -06:00
Zack Middleton 45de6be4c2 Fix listen server sending snapshots each client frame
Running a server using the client engine would send server snapshots
to loopback and LAN clients each client frame (com_maxfps).

This causes excessive network traffic and likely does not provide new
information to the clients because SV_Frame() won't have run between
the extra snapshots.

This commit restores the original behavior of respecting local/LAN
client's snaps userinfo and sv_fps. The issue was introduced by the
following commit:

    Commit ac30d86db0
    From: Thilo Schulz
    Date: Wed, 13 Jul 2011 17:11:30 +0000
    Subject: - Improve snapshot rate and data rate control

Reported by Eugene C.
2017-09-15 19:31:00 -05:00
Zack Middleton fa034c17ec Echo server say/tell/sayto message to console 2017-07-24 20:55:14 -05:00
Zack Middleton 1a8bf792e7 Range check client number for trap_BotUserCommand 2017-06-07 20:38:12 -05:00
Zack Middleton 973e0a7e9c Refresh master server address cache every 24 hours
Resolve master server addresses every 24 hours instead of keeping
result forever. Don't clear sv_master[1-5] cvar if the address fails
to resolve; it might work later.
2017-05-30 18:33:15 -05:00
SmileTheory d4e1a01f33 Remove FS_Read2().
Functionally the same as FS_Read().
Streaming functionality was removed in 672cfbf16f but flag remained.
2017-03-17 04:21:11 -07:00
Zack Middleton c68e471430 Don't have clients use private slots when sv_privatePassword is unset 2016-12-05 12:40:00 -06:00
Zack Middleton 8b458e5457 Fix warnings that names passed to Name_PlayerNameCompletion is not const 2016-05-09 10:41:58 -05:00
Zack Middleton 615b73288f Use Opus for VoIP
Server/client VoIP protocol is handled by adding new cvars
cl_voipProtocol and sv_voipProtocol, sv_voip and cl_voip
are used to auto set/clear them. All users need to touch
are cl/sv_voip as 0 or 1 just like before.

Old Speex VoIP packets in demos are skipped.
New VoIP packets are skipped in demos if sv_voipProtocol
doesn't match cl_voipProtocol.

Notable difference between usage of speex and opus codecs,
when using Speex client would be sent 80ms at a time.
Using Opus, 60ms is sent at a time. This was changed because
the Opus codec supports encoding up to 60ms at a time.
(Simpler to send only one codec frame in a packet.)
2016-01-06 05:19:10 -06:00
Zachary J. Slater fe619680f8 Merge pull request #73 from Pan7/sayto
sayto cmd with player name completion
2015-12-28 09:04:19 -08:00
Zack Middleton c4f5176af4 Set bsp_trace_t::surface.flags to surfaceFlags in server and game
Revert last commit so that grapple sky check is compatible with BSPC
BotImport_Trace in (removed from repo) code/bspc/be_aas_bspq3.c.

Set bsp_trace_t::surface.flags instead of surface.value to trace_t::surfaceFlags.
surface.flags is only used for the sky check for grapple AAS reachability.
surface.value is not used at all.

bsp_trace_t is not part of the game VM API, so this does not affect VM compatibility.
BotAI_Trace in game was changed to match server. surface.value/flags are not used in game.
2015-02-18 15:17:57 -06:00
Tim Angus dd82b9d1a8 Fix case where interval overflows (thanks jackeri)
[17:58] <Jacker> hey, you might be interested in checking out this
4da5a397b5 (diff-acaedc9d8b492f9af8966ae68597392cR615)
[17:58] <Jacker> its related to the ddos protection code you wrote
[17:59] <Jacker> in continuation to:
ab9b08e584
[17:59] <Jacker> in a case if the client has in the past connected to
the server days/weeks earlier and time wraps the client wont be able to
connect
[18:00] <Jacker> since in that case if the bucket of that clients ip
still exists it wont get checked correctly
2014-12-29 19:08:42 +00:00
Pan7 f62d4c7f1c sayto cmd with player name completion 2014-07-18 00:15:05 +02:00
Zack Middleton 7a4ef47476 Fix max bans range check in SV_AddBanToList
Adding too many bans would write out of bounds. Found by Coverity.
2014-05-25 18:41:51 -05:00
MAN-AT-ARMS 94e36c288c Fix colored name padding and allow IPv6 address to fit in output of
'status' command
2014-02-22 20:47:18 -05:00
Zack Middleton 718d0a0d11 Fix sending pk3 download error messages to clients
Disabled in e52a492f61.
2014-02-09 20:23:48 -06:00
Zack Middleton d8e42cf02f Merge pull request #35 from inolen/no_renderer_restart
don't restart renderer in SV_SpawnServer unless client running dedicated
2014-02-01 16:22:24 -08:00
Anthony Pesch 278d7533e5 restart the renderer after the hunk mark has been set 2014-02-01 09:58:49 -08:00
Zack Middleton a889d7a14f Remove extra client_t::csUpdated[] slot
sv.configstrings[] is limited to 0 to MAX_CONFIGSTRINGS-1, make client_t::csUpdated[] the same.
2014-01-11 17:37:06 -06:00
Zack Middleton 690b281e4d Remove unused models from server_t 2013-07-11 23:26:30 -05:00
Zack Middleton 6b13806066 Fix getting servers from and being listed on id's q3 master server
Use q3 master protocol when com_gamename is Quake3Arena (the default), otherwise use dpmaster protocol.
2013-07-07 16:31:36 -05:00
Tim Angus 7b15415042 Rate limit getchallenge 2013-06-10 20:31:15 +01:00
/dev/humancontroller bbd17d75ce reduce the amount of compiler warnings for variable shadowing 2013-05-30 15:43:20 -05:00
Zack Middleton feb012152c Give botlib com_basegame for botlib.log path
Before it always used BASEGAME fallback code.
2013-04-22 23:11:10 -05:00
Zack Middleton ac621642ac Unify/cleanup max snapshot entities on client and server 2013-02-11 15:49:47 -06:00
Zack Middleton b943d506bf Fix clients being able to reset their player state and respawn using donedl. 2012-12-15 08:08:46 +00:00
Zack Middleton 50475fc37b Fix server ignoring client move commands if voip data is included. 2012-12-13 23:54:58 +00:00
Thilo Schulz 6b811ada7a Add length check here as well, thanks Ensiform 2012-12-03 17:58:55 +00:00
Zack Middleton 8234225459 Change more operator commands to require sv_running to be usable. Patch by Ensiform. 2012-11-01 06:03:15 +00:00
Zack Middleton b82c02fc03 Don't replay to status OOB requests in Team Arena single player. 2012-08-16 21:38:02 +00:00
Thilo Schulz a3c7003d9c prevent using getinfo as an amplifier for DDOS attacks (#5678). Patch by DevHC 2012-07-01 14:18:31 +00:00
Zack Middleton afa607c3b6 Added kicknum, kickall, and kickbots commands, patch by Ensiform. 2012-06-19 15:52:08 +00:00
Zack Middleton 2a4f775d6c Fixed comment in server.h (ent->v.absmax to ent->r.absmax). 2012-06-18 22:25:35 +00:00
Zack Middleton 1d70ffc9b2 fix the usage description of the clientkick server command (also rename SV_KickNum_f() to SV_ClientKick_f())
found by Ensiform
2012-06-18 16:33:13 +00:00
Zack Middleton 997615168a fix some typos
From /dev/humancontroller.
2012-06-18 16:25:13 +00:00
Zack Middleton a4c61d874d add a missing '\n', remove some unwanted ones
From /dev/humancontroller.
2012-06-18 16:16:57 +00:00
Zack Middleton ce3ec3ceef #5453 - Tell command for server. 2012-04-05 22:43:32 +00:00
Thilo Schulz 3241ca6e7b Add the new ioquake3 master server as standard for sv_master2 2012-01-24 23:42:16 +00:00
Thilo Schulz f9cde509b2 [18:48:20] <Ensiform> Thilo: http://pastebin.com/2UUmSCQK fixes point contents on the server side related to the cg fix with moving water. Dunno why s.origin and s.angles was ever used, the rest of sv_world.c always uses r.currentOrigin and r.currentAngles
[18:58:10] <Thilo> mhm
[18:58:15] <Thilo> Ensiform: it doesnt break anything?
[18:59:20] <Ensiform> nah
2011-10-14 17:03:59 +00:00
Thilo Schulz 7eba074ce4 Allow VM_Restart to load unpure qagame.qvm so that local server won't crash after map_restart if server operator has qagame.qvm residing outside pak file (#5196)
Thanks to "rg3" for providing a shell account
2011-09-27 22:16:07 +00:00
Zack Middleton d9b72dedc1 Require gamename if not supporting legacy protocol. 2011-09-07 19:38:19 +00:00
Thilo Schulz ba385fa43c - Switch master server protocol to dpmaster for better game separation. Based partly on patch by Zack Middleton
- Get rid of ugly cvars sv_heartbeat and cl_gamename and replace with single com_gamename
- Remove sv_flatline. Flatlines are ignored by dpmaster and are considered to be insecure because flatlines can be udp-spoofed.
2011-07-29 13:46:50 +00:00
Thilo Schulz 23f6fd1633 Bug 5094 - Code cleanup, patch by Zack Middleton and DevHC. Fixes unused-but-set gcc warnings 2011-07-29 12:27:00 +00:00
Thilo Schulz 2349148cf1 - Apply parts of Ben Millwood's target bitfield patch (#3787)
- Fix Ryan's FIXME and have voip packet buffer on the server dynamically allocated via Z_Malloc and store pointers in a circular buffer
- Improve voip target parsing on top of Ben Millwood's patch
- Add new "spatial" target where speaker is spatialized in 3d space and can be heard by all clients in hearing range (s_alMaxDistance)
  (#4467)
- Decrease voip sound lengths from 240ms to 80ms per voip packet to mitigate udp packet loss and decrease latency
- Protocol version incremented to 71
2011-07-27 15:47:29 +00:00