Commit Graph

1200 Commits

Author SHA1 Message Date
Kyle Sanderson
20b7592fcd GetPlayerNetworkIDString isn't alone anymore, we have friends. (#551)
* GetPlayerNetworkIDString isn't alone anymore, we have friends.

Completely speculative CS:GO fix, 50/50, 60/40.

* Preserve existing cycle-saving techniques.
* Style.
2016-10-13 22:14:51 -07:00
Nicholas Hastings
d5ff829952 Speculative fix for CS:GO GetClientAuthId issue... 2016-10-13 21:21:58 -04:00
Asher Baker
ec7f1727e5 Allow setting multiple chat trigger characters (PR #449, bug 4341, bug 5668)
Special characters only, minus a couple of potentially-problematic characters.

Technically this is a breaking change - but anyone using multi-char triggers is probably crazy anyway and has been driven off by now.
2016-10-04 16:34:42 +01:00
Asher Baker
215599b90f Merge PR #489: Do not call functions in paused plugins
This should be reverted when pausing is removed, see PR discussion.
2016-10-03 16:51:45 +01:00
Kyle Sanderson
2deaa666f3 Fix erroneous () in DebugReport:: printouts. (#517) 2016-10-03 16:29:51 +01:00
Asher Baker
47dd2870d9 Merge pull request #476 from alliedmodders/query-format
Implement an auto-escaping Format native for SQL query construction
2016-10-03 16:20:01 +01:00
Nicholas Hastings
999f37800c Strip invalid UTF-8 char from end of player names. (#545) 2016-10-02 18:34:27 -04:00
David Anderson
27e812461f Update to the latest SourcePawn and AMTL. 2016-09-24 16:45:04 -07:00
Peace-Maker
ecbedb7b11 Don't expose CellArrays in ISourceMod to extensions
Don't let extensions have access to the internal implementation of cell
arrays.
2016-08-26 15:09:18 -07:00
Peace-Maker
5b9ae5917b Add ICellArray and create/free in ISourceMod
Add an ICellArray interface to expose the adt_array CellArray class from
logic to core.
Add methods to ISourceMod to create and delete ICellArray instances in
logic.
2016-08-21 21:32:23 +02:00
David Anderson
61e958e679 Merge pull request #529 from peace-maker/optional_natives
Keep optional natives optional after reloading
2016-07-26 12:59:32 -07:00
David Anderson
3cccfc15da Update to SourcePawn 1.9 and the latest AMTL. 2016-07-26 01:36:35 -07:00
Peace-Maker
2c8614c639 Keep optional natives optional after reloading
Bug 6518

Starting from no plugins loaded, after the final step of the following,
basetriggers will be marked as errored because mapchooser is missing:

Load basetriggers
Load mapchooser
Unload mapchooser
Load mapchooser
Unload mapchooser

We lose the SP_NTVFLAG_OPTIONAL when removing a WeakNative. The
__pl_mapchooser_SetNTVOptional() is only called in basetriggers when it
is loaded. It adds the OPTIONAL flag to the mapchooser natives the
basetrigger plugin uses.
When mapchooser is loaded, the native is overwritten and the OPTIONAL
flag consumed (WeakNative registered), but not preserved. Later when
mapchooser is unloaded the WeakNative is removed in
CNativeOwner::UnbindWeakRef, but the OPTIONAL flag isn't added again.
The next time mapchooser is loaded, the natives aren't optional anymore
and will cause a real dependency.

The change in ShareSys isn't needed to fix the error, but is included to
keep the SP_NTVFLAG_OPTIONAL flag consistent.
2016-07-21 01:52:47 +02:00
David Anderson
34dedcaab1 Remove half-up rounding. 2016-06-22 12:54:36 -07:00
Nicholas Hastings
f668b3fe6c 🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍 2016-06-11 12:43:04 -04:00
Nicholas Hastings
f12924458f Merge branch 'vs2015' 2016-06-11 12:14:12 -04:00
Nicholas Hastings
0f96a28cca Use VSERVERTOOLS003 in Nuclear Dawn if server has it available. 2016-06-08 12:32:20 -04:00
Fyren
4d8e76202d Merge pull request #518 from alliedmodders/UTIL_ReplaceAll-fix
Fix UTIL_ReplaceAll not properly tracking length (bug 6472)
2016-06-06 16:40:17 -06:00
Fyren
e356758743 Merge pull request #516 from alliedmodders/scheduledpluginreloads
Better plugin reloads.
2016-06-06 16:29:07 -06:00
Fyren
4e654704dc Slightly better handling of plugin reloading. 2016-06-06 22:26:34 +00:00
Fyren
1790033458 Fix UTIL_ReplaceAll not properly tracking length. 2016-06-06 06:29:53 +00:00
Nicholas Hastings
e3d7a047bd Fixed varint sendprops being treated improperly in CS:GO. 2016-06-05 11:03:18 -04:00
Nicholas Hastings
20c9815619 Add support for sending gameevent to specific client. (#505) 2016-05-12 22:15:23 -04: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
40f2512317 Remove support for Source 1 Dota 2. (#496) 2016-04-26 23:18:47 -04:00
Nicholas Hastings
b5876bdd33 Allow Plugin_Changed return on event PreHooks to not block. (#503)
This avoids issues from confusion that users have, returning Plugin_Changed
after altering event data, when Plugin_Changed isn't required and wasn't supported
in that scenario, and instead acted like Plugin_Handled.
2016-04-26 23:18:00 -04:00
Nicholas Hastings
ed46ca3328 Add support for retrieving game server Steam Id (bug 6404). (#495) 2016-04-26 23:17:08 -04:00
Nicholas Hastings
ebb5607bd4 Really fix FollowCSGOServerGuidelines setting being ignored in SDKTools (always on) (bug 6480). 2016-03-30 15:59:51 -04:00
Nicholas Hastings
416abd81a1 Add support for compiling with VS2015. 2016-03-30 08:56:27 -04:00
Nicholas Hastings
0c8e6e2918 Fix FollowCSGOServerGuidelines setting being ignored in SDKTools (always on). 2016-03-21 15:29:48 -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
Nicholas Hastings
b65de29c92 Add initial version of safety checks for CS:GO to attempt to avoid user GSLT bans. 2016-03-02 15:25:01 -05: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
Nicholas Hastings
90ca9d7a47 Fix SourceTV bot detection on Source SDK 2013 mods and BM:S.
See bug 5529.
2016-01-25 18:52:58 -05: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
Nicholas Hastings
c5a81d7c6f Adjust for hl2sdk-bms updates. 2015-12-22 09:53:05 -05: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
Ross Bemrose
c8caf7c860 Update FindMap testsuite plugin.
Update GetMapDisplayNAme to use platform separator on CSGO
2015-11-06 02:38:59 -05: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
Asher Baker
fc504737c5 Fix a misleading error message from "sm config".
The Ignore state could be hit if the value was read directly rather than using OnSourceModConfigChanged.
2015-10-30 11:06:54 +00: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
d551338510 Merge pull request #400 from alliedmodders/mv-srvcmds-x
Remove sm_srvcmds.cpp.
2015-09-20 15:15:43 -07:00
David Anderson
8a7dfdbc11 Move the "sm" command to core/logic. 2015-09-20 14:33:17 -07:00
David Anderson
1a7b708df8 Split command buffer peeking hacks out of the "sm" command. 2015-09-20 14:33:14 -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
8b4f27a038 Add infrastructure to let logic define ConCommands. 2015-09-20 14:32:58 -07:00
David Anderson
c66d14605a Merge pull request #397 from alliedmodders/rm-old-mms
Remove code that handles long-dead Metamod:Source versions.
2015-09-18 14:38:52 -07:00
Nicholas Hastings
c982cc9991 Merge pull request #354 from powerlord/findmap-plugins
GetMapDisplayName and associated core plugin changes.
2015-09-17 11:17:40 -04:00
David Anderson
485975fd99 Fix temporary parameter list being static. 2015-09-16 00:27:36 -07:00
David Anderson
c36f80b93d Don't use server commands to flush plugin unloads. 2015-09-15 19:43:41 -07:00
David Anderson
08cadcdda6 Merge pull request #372 from alliedmodders/rm-pausing
Cleanup some PluginSys idiosyncracies.
2015-09-15 19:15:26 -07:00
David Anderson
d473b0441d Allow plugin info fields to outlive their runtime. 2015-09-15 19:07:22 -07:00
Ross Bemrose
10a95cfdce Add new function: GetMapDisplayName.
This function will resolve the name of a map using FindMap, then (if applicable), will turn a workshop map name into a nicely formatted name.

Currently only TF2 and CS:GO Map Workshops are supported.  More can be added at a later date.

This function returns false if a map was not found, but true in any other instance even if FindMap could not resolve the map name.

This patch also updates the following core plugins to use this GetMapDisplayName:

BaseTriggers
BaseVotes
MapChooser
NextMap
Nominations
RandomCycle
RockTheVote
2015-09-15 16:16:58 -04:00
David Anderson
653dd36020 Merge pull request #378 from powerlord/fix-convar
Fix ConVar .IntValue, .BoolValue, and .FloatValue assignments (Bug 6405)
2015-09-15 12:33:51 -07:00
Nicholas Hastings
28bf744a18 Merge pull request #399 from alliedmodders/tf2branch-nontf2-ismapvalid
Fix IsMapValid call on non-TF2 TF2-branch games to use old behavior requiring only map name
2015-09-14 20:44:24 -04:00
Nicholas Hastings
e7d9795fc1 Fix IsMapValid call on non-TF2 TF2-branch games to use old behavior requiring only map name. 2015-09-14 19:24:28 -04: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
Nicholas Hastings
44bacdc067 Fix recent regression with finding engine ptr on CS:S, DoD:S, HL2:DM.
They are still only have engine v21, not yet v22 (let alone v23).
2015-09-14 09:56:06 -04:00
David Anderson
fc947c68f7 Merge pull request #404 from alliedmodders/fix-crash
Fix a regression from the ConCmdManager refactoring that causes a crash using SourceMod commands in the server console.
2015-09-12 22:53:09 -07:00
David Anderson
bcd80d3e84 Fix a regression from the ConCmdManager refactoring that causes a crash using SourceMod commands in the server console. 2015-09-12 00:26:47 -07:00
Nicholas Hastings
f6d7fd4949 Don't use VInterfaceMatch when wanting explicit iface version. 2015-09-11 05:40:03 -07:00
Nicholas Hastings
2bd91dd93b Fix always failing when falling back to engine v22. 2015-09-11 05:38:53 -07:00
Nicholas Hastings
82b7485001 Shim for TF2-branch games to find latest, non-shimmed engine iface. 2015-09-10 20:43:48 -04:00
Kyle Sanderson
f59df243ea Change FindMap to take a const char* for searching instead of char*. 2015-09-10 11:47:46 -07:00
David Anderson
fe16e8e47c Move the SetCommandClient hook into GameHooks. 2015-09-09 20:03:23 -07:00
David Anderson
fd961f4712 Remove code to handle SourceHook versions 3 and lower. 2015-09-09 19:00:18 -07:00
David Anderson
b548ba7b58 Remove bad-console-read protection logic for Metamod:Source 1.7 and earlier. 2015-09-09 18:59:31 -07:00
David Anderson
df672dd8ce Remove the ability to compile against Metamod:Source versions lower than 1.8. 2015-09-09 18:54:43 -07:00
David Anderson
c54b54ded0 Use GameHooks for ChatTriggers. 2015-09-09 18:51:21 -07:00
David Anderson
5757b729ac Hide MRES_SUPERCEDE from command hook callbacks. 2015-09-09 18:45:20 -07:00
David Anderson
b048dc7b10 Move ConCommand hooks into GameHooks and switch callbacks to ICommandArgs. 2015-09-09 18:40:04 -07:00
David Anderson
b63bfdc72a Rename QueryHookMode to ClientCvarQueryMode. 2015-09-09 18:40:01 -07:00
David Anderson
fa93426f6a Remove blanket includes from sm_stringutil. 2015-09-09 15:18:24 -07:00
David Anderson
86f0a77e73 Reduce dependence on sm_strdup. 2015-09-09 15:18:24 -07:00
David Anderson
13a783d441 Remove UTIL_Format() and UTIL_FormatArgs(). 2015-09-09 15:18:17 -07:00
David Anderson
e08697ad54 Remove strncopy(). 2015-09-09 14:57:47 -07:00
David Anderson
67c8ee4ce3 Move CDataPack from core to logic. 2015-09-06 11:02:52 -07:00
David Anderson
69984f472f Remove unused, NPOTB CrazyDebugger. 2015-09-05 20:44:00 -07:00
Ross Bemrose
569a53182c Allow sm_SetConVarString, sm_SetConVarFloat, and sm_SetConVarNum treat notify and replicate as non-existent.
Remove special functions for BoolValue, IntValue, and FloatValue.
2015-08-24 17:03:47 -04:00
Kyle Sanderson
9ebd4ad627 Merge pull request #319 from KyleSanderson/20isntagoodnumber
Allow GetMapHistorySize to return numbers greater than 20 (r=Dr!fter).
2015-09-05 13:58:03 -07:00
Nicholas Hastings
1e1b23dc31 Add missing sanity checks on element param on SetEntPropString for data props. 2015-09-02 18:35:37 -04:00
Nicholas Hastings
5cdf35d687 Fix array detection/handling for GetEntPropString with string_t arrays (bug 6409). 2015-09-02 18:33:58 -04:00
David Anderson
4e275eea97 Split intercom.h into separate headers and reduce shared header inclusion. 2015-08-31 10:00:49 -07:00