Age | Commit message (Collapse) | Author |
|
When Swift::LibIDNConverter::getStringPrepared was called with an input
of 1024 or more characters, stringprep would be called on a memory
region that wasn't NUL-terminated. It also blindly trimmed the input to
1024 bytes, even though there may be input longer than that that still
results in a valid 1023 byte prepped string.
IDNConverterTest has been converted to gtest, as cppunit cannot deal
with testing for std::exceptions being thrown on at least macOS
Test-Information:
Unit tests pass on macOS 10.13 and Debian 9
Before fix, the newly added unit tests triggered an ASan abort due to a
buffer overrun.
After fix, all unit tests pass, even with ASan enabled.
Change-Id: Ia3e51a39f5db1de32b8f8bb388f81ca041136df7
|
|
Ran a flamegraph diff on Swift login to an account with a
moderate number of JIDs in roster and more than 10 rooms
in auto join. It showed a difference less that 0.1% on the
changed method. As it does not make much of a difference for
Swift at least, caching is removed.
Test-Information:
Unit tests passes, Swift still logins fine on macOS.
Change-Id: Id33d6d1a655580e06e1364df717fd6f34cce5327
|
|
Test-Information:
Builds and compiler warnings in not emitted by clang 8.0.0
anymore.
Change-Id: I118552b3b058acd15cdb9579e3695d9bf3d6b2fe
|
|
Connect should not be called twice on clients or compoments without
disconnecting first. While this worked in some cases, mixing connect
options, specifically first trying without, and then with a bosh_url,
would lead to asserts being triggered.
The connect logic now checks whether there's already a connection in
progress or established, and raises a Lua exception early if there is.
Test-Information:
Tested on macOS 10.13
Connected components and clients with invalid and valid hosts, and with
valid and invalid bosh_urls, all with and without disconnecting in
between attempts. No asserts were triggered, and appropriate Lua
exceptions were thrown.
Change-Id: I6b91b57945844bce7fce0073e5d0fe199ab815d5
|
|
When BoostConnectionServer tries to set up a listener, it casts an int
to an unsigned short, which may throw an uncaught exception if the cast
fails.
Test-Information:
Unit tests pass on Debian 9
Test server code no longer crashes when it tries to set up a listener on
an invalid port.
Change-Id: If6b920e54481ce6bf174df01d14ad12eff90e3f4
|
|
This also has our scons patch in 3rdParty/SCons applied.
Test-Information:
Builds with unit tests on macOS 10.13.6.
Change-Id: I25d3662eeec27a76dab10d501ba46dc16f0bef4b
|
|
Test-Information:
Builds, unit tests and integration tests pass on macOS with
clang 7.0 master.
Change-Id: I0db411e49339ccb2301edd1a16612cb1ad2c927c
|
|
Test-Information:
Builds, unit and integration tests pass on macOS with
clang 7.0 master
Change-Id: Idb9648c1293adbe6f4b79af3ad619ebb0630e48d
|
|
Test-Information:
Builds and unit tests pass on macOS with clang 7 master.
Change-Id: I0bf2828db49dfb6a7e99c78f1d2f7e76e87f8ca1
|
|
Test-Information:
`./scons test=all` passes with no errors on macOS with clang
7 master.
Change-Id: I31765ac15750dc5af7b70d1a85171dc8e3590181
|
|
TLSLayer and TLSConnection now own the TLSContext they use.
The TLSContextFactory interface is adjusted to use
std::unique_ptr.
Test-Information:
Builds and all tests pass on macOS with clang-7-master.
Change-Id: I14e33c98b48445094f404b73ea41af0a51d2dde6
|
|
Done by adding --fix --fix-errors to the clang-tidy args in
the Makefile
Test-Information:
Unit tests pass (macOS)
Change-Id: I3a4df955ac3553afeb9384f23f9d8b2ef01117e2
|
|
A new form submission dialog that will discover nodes containing
fdp form templates in a given pubsub domain, and will present the form
to the user ready to be filled out and submitted.
Test-Infomation:
Personally tested the request for all node items, loading the
latest form from one of the discovered nodes, submitting a form
and checking it turns up on my mlink server using mlc, checked that
the submitted infomation is correct, what happens when an incorrect
domain is queried, what happens when a valid domain is queried but
it has no fdp nodes, and what happens when a form is requested from
an invalid node.
Unit tests written to test success and failure of the three controller
functions requestPubSubNodeData(), requestTemplateForm() and
testSubmitForm().
Change-Id: If8c57bb4e3120dd44d52f7332069eb18a14cb385
|
|
Everything else in the class uses underscore suffixes already.
Test-Information:
Unit tests pass.
Change-Id: I1263025f18a6e06971610f8c7fc06f47bbbe9c9d
|
|
Test-Information:
Without the recent fix for missing bookmark results, tests crash,
on master they pass
Change-Id: Iab2d55d6d60e5926485d31f4dd63a117a9d12aee
|
|
Test-Information:
Before the patch, boom, after the patch, no boom.
(No boom today. Boom tomorrow. There's always a boom tomorrow)
Change-Id: Id454d7b0d0cd05774d0f1ee0b3cb77057371c459
|
|
This patch will add a leave room option in the cog menu of a MUC room,
allowing the user to leave the room and close the window.
Additionally when joining or leaving a room the autojoin field will change
to true or false respectively. This patch also fixes a minor issue with a
gui option that was not identifying bookmarked rooms at the cog menu.
The autojoin option on the Enter room, Bookmark room and Edit Bookmark
menu has been removed, since the default behaviour will be to
automatically bookmark every MUC room the user joins, setting autojoin to
true. If the user chooses to leave the room, then the autojoin flag will
be set to false and the bookmark will be updated.
Test-Information:
Tested the changes in the UI in Windows Qt 5.9. Updated the
ChatsManagerTests unit tests to check the chattables and the behaviour
of the bookmarks, when joining and leaving MUCs.
Change-Id: Iad1f34480a1e0b9df25c73b49247acc7b7825e20
|
|
Before this change, an IP literal would be attempted directly, and if
that failed it would then 'resolve' the literal and try the result.
Test-Information:
Added a unit test verifying the bug before fixing it.
Change-Id: Ic887c74152f5a4b259392dad402952b3777268b1
|
|
so that the swift-im openSUSE package builds in a reproducible way
in spite of indeterministic filesystem readdir order
See https://reproducible-builds.org/ for why this is good.
License:
This patch is BSD licensed - see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Builds on different machines should no longer have differences in Swiften.h
Change-Id: I8066a66db83c7d7ff10858196cb72b13af3f6008
|
|
This patch will allow to resend messages that have not been successfully
delivered to the server. It requires that the server will have stream
management enabled as described in XEP-198.
Test-Information:
Tested the changes on Windows and Linux. Modified the code to force
messages to fail, and then tested the resend functionality.
Added ChatControllerTest, with unit Tests for the resend case. The rest of
unit test pass.
Change-Id: Id095528247b25a47e34c5632b8469ebd4c97149b
|
|
Test-Information:
Builds on macOS 10.13.4 with clang trunk. All unit and
integration tests pass. Produces fewer warnings with clang
trunk (previously reported marked-unused-but-used warnings).
Change-Id: I849d764537cfbc380155e87b033dc5e517b3c342
|
|
Test-Information:
Code builds on macOS 10.13.4 with clang trunk.
Change-Id: Ia80ef02701f93e32447a471b2398ba8a3cc29c32
|
|
Test-Information:
./scons check=1 allow_warnings=0 now passes on latest macOS
Change-Id: I4411d6b4953e6e2eb7fbb53e460fef296d24b0e6
|
|
Test-Information:
./scons allow_warnings=0 Swiften now builds on latest macOS
Change-Id: Ic2095d5d112093d021f7f4695fbce73f315377cf
|
|
When Swiften parsed jids with an empty domainpart (e.g. user@/resource),
it would mark the jid as valid, and treat the localpart as domainpart.
RFC 6122 states in 2.2 that "A domainpart MUST NOT be zero bytes in
length".
Unit tests for both a bare jid and a full jid with an empty domainpart
have been added.
Test-Information:
Unit tests pass on Debian 9
Change-Id: Iadaf399cd4158666bfcdd6c075b8bf2102ff5538
|
|
Added a new element object ReferencePayload, and created the parser
and serializer to handle this element. Currently no functionality
to send references directly in swift, nor to render their contents.
Test-Information:
Unit tests written and passed for serializer and parser, testing
various types of valid and invalid references, and testing
references with embedded payloads.
Change-Id: I81fd5d9e020fac1729640f297705806af97f6388
|
|
Test-Information:
Equivalent change in Stroke has been tested in MLC.
Change-Id: I254e974fc55e9bd99c722c79a02a3ae1ed515565
|
|
* swift-4.x: (44 commits)
Test-Information:
Builds on macOS 10.13.3 with clang trunk.
Change-Id: If50381f103b0ad18d038b920d3d43537642141cb
|
|
Test-Information:
None.
Change-Id: I4d89315b084406f44654c4d6a7e2e9c8da0874ce
|
|
Define NOMINMAX when building OpenSSL backend on Windows
and otherwise you cannot use std::numeric_limits<T>::max.
Test-Information:
Swiften builds on Windows 10 with VS2015 with the OpenSSL TLS
backend.
Change-Id: I9621c14426a0af2280cef7ee973abcff2fd0a48d
|
|
Test-Information:
Unit tests pass on macOS 10.13.3 with ASAN and Clang 7.0.
Change-Id: Ifc2bf2c1b63fca7f3ee43ef61c79a96b8e5ced5f
|
|
This method allows to calculate the TLS finish message of the
peer of a TLS connection. It can be used to provide SASL
channel binding for TLS servers.
Test-Information:
Added unit test that verifies the finish messages of a server
TLS context with the finish messages of a client TLS context.
Tests pass on macOS 10.13.3 with OpenSSL.
Change-Id: Ia5ba539e1fb6d1bef6b4436bb59c7384b57a69b0
|
|
If consecutive message from the same user have differing security
markings, then mark them as non continuing to show clearer seperation
of messages with different security markings. They are seperated in the
same way as consecutive messages from different users are.
Further to this, there is a new scheme for displaying message security
markings. Messages with a security marking matching the room security
marking will not be marked, aside from the first in a series of
consecutive messages marked with the same security marking. Unmarked
messages in a room with a security marking will be marked as such.
This new marking display system can be turned on and off via an xml
setting "mucMarkingElision".
Test-Information:
Unit tests written and passed in MUCControllerTest, runs as expected.
Change-Id: Id2b66417f363c49c131d27e738ce786755d65203
|
|
Test-Information:
Tests pass on macOS 10.13.3 with clang-trunk and ASAN.
Change-Id: Ice68e93341693349ed5d95dfc062c0a7b07dc673
|
|
Disco#info requested and handled by MUCController on rejoin().
UI display of disco#info implemented for QtChatWindow.
Test-Information:
Tests written for new MUCController features, and all tests passed.
Swift runs with changes and security markings show as and when
expected in local isode MUC windows.
Change-Id: Ibef4a31f6f8c4cff5f518a66106266a7f961d103
|
|
Test-Information:
Builds and unit tests pass on macOS 10.13.3 with OpenSSL TLS
backend.
Change-Id: Ie8f4578c867a2e4bf84484cde4a7cff048566ca4
|
|
This also extends the TLSContext interface with methods required
for server mode.
Test-Information:
Added unit tests that test new functionality in TLSContex.
This includes test certificates in the source file that are
not for public use. This new ClientServerTest is only enabled
for OpenSSL, as other TLS backends do not support the new
functionality yet.
Tested on macOS 10.13.3 with clang-trunk.
Change-Id: I8e43476057608067eb3b9852328aa21cd22974a0
|
|
Add PrivateKey class to simply encapsulate arbitrary private
key data and the corresponding password.
This enables easy unit testing by loading the certificate and
key from within a test case.
Test-Information:
Added unit tests for certificate and key generated by OpenSSL.
Tested on macOS 10.13.2 with OpenSSL.
Change-Id: I1c9ffc3c70f61af65c4f1c48670badaf74b672b7
|
|
* use std::unique_ptr for memory management of dynamic OpenSSL
objects
* use an initializer class and static instance of it to correctly
initialize/finalize OpenSSL on first use
* use enum class instead of simple enum for state
* use nullptr instead of NULL
Test-Information:
Builds and tests pass on macOS 10.13.2 with clang-trunk and
ASAN.
Change-Id: I346f14e21c34871c1900a8e1ac000450770a0bbe
|
|
We were seeing crashes on macOS on a slept laptop overnight, very rarely.
The backtraces pointed to accessing a deleted currentConnection in
Connector. Eyeballing the code for a path that could trigger this,
if the timer fires onTick, queing on the eventloop, and before that event
is processed the connection queues onConnectFinished in the event loop,
currentConnection will be reset by the timeout tick handling, and will
then boom when the handleConnectionConnectFinished is called for
onConnectFinished.
Test-Information:
Eyeballs
Change-Id: Iaf4af1450ca8ee13761a33c0dc75f0311d2291b2
|
|
This will check that the connection object is valid when a connector
timeouts, and if not log it.
Test-Information:
None
Change-Id: I0af3e88fe1f527c25c4bb6c886668d19167b489b
|
|
The libdir for Swiften was hardcoded to "lib". With this patch it is possible
to override it.
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for
details.
Test-Information:
Build with SWIFTEN_LIBDIR=lib64 and observe that files are installed into the
desired directory (i.e. /usr/lib64, if SWIFTEN_INSTALLDIR=/usr).
Change-Id: I4d844b93a189254b5923f9cd58190b0f6a65b9ac
|
|
This doesn't change the behaviour where domain is advertised, but does mean
that SSO can be attempted where the hostname isn't advertised, where
previously it would be refused.
Test-Information:
Light testing (not by me) against M-Link not advertising hostname.
I think this is sufficient, given this is an experimental feature, hidden
behind a config flag, and this only extends behaviour, rather than
changing previously supported paths.
(The tested version was with a ternary instead of value_or)
Change-Id: I381fe23ab152486b195acff5858bf0a705b86b59
|
|
Test-Information:
Builds and test pass on macOS 10.13 with clang-trunk.
Change-Id: I7a515a003602a983681f85374a8a77dc953f533d
|
|
This patch improves logging and refactors SchannelContext and
CAPICertificate classes, to improve logging and how Swift interacts with
smart cards.
Test-Information:
Tested on Windows 10 (Qt 5.7)
Change-Id: Ic4d306beafb9e5d253731769f222e6949995d5e7
|
|
This patch introduces the “logfile” argument to the client, which can be
used to specify a file path for a log file, where all logging information
will be stored.
Test-Information:
Tested on windows 10 and Ubuntu 17.04
Change-Id: I6a2f14585a72f25e7e78d79cb633e1ddc4d43c3b
|
|
Add UpdateSubscription feature for subscribing to additional
MIX nodes
Add Joining a channel with a preference form
Add requesting user preference form and updating the preferences
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Tests added for joining and leaving a channel as in XEP-0369,
which passes.
Tests also added for updating subscription, joining channel
with preference form and requesting user preference form as
in XEP-0369, which passes.
Tested on Ubuntu 16.04 LTS.
Change-Id: Ibc2737f6154eeee1a85e98cb5f80c8bdbad35dcd
|
|
Updates MIXJoin Element list of subscriptions to an unordered_set.
Remove redundant MIXSubscribe Element.
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Added tests for MIXUpdateSubscription Parser and Serializer based on examples in XEP 0369, which passes.
Tested on Ubuntu 16.04 LTS.
Change-Id: Ied06269cf329b4fdffdde4ace67ebffa4089fbde
|
|
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Added tests for MIXRegisterNick Parser and Serializer based on examples in XEP 0369, which passes.
Tested on Ubuntu 16.04 LTS.
Change-Id: I80796db9d540c58296afa3454f29e1fb81d04615
|
|
Doxygen raised warnings for referencing unknown classes and
template variables it cannot deal with. Adjusted the comment
to just format them instead of referencing.
Test-Information:
Ran ./scons doc=1 and verified that doxygen did not raise
warnings anymore.
Change-Id: I8927195457bbaf92066591f24e536e9b48a04808
|