-
Shifting signed integers is undefined and only sometimes produced unexpected results. Was detected in packet identifiers in QoS testing.
-
Instead of getting it from the sender of a packet. Sometimes there was no sender. This fixes a crash on retained messages, because those newly created packets didn't have a sender to get the threaddata from. So, using a special object for it is easier and more robust.
-
Encrypted version only.
-
Profiling showed it was significant enough to do so.
-
My IDE didn't understand them for finding symbols, apparently.
-
Fix websocket crash case Fix infinite loop on lying about websocket frame sizes This fixes infinite loops when you send a frame type that is not handled.
-
And check Qos.
-
When sending many 0xFF, it would overflow. Found by using 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.
-
And fixed an assert in CirBuf.read().
-
It's also used to reload settings. Settings are copied to threads, to avoid concurrency issues.
-
Also changed the disconnect reason a little: it now shows them all, so I don't have to worry about which one is more important.
-
And some side issues.
-
And include some extra error conditions.
-
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 includes fixes to packet parsing that I couldn't make a separate commit for. When it comes to QoS 1, these things are still left, off the top of my head: - vector for qos queue? It helps with ordering and is CPU cache friendly. - Store subscription QoS. - Do retained messages have QoS? - Give session client's name, to access it later.
-
Also reloading of settings, which re-opens the log file.
-
There still is a bug: writing a very big packet. I wrote the test case already.