Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
The imposed limitations made mutation of Omittables pretty much
impossible outside of rvalues. Honestly, it was pretty much the original
intention - and it doesn't look right, in retrospect.
(cherry picked from commit 7f886b34936f324662eb17afbb214d4800dcea03)
|
|
|
|
|
|
It's too easy to incorrectly test the previous return type.
(cherry picked from commit 5904a61c59f0eef00aef07ef998658fd791ff139)
|
|
|
|
|
|
Facility macros to report Olm errors: QOLM_INTERNAL_ERROR[_X],
QOLM_FAIL_OR_LOG[_X]
|
|
A convenient abstraction swallowing all the type casts and, more
importantly, cleanup on destruction (previous code only cleaned up
the buffer upon a successful call to Olm API but not upon an error).
|
|
Notably:
- simplified unnecessarily verbose constructs;
- formally aligned (no re-numeration was necessary)
QOlmMessage::Type with corresponding OLM_ constants;
- dropped QOlmSession::encryptMessageType() because it's very
sensitive to the order of calling with QOlmSession::encrypt()
(and encrypt() itself already calls it and returns the message
type);
- simplify the return type of pickle() calls that can only fail due to
an internal error;
- replace const QString& with QStringView or const QByteArray&
where appropriate;
- use '\0' where it was meant to be instead of '0'.
|
|
QOlmError represents a subset of OlmErrorCode, and the associated
fromString() function uses undocumented strings produced inside Olm;
meanwhile OlmErrorCode is documented in its own header file. Each QOlm*
class now has lastErrorCode() next to lastError() (that, from now,
returns a textual representation straight from Olm, not QOlmError enum).
Also: including olm/error.h in e2ee/e2ee.h required some rearrangement
of the code to make sure non-E2EE configuration still builds.
|
|
It's too easy to incorrectly test the previous return type.
|
|
|
|
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
|
|
|
|
|
|
Contains two fixes:
- When receiving the mac, we can also be in WAITINGFORVERIFICATION state
- Ignore all KeyVerificationDone events; we don't do anything with them anyway and sometimes receive them after the session is destructed
|
|
The parent constructor requires full json instead of content json now
|
|
Don't crash in MxcReply if the event is not a RoomMessageEvent
|
|
|
|
As of the current GHA jammy image, Valgrind cannot cope with some
of Clang 14 output: https://bugs.kde.org/show_bug.cgi?id=452758
This is most likely a band-aid, before the work on switching from
Valgrind to ASan.
|
|
This is the earliest version shipping olm/error.h. Conversely, stock
libolm that comes with Ubuntu 20.04 (version 3.1.3) is no more enough
so CI completely switches to jammy now.
|
|
Too many suggestions to add, e.g., * in places where it may eventually
be a smart pointer.
[skip ci]
|
|
This tries to fix getting stuck at exit since NAM has been switched
from QThreadStorage to thread_local
|
|
[skip ci]
|
|
|
|
Previously moc choked on [[attributes]]; deprecated signals, slots etc.
were documented as \deprecated instead. By Qt 5.15, that was fixed.
|
|
|
|
Previous logic wasn't quite accurate with detection of existing flags
in CMAKE_CXX_FLAGS - the new code doesn't add a flag if the negating
flag is already there. This required separate treatment of positive
and negative (-Wno-*) flags.
|
|
|
|
It's more straightforward in usage and less prone to leaks
(QThreadStorage doesn't delete objects when on non-main thread).
|
|
|
|
|
|
|
|
|
|
Key verification events gain their own base type and
KeyVerificationSession gets a single point of entry for all kinds of
incoming events. This allows to drop a pile of `incoming*` signals in
Connection and a stack of options inside switchOnType in
processIfVerification(). KVS::handleEvent() also makes (some) allowed
state transitions a bit clearer.
|
|
There's a bit convoluted stack of calls involved here, worth laying out.
C++ containers are loaded from JSON containers by calling fromJson<>
on each element of the JSON container, specialised by the element type
of the C++ container. If that element type is not itself an object
(e.g., QString), the respective specialisation of fromJson<> is supposed
to kick-in and override the default template that delegates the
conversion to JsonConverter (which in turn falls back to
JsonObjectConverter unless specialised for that type). Because template
functions cannot be partially specialised, that specialised overload
for, say, QString, is not complete: it accepts QJsonValue but anything
except QJsonValue will hit the generic overload instead. That makes the
whole fromJson<> machinery quite sensitive to the exact JSON type passed
to it; but as of Qt 5, the types actually presented to fromJson() were
limited to QJsonValue and QJsonDocument (okay, QJsonObject and
QJsonArray could also be there but the QJsonObject case is trivial
for JsonConverter and containers loaded from QJsonArray are all caught
with JsonArrayConverter).
Qt 6 started returning (const) QJsonValueRef from
`QJson*::const_iterator::operator*()` - meaning that whenever a simple
type (like, again, QString) is loaded within the bigger container,
the "wrong" fromJson() gets called. To fix this, JsonObjectUnpacker
gained a dedicated function to unpack QJsonValueRef. QJsonValueRef is
an old name existing since Qt 5.15 - no big pain. However, in Qt 6.4
QJsonValueConstRef is getting introduced for the same purpose. It's
possible to wrap the *Ref overloads in some #if/#else brackets but at
that point it becomes easier to just produce QJsonValue from whatever
QJson* iterators dereference to.
|
|
|
|
Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net>
|
|
The new MSVC preprocessor is needed to correctly deal with variadic
macros defined in .h files, so the respective compiler switch has to be
added when building depending projects too.
|
|
With CMAKE_INSTALL_LIBDIR set to ".", the place .cmake files land in
was not discoverable by find_package(), assuming a conventional
CMAKE_PREFIX_PATH.
|
|
Since C++17, parentheses only work when a constructor is there, while
braces allow both calling a constructor and aggregate initialisation.
|
|
|
|
|
|
|
|
Ironically, this slicing would not break anything as all the necessary
data are saved in the Event parent class; but the code is very fragile
and scary.
|
|
Streamline event types, part 2
|