aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-07Connection::joinRoom() shouldn't enforce room stateAlexey Rusakov
This is an adjustment to the earlier fix of #471: if a join is immediately followed by a leave (e.g. from another client/bot - you can't do it programmatically from libQuotient) the sync may bring the room already in the Leave state; therefore `joinRoom` should not impose the state but rather ask `provideRoom` to create a `Join` room - just as it's designed when passed an empty `joinState`.
2021-05-20Add libquotient.kdev4 to .gitignoreTobias Fella
2021-05-08CI: Use GCC 9 where GCC 8 wasAlexey Rusakov
GitHub images no more have GCC 8. (cherry picked from commit f89ece678c47a54a28c91c2d0ced65ba3e9a6540)
2021-05-08Fix joinedRoom signal not being emitted in some casesAlexey Rusakov
An alternative implementation of #463 (and thanks to Carl for spotting the original problem).
2021-03-170.6.6Alexey Rusakov
2021-03-04Tighten up against malformed user ids in eventsAlexey Rusakov
A few months ago 3c85f049 introduced validation of user ids but the rest of the library code wasn't updated to the fact that Connection::user() may quite legitimately (if not routinely) return nullptr, leading to crashes particularaly when malformed ids come from the wire. This commit adds necessary checks before using the value returned from user(). Closes #456.
2021-02-210.6.5Alexey Rusakov
2021-02-21Update documentationAlexey Rusakov
Replace references to Spectral with NeoChat as a more lively and better supported client; deprecate qmake; remove a mention that libQuotient uses LGPL-2.1-only because it's not true, according to ./COPYING
2021-02-21SECURITY.md: 0.5.x is no more supportedAlexey Rusakov
It's been 2 years, time to move on.
2021-02-21Update a comment that still mentions RiotAlexey Rusakov
2021-02-21Uri: support abbreviated types in Matrix URIsAlexey Rusakov
As per the latest iteration of MSC2312, room/, user/ and event/ are only supported for parsing and replication but not for emitting from Matrix identifiers.
2021-01-28Fix rich edits (transmit)Roland Pallai
The new formatted_body was not included into new content on edit due to badly constructed json. (cherry picked from commit df6b2d31ec8f2f5890826719e960f450a4968f22)
2021-01-28Fix rich replies json format (transmit)Roland Pallai
With this patch it looks like: "m.relates_to": { "m.in_reply_to": { "event_id": "$another:event.com" } } instead of: "m.relates_to": { "event_id": "$another:event.com", "rel_type": "m.in_reply_to" }, So it fits the specification by now. https://matrix.org/docs/spec/client_server/r0.6.1#rich-replies (cherry picked from commit b850edadde2299b122a5cd17da85e943430e43b7)
2021-01-25Connection: stop login flows job before resolvingAlexey Rusakov
This avoids a corner case when a login flows job finishes (or worse, goes for a retry) while the homeserver is (being) resolved, yielding the Connection object in an inconsistent state to the client.
2021-01-15CMakeLists.txt: 0.6.4Kitsune Ral
2021-01-15CONTRIBUTING.md: drop one last mention of Travis CIKitsune Ral
2021-01-12Don't run the test if TEST_USER is emptyKitsune Ral
2021-01-11LGTM: fine-tune the set of analysed filesKitsune Ral
2021-01-08Add a timeout to quotest runsKitsune Ral
The current Quotest gets stuck somewhere, and the its big internal 3-minute watchdog doesn't cut it for some reason. While investigating that, an external timeout would be quite handy.
2021-01-08quotest: use the target room for loadMembers testKitsune Ral
Now that we've crowded it with a few synthetic users, lazy-loading of members doesn't some other room to get tested. Bonus: Connection::roomByAlias() has its own very simple test now.
2021-01-07Connection: don't explicitly reset QPointersKitsune Ral
See #437 for the discussion. (cherry picked from commit 6101971af86fdecd084759aa039b9d20a9d662a7)
2021-01-07Connection::resolveServer: abandon is not a failureKitsune Ral
So just reset the base URL and return, with no error signals.
2021-01-07BaseJob: setStatus(Pending) on scheduling a retryKitsune Ral
Fixes #437.
2021-01-07BaseJob: more loggingKitsune Ral
2021-01-07Prefer connecting to BaseJob::result(), not finished()Kitsune Ral
...because finished() includes abandoning and should only be relevant when lifecycle issues are involved.
2021-01-02Drop .travis.ymlKitsune Ral
[skip ci]
2021-01-02.clang-format: backport ClangFormat compat fixesKitsune Ral
Cherry-picked and squashed from 2fed7f8a and 23cf8bec.
2021-01-02Backport .github/workflows/ci.yml from masterKitsune Ral
Mostly taken from #434, except removed E2EE matrix variants since E2EE is not ready on 0.6.x and is discouraged from using.
2020-12-29Connection: fix FTBFS with Quotient_E2EE_ENABLEDKitsune Ral
(cherry picked from commit 0f974c0f96f29035ee766e8913504fed4a4903a5)
2020-12-28Connection: refactor the resolve/login codeKitsune Ral
1. resolveServer() now emits homeserverChanged() even when there's no .well-known file found. 2. checkAndConnect() entirely removed from the header file. 3. Sunny-day scenario for assumeIdentity() is now asynchronous, triggering a call to /whoami to double-check the user. (based on commit 6c9ff40dbd91cc4966f0ecf9ed817efc2495a2fb to master)
2020-12-28Cleanup and clang-tidy/clazy fixesKitsune Ral
(cherry picked from commit 56c1db077b5da653c230432abc6c746318a77bed)
2020-12-28BaseJob::initiate: add Q_LIKELYKitsune Ral
...to show the sunny-day case. (cherry picked from commit 5d15e3b23649a54abdb3812c10f4a7d2ce07d7dd)
2020-12-27Fix use-after-free of QNetworkReply in BaseJobNicolas Fella
Usually QNetworkAccessManager expects the user to delete the replies, but when the QNetworkAccessManager itself is deleted it deletes all pending replies (https://code.woboq.org/qt5/qtbase/src/network/access/qnetworkaccessmanager.cpp.html#529). This can lead to use-after-free crashes when d->reply is accessed. By putting the reply into a QPointer the exiting if(d->reply) checks can work properly. (cherry picked from commit 9d854e778d8d6ef8e03e1ea74fe958675b24fd45)
2020-12-27More comments/documentationKitsune Ral
Notably, recommend using loginFlowsChanged() rather than homeserverChanged() to detect when a Connection object is ready for a login sequence. Related: #427. (cherry picked from commit 8981c5451ac378f16d5b57d7460d053e2cbc666e)
2020-12-24Bump the version to 0.6.3Kitsune Ral
2020-12-24Refresh CONTRIBUTING.mdKitsune Ral
[skip ci]
2020-12-24quotest: wait until the final report is actually sentKitsune Ral
Previously the code was waiting until an arbitrary event is sent.
2020-12-24Room: don't accept . at 0-th position in the tagKitsune Ral
Also: use a structured binding for better code readability.
2020-12-24Fix clang-tidy/clazy warningsKitsune Ral
2020-12-23BaseJob: add [[fallthrough]] as clang-tidy saysKitsune Ral
2020-12-23BaseJob: tolerate unexpected error payloadsKitsune Ral
Proxy servers may return arbitrary HTML, for one example; so don't expect to find a valid JSON object in whatever non-empty payload next to a non-2xx HTTP code. Fixes #421.
2020-12-23Connection::resolveServer(): fix error handlingKitsune Ral
Part of the fix for #421.
2020-12-10Uri: fix a few cases of insufficient escapingKitsune Ral
2020-12-10Fix DELETE jobs with json dataTobias Fella
DeleteDeviceJob requires authentication, but the JSON data is not added for DELETE requests. Since QNetworkAccessManager::deleteResource does not support body data, we need to send a custom request.
2020-12-03Room: fix breakage in internal member mapKitsune Ral
The change in 39830496 led to prev_content becoming a fallback not only for displaying user names but also for storing them in the internal member map, which is really not what was intended.
2020-11-26quotest: Refreshed a commentKitsune Ral
[skip ci]
2020-11-24.clang-format: update for ClangFormat 10+Kitsune Ral
Also: add space before colon in range-based for from now on. [skip ci]
2020-11-19Fix Q_ASSERT failure on sending messagesKitsune Ral
Changes in e81117fb exposed a flaw in EncryptionEvent causing assertion failure when this event is default-initialised (i.e. no encryption).
2020-11-15Room: add power level events to redaction rulesKitsune Ral
2020-11-15MembershipType: drop warning on empty valuesKitsune Ral
This is a usual situation when a membership type is undefined; and the current code constructs _a lot_ of stub events by loading them from empty JSON. So just silence those warnings for now.