Commit Graph

424 Commits

Author SHA1 Message Date
Fyren
1790033458 Fix UTIL_ReplaceAll not properly tracking length. 2016-06-06 06:29:53 +00:00
Nicholas Hastings
11b4320204 Fix potential crash on plugin load when a required library is not found. 2016-04-27 10:49:39 -04:00
Nicholas Hastings
ed46ca3328 Add support for retrieving game server Steam Id (bug 6404). (#495) 2016-04-26 23:17:08 -04:00
Peace-Maker
4f4903a05e Don't try to call functions in paused plugins
This avoids spam of "Plugin not runnable" exceptions on shutdown or
plugin unload.

When re/unloading a plugin which has other ones depending on it, like
the adminmenu, It pauses the depending plugins putting them in an
"Depends on plugin: %s" error state. ForwardSys doesn't remove them from
the forward lists on pause, specially the global forwards, and still
tries to call all the global forwards like OnPlayerRunCmd and
OnLibraryAdded etc. on the paused plugins. Executing functions in paused
runtimes has been ignored in the VM before introducing the "Exception"
mechanism, but now they're all logged.

This adds checks to make sure the plugin is runnable before calling a
function. (Stolen from #438)
2016-03-14 13:24:23 +01:00
David Anderson
f7bb423f06 Update to the latest SourcePawn and AMTL. 2016-03-13 16:29:11 -07:00
David Anderson
a7c7e72004 Merge pull request #485 from peace-maker/plugin_unloading
Fix scheduled plugin unloading
2016-02-29 10:53:26 -05:00
Peace-Maker
df59fd5b0e Fix scheduled plugin unloading
When unloading a plugin no plugin is allowed to execute code. There's
been some flawed logic in the scheduling, leading it to bail out if the
plugin was marked for scheduled unloading..

Also change the "error" message of `sm plugins unload` to something
nice.
2016-02-29 16:40:24 +01:00
Peace-Maker
060f63e9db Fix printing dependent extension name
Typo which will print the name of the extension being unloaded instead
of the one which would be unloaded as well because of it.
2016-02-27 21:22:09 +01:00
Asher Baker
700ec92a9a Implement an auto-escaping Format native for SQL query construction 2016-02-15 15:05:16 +00:00
Asher Baker
272655f340 Changed AddString to be failable 2016-02-15 14:57:56 +00:00
Asher Baker
1ff13c59cf Move the guts of Format to a helper function 2016-02-15 12:49:22 +00:00
Asher Baker
936bdc47f0 Add argument index to format error messages 2016-02-15 10:20:08 +00:00
Asher Baker
9008705b9d Pass format flags down to AddString 2016-02-15 10:16:14 +00:00
Asher Baker
886c358e91 Renumber format flags for sanity 2016-02-15 10:09:48 +00:00
Peace-Maker
edb820eae8 Add info message when loading custom gamedata
Print a message to console when there is a gamedata file loaded from the
|custom| folder.
2016-01-03 22:28:24 +01:00
Fyren
0e80ffef55 Merge pull request #448 from alliedmodders/use-blamepluginerror
Update SP and use BlamePluginError in sdkhooks and sdktools.
2015-11-18 18:33:10 -07:00
Asher Baker
eb8996699e Merge pull request #443 from alliedmodders/fix-ext-dep-load
Fix crash on failing to load dependent extension.
2015-11-18 14:12:27 +00:00
Fyren
fec2fa3bf0 Update SP and use BlamePluginError in sdkhooks. 2015-11-18 01:24:31 +00:00
Asher Baker
6ab0c35837 Pre-fill buffer for GetClientAuth* 2015-11-10 14:31:02 +00:00
Asher Baker
b81b6cd1c6 Fix crash on failing to load dependent extension. 2015-11-09 14:56:42 +00:00
David Anderson
c3e5d62bf6 Update to the latest AMTL: remove PassRef. 2015-11-08 13:51:22 -08:00
David Anderson
e2b399b8d3 Update to the latest AMTL - Rename Ref to RefPtr. 2015-11-08 13:14:57 -08:00
David Anderson
1f4be9798e Flush asynchronous queries before OnPluginEnd(). 2015-11-01 00:36:20 -07:00
David Anderson
c849616003 Add an OnPluginWillUnload callback that precedes OnPluginEnd(). 2015-11-01 00:30:37 -07:00
David Anderson
d674414cf0 Add a versioned IPluginsListener and deprecate the non-versioned class. 2015-11-01 00:23:33 -07:00
David Anderson
cb3f6df111 Require that no plugin code be live when any plugin unloads. 2015-10-31 19:38:30 -07:00
David Anderson
59623695af Improve plugin console diagnostics. 2015-10-31 17:30:33 -07:00
David Anderson
87e9dee78b Evict plugins that fail to load. 2015-10-31 17:30:33 -07:00
David Anderson
62edc5f4c0 Clean up "sm plugins list" after status meaning clarifications. 2015-10-31 17:25:59 -07:00
David Anderson
485ade2610 Fix a number of inconsistencies in plugin state.
1. Fixed OnPluginUnloaded not pairing if the plugin failed.
2. Unify error message handling in the second pass.
3. Do not add libraries if a plugin failed during OnPluginStart.
2015-10-31 17:25:59 -07:00
David Anderson
9e4fff3362 Add a state variable to CPlugin to indicate queue/list membership. 2015-10-31 17:25:59 -07:00
David Anderson
7cc911ae58 Separate plugin unloading into an eviction step, which disconnects the plugin from Core.
Note: this also ensures that library action callbacks are balanced (i.e., we do not notify
libraries are being dropped if they were never notified as being added).
2015-10-31 17:25:59 -07:00
David Anderson
82ff7d5af7 Rename CPlugin::SetErrorState to EvictWithError. 2015-10-31 17:25:59 -07:00
David Anderson
c4c6efb140 Remove a crazy unused function from CPluginManager. 2015-10-31 17:25:59 -07:00
David Anderson
f078ea1f8a Remove the Illiad-length mostly-wrong comment at the top of PluginSys.h 2015-10-31 17:25:59 -07:00
David Anderson
ab1b915a3c Fix re-entrancy issues in CPluginManager by using ReentrantList. 2015-10-31 17:24:22 -07:00
David Anderson
709149fbed Remove the CPluginIterator cache. 2015-10-31 17:23:24 -07:00
David Anderson
e57a076dc8 Remove CPluginManager's friend access to CPlugin. 2015-10-31 17:19:10 -07:00
David Anderson
c21b3a36fc Remove CPluginManager direct use of CPlugin::NativeOwner::m_fakes. 2015-10-31 17:19:10 -07:00
David Anderson
f765c8d436 Remove CPluginManager direct use of CPlugin::m_LibraryMissing. 2015-10-31 17:19:10 -07:00
David Anderson
ae44a6540a Remove CPluginManager direct use of CPlugin::m_FakeNativesMissing. 2015-10-31 17:19:10 -07:00
David Anderson
f27dbaf716 Remove CPluginManager direct use of CPlugin::m_RequiredLibs. 2015-10-31 17:19:10 -07:00
David Anderson
717ad38d06 Remove CPluginManager direct use of CPlugin::m_errormsg. 2015-10-31 17:19:10 -07:00
David Anderson
60f06d1414 Remove CPluginManager direct use of CPlugin::m_FileVersion. 2015-10-31 17:19:10 -07:00
David Anderson
a579136a3d Remove CPluginManager direct use of CPlugin::m_DateTime. 2015-10-31 17:19:10 -07:00
David Anderson
2f3d523ac0 Remove CPluginManager use of CPlugin::m_pRuntime. 2015-10-31 17:19:10 -07:00
David Anderson
df5c53fa4a Remove CPluginManager direct use of CPlugin::m_filename. 2015-10-31 17:19:10 -07:00
David Anderson
46c069dbbe Remove CPluginManager direct use of CPlugin::m_Libraries. 2015-10-31 17:19:09 -07:00
David Anderson
bda9defc0f Remove CPlugin's friend access to CPluginManager. 2015-10-31 17:19:09 -07:00
David Anderson
6c5ab80418 Refactor and cleanup the AMBuildScript a bit. 2015-10-08 14:55:53 -07:00
David Anderson
88a47ff681 Switch to re-entrant lists in ForwardSys and CForward. 2015-09-21 01:07:34 -07:00
David Anderson
c1396de2fc Replace SourceHook::List with ke::LinkedList in ForwardSys. 2015-09-21 01:07:25 -07:00
David Anderson
0810c4b217 Fix style issues in ForwardSys, removing extra blocks and tightening variable scope.
This also fixes a bug where IsFunctionRegistered() did not check the paused plugins list.
2015-09-21 01:07:18 -07:00
David Anderson
632c7d05dd Remove the forward cache and simplify CForward construction. 2015-09-21 01:07:01 -07:00
David Anderson
dcc192ee0d Use new header style. 2015-09-21 01:06:43 -07:00
David Anderson
9b1678bd18 Remove error outparams from first-pass internal plugin loading commands. 2015-09-21 00:51:20 -07:00
David Anderson
5f19fc036d Refactor AskPluginLoad() to contain its own error state. 2015-09-21 00:51:16 -07:00
David Anderson
5eec2e7d6d Remove error message outparam to LoadExtensions. 2015-09-21 00:51:11 -07:00
David Anderson
3195dec436 Split LoadOrRequireExtensions into two distinct functions. 2015-09-20 23:44:45 -07:00
David Anderson
15f4a05122 Factor the iterator out of LoadOrRequireExtensions. 2015-09-20 23:44:41 -07:00
David Anderson
e559e6ffa8 Simplify pass 2 of LoadOrRequireExtensions. 2015-09-20 23:44:37 -07:00
David Anderson
23290b35a7 Clean up LoadOrRequireExtensions and properly scope variables. 2015-09-20 23:44:34 -07:00
David Anderson
2b3da56fb5 Dedent a huge block of code. 2015-09-20 23:44:30 -07:00
David Anderson
370710c0ff Fix build. 2015-09-20 21:39:12 -07:00
David Anderson
4fc7eb8a6b Remove trailing whitespace. 2015-09-20 20:58:03 -07:00
David Anderson
38c01714d7 Clean up AskPluginLoad logic. 2015-09-20 20:57:59 -07:00
David Anderson
0e1a34a4d7 Hide CPlugin timestamp management details. 2015-09-20 20:57:55 -07:00
David Anderson
d5d7e8c9cf Factor guts of _LoadPlugin into a separate function. 2015-09-20 20:57:51 -07:00
David Anderson
76d681761d Factor malware checks into its own pass. 2015-09-20 20:57:47 -07:00
David Anderson
3807edbeb8 Move CPlugin compilation into its own function. 2015-09-20 20:57:43 -07:00
David Anderson
d9216cc599 Remove references to non-mapupdated plugins. 2015-09-20 20:31:30 -07:00
David Anderson
8a7dfdbc11 Move the "sm" command to core/logic. 2015-09-20 14:33:17 -07:00
David Anderson
168b779786 Move sm_dump_handles to core/logic. 2015-09-20 14:33:10 -07:00
David Anderson
c853050265 Move sm_reload_translations to Translator. 2015-09-20 14:33:06 -07:00
David Anderson
c614d19af0 Move sm_dump_admcache to AdminCache. 2015-09-20 14:33:02 -07:00
David Anderson
c36f80b93d Don't use server commands to flush plugin unloads. 2015-09-15 19:43:41 -07:00
David Anderson
d473b0441d Allow plugin info fields to outlive their runtime. 2015-09-15 19:07:22 -07:00
David Anderson
2adae27557 Clean up CPlugin member variables. 2015-09-14 12:55:42 -07:00
David Anderson
3430962cbe Simplify required libs handling and make sure they create dependency links. 2015-09-14 12:53:23 -07:00
David Anderson
0aaa659e29 Fix how the mark-serial is used.
The mark-serial is a generation number to optimize dependency tracking. It did not actually get
applied correctly, meaning that in rare cases we could miss dependencies. This patch removes the
incorrect serial propagation and ensures that we don't double-count a dependent plugin.

Additionally, this patch ensures that all callers of BindNativeToPlugin() will update the mark
serial, as is required to correctly track dependencies.
2015-09-14 12:50:50 -07:00
David Anderson
9ef8cc7064 Separate the top of UnloadPlugin into a precursor function. 2015-09-14 12:50:39 -07:00
David Anderson
67c8ee4ce3 Move CDataPack from core to logic. 2015-09-06 11:02:52 -07:00
David Anderson
4e275eea97 Split intercom.h into separate headers and reduce shared header inclusion. 2015-08-31 10:00:49 -07:00
David Anderson
4f1705e001 Rename some bridge interfaces. 2015-08-31 09:57:32 -07:00
David Anderson
5d55ff23bd Move OnQueryCvarValueFinished into the global hook manager. 2015-08-31 09:22:08 -07:00
David Anderson
401aa038f8 Start a new bridge mechanism for global callbacks. 2015-08-31 00:07:27 -07:00
David Anderson
38e1c2f1f3 Clean up the core side of the logic bridge. 2015-08-30 23:30:15 -07:00
David Anderson
9e4d396d5e Virtualize MMS functions in the core/logic bridge. 2015-08-30 23:29:46 -07:00
David Anderson
5c5d43137d Virtualize game state functions in the core/logic bridge. 2015-08-30 23:29:23 -07:00
David Anderson
bdfdab1d3a Virtualize game description functions in the core/logic bridge. 2015-08-30 23:28:59 -07:00
David Anderson
9366882ac4 Virtualize ConVar bridge functions. 2015-08-30 23:28:44 -07:00
David Anderson
0f9e5234fe Convert core_bridge to a proper class declaration. 2015-08-30 23:28:28 -07:00
David Anderson
3d5c9f0e21 Rename smcore to bridge, and use it as a pointer. 2015-08-30 23:27:53 -07:00
David Anderson
a2dac43833 Remove CCommand from the logic bridge. 2015-08-30 21:02:14 -07:00
David Anderson
28346c99f2 Move RootConsoleMenu into core/logic. 2015-08-30 21:01:46 -07:00
David Anderson
23d55dd9d5 Move RootConsoleMenu::ConsolePrint into the logic bridge. 2015-08-30 21:01:27 -07:00
David Anderson
9d805ea9fb Replace the AddRootConsoleCommand API to not expose internal structures. 2015-08-30 21:01:03 -07:00
David Anderson
6503e92d66 Move LibrarySys from core to logic. 2015-08-30 20:11:22 -07:00
David Anderson
e78fe93e92 Move gnprintf/atcprintf from core to logic. 2015-08-30 19:32:46 -07:00
David Anderson
9d2bee261c Move TrimWhitespace from core to logic. 2015-08-30 18:42:25 -07:00