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) {
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);
}
}