• Nathaniel Wesley Filardo's avatar
    First round of MQTT fixes (#3360) · c695a451
    Nathaniel Wesley Filardo authored
    * mqtt: remove concept of connection timeout
    
    Just rely on the network stack to tell us when things have gone south.
    
    * mqtt: remove write-only mqtt_state.port field
    
    * mqtt: drop useless conditional
    
    * mqtt: decouple message sent flag from timer
    
    * mqtt: reconnect callback does not need to hang up
    
    The network stack has certainly done that for us at this point.
    Similarly, since we're about to call mqtt_socket_disconnected, don't
    bother unregistering the timer here, either.
    
    * mqtt: don't tick once per second
    
    Set the timer for the duration of the wait and cancel it on the other side.
    
    * mqtt: defer message queue destruction to _disconnect
    
    We're going to want to publish a disconnect message for real, so doing
    this in _close does no one any favors
    
    * mqtt: miscellaneous cleanups
    
    No functional change intended
    
    * mqtt: close() should send disconnect message for real
    
    This means waiting for _sent() to fire again before telling the network
    stack to disconnect.
    
    * mqtt: tidy connect and dns
    
    - Push the self-ref to after all allocations and error returns
    
    - Don't try to extract IPv4 from the domain string ourselves, let the
      resolver, since it can
    
    - Don't try to connect to localhost.  That can't possibly work.
    
    * mqtt: common up some callback invocations
    
    * mqtt: don't retransmit messages on timeout
    
    There's no point in retransmitting messages on timeout; the network
    stack will be trying to do it for us anyway.
    
    * mqtt: remove unnecessary NULL udata checks
    
    * mqtt: hold strings in Lua, not C
    
    Eliminates a host of C-side allocations.
    
    While here, move the rest of the mqtt_connect_info structure out to its
    own thing, and pack some flags using a bitfield.
    
    * mqtt: mqtt_socket_on use lua_checkoption
    
    * mqtt: slightly augment debug messages
    
    These changes have made some debugging ever so slightly easier.
    c695a451
mqtt.c 49.8 KB