Don't crash if HTTP error

This commit is contained in:
Skylar Ittner 2022-02-03 18:17:11 -07:00
parent be0b109736
commit 4d00868681

63
main.js
View File

@ -381,44 +381,45 @@ function sendMMS(number, from, mediauri, mimetype, callback) {
} }
function handleHTTPRequest(request, response) { function handleHTTPRequest(request, response) {
if (request.url == "/webhook") { try {
try { if (request.url == "/webhook") {
logger.debug("Got webhook: " + request.body); try {
var msg = JSON.parse(request.body); logger.debug("Got webhook: " + request.body);
var msg = JSON.parse(request.body);
if (msg.type == "mo") { if (msg.type == "mo") {
if (settings.smsonlyto.length > 0 && settings.smsonlyto.indexOf(msg.to) != -1) { if (settings.smsonlyto.length > 0 && settings.smsonlyto.indexOf(msg.to) != -1) {
logger.info("Received SMS from " + msg.from + " for " + msg.to + ": " + msg.body); logger.info("Received SMS from " + msg.from + " for " + msg.to + ": " + msg.body);
createOrJoinSMSRoom(msg.from, msg.to, function (roomid) { createOrJoinSMSRoom(msg.from, msg.to, function (roomid) {
sendMatrix(roomid, msg.body, msg.media); sendMatrix(roomid, msg.body, msg.media);
}); });
response.status(204); response.sendStatus(204);
response.end(); response.end();
} else {
logger.info("Received SMS from " + msg.from + " for " + msg.to + ", ignoring based on smsonlyto list.");
response.sendStatus(403);
response.end();
}
} else { } else {
logger.info("Received SMS from " + msg.from + " for " + msg.to + ", ignoring based on smsonlyto list."); response.sendStatus(403);
response.status(403);
response.body("403 forbidden (this endpoint doesn't deliver SMS destined for that number)");
response.end(); response.end();
} }
} else { } catch (ex) {
response.status(403); logger.error("Decoding webhook body: " + ex);
response.body("403 forbidden (webhook type not handled by this endpoint)"); response.sendStatus(500);
response.end(); response.end();
} }
} catch (ex) { } else {
logger.error("Decoding webhook body: " + ex); try {
response.status(500); response.sendStatus(404);
response.body("500 internal server error"); response.body("404 not found");
response.end(); response.end();
} } catch (err) {
} else { logger.error(err);
try { }
response.status(404);
response.body("404 not found");
response.end();
} catch (err) {
logger.error(err);
} }
} catch (exx) {
logger.error(exx);
} }
} }