From 4d00868681a98fd4c94f87522e34a32023c3109a Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Thu, 3 Feb 2022 18:17:11 -0700 Subject: [PATCH] Don't crash if HTTP error --- main.js | 63 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/main.js b/main.js index bcccf05..a74fe41 100644 --- a/main.js +++ b/main.js @@ -381,44 +381,45 @@ function sendMMS(number, from, mediauri, mimetype, callback) { } function handleHTTPRequest(request, response) { - if (request.url == "/webhook") { - try { - logger.debug("Got webhook: " + request.body); - var msg = JSON.parse(request.body); + try { + if (request.url == "/webhook") { + try { + logger.debug("Got webhook: " + request.body); + var msg = JSON.parse(request.body); - if (msg.type == "mo") { - if (settings.smsonlyto.length > 0 && settings.smsonlyto.indexOf(msg.to) != -1) { - logger.info("Received SMS from " + msg.from + " for " + msg.to + ": " + msg.body); - createOrJoinSMSRoom(msg.from, msg.to, function (roomid) { - sendMatrix(roomid, msg.body, msg.media); - }); - response.status(204); - response.end(); + if (msg.type == "mo") { + if (settings.smsonlyto.length > 0 && settings.smsonlyto.indexOf(msg.to) != -1) { + logger.info("Received SMS from " + msg.from + " for " + msg.to + ": " + msg.body); + createOrJoinSMSRoom(msg.from, msg.to, function (roomid) { + sendMatrix(roomid, msg.body, msg.media); + }); + response.sendStatus(204); + response.end(); + } else { + logger.info("Received SMS from " + msg.from + " for " + msg.to + ", ignoring based on smsonlyto list."); + response.sendStatus(403); + response.end(); + } } else { - logger.info("Received SMS from " + msg.from + " for " + msg.to + ", ignoring based on smsonlyto list."); - response.status(403); - response.body("403 forbidden (this endpoint doesn't deliver SMS destined for that number)"); + response.sendStatus(403); response.end(); } - } else { - response.status(403); - response.body("403 forbidden (webhook type not handled by this endpoint)"); + } catch (ex) { + logger.error("Decoding webhook body: " + ex); + response.sendStatus(500); response.end(); } - } catch (ex) { - logger.error("Decoding webhook body: " + ex); - response.status(500); - response.body("500 internal server error"); - response.end(); - } - } else { - try { - response.status(404); - response.body("404 not found"); - response.end(); - } catch (err) { - logger.error(err); + } else { + try { + response.sendStatus(404); + response.body("404 not found"); + response.end(); + } catch (err) { + logger.error(err); + } } + } catch (exx) { + logger.error(exx); } }