Commit graph

2736 commits

Author SHA1 Message Date
Monster Iestyn
aecc97ded3 PT_REQUESTFILE checking:
* if you sent it to a client rather than the server, game over, your connection is closed
* if files that don't exist or are too large are requested are listed, game over, your connection is closed (they should have been checked on YOUR side beforehand, silly)
* if the server has downloading disabled anyway, ...yeah, you get the idea

Don't worry, I made sure Got_RequestFilePak cleaned up the full file request list for the node in case of failure
2017-05-26 13:39:54 +01:00
Monster Iestyn
9027858214 Merge branch 'nights-capsule-color-fix' into 'next'
NiGHTS capsule color fix

This fixes the Egg/Ideya capsule from NiGHTS stages being given SKINCOLOR_RED as a color. Not really relevant for vanilla SRB2 (since it doesn't use green in the sprite), but it may be relevant for custom mods using a custom NiGHTS capsule sprite that happens to use green.

See merge request !189
2017-05-25 20:23:30 -04:00
Monster Iestyn
db7d217199 Merge branch 'exit-your-server-desync-fix' into 'master'
Exit your server desync fix

This branch fixes this bug: https://mb.srb2.org/showthread.php?t=41811

Here's an explanation of how this bug is actually happening:
* Pressing Enter with "Start" selected calls `D_MapChange` to make a map change command. (Note that part of it is actually delayed because it's called from a menu, but this isn't relevant to the bug)
* `D_MapChange` itself calls `SV_StartServer` to start up the server, if you're supposed to be the server player.
* Pressing Esc while starting up a server like shown in the gif causes the server to be cancelled, and go back to the title screen.
* HOWEVER, since we're still in `D_MapChange`, the map change command is made anyway.
* Since we're not in a netgame as expected, no random seed is added, and the map change command has a total size of 9 bytes (1 for the id + 8 for the actual data). This is then stored in the net command buffer. The random seed would add another 4 bytes if it WAS added, note.
* Next time you start a server, and let it work as normal, two more net commands are added: an "add player" command (size 3), and a map change command (size 13, including random seed this time). Your net command buffer now has a total size of **25** (9 + 3 + 13).
* This net command buffer is then sent as a `PT_TEXTCMD` packet to yourself.
* SRB2 recieves the `PT_TEXTCMD` you sent to yourself, and some time later, tries to run the net commands stored in it.
* The first map command is read as if it's size 13 rather than size 9 (it isn't), mistakeningly thinking a 4-byte random seed is stored (since you ARE in a netgame now). This means your buffer reads what it thinks is the next net command starting from position **[14]** in the buffer.
* Bad luck, it gets an id of **0**, which doesn't correspond with any net command!
* This message is then printed in the console:

> WARNING: Got unknown net command [14]=0 (max 25)

* The game subsequently kicks you out the server with a "desynch" message.

tl;dr The game doesn't correctly cancel the map change when you cancel the server with Esc like that. This is not a good thing.

