-
Instead of the thread data, which didn't make sense.
-
On server shutdown and when taking over a session. On disconnect, wills are queued first, we wait for the queueing to be done, then initiate disconnect. When TCP buffers are full and fds are not reported by epoll, the thread loop still exits and clients are just closed on exit.
-
This includes some logic to have threads finish their work before quitting.
-
It was a mistake that it ran inside the timer thread, which came to light by asserting the thread local authentication pointer (see a few commits ago).
-
Files are simple serialized bytes prefaced by lengths. File is hashed to verify integrity. This was also a good way preventing unexpected errors when trying to crash the parser by having it load a different file. This change includes some refactoring that was necessary: - It 'fixes' looking at the wrong thread's authentiction. This is still wrong though. It will be fixed by a thread local pointer in the next commit. - Deadlocks with yourself are handled in rwlockguard. - QoSPacketQueue is now a class. - Probably other tweaks.
-
Fix version bug.
-
Also include a few stats.
-
Encrypted version only.
-
Having threads creates instability for the fuzzer, and we don't need them.
-
This also adds configuration options for choosing what address to bind to.
-
Probably I also need a flag to fake already being upgraded, because otherwise we never get passed the complicated websocket handshake.
-
This can be called by a fuzzer like afl-fuzz.
-
This allows creation of multiple listeners, with different protocols and/or SSL certificates. Related change: settings is now a class that is copyable and assignable, and is done so to each thread on reload. Semi-related fix: fix crash in quit when multiple threads initiated it. This came to light when testing the auth plugin settings.
-
It's also used to reload settings. Settings are copied to threads, to avoid concurrency issues.
-
And some side issues.
-
This includes a timer mechanism.
-
It also contains some related improvements that I needed: * Show disconnect reason * Fix the while condition for doing write() to avoid an unnecessary call * Config reloading logic
-
Also reloading of settings, which re-opens the log file.
-
It can be defined in the config file, along with options.
-
I put the main app in a seperate class for it, because it was easier.