1
0
forked from 0ad/0ad
0ad/source/network
wraitii ee0d204bf6 Wrap JSAutoRequest and replace usage of JSContext* with the wrapper.
JSAutoRequest is required before calling into most JSAPI methods, for GC
reasons.
Calling it is required and fragile as one must not forget.
Further, SM52 and later make manipulating JSContext* dangerous as that
can cross Compartment(Realm in SM68) barriers (and ScriptInterface now
matches a Compartment).

The solution to both problems is to avoid using JSContext* in 0 A.D.
itself. To achieve this, a Request class is introduced, and must be used
to access a JSContext* from a scriptInterface. Further, Request is
passed to other ScriptInterface functions isntead of JSContext*, making
it obvious that the caller has already called it, reducing errors and
redundant JSAutoRequest calls.
Only JSNative functions now get a naked JSContext* without protection,
but the likelihood of forgetting a request is lower since many
ScriptInterface functions now expect it.

JSContext* is directly passed to JSAPI functions only.

Part of the SM52 migration, stage: SM45 compatible

Based on a patch by: Itms
Tested By: Freagarach
Refs #4893

Differential Revision: https://code.wildfiregames.com/D3088
This was SVN commit r24176.
2020-11-13 13:18:22 +00:00
..
scripting Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
tests Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
fsm.cpp Strip trailing whitespace from network code. 2015-12-21 13:58:32 +00:00
fsm.h Strip trailing whitespace from network code. 2015-12-21 13:58:32 +00:00
NetClient.cpp Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
NetClient.h Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
NetClientTurnManager.cpp Implement NetClient PushGuiMessage using parameter pack and ScriptInterface::CreateObject from D2080 / b4626359f5 to replace remaining Eval function calls. 2019-09-07 16:51:44 +00:00
NetClientTurnManager.h Split TurnManager classes into individual files per class. Patch by echotangoecho, fixes #4095. 2017-01-24 02:04:50 +00:00
NetFileTransfer.cpp Split NetFileTransfer message parsing into one function per case, refs #5212. 2019-09-17 14:18:46 +00:00
NetFileTransfer.h Split NetFileTransfer message parsing into one function per case, refs #5212. 2019-09-17 14:18:46 +00:00
NetHost.cpp Automatically replace %hs/%ls with %s in CLogger format strings. 2015-01-22 20:36:24 +00:00
NetHost.h Always inform clients why the server chose to disconnect them, i.e. stop using NDR_UNKNOWN as a disconnect reason when the reason is known and add a LOGWARNING for future authors. 2019-09-26 11:36:03 +00:00
NetMessage.cpp Pass ScriptInterface as a const ref where possible. 2017-08-24 00:32:42 +00:00
NetMessage.h Fix few typos found with the Debian lintian tool. 2017-10-28 22:34:57 +00:00
NetMessages.h Remove DefPersistentRooted and unneeded includes. 2020-11-12 08:24:30 +00:00
NetMessageSim.cpp Pass ScriptInterface as a const ref where possible. 2017-08-24 00:32:42 +00:00
NetServer.cpp Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
NetServer.h pthread -> std::thread (4/7) - Replace pthread in remaining files 2019-08-15 09:07:16 +00:00
NetServerTurnManager.cpp Always inform clients why the server chose to disconnect them, i.e. stop using NDR_UNKNOWN as a disconnect reason when the reason is known and add a LOGWARNING for future authors. 2019-09-26 11:36:03 +00:00
NetServerTurnManager.h Don't trigger a NetServerTurnManager debug breakpoint if a modified or unmodified client sends a non-sequential turnnumber. 2018-01-26 23:02:13 +00:00
NetSession.cpp Always inform clients why the server chose to disconnect them, i.e. stop using NDR_UNKNOWN as a disconnect reason when the reason is known and add a LOGWARNING for future authors. 2019-09-26 11:36:03 +00:00
NetSession.h Remove DefPersistentRooted and unneeded includes. 2020-11-12 08:24:30 +00:00
NetStats.cpp Clean up ThreadUtil, use standard C++11 constructs instead of custom ones. 2019-06-06 19:30:48 +00:00
NetStats.h Clean up ThreadUtil, use standard C++11 constructs instead of custom ones. 2019-06-06 19:30:48 +00:00
NMTCreator.h Fix segfault when sending a very large net chat message. 2020-08-01 15:25:13 +00:00
Serialization.h Strip trailing whitespace from network code. 2015-12-21 13:58:32 +00:00
StringConverters.h Provide JSON-compatible string escaping 2011-11-04 01:18:34 +00:00
StunClient.cpp Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
StunClient.h Fix unreported glooxwrapper leaks following 61261d14fc, refs #2305. 2019-08-17 00:12:19 +00:00