See merge request !188
2017-05-25 20:19:27 -04:00
Monster Iestyn
437780d503 Add missing break for MT_EGGCAPSULE's switch case in P_SpawnMobj (sorry!) 2017-05-25 18:40:48 +01:00
Monster Iestyn
a23e9bc32b Fix size_t printing 2017-05-25 18:10:20 +01:00
Monster Iestyn
58236af6f7 Tweak to D_MapChange: if you failed to start a server, DON'T send a map change command 2017-05-25 16:55:59 +01:00
toasterbabe
47e171250f * Prevent joining a server if you have too many files loaded to add the remainder.
* Made the check in Got_RequestAddfilecmd more comprehensive, since I might as well. Just something to tweak a little later in internal.
2017-05-25 16:06:39 +01:00
toasterbabe
5c302d7ffc Partial implementation of fix for Got_RequestAddfilecmd (the other half - the limitation on the size of the filesneeded section of the serverinfo packet - will be applied in internal.) 2017-05-25 15:34:21 +01:00
toasterbabe
2aa1215716 Fix a thing where the host adds a WAD and you have too many WADs loaded to add it. 2017-05-25 15:22:32 +01:00
Monster Iestyn
c92aaa74a4 I think PT_CLIENT2MIS was meant to do this too, probably 2017-05-23 18:46:34 +01:00
Monster Iestyn
7147e0fcaf Improve previous PT_TEXTCMD/PT_TEXTCMD2 check, add another one to ignore zero size textcmds! 2017-05-23 17:35:32 +01:00
Monster Iestyn
0b0b738a6f Don't allow non-servers to receive PT_RESYNCHGET 2017-05-23 16:34:56 +01:00
Monster Iestyn
ff1cc07a1d Implemented toaster's suggestion to make a macro here 2017-05-23 16:29:09 +01:00
Monster Iestyn
9e3bdc5ee2 Prevent bad PT_TEXTCMD/PT_TEXTCMD2 textcmd[0] sizes? 2017-05-23 16:13:42 +01:00
Monster Iestyn
fdfd6e1c0b Whoops don't do that for PT_REQUESTFILE 2017-05-22 22:20:08 +01:00
Monster Iestyn
c70839334e Added a bunch of missing checks to prevent non-server players from sending other non-server players stuff 2017-05-22 22:17:51 +01:00
Monster Iestyn
3784d765e4 Remove extra whitespace I added 2017-05-22 20:47:38 +01:00
Monster Iestyn
28444c12dd Some more things I overlooked in this fix 2017-05-22 16:54:39 +01:00
Monster Iestyn
247ed56e17 Don't allow nonsense PT_ASKINFOVIAMS packets, nor any at all if offline 2017-05-22 16:44:50 +01:00
Monster Iestyn
6062223eb5 Merge branch 'master' into next 2017-05-22 13:23:46 +01:00
Monster Iestyn
c23cf25f65 Merge branch 'dedicated-bonuses-fix' into 'master'
Dedicated bonuses fix

Fixes the issue reported here: https://mb.srb2.org/showthread.php?t=42530

What it turns out is going on is that making the game bail out in the middle of Y_StartIntermission if you're a dedicated server's host prevents the game from awarding the players bonuses in coop mode. Therefore it's not just special stage bonuses, but ANY kind of bonuses that can cause desyncs if someone loses all their lives.

This can be merged to master since it's a change only for dedicated server hosts, and should otherwise be compatible with 2.1.18.

See merge request !186
2017-05-22 07:15:50 -04:00
Monster Iestyn
5aeb4b5919 Revert "Loop through rebound packets until you found a good one or ran out of them"
On second thought, this was probably unnecessary anyway.

This reverts commit 1078a642df.
2017-05-20 21:29:05 +01:00
Monster Iestyn
284e539c66 Don't bail out in Y_StartIntermission in dedicated mode, this causes the game not to add on score bonuses for players from the server's view of things! 2017-05-19 16:31:23 +01:00
Monster Iestyn
1078a642df Loop through rebound packets until you found a good one or ran out of them 2017-05-19 11:52:50 +01:00
Monster Iestyn
5a1fc6098e Attempts to prevent stupid stuff from happening 2017-05-19 11:25:28 +01:00
Monster Iestyn
0cf42d8bb8 Merge branch 'next' into public_next 2017-05-17 16:18:42 +01:00
Monster Iestyn
1781ccf4ca Merge branch 'master' into next 2017-05-17 16:16:50 +01:00
Monster Iestyn
b564c8ab9a Merge branch 'sdl-fixes' into 'master'
SDL fixes and cleanup

Mostly cleanup tbh. I noticed a few things that bugged me when examining SDL's code recently, thought I might as well fix them up a bit.

These changes definitely does not affect netplay, so this can be merged to master just fine.

See merge request !183
2017-05-16 23:09:23 -04:00
Monster Iestyn
8454e75e3c Merge branch 'extracolormaps-fix' into 'next'
R_InitExtraColormaps fix

This fixes the `R_InitExtraColormaps` function so that it correctly realises there are no "extra colormaps" actually in SRB2's files, rather than telling you there are 6 extra colormaps on game startup (or however many WAD files total you have added).

For those who don't know what the function does, it searches for C_START/C_END markers, and if they exist, adds any lumps inbetween to a list of extra colormaps internally. They are never used by the game though, since we last supported colormaps of that kind so long ago I don't think anyone remembers when anymore (definitely more than a decade at least).

Merging to next since I don't know if this would cause any netplay issues or not tbh.

