* 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.
These have been handy within the test harness for streaming files and
LFS images across to the DUTs.
Add nrec method to pipe
Co-authored-by: Gregor Hartmann <HHHartmann@users.noreply.github.com>
* Don't adjust the clock until after we deal with rtctime...
* Switched to using START_OPTION_CPU_FREQ_MAX instead.
* Use setfield and add caching of the startup option
* Put the startupcounts warning into a warning box
* SoftUART fixes:
- Simplify code by using lua_L* functions and using userdata properly
- Fix some edge-cases
- Add more examples to documentation
* Don't de-register interrupt hook if there is more RX instances
* More bug fixes and registering simplification with luaL_reref and unref2
* Correct documentation of SoftUART module
It's not clear that this ever worked, AFAICT nobody uses it, and it's an
old version of the sqlite3 engine at this point. Absent a maintainer,
let's just get rid of it.
* Net_info module exposing ping function initial commit
* Ping as a part of net module
* Sent callback implemented
* Add NET_PING_ENABLE macro
Authored-by: vsky <blue205@centrum.cz> with support from TerryE
- Lots of minor but nasty bugfixes to get all tests to run clean
- core lua and test suite fixes to allow luac -F to run cleanly against test suite
- next tranch to get LFS working
- luac.cross -a options plus fixes from feedback
- UART fixes and lua.c merge
- commit of wip prior to rebaselining against current dev
- more tweaks
Removes yet another unchecked allocation point in our C libraries.
While here, fix potential reference leaks on error paths
Also while here, remove some stale documentation. There can be as many
DNS requests in flight as LwIP has room for in its table
(DNS_TABLE_SIZE, which defaults to 4).
* 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 removal
* espconn_secure: simplify ssl options structure
There is nothing "ssl_packet" about this structure. Get rid of the
terrifying "pbuffer" pointer.
Squash two structure types together and eliminate an unused field.
* espconn_secure: refactor mbedtls_msg_info_load
Split out espconn_mbedtls_parse, which we can use as part of our effort
towards addressing https://github.com/nodemcu/nodemcu-firmware/issues/3032
* espconn_secure: introduce TLS cert/key callbacks
The new feature part of https://github.com/nodemcu/nodemcu-firmware/issues/3032
Subsequent work will remove the old mechanism.
* tls: add deprecation warnings
* luacheck: net.ifinfo is a thing now
* tls: remove use of espconn->reverse
* mqtt: stop using espconn->reverse
Instead, just place the espconn structure itself at the top of the user
data. This enlarges the structure somewhat but removes one more layer
of dynamic heap usage and NULL checks.
While here, simplify the code a bit.
* mqtt: remove redundant pointer to connect_info
Everywhere we have the mqtt_state_t we also have the lmqtt_userdata.
* mqtt: doc fixes
* mqtt: note bug
* tls: allow :on(...,nil) to unregister a callback
* 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.