Commit Graph

8 Commits

Author SHA1 Message Date
SkyratBot
e65a48e91f [MIRROR] Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#430)
* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)

Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl

* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-08-19 20:17:28 -04:00
kevinz000
851f5f2939 Merge remote-tracking branch 'tgstation/master' into movespeed_modifiers_take_two 2020-02-18 16:44:19 -07:00
JJRcop
a1392847bd Remove ismovableatom macro (#9) 2020-02-17 15:03:16 +01:00
kevinz000
ce02e45ecb get rid of refactor tags 2020-01-11 22:12:07 -08:00
kevinz000
63d54e3e4f PAIN 2020-01-11 22:11:29 -08:00
kevinz000
46451e23ea move stuff 2020-01-10 07:27:44 -08:00
kevinz000
bb95b2a870 changes 2020-01-09 19:13:30 -08:00
nemvar
b30942b847 Removes virgin snailcrawl component and replaces it with chad snailcrawl element. (#45479)
* Removes snail_crawl.dm

* Maybe this does it.
2019-08-02 02:32:44 -07:00