void FrostbiteConnection::handlePacket(const FrostbiteRconPacket &packet) { if (packet.isResponse()) { QVector<FrostbiteRconPacket>::iterator it; for (it = packetSendQueue.begin(); it < packetSendQueue.end(); it++) { if (it->getSequenceNum() == packet.getSequenceNum()) { break; } } if (it != packetSendQueue.end()) { const FrostbiteRconPacket &lastSentPacket = *it; QString request = lastSentPacket.getWord(0).getContent(); if (packet.getWordCount() > 0) { QString messages = request + " "; for (unsigned int i = 1; i < lastSentPacket.getWordCount(); i++) { messages += lastSentPacket.getWord(i).getContent(); messages += " "; } responseDataSent(messages); qDebug() << messages; QString messager; for (unsigned int i = 0; i < packet.getWordCount(); i++) { messager += packet.getWord(i).getContent(); messager += " "; } responseDataReceived(messager); qDebug() << messager; commandHandler->parse(request, packet, lastSentPacket); } // BIG MISTAKE HERE: packetSendQueue.erase(it); for (it = packetSendQueue.begin(); it < packetSendQueue.end(); it++) { if (it->getSequenceNum() == packet.getSequenceNum()) { packetSendQueue.erase(it); break; } } } } else { QString request = packet.getWord(0).getContent(); QString message; for (unsigned int i = 0; i < packet.getWordCount(); i++) { message += packet.getWord(i).getContent(); message += " "; } responseDataSent(message); qDebug() << message; commandHandler->parse(request, packet, FrostbiteRconPacket()); } }