From 5758cc48f5f340132d19e79f647dd5d3ad8c54fc Mon Sep 17 00:00:00 2001 From: Edwin Mons Date: Mon, 29 Oct 2018 14:32:15 +0000 Subject: Fix Stanza Ack maximum and tests The stanza ack code now uses a constexpr without numeric cast to calculate the maximum, and test code uses the constant UINT32_MAX from limits, both of which should result in the same number. Test-Information: Unit tests pass on macOS 10.14 Change-Id: Iba8fc779e52699d480d1ce458df0c6581a16ad06 diff --git a/Swiften/Elements/StanzaAck.cpp b/Swiften/Elements/StanzaAck.cpp index bd0b78d..dda97f5 100644 --- a/Swiften/Elements/StanzaAck.cpp +++ b/Swiften/Elements/StanzaAck.cpp @@ -1,19 +1,17 @@ /* - * Copyright (c) 2013 Isode Limited. + * Copyright (c) 2013-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include -#include - using namespace Swift; StanzaAck::~StanzaAck() { } -void StanzaAck::setHandledStanzasCount(int i) { - handledStanzasCount = boost::numeric_cast(i); +void StanzaAck::setHandledStanzasCount(unsigned int i) { + handledStanzasCount = i; valid = true; } diff --git a/Swiften/Elements/StanzaAck.h b/Swiften/Elements/StanzaAck.h index 68f0a2f..f664aca 100644 --- a/Swiften/Elements/StanzaAck.h +++ b/Swiften/Elements/StanzaAck.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -24,7 +24,7 @@ namespace Swift { return handledStanzasCount; } - void setHandledStanzasCount(int i); + void setHandledStanzasCount(unsigned int i); bool isValid() const { return valid; diff --git a/Swiften/Parser/StanzaAckParser.cpp b/Swiften/Parser/StanzaAckParser.cpp index de0287e..42ab181 100644 --- a/Swiften/Parser/StanzaAckParser.cpp +++ b/Swiften/Parser/StanzaAckParser.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -17,7 +17,7 @@ void StanzaAckParser::handleStartElement(const std::string&, const std::string&, if (depth == 0) { std::string handledStanzasString = attributes.getAttribute("h"); try { - getElementGeneric()->setHandledStanzasCount(boost::lexical_cast(handledStanzasString)); + getElementGeneric()->setHandledStanzasCount(boost::lexical_cast(handledStanzasString)); } catch (const boost::bad_lexical_cast &) { } diff --git a/Swiften/StreamManagement/StanzaAckRequester.cpp b/Swiften/StreamManagement/StanzaAckRequester.cpp index 8941f4a..a0f5b70 100644 --- a/Swiften/StreamManagement/StanzaAckRequester.cpp +++ b/Swiften/StreamManagement/StanzaAckRequester.cpp @@ -1,19 +1,17 @@ /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include -#include - #include #include namespace Swift { -static const unsigned int MAX_HANDLED_STANZA_COUNT = boost::numeric_cast((1ULL<<32) - 1); +static const unsigned int MAX_HANDLED_STANZA_COUNT = static_cast((1ULL<<32) - 1); StanzaAckRequester::StanzaAckRequester() : lastHandledStanzasCount(0) { diff --git a/Swiften/StreamManagement/StanzaAckResponder.cpp b/Swiften/StreamManagement/StanzaAckResponder.cpp index b6171d0..bfe6f4d 100644 --- a/Swiften/StreamManagement/StanzaAckResponder.cpp +++ b/Swiften/StreamManagement/StanzaAckResponder.cpp @@ -1,16 +1,14 @@ /* - * Copyright (c) 2010 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include -#include - namespace Swift { -static const unsigned int MAX_HANDLED_STANZA_COUNT = boost::numeric_cast((1ULL<<32) - 1); +static const unsigned int MAX_HANDLED_STANZA_COUNT = static_cast((1ULL << 32) - 1); StanzaAckResponder::StanzaAckResponder() : handledStanzasCount(0) { } diff --git a/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp b/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp index ce16e1f..e0ebefd 100644 --- a/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp +++ b/Swiften/StreamManagement/UnitTest/StanzaAckRequesterTest.cpp @@ -1,11 +1,12 @@ /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ +#include + #include -#include #include #include @@ -111,7 +112,7 @@ class StanzaAckRequesterTest : public CppUnit::TestFixture { // Handle stanza ack count wrapping, as per the XEP void testHandleAckReceived_WrapAround() { std::shared_ptr testling(createRequester()); - testling->lastHandledStanzasCount = boost::numeric_cast((1ULL<<32) - 1); + testling->lastHandledStanzasCount = UINT32_MAX; testling->handleStanzaSent(createMessage("m1")); testling->handleStanzaSent(createMessage("m2")); diff --git a/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp b/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp index ffdabe9..ee4b913 100644 --- a/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp +++ b/Swiften/StreamManagement/UnitTest/StanzaAckResponderTest.cpp @@ -1,11 +1,12 @@ /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ +#include + #include -#include #include #include @@ -63,7 +64,7 @@ class StanzaAckResponderTest : public CppUnit::TestFixture { // Handle stanza ack count wrapping, as per the XEP void testHandleAckRequestReceived_WrapAround() { std::shared_ptr testling(createResponder()); - testling->handledStanzasCount = boost::numeric_cast((1ULL<<32) - 1); + testling->handledStanzasCount = UINT32_MAX; testling->handleStanzaReceived(); testling->handleStanzaReceived(); -- cgit v0.10.2-6-g49f6