Checksum failure logging to stderr for debugging
parent
f0582697a6
commit
f16ee630ee
|
|
@ -41,6 +41,7 @@ bool Packetizer::input(const std::vector<uint8_t>& inputBytes) {
|
||||||
state = ReadState::ParseHeader;
|
state = ReadState::ParseHeader;
|
||||||
currentIndex = 1;
|
currentIndex = 1;
|
||||||
} else {
|
} else {
|
||||||
|
std::cerr << "Discarding byte " << std::hex << std::setw(2) << std::setfill('0') << int(bytes.front()) << std::endl;
|
||||||
bytes.pop_front(); // Discard
|
bytes.pop_front(); // Discard
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -81,6 +82,21 @@ bool Packetizer::input(const std::vector<uint8_t>& inputBytes) {
|
||||||
* payload, and not the header or checksum.
|
* payload, and not the header or checksum.
|
||||||
*/
|
*/
|
||||||
if(packetLength < 4 || packetLength > 4000) {
|
if(packetLength < 4 || packetLength > 4000) {
|
||||||
|
std::cerr << "====================================\n";
|
||||||
|
std::cerr << "An improper packet has occurred!\n";
|
||||||
|
std::cerr << "Packet: (" << std::dec << packetLength << ")\n";
|
||||||
|
std::cerr << '\t';
|
||||||
|
for(auto i = 0; i < std::min(packetLength, 16); i++)
|
||||||
|
std::cerr << std::hex << std::setw(2) << std::setfill('0') << int(bytes[i]) << ' ';
|
||||||
|
std::cerr << std::endl;
|
||||||
|
std::cerr << "Previous: (" << std::dec << previousPacket.data.size() << ") " << previousPacket.network << '\n';
|
||||||
|
for(auto i = 0; i < previousPacket.data.size(); i += 16) {
|
||||||
|
std::cerr << '\t';
|
||||||
|
for(auto j = 0; j < 16 && (i + j) < previousPacket.data.size(); j++)
|
||||||
|
std::cerr << std::hex << std::setw(2) << std::setfill('0') << int(previousPacket.data[i+j]) << ' ';
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
|
std::cerr << "====================================\n";
|
||||||
bytes.pop_front();
|
bytes.pop_front();
|
||||||
EventManager::GetInstance().add(APIEvent::Type::FailedToRead, APIEvent::Severity::Error);
|
EventManager::GetInstance().add(APIEvent::Type::FailedToRead, APIEvent::Severity::Error);
|
||||||
state = ReadState::SearchForHeader;
|
state = ReadState::SearchForHeader;
|
||||||
|
|
@ -112,8 +128,28 @@ bool Packetizer::input(const std::vector<uint8_t>& inputBytes) {
|
||||||
} else {
|
} else {
|
||||||
if(gotGoodPackets) // Don't complain unless we've already gotten a good packet, in case we started in the middle of a stream
|
if(gotGoodPackets) // Don't complain unless we've already gotten a good packet, in case we started in the middle of a stream
|
||||||
report(APIEvent::Type::PacketChecksumError, APIEvent::Severity::Error);
|
report(APIEvent::Type::PacketChecksumError, APIEvent::Severity::Error);
|
||||||
|
|
||||||
|
std::cerr << "====================================\n";
|
||||||
|
std::cerr << "A checksum error has occurred!\n";
|
||||||
|
std::cerr << "Packet: (" << std::dec << packet.data.size() << ") " << packet.network << '\n';
|
||||||
|
for(auto i = 0; i < packet.data.size(); i += 16) {
|
||||||
|
std::cerr << '\t';
|
||||||
|
for(auto j = 0; j < 16 && (i + j) < packet.data.size(); j++)
|
||||||
|
std::cerr << std::hex << std::setw(2) << std::setfill('0') << int(packet.data[i+j]) << ' ';
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
|
std::cerr << "Previous: (" << std::dec << previousPacket.data.size() << ") " << previousPacket.network << '\n';
|
||||||
|
for(auto i = 0; i < previousPacket.data.size(); i += 16) {
|
||||||
|
std::cerr << '\t';
|
||||||
|
for(auto j = 0; j < 16 && (i + j) < previousPacket.data.size(); j++)
|
||||||
|
std::cerr << std::hex << std::setw(2) << std::setfill('0') << int(previousPacket.data[i+j]) << ' ';
|
||||||
|
std::cerr << std::endl;
|
||||||
|
}
|
||||||
|
std::cerr << "====================================\n";
|
||||||
|
|
||||||
bytes.pop_front(); // Drop the first byte so it doesn't get picked up again
|
bytes.pop_front(); // Drop the first byte so it doesn't get picked up again
|
||||||
}
|
}
|
||||||
|
previousPacket = packet;
|
||||||
|
|
||||||
// Reset for the next packet
|
// Reset for the next packet
|
||||||
currentIndex = 0;
|
currentIndex = 0;
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ private:
|
||||||
int headerSize = 0;
|
int headerSize = 0;
|
||||||
bool checksum = false;
|
bool checksum = false;
|
||||||
bool gotGoodPackets = false; // Tracks whether we've ever gotten a good packet
|
bool gotGoodPackets = false; // Tracks whether we've ever gotten a good packet
|
||||||
Packet packet;
|
Packet packet, previousPacket;
|
||||||
std::deque<uint8_t> bytes;
|
std::deque<uint8_t> bytes;
|
||||||
|
|
||||||
std::vector<std::shared_ptr<Packet>> processedPackets;
|
std::vector<std::shared_ptr<Packet>> processedPackets;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue