server: Z21 ClientKernel fix crash on disconnect

See #53
When disabling communications, kernel object is deleted
but EventLoop callback will run after and access deleted
object through captured 'this'
Temporary fix for this problem is to copy log ID value instead.
Dieser Commit ist enthalten in:
Filippo Gentile 2023-05-14 11:54:42 +02:00
Ursprung 93d0dc62bf
Commit 5a291f0c91

Datei anzeigen

@ -53,9 +53,9 @@ void ClientKernel::receive(const Message& message)
{
if(m_config.debugLogRXTX)
EventLoop::call(
[this, msg=toString(message)]()
[logId_=logId, msg=toString(message)]()
{
Log::log(logId, LogMessage::D2002_RX_X, msg);
Log::log(logId_, LogMessage::D2002_RX_X, msg);
});
switch(message.header())
@ -519,9 +519,9 @@ void ClientKernel::send(const Message& message)
{
if(m_config.debugLogRXTX)
EventLoop::call(
[this, msg=toString(message)]()
[logId_=logId, msg=toString(message)]()
{
Log::log(logId, LogMessage::D2001_TX_X, msg);
Log::log(logId_, LogMessage::D2001_TX_X, msg);
});
}
else