mirror of
https://github.com/meshtastic/firmware.git
synced 2026-11-07 06:44:33 -05:00
- WiFiServerAPI/ethServerAPI apiPort and ethApiServer's listener are create/destroy cycles that repeat across WiFi teardown and W5500 chip resets; the manual delete+null bookkeeping becomes reset(). (ethTlsApiServer's listener is left for a follow-up: that file is already touched by the partial-init fix PR and converting it here would conflict.) - ContentHandler::handleFormUpload held its body parser raw with delete on four separate exit paths of a per-request handler; any future early return was a silent leak. unique_ptr removes all four. - The portduino ch341Hal global becomes unique_ptr. The LoRa-error recovery loop's delete/null/new sequence was correct only by hand-preserved ordering; it becomes reset()/make_unique. RadioLibHAL keeps a non-owning raw pointer, as before. No behavior change.
36 lines
769 B
C++
36 lines
769 B
C++
#include "configuration.h"
|
|
#include <Arduino.h>
|
|
|
|
#if HAS_ETHERNET && !defined(USE_WS5500) && !defined(USE_CH390D)
|
|
|
|
#include "ethServerAPI.h"
|
|
|
|
static std::unique_ptr<ethServerPort> apiPort;
|
|
|
|
void initApiServer(int port)
|
|
{
|
|
// Start API server on port 4403
|
|
if (!apiPort) {
|
|
apiPort = std::make_unique<ethServerPort>(port);
|
|
LOG_INFO("API server listening on TCP port %d", port);
|
|
apiPort->init();
|
|
}
|
|
}
|
|
|
|
void deInitApiServer()
|
|
{
|
|
if (apiPort) {
|
|
LOG_INFO("Deinit API server");
|
|
apiPort.reset();
|
|
}
|
|
}
|
|
|
|
ethServerAPI::ethServerAPI(EthernetClient &_client) : ServerAPI(_client)
|
|
{
|
|
LOG_INFO("Incoming ethernet connection");
|
|
api_type = TYPE_ETH;
|
|
}
|
|
|
|
ethServerPort::ethServerPort(int port) : APIServerPort(port) {}
|
|
|
|
#endif |