Fixed bug with GDB RSP debug server handling stale packets
This commit is contained in:
@@ -123,6 +123,10 @@ void GdbRspDebugServer::serve() {
|
|||||||
this->waitForConnection();
|
this->waitForConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->clientConnection->accept(this->serverSocketFileDescriptor);
|
||||||
|
Logger::info("Accepted GDP RSP connection from " + this->clientConnection->getIpAddress());
|
||||||
|
this->eventManager.triggerEvent(std::make_shared<Events::DebugSessionStarted>());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Before proceeding with a new debug session, we must ensure that the TargetController is able to
|
* Before proceeding with a new debug session, we must ensure that the TargetController is able to
|
||||||
* service it.
|
* service it.
|
||||||
@@ -135,9 +139,10 @@ void GdbRspDebugServer::serve() {
|
|||||||
|
|
||||||
auto packets = this->clientConnection->readPackets();
|
auto packets = this->clientConnection->readPackets();
|
||||||
|
|
||||||
for (auto& packet : packets) {
|
// Only process the last packet - any others will likely be duplicates from an impatient client
|
||||||
|
if (!packets.empty()) {
|
||||||
// Double-dispatch to appropriate handler
|
// Double-dispatch to appropriate handler
|
||||||
packet->dispatchToHandler(*this);
|
packets.back()->dispatchToHandler(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (const ClientDisconnected&) {
|
} catch (const ClientDisconnected&) {
|
||||||
@@ -192,10 +197,6 @@ void GdbRspDebugServer::waitForConnection() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this->clientConnection = Connection(this->interruptEventNotifier);
|
this->clientConnection = Connection(this->interruptEventNotifier);
|
||||||
this->clientConnection->accept(this->serverSocketFileDescriptor);
|
|
||||||
this->eventManager.triggerEvent(std::make_shared<Events::DebugSessionStarted>());
|
|
||||||
|
|
||||||
Logger::info("Accepted GDP RSP connection from " + this->clientConnection->getIpAddress());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user