fix: double free WebDAVHandler (#1093)
## Summary Ref: https://github.com/crosspoint-reader/crosspoint-reader/pull/1047#discussion_r2838439305 To reproduce: 1. Open file transfer 2. Join a network 3. Once it's connected, press (hold) back --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? **NO**
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include "CrossPointSettings.h"
|
#include "CrossPointSettings.h"
|
||||||
#include "SettingsList.h"
|
#include "SettingsList.h"
|
||||||
|
#include "WebDAVHandler.h"
|
||||||
#include "html/FilesPageHtml.generated.h"
|
#include "html/FilesPageHtml.generated.h"
|
||||||
#include "html/HomePageHtml.generated.h"
|
#include "html/HomePageHtml.generated.h"
|
||||||
#include "html/SettingsPageHtml.generated.h"
|
#include "html/SettingsPageHtml.generated.h"
|
||||||
@@ -162,7 +163,7 @@ void CrossPointWebServer::begin() {
|
|||||||
// Collect WebDAV headers and register handler
|
// Collect WebDAV headers and register handler
|
||||||
const char* davHeaders[] = {"Depth", "Destination", "Overwrite", "If", "Lock-Token", "Timeout"};
|
const char* davHeaders[] = {"Depth", "Destination", "Overwrite", "If", "Lock-Token", "Timeout"};
|
||||||
server->collectHeaders(davHeaders, 6);
|
server->collectHeaders(davHeaders, 6);
|
||||||
server->addHandler(&davHandler);
|
server->addHandler(new WebDAVHandler()); // Note: WebDAVHandler will be deleted by WebServer when server is stopped
|
||||||
LOG_DBG("WEB", "WebDAV handler initialized");
|
LOG_DBG("WEB", "WebDAV handler initialized");
|
||||||
|
|
||||||
server->begin();
|
server->begin();
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "WebDAVHandler.h"
|
|
||||||
|
|
||||||
// Structure to hold file information
|
// Structure to hold file information
|
||||||
struct FileInfo {
|
struct FileInfo {
|
||||||
String name;
|
String name;
|
||||||
@@ -73,7 +71,6 @@ class CrossPointWebServer {
|
|||||||
private:
|
private:
|
||||||
std::unique_ptr<WebServer> server = nullptr;
|
std::unique_ptr<WebServer> server = nullptr;
|
||||||
std::unique_ptr<WebSocketsServer> wsServer = nullptr;
|
std::unique_ptr<WebSocketsServer> wsServer = nullptr;
|
||||||
WebDAVHandler davHandler;
|
|
||||||
bool running = false;
|
bool running = false;
|
||||||
bool apMode = false; // true when running in AP mode, false for STA mode
|
bool apMode = false; // true when running in AP mode, false for STA mode
|
||||||
uint16_t port = 80;
|
uint16_t port = 80;
|
||||||
|
|||||||
Reference in New Issue
Block a user