From ba549d8fcdb25fc95a5393f1cd5d8552a6cc625d Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Fri, 16 Oct 2020 17:41:08 -0700 Subject: [PATCH] Return OPTIONS when requested for toradio --- src/meshwifi/meshhttp.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/meshwifi/meshhttp.cpp b/src/meshwifi/meshhttp.cpp index bd5bd1e8f..a05d3d623 100644 --- a/src/meshwifi/meshhttp.cpp +++ b/src/meshwifi/meshhttp.cpp @@ -207,6 +207,7 @@ void initWebServer() // For every resource available on the server, we need to create a ResourceNode // The ResourceNode links URL and HTTP method to a handler function + ResourceNode *nodeAPIv1ToRadioOptions = new ResourceNode("/api/v1/toradio", "OPTIONS", &handleAPIv1ToRadio); ResourceNode *nodeAPIv1ToRadio = new ResourceNode("/api/v1/toradio", "PUT", &handleAPIv1ToRadio); ResourceNode *nodeAPIv1FromRadio = new ResourceNode("/api/v1/fromradio", "GET", &handleAPIv1FromRadio); ResourceNode *nodeCSS = new ResourceNode("/css/style.css", "GET", &handleStyleCSS); @@ -217,6 +218,7 @@ void initWebServer() ResourceNode *node404 = new ResourceNode("", "GET", &handle404); // Secure nodes + secureServer->registerNode(nodeAPIv1ToRadioOptions); secureServer->registerNode(nodeAPIv1ToRadio); secureServer->registerNode(nodeAPIv1FromRadio); secureServer->registerNode(nodeCSS); @@ -229,6 +231,7 @@ void initWebServer() secureServer->addMiddleware(&middlewareSpeedUp240); // Insecure nodes + insecureServer->registerNode(nodeAPIv1ToRadioOptions); insecureServer->registerNode(nodeAPIv1ToRadio); insecureServer->registerNode(nodeAPIv1FromRadio); insecureServer->registerNode(nodeCSS); @@ -378,7 +381,14 @@ void handleAPIv1ToRadio(HTTPRequest *req, HTTPResponse *res) // Status code is 200 OK by default. res->setHeader("Content-Type", "application/x-protobuf"); res->setHeader("Access-Control-Allow-Origin", "*"); - res->setHeader("Access-Control-Allow-Methods", "PUT, GET"); + res->setHeader("Access-Control-Allow-Methods", "PUT, OPTIONS"); + + if (req->getMethod() == "OPTIONS") { + res->setStatusCode(204); + res->print(""); + return; + } + byte buffer[MAX_TO_FROM_RADIO_SIZE]; size_t s = req->readBytes(buffer, MAX_TO_FROM_RADIO_SIZE);