From a652830f2ec1d44c9e61b1164a878662798ad460 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 12 Oct 2015 12:22:16 +0000 Subject: fix for a rare crash git-svn-id: http://svn.miranda-ng.org/main/trunk@15537 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'protocols/WhatsApp/src') diff --git a/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp b/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp index efcb9551fb..8e0c4a2983 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/WALogin.cpp @@ -102,30 +102,28 @@ std::vector* WALogin::getAuthBlob(const std::vector WALogin::readFeaturesUntilChallengeOrSuccess() { while (ProtocolTreeNode *root = m_pConnection->in.nextTree()) { - string tmp = root->toString(); - m_pConnection->logData(tmp.c_str()); - - if (ProtocolTreeNode::tagEquals(root, "stream:features")) { - m_pConnection->supports_receipt_acks = root->getChild("receipt_acks") != NULL; - delete root; - } - else if (ProtocolTreeNode::tagEquals(root, "challenge")) { + if (ProtocolTreeNode::tagEquals(root, "challenge")) { std::vector challengedata(root->data->begin(), root->data->end()); delete root; + this->sendResponse(challengedata); m_pConnection->logData("Send response"); std::vector data = this->readSuccess(); m_pConnection->logData("Read success"); return std::vector(data.begin(), data.end()); } - else if (ProtocolTreeNode::tagEquals(root, "success")) { + + if (ProtocolTreeNode::tagEquals(root, "success")) { std::vector ret(root->data->begin(), root->data->end()); this->parseSuccessNode(root); delete root; return ret; } - else - delete root; + + if (ProtocolTreeNode::tagEquals(root, "stream:features")) + m_pConnection->supports_receipt_acks = root->getChild("receipt_acks") != NULL; + + delete root; } throw WAException("fell out of loop in readFeaturesAndChallenge", WAException::CORRUPT_STREAM_EX, 0); } -- cgit v1.2.3