summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2020-01-09Add copy/move ctors for JIDsKevin Smith
Test-Information: Unit tests still pass. Change-Id: I4e5b63104e482a79a933f337082c579db7bb8cff
2019-10-03Treat numeric domain JID as invalidJoanna Hulboj
DomainJID consisting of only numbers is not treated as valid. Test-information: Unit tests pass on Windows 10 and Ubuntu 18.04.1 LTS. Change-Id: If23ba8b8ea2a3c72d6f6e3acec4f587166c14e61
2019-05-28Add check if IPv4, IPv6 are valid JID domain partJoanna Hulboj
When creating a JID we were not checking if a domain part is a valid IPv4, IPv6 addresses. We were only checking if the domain is correct according to internationalized domain name rules which was failing for IPv6 addresses. Test-Information: Unit tests pass on Windows 10 and Ubuntu 18.04.1 LTS Change-Id: Ia1b67089f6edfdc6a0ebf2d26a7eaab9ce8171c0
2018-10-25Strip off trailing dot from domainpart of jidEdwin Mons
RFC 6122 specifies that if a domainpart ends in a dot, it must be stripped off before any other canonicalisation steps are taken. Unit tests have been added to check that various JID scenarios with a domain ending in a dot pass or are rejected as expected. Test-Information: Unit tests pass on macOS 10.13. Manual tests in sluift show expected behaviour. Change-Id: Id6813aaa4422a81bff0a4559eacd6855ef104dc3
2018-10-10Remove JID prep caching from JID classTobias Markmann
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
2018-04-18Mark jids with an empty domainpart as invalidEdwin Mons
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
2016-06-22Treat JIDs with empty resources as invalidTobias Markmann
Cleaned up JID.cpp in process. Test-Information: Adjusted tests accordingly. All tests pass pass on OS X 10.11.5. Change-Id: I774344c8f7378dafe9249217503c082f46890457
2016-05-25Remove unnecessary include of iostream headerTobias Markmann
Move std::cout/cerr logging to SWIFT_LOG. Test-Information: Builds and all tests pass on OS X 10.11.5. Change-Id: I0a0c24654a8b3abf3244a79fd6d970eee90559d0
2016-04-12Use C++11 threading library instead of Boost.ThreadTobias Markmann
This cuts down our dependency on Boost further. Another benefit is that mutex classes of C++11 standard library are recognized by TSAN. Test-Information: Unit and integration tests pass on OS X 10.11.4. Change-Id: Id4dcdb42e3d5155e107ce1d7618acbf26f913b6f
2016-04-04Modernize code to use C++11 shared_ptr instead of Boost'sTobias Markmann
This change was done by applying the following 'gsed' replacement calls to all source files: 's/\#include <boost\/shared_ptr\.hpp>/\#include <memory>/g' 's/\#include <boost\/enable_shared_from_this\.hpp>/\#include <memory>/g' 's/\#include <boost\/smart_ptr\/make_shared\.hpp>/\#include <memory>/g' 's/\#include <boost\/make_shared\.hpp>/\#include <memory>/g' 's/\#include <boost\/weak_ptr\.hpp>/\#include <memory>/g' 's/boost::make_shared/std::make_shared/g' 's/boost::dynamic_pointer_cast/std::dynamic_pointer_cast/g' 's/boost::shared_ptr/std::shared_ptr/g' 's/boost::weak_ptr/std::weak_ptr/g' 's/boost::enable_shared_from_this/std::enable_shared_from_this/g' The remaining issues have been fixed manually. Test-Information: Code builds on OS X 10.11.4 and unit tests pass. Change-Id: Ia7ae34eab869fb9ad6387a1348426b71ae4acd5f
2016-04-01Modernize code to use C++11 nullptr using clang-tidyTobias Markmann
Run 'clang-tidy -fix -checks=modernize-use-nullptr' on all source code files on OS X. This does not modernize platform specific code on Linux and Windows Test-Information: Code builds and unit tests pass on OS X 10.11.4. Change-Id: Ic43ffeb1b76c1a933a55af03db3c54977f5f60dd
2016-03-31Convert tabs to 4 spaces for all source filesTobias Markmann
Removed trailing spaces and whitespace on empty lines in the process. Changed CheckTabs.py tool to disallow hard tabs in source files. Test-Information: Manually checked 30 random files that the conversion worked as expected. Change-Id: I874f99d617bd3d2bb55f02d58f22f58f9b094480
2016-03-17Don't allow JIDs with explicitly empty resourcesKevin Smith
A JID may have no resource, but may not have an empty resource. Mark such JIDs as invalid. Test-Information: Added a unit test for the failure case (and made it pass). Other unit tests still pass Change-Id: I4fb300f716e635a3f8f02843891f25218da77130
2014-12-15Update Copyright in SwiftenKevin Smith
Change-Id: I94ab4bbb68c603fe872abeb8090575de042f5cb4
2014-08-10Fix invalid characters being allowed in JID domainsRichard Maudsley
Test-Information: Prepare valid and invalid JIDs and make sure that isValid() is reported correctly. Added unit tests. Change-Id: Ic4d86f8b6ea9defc517ada2f8e3cc54979237cf4
2013-08-27PubSub implementation & Sluift refactoring.Remko Tronçon
Change-Id: I04ff7111b73565c00bff6db183451774a633344f
2013-08-16Don't allow passing NULL to the JID ctorKevin Smith
Change-Id: I5e0cf477632927e5383b60b7dd8922740a9b5d5d
2013-07-27Use nodeprep for nodes and nameprep for domains.Kevin Smith
Change-Id: Iafe7f72aa2764c797fec736d4f5605c30254018a
2013-04-06Make IDN implementation abstract.Remko Tronçon
Change-Id: I4c64f954ddeca7147d729b8be07237baa15c1795
2013-01-13Fix more warnings.Remko Tronçon
Fix sign conversion warnings. Removing heavy unnecessary includes. Change-Id: I992f43065498823098a875badb020c7c84fc4797
2012-06-05Added ICU support.Remko Tronçon
2011-10-08Protect JID cache access with mutex.Remko Tronçon
The overhead appears to be neglectible. Using TSS had a similar overhead, with the disadvantages that it uses more storage (one cache per thread vs one cache), has less cache reuse, and that Windows/MSVC doesn't support automatic TSS cleanup, so it requires manual cleanup work (which is non-trivial). Note that the mutex approach may yield more overhead in multi-threaded applications (in case of contention). Currently, the mutex also locks during the whole nameprep sequence, which is not strictly necessary.
2011-08-27Merge branch 'swift-1.x'Remko Tronçon
* swift-1.x: Update last used certificate file correctly. Mark JIDs with empty domains as invalid when StringPrep cache is disabled. Added StringPrep unit test.
2011-08-27Mark JIDs with empty domains as invalid when StringPrep cache is disabled.Remko Tronçon
We used to only do this correctly in the default compilation setting where the cache is enabled. Resolves: #965
2011-07-12Merge branch 'swift-1.x'Remko Tronçon
* swift-1.x: Fixed bug with illegal resource in JID resulting in empty resource. Updated the german translation Conflicts: Swiften/IDN/StringPrep.cpp Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp
2011-07-12Fixed bug with illegal resource in JID resulting in empty resource.Remko Tronçon
2011-05-23Added makeString().Remko Tronçon
2011-05-22Fixed bug in JID escaping.Remko Tronçon
2011-05-07Use naive JID escaping algorithm to work around a bug in GCC4.5+boost1.42.Remko Tronçon
2011-04-30Replace #icnlude "" by #include <> in Swiften.Remko Tronçon
2011-04-18JID escaping algorithm refactoring.Remko Tronçon
Made algorithm more efficient. Fixed some incorrect escaping. Added more tests from the XEP.
2011-04-18Added support for JID Escaping XEP.Jan Kaluza
License: This patch is BSD-licensed, see http://www.opensource.org/licenses/bsd-license.php
2011-02-14Removed Swift::String.Remko Tronçon
2011-02-12Cache stringprep results for JIDs.Remko Tronçon
2010-11-11Added server identity check.Remko Tronçon
2010-04-08Added copyrights to Swiften.Kevin Smith
2010-03-28Moving submodule contents back.Remko Tronçon
2010-03-28Removing submodules.Remko Tronçon
2010-03-28Moved Swiften to a separate module.Remko Tronçon
2009-11-22Moved stringprepping to a separate module.Remko Tronçon
2009-06-01Import.Remko Tronçon