• One fix is client destruction happening on the correct thread (when
    kicking another one off with existing client ID). This caused deadlocks
    on the subscriptions lock during a race condition when
    doKeepAliveCheck() also ran.
    
    A related deadlock was that the queued functions were executed while
    holding the lock taskQueueMutex. Together with the subscriptions lock,
    that was executed in the $SYS topic function, this also caused
    deadlocks.
    Wiebe Cazemier authored
     
    Browse File »






  • Instead of getting it from the sender of a packet. Sometimes there was
    no sender.
    
    This fixes a crash on retained messages, because those newly created
    packets didn't have a sender to get the threaddata from. So, using a
    special object for it is easier and more robust.
    Wiebe Cazemier authored
     
    Browse File »