* 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.
The PR removed the bulk of non-newlib headers from the NodeMCU source base.
app/libc has now been cut down to the bare minimum overrides to shadow the
corresponding functions in the SDK's libc. The old c_xyz.h headerfiles have been
nuked in favour of the standard <xyz.h> headers, with a few exceptions over in
sdk-overrides. Again, shipping a libc.a without headers is a terrible thing to do. We're
still living on a prayer that libc was configured the same was as a default-configured
xtensa gcc toolchain assumes it is. That part I cannot do anything about, unfortunately,
but it's no worse than it has been before.
This enables our source files to compile successfully using the standard header files,
and use the typical malloc()/calloc()/realloc()/free(), the strwhatever()s and
memwhatever()s. These end up, through macro and linker magic, mapped to the
appropriate SDK or ROM functions.