From a721e4f2d7428e59f153bbd0e06d19d0c7ef9e63 Mon Sep 17 00:00:00 2001 From: Simon Backx Date: Tue, 13 Dec 2022 12:32:05 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fixed=20'Invalid=20status=20code?= =?UTF-8?q?:=20undefined'=20in=20members=20api=20(#15973)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes https://github.com/TryGhost/Team/issues/2377 When there is an error thrown that is not a Ghost error, there is no status code in the error. Calling res.writeHead with an undefined status code, throws an error and crashes Ghost. This change fixes that and adds logging for those errors. --- .../core/server/services/members/middleware.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ghost/core/core/server/services/members/middleware.js b/ghost/core/core/server/services/members/middleware.js index b0cbef2d56..6ebaad9307 100644 --- a/ghost/core/core/server/services/members/middleware.js +++ b/ghost/core/core/server/services/members/middleware.js @@ -77,7 +77,10 @@ const deleteSession = async function (req, res) { res.writeHead(204); res.end(); } catch (err) { - res.writeHead(err.statusCode, { + if (!err.statusCode) { + logging.error(err); + } + res.writeHead(err.statusCode ?? 500, { 'Content-Type': 'text/plain;charset=UTF-8' }); res.end(err.message); @@ -111,7 +114,10 @@ const deleteSuppression = async function (req, res) { res.writeHead(204); res.end(); } catch (err) { - res.writeHead(err.statusCode, { + if (!err.statusCode) { + logging.error(err); + } + res.writeHead(err.statusCode ?? 500, { 'Content-Type': 'text/plain;charset=UTF-8' }); res.end(err.message); @@ -194,7 +200,10 @@ const updateMemberData = async function (req, res) { res.json(null); } } catch (err) { - res.writeHead(err.statusCode, { + if (!err.statusCode) { + logging.error(err); + } + res.writeHead(err.statusCode ?? 500, { 'Content-Type': 'text/plain;charset=UTF-8' }); res.end(err.message);