From ffc820e234ebba39a0f04607f9a0fb044fe31b73 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Mon, 24 Mar 2014 20:31:02 +0100 Subject: Reconnected immediately to the XMPP whenever it closes the connection --- src/xmpp/xmpp_parser.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/xmpp/xmpp_parser.cpp') diff --git a/src/xmpp/xmpp_parser.cpp b/src/xmpp/xmpp_parser.cpp index 064453e..867648b 100644 --- a/src/xmpp/xmpp_parser.cpp +++ b/src/xmpp/xmpp_parser.cpp @@ -30,6 +30,11 @@ static void character_data_handler(void *user_data, const XML_Char *s, int len) XmppParser::XmppParser(): level(0), current_node(nullptr) +{ + this->init_xml_parser(); +} + +void XmppParser::init_xml_parser() { // Create the expat parser this->parser = XML_ParserCreateNS("UTF-8", ':'); @@ -65,6 +70,16 @@ int XmppParser::parse(const int len, const bool is_final) return res; } +void XmppParser::reset() +{ + XML_ParserFree(this->parser); + this->init_xml_parser(); + if (this->current_node) + delete this->current_node; + this->current_node = nullptr; + this->level = 0; +} + void* XmppParser::get_buffer(const size_t size) const { return XML_GetBuffer(this->parser, static_cast(size)); -- cgit v1.2.3