diff options
author | Joanna Hulboj <joanna.hulboj@isode.com> | 2017-03-18 18:52:56 (GMT) |
---|---|---|
committer | Joanna Hulboj <joanna.hulboj@isode.com> | 2017-03-28 14:19:18 (GMT) |
commit | 0e503ccd97ca5287a14d3147b0deaa99892ccd6f (patch) | |
tree | 5500f9f6376f8fa6544fc281ed40ea8b18d7129b /Swiften/Parser/UnitTest/ParserTester.h | |
parent | cc873b3f00db4cd0a778bc2ec04f8748d70a92f9 (diff) | |
download | swift-0e503ccd97ca5287a14d3147b0deaa99892ccd6f.zip swift-0e503ccd97ca5287a14d3147b0deaa99892ccd6f.tar.bz2 |
Modified XMLBeautifier to handle split payloads
When receiving network data we were processing it in chunks. Sometimes
one XML message got split across multiple chunks. XMLBeautifier was
stateless and would create a new parser for every single chunk. This was
causing multi-chunk messages to be truncated in the beautified output.
The change I made in XMLBeautifier allows it to maintain the state.
Test-Information:
Tested unger Windows 10 and CentOS.
Unit tests pass OK.
Change-Id: Idad2a8e0248ed3cbe2b47a12718b909e56ac1279
Diffstat (limited to 'Swiften/Parser/UnitTest/ParserTester.h')
-rw-r--r-- | Swiften/Parser/UnitTest/ParserTester.h | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/Swiften/Parser/UnitTest/ParserTester.h b/Swiften/Parser/UnitTest/ParserTester.h index a98eb51..aa01d40 100644 --- a/Swiften/Parser/UnitTest/ParserTester.h +++ b/Swiften/Parser/UnitTest/ParserTester.h @@ -1,47 +1,42 @@ /* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include <Swiften/Parser/PlatformXMLParserFactory.h> #include <Swiften/Parser/XMLParser.h> #include <Swiften/Parser/XMLParserClient.h> namespace Swift { class XMLParser; template<typename ParserType> class ParserTester : public XMLParserClient { public: - ParserTester(ParserType* parser) : parser_(parser) { - xmlParser_ = PlatformXMLParserFactory().createXMLParser(this); - } - - ~ParserTester() { - delete xmlParser_; + ParserTester(ParserType* parser) : xmlParser_(PlatformXMLParserFactory().createXMLParser(this)), parser_(parser) { } bool parse(const std::string& data) { return xmlParser_->parse(data); } virtual void handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes) { parser_->handleStartElement(element, ns, attributes); } virtual void handleEndElement(const std::string& element, const std::string& ns) { parser_->handleEndElement(element, ns); } virtual void handleCharacterData(const std::string& data) { parser_->handleCharacterData(data); } private: - XMLParser* xmlParser_; + std::unique_ptr<XMLParser> xmlParser_; ParserType* parser_; }; } |