David Macek 3d21c7cbcb Services: Keep per-network state separate
Until now, only `waitingJoins` was stored separately per network, while
`channels`, `sentGhost` and `identified` had one common value per plugin
instance.  Instead of making everything a dictionary indexed by network
name like `waitingJoins`, let's bundle all the state together in a class
and store *its* instances in such a dictionary.

This fixes at least one race condition, for which a test case was added.
Even with `noJoinsUntilIdentified` set, the bot would let joins through
as long as *any* one network has already finished identifying.
2021-04-27 19:52:58 +02:00
..
2020-03-26 22:10:28 +01:00
2021-04-05 17:42:31 +02:00
2021-04-24 21:01:40 +02:00
2014-03-22 16:38:16 +02:00
2021-04-22 00:29:15 +02:00