1. 05 Jan, 2021 1 commit
    • 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
  2. 09 Jun, 2020 4 commits
    • Nathaniel Wesley Filardo's avatar
      Networking rampage and accumulated fixes (#3060) · af426d03
      Nathaniel Wesley Filardo authored
      * espconn: remove unused espconn code, take 1
      
      This is the easiest part of https://github.com/nodemcu/nodemcu-firmware/issues/3004 .
      It removes a bunch of functions that were never called in our tree.
      
      * espconn: De-orbit espconn_gethostbyname
      
      Further work on https://github.com/nodemcu/nodemcu-firmware/issues/3004
      
      While here, remove `mqtt`'s charming DNS-retry logic (which is neither
      shared with nor duplicated in other modules) and update its :connect()
      return value behavior and documentation.
      
      * espconn: remove scary global pktinfo
      
      A write-only global!  How about that.
      
      * net: remove deprecated methods
      
      All the TLS stuff moved over there a long time ago, and
      net_createUDPSocket should just do what it says on the tin.
      
      * espconn_secure: remove ESPCONN_SERVER support
      
      We can barely function as a TLS client; being a TLS server seems like a
      real stretch.  This code was never called from Lua anyway.
      
      * espconn_secure: more code rem...
      af426d03
    • Marcel Stör's avatar
      Fix connect() params in example · 8835512f
      Marcel Stör authored
      8835512f
    • Nathaniel Wesley Filardo's avatar
      WIP: MQTT fixes (#2986) · 30f706fb
      Nathaniel Wesley Filardo authored
      * mqtt: expose "connfail" callback via :on()
      
      This makes it just like all the other callbacks in the module and is a
      revision of behavior called out in
      https://github.com/nodemcu/nodemcu-firmware/pull/2967
      
      * mqtt: clarify when puback callback fires
      
      * mqtt: Don't reference stack buffers from the heap
      
      The confusingly-named "mqtt_connection_t" object is just a triple of
        - a serialized mqtt message pointer and length
        - a buffer pointer (to which the above can be written)
        - a message identifier
      
      The last of these must be passed around the mqtt state machine, but the
      first two are very local and the buffer is always sourced from the C
      stack.  Unfortunately, because the entire structure is persisted in the
      heap, some callers assume that they can always use the structure without
      reinitialization (see mqtt_socket_close), which will trash the C stack.
      
      Sever the pairing between message id and local state, punt the local
      state entirely out of the heap, and rename things to be less confusing.
      30f706fb
    • Johan Ström's avatar
      Improve MQTT documentation (#2967) · e9199a53
      Johan Ström authored
      e9199a53
  3. 04 Aug, 2019 1 commit
  4. 16 Jul, 2019 1 commit
    • Nathaniel Wesley Filardo's avatar
      MQTT tweaks (#2822) · 9f8b74de
      Nathaniel Wesley Filardo authored
      * mqtt:connect() secure parameter should be boolean
      
      Continue to honor the old 0/1 values, but make them undocumented and add
      a deprecation warning to the code and docs.  Eventually, this should go
      away.
      
      * mqtt: rip out deprecated autoreconnect
      
      * mqtt: expose all the callbacks via :on
      9f8b74de
  5. 17 Feb, 2019 1 commit
  6. 13 Jan, 2019 1 commit
    • Marcel Stör's avatar
      Re-organize documentation · b126c6b2
      Marcel Stör authored
      Drop support for localized content, #2213
      
      Restructure some content to match more closely what we have in master, #2542
      b126c6b2
  7. 30 Nov, 2018 1 commit
    • Johan Ström's avatar
      Handle large/chunked/fragmented MQTT messages properly (#2571) · 2d958750
      Johan Ström authored
      * MQTT: handle large/chunked/fragmented messages properly
      
      If a message spans multiple TCP packets it must be buffered before
      delivered to LUA. Prior code did not do this at all, so this "patch"
      really adds proper handling of fragmented MQTT packets.
      This could also occur if multiple small messages was sent in a
      single TCP packet, and the last message did not completely fit in that
      packet.
      
      Introduces a new option to the mqtt.Client constructor:
      max_publish_length which defaults to 1024
      
      Introduces a new 'overflow' callback.
      
      Fixes issue #2308 and proper fix for PR #2544.
      
      * mqtt.md: clarified heap allocation
      
      * mqtt: ensure ack is sent for overflowed publish
      
      If QoS is used we should still acknowledge that we received it, or server might retransmit it later.
      2d958750
  8. 05 Oct, 2017 1 commit
  9. 22 Aug, 2017 1 commit
  10. 04 Apr, 2017 1 commit
  11. 12 Feb, 2017 1 commit
  12. 15 Jan, 2017 1 commit
  13. 01 Jun, 2016 1 commit
  14. 02 Apr, 2016 1 commit
  15. 20 Mar, 2016 1 commit
  16. 07 Mar, 2016 1 commit
  17. 06 Mar, 2016 2 commits
  18. 06 Feb, 2016 1 commit
  19. 30 Jan, 2016 1 commit
  20. 29 Jan, 2016 1 commit
  21. 28 Jan, 2016 2 commits
  22. 26 Jan, 2016 1 commit
  23. 17 Jan, 2016 1 commit
  24. 10 Jan, 2016 1 commit