Reject clients that attempt to login before the core is configured Properly-implemented clients should never try to do this, but if it is done, this patch prevents it from crashing the core. Thanks to @chaign_c (https://twitter.com/chaign_c/) for finding this issue. (cherry picked from commit e17fca767d60c06ca02bc5898ced04f06d3670bd)
Implement custom deserializer to add our own sanity checks This is a rough first implementation in preparation of writing proper serializers independently of QDataStream. Thanks to @chaign_c (https://twitter.com/chaign_c/) for finding issues with QDataStream that prompted this change. (cherry picked from commit 2b777e99fc9f74d4ed21491710260664a1721d1f))
uisupport: Forcefully disable horizontal scrollbar in BufferView Qt 5.10.1 severly broke QHeaderView and by extension, QTreeView, resulting in a horizontal scrollbar being shown. In order to avoid making this issue too obvious for people using that version of Qt (including the builds currently generated by our CI), force the scrollbar to be hidden in BufferView. The contents can still be scrolled sideways e.g. with horizontal mouse wheel emulation, but that should not hit many users in practice. Earlier or later versions of Qt seem to not suffer from that issue, but always hiding the scrollbar doesn't hurt either way. (cherry picked from commit dd27cd1f84ecceb5fb287894373d4cb42131a03f)
cmake: Add exception handling support to MSVC compile flags Since STL types may throw, MSVC needs to get told to support exceptions by specifying the /EHsc flag. Otherwise, it warns about the lack thereof, even though Quassel itself does not use nor handle exceptions. Closes GH-350. (cherry picked from commit 7a8ea3eee1dcff4eaa5398d1cf5739fa32eccd9e)
Semi-yearly copyright bump It's not 2015 anymore.
Don't terminate the core due to backend issues while setting up If the storage backend selected by the user during core setup cannot be initialized, the problem shall be communicated to the client and the user can start over; the core shall not exit in this case. Ensure that failure to initialize the selected backend only terminates the core if it's not being setup.
PostgreSqlStorage: Fix apparently-incorrect index in requestAllMsgs This function was using 1 for its date index, which is the same index as was used for bufferid. The correct index to use is 2. Closes GH-346. (cherry picked from commit 3bf86a5278e26bec5e708a566e6926125f1941f0)
SslServer: Add support for Elliptic Curve keys If the key won't load as an RSA key, attempt to load it again as an EC key. DSA support was not added because DSA is obsolete and no- one should be using it. Note that this only works with Qt5.5 and up as EC support was added in that version (https://github.com/qt/qtbase/commit/962ea569). An if macro has been used to allow for continued compilation under Qt4 and Qt5<5.5. Closes GH-344. (cherry picked from commit d31101ed316b6449de0d8dad7a1e1e8d097807a5)
Change HTTP links to HTTPS for quassel-irc.org and subdomains Closes GH-335. (cherry picked from commit c2e3479b87e7d0713d302d26fb2d7d01d7b8c9c2)
qa: Replace [[fallthrough]] by [[clang::fallthrough]] The [[fallthrough]] attribute is a C++17 extension. It happens to work in GCC 7, but causes warnings or even failures in other compilers. In my quest to find a syntax that makes all compilers happy without having to disable the (useful) warning, I think I have finally found a way. Using the clang:: namespace seems to solve several issues: * It is marked as a compiler extension, so compilers not supporting it should simply ignore the attribute * It (obviously) works in Clang, which is nice when using a Clang-based IDE like Qt Creator * For some reason, it also seems to silence warnings in GCC; I guess one of GCC's fancy regexes somehow matches (cherry picked from commit 9ba2ca5186c8598e33910a7df95bbdbf812a1a3d)
Correct issue where messages were over-trimmed In an attempt to correct a problem with quasseldroid multiline messages (97a9b1646bb0d6362cef14bac3a577481cc01e49) the core started trimming leading whitespace from lines. This broke pasting of things like formatted code. This commit ensures that only the splitting is done, and that we skip empty lines when handling /SAY since they sometimes cause issues on networks and the clients which split client-side already skip empty lines. Closes GH-331. (cherry picked from commit f5abb30ac6ec8089901d686d9c2ec3387f97aaef)
qtui: Avoid bogus tr() context warning lupdate in Qt versions prior to 5.6.1 has issues parsing brace- initialization in constructors, and complains about "tr() cannot be called without context". Work around this by explicitly giving the class name as suggested in QTBUG-34128. (cherry picked from commit 934fa4151f48fd12549fe0772cfbc995c6e63034)
Use craft on appveyor This will use the well maintained packages from Craft. It will reduce the maintenance cost for providing a Windows installer. Additionally we now use up to date binaries built exactly for this compiler, so we no longer depend on 33dparty openssl binaries etc. Using and deploying KDE Framework 5 libaries on Windows is also possible now. This build provides KDE Sonnet Find out more about Craft: https://community.kde.org/Craft Contribute to the Quassel blueprint: https://github.com/KDE/craft-blueprints-kde/blob/master/qt-apps/quassel/quassel.py Closes GH-312. (cherry picked from commit d42211c299e2bb0d4371b7508259b26b55547d30)
uisupport: Also fix doubleclick in nick views Since the Q_WS_* macros no longer exist in Qt5, replace them by the appropriate Q_OS_* macros. Remove some needless ones, too. (cherry picked from commit fe155e87ffa75bf4c13ae40311b029adba706816)
uisupport: Join channels on doubleclick on all but Windows and OSX The Q_WS_* macros no longer exist in Qt5, so the OS detection for the click behavior in bufferviews didn't work correctly. Use the correct Q_OS_* macros to ensure that a doubleclick is required on platforms other than Windows and OSX. (cherry picked from commit deaa4151758de4f22d1f7c113c50af0ffc6ae587)