Logo white

Peter M. Groen / FlashMQ

Sign in
  • Sign in
  • Project
  • Files
  • Commits
  • Network
  • Graphs
  • Milestones
  • Issues 0
  • Merge Requests 0
  • Labels
  • Wiki
  • Commits 453
  • Compare
  • Branches 1
  • Tags 0
  • FlashMQ
20 Mar, 2021
40 commits
  • Only allow one instance (per user) to run
    38563f95
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Make setting rlimits a little better
    d68708d3
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add IPv6 support, with related listener options ...
    d06dcb0b
    This also adds configuration options for choosing what address to bind
    to.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Implement unsubscribe handling
    cb40c2d2
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Check valid header bytes in subscribe
    c3961e7f
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix HTTP parsing invalid data ...
    d05d2975
    Found by fuzzing.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Crude websocket fuzz mode ...
    80d5cf8b
    Probably I also need a flag to fake already being upgraded, because
    otherwise we never get passed the complicated websocket handshake.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Check whether subscribe topic is valid UTF-8 ...
    ddf2b612
    And check Qos.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add fuzz mode by feeding a client from a file ...
    d6af7d82
    This can be called by a fuzzer like afl-fuzz.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix packet parsing bug ...
    6e92c053
    When sending many 0xFF, it would overflow.
    
    Found by using afl-fuzz.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix not creating a listener when no config is defined
    0586e380
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Quit threads by using task queue ...
    7be0fcf4
    This fixes the 100ms wait time requirement.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix error on startup when log file isn't there
    b724f979
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Implement the option to serialize auth checks
    775180c0
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Implement ACL checks and improved login checks
    be205082
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add small protocol requirement
    92f401f5
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add config option 'allow_unsafe_username_chars'
    6702193e
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Support generic listener in config file ...
    5d72070e
    This allows creation of multiple listeners, with different protocols
    and/or SSL certificates.
    
    Related change: settings is now a class that is copyable and assignable,
    and is done so to each thread on reload.
    
    Semi-related fix: fix crash in quit when multiple threads initiated it.
    This came to light when testing the auth plugin settings.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Use timer for resetting buffers
    e5746d7f
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Refactor code to use new interface on CirBuf ...
    468ca477
    And fixed an assert in CirBuf.read().
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add IoWrapper, with websocket support added ...
    b5ba41f5
    The ping/pong is actually untested at this point, because Paho (my test
    client for now) doesn't do those. I wonder if any do, because MQTT
    already has ping/pong.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Buffer size and max packet size as setting
    1106e210
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Like main thread, also have a task queue in threads ...
    f3a45a2a
    It's also used to reload settings. Settings are copied to threads, to
    avoid concurrency issues.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add will support ...
    99a087f4
    Also changed the disconnect reason a little: it now shows them all, so I
    don't have to worry about which one is more important.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Do 'session present' for MQTT 3.1.1
    60065fcb
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add setting 'allow_unsafe_clientid_chars' ...
    65146ae2
    And some side issues.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Deal with clientid protocol version-appropriate ...
    1f378699
    And include some extra error conditions.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Auto-detect number of threads
    d0473da1
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix not logging to stdout
    64ec702a
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Added some error checking on write calls
    88a78820
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Working on expiring sessions ...
    33ef5bdf
    This includes a timer mechanism.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Add SSL support ...
    9e33ebda
    It also contains some related improvements that I needed:
    
    * Show disconnect reason
    * Fix the while condition for doing write() to avoid an unnecessary call
    * Config reloading logic
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix tests
    327f0c38
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • QoS on retained messages
    8094510f
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • QoS message queue is a list, for easy ordering
    f8667722
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Store QoS in subscription and use it ...
    6141bbcc
    Connected to this is preventing duplicate subscriptions. It's a bit
    unclear what to do when you get a subscription for the same topic with a
    different QoS? Change the Qos? Ignore?
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • QoS 1, 80% ...
    760ec588
    Also includes fixes to packet parsing that I couldn't make a separate
    commit for.
    
    When it comes to QoS 1, these things are still left, off the top of my
    head:
    
    - vector for qos queue? It helps with ordering and is CPU cache friendly.
    - Store subscription QoS.
    - Do retained messages have QoS?
    - Give session client's name, to access it later.
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Remove old junk
    86d368a3
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Improve disconnect handling
    a0070c99
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »
  • Fix race condition in thread creation
    8ddb61d6
    Wiebe Cazemier authored
    2021-03-20 19:02:25 +0100  
    Browse Code »