See merge request !182
2017-05-15 17:14:47 -04:00
Monster Iestyn
17a06dd6c4 I_GetConsoleEvents: Split KEY_EVENT code into a function of its own, like with I_GetEvent's event types
One benefit of this is that event_t data need only be created if KEY_EVENT is found, since the other event types never do anything anyway
2017-05-15 18:39:59 +01:00
Monster Iestyn
87085f2475 SDLSetMode: merge wasfullscreen/windowed mode code into one block 2017-05-15 16:35:32 +01:00
Monster Iestyn
a340f2c8ed Impl_CreateWindow: re-use "flags" for SDL_RENDERER_* flags, remove unnecessary curly braces 2017-05-15 16:19:28 +01:00
Monster Iestyn
4979ab6b8e Not really important or anything, but checking render_soft == rendermode rather than rendermode == render_soft always bugged me. And it's not consistent with the rest of the source code (or at least most of it) anyway. 2017-05-15 15:43:31 +01:00
Monster Iestyn
d1bbd1261e VID_SetMode: SDLSetMode should use vid.width/vid.height, not windowedModes[modeNum].
If modenum was < 0 or >= MAXWINMODES, that would make windowedModes[modeNum] be out of bounds and possibly crash the game.
2017-05-15 15:36:51 +01:00
Monster Iestyn
093800cb06 I_FinishUpdate: OglSdlFinishUpdate should never run for render_soft, even if screens[0] somehow is NULL 2017-05-15 15:24:40 +01:00
Monster Iestyn
f8482421e5 Don't need to use WADFILENUM/LUMPNUM in this function, since W_CheckNumForNamePwad returns just the lump number, not a combined WAD + lump number frankenstein's monster
This is just in case someone actually tries to dump in C_START/C_END and "add" colormaps using them, not that they would ever be used currently anyway.
2017-05-15 14:38:55 +01:00
Monster Iestyn
222807c6f6 Fix R_InitExtraColormaps reporting 6 or more colormaps every time you loaded the game, even though we haven't used C_START/C_END in more than a decade now
Note to self: W_ functions are awfully confusing with returning with LUMPERROR or INT16_MAX. Should sort out what's going on there if necessary
2017-05-15 14:29:31 +01:00
toasterbabe
bdcd9125d2 Fixed that thing where missiles like sliding up slopes for some reason.
This isn't a 1:1 fix for non-slopes - they still like stepping up over the borders of sloped sectors - but this fixes the most egregrious issue.
2017-05-14 14:47:09 +01:00
Alam Ed Arias
7d4146870a Appveyor: keep a stable name version of the archive 2017-05-13 12:14:09 -04:00
Alam Ed Arias
377fc81447 Appveyor: disable deployment 2017-05-13 12:07:37 -04:00
Monster Iestyn
e6bee93e40 Merge branch 'next' into public_next 2017-05-12 22:58:31 +01:00
Monster Iestyn
a1f5caeba6 Merge branch 'update-to-v2.1.18' into 'next'
Update to v2.1.18

Exactly what it says on the tin.

See merge request !180
2017-05-12 16:08:31 -04:00
Monster Iestyn
b8ffeeb59f Update version number to v2.1.18
Don't worry, I remembered to update MODVERSION as well this time :)
2017-05-12 16:06:27 +01:00
Monster Iestyn
4da3b7eac1 Merge branch 'next' into public_next 2017-05-11 22:57:45 +01:00
Monster Iestyn
55fd0aba91 Merge branch 'master' into next 2017-05-11 20:47:12 +01:00
Monster Iestyn
7185455d6a Merge branch 'jetjaw-crash-fix' into 'next'
Jet Jaw crash fix

Turns out not having MF_SHOOTABLE can cause the Jet Jaw to endlessly loop between the two states, until somehow LUA_CallAction inexplicably causes Z_StrDup to crash anyway (that one's a mystery to me, I'm not going to look into it right now). I tweaked A_JetJawChomp so this endless loop can't happen anymore.

See merge request !176
2017-05-11 15:23:56 -04:00
Monster Iestyn
435ea7dc9d Merge branch 'invalid-node-hotfix_master' into 'master'
Invalid node hotfix master

Quick hotfix to prevent `Net_CloseConnection` from crashing if the node's number is invalid.

See merge request !179
2017-05-11 15:17:31 -04:00
Monster Iestyn
96c63bf95b Whoops forgot this bit too 2017-05-09 20:17:46 +01:00
Monster Iestyn
8582406dd2 prevent invalid nodes from crashing Net_CloseConnection, print a warning and return instead 2017-05-09 15:13:19 -04:00
Monster Iestyn
5950d8209f Merge branch 'next' into public_next 2017-05-08 16:24:19 +01:00