• 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 »








  • Files are simple serialized bytes prefaced by lengths. File is hashed to
    verify integrity. This was also a good way preventing unexpected errors
    when trying to crash the parser by having it load a different file.
    
    This change includes some refactoring that was necessary:
    
    - It 'fixes' looking at the wrong thread's authentiction. This is still
      wrong though. It will be fixed by a thread local pointer in the next
      commit.
    - Deadlocks with yourself are handled in rwlockguard.
    - QoSPacketQueue is now a class.
    - Probably other tweaks.
    Wiebe Cazemier authored
     
    Browse File »