Skip to content

Commit ba6eceb

Browse files
authored
Merge pull request #6380 from Countly/res-header
Set up default headers for common return methods
2 parents 0b81b04 + e14393f commit ba6eceb

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## Version 25.03.XX
2+
Fixes:
3+
- [core] Set up default headers for common return methods
4+
15
## Version 25.03.8
26
Fixes:
37
- [core] Fix adding llm observability to cly-event-select component

api/utils/common.js

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ function escape_html_entities(key, value, more) {
176176
common.getJSON = getJSON;
177177

178178
common.log = logger;
179+
const log = logger('api:utils:common');
179180

180181
common.dbMap = {
181182
'events': 'e',
@@ -1307,16 +1308,23 @@ common.returnRaw = function(params, returnCode, body, heads) {
13071308
}
13081309
return;
13091310
}
1311+
const defaultHeaders = {};
13101312
//set provided in configuration headers
1311-
var headers = {};
1313+
let headers = {};
13121314
if (heads) {
13131315
for (var i in heads) {
13141316
headers[i] = heads[i];
13151317
}
13161318
}
13171319
if (params && params.res && params.res.writeHead && !params.blockResponses) {
13181320
if (!params.res.finished) {
1319-
params.res.writeHead(returnCode, headers);
1321+
try {
1322+
params.res.writeHead(returnCode, headers);
1323+
}
1324+
catch (err) {
1325+
log.e(`Error writing header in 'returnRaw' ${err}`);
1326+
params.res.writeHead(returnCode, defaultHeaders);
1327+
}
13201328
if (body) {
13211329
params.res.write(body);
13221330
}
@@ -1347,9 +1355,10 @@ common.returnMessage = function(params, returnCode, message, heads, noResult = f
13471355
return;
13481356
}
13491357
//set provided in configuration headers
1350-
var headers = {
1358+
const defaultHeaders = {
13511359
'Content-Type': 'application/json; charset=utf-8'
13521360
};
1361+
let headers = { ...defaultHeaders };
13531362
var add_headers = (plugins.getConfig("security").api_additional_headers || "").replace(/\r\n|\r|\n/g, "\n").split("\n");
13541363
var parts;
13551364
for (let i = 0; i < add_headers.length; i++) {
@@ -1373,7 +1382,13 @@ common.returnMessage = function(params, returnCode, message, heads, noResult = f
13731382
}
13741383
if (params && params.res && params.res.writeHead && !params.blockResponses) {
13751384
if (!params.res.finished) {
1376-
params.res.writeHead(returnCode, headers);
1385+
try {
1386+
params.res.writeHead(returnCode, headers);
1387+
}
1388+
catch (err) {
1389+
log.e(`Error writing header in 'returnMessage' ${err}`);
1390+
params.res.writeHead(returnCode, defaultHeaders);
1391+
}
13771392
if (params.qstring.callback) {
13781393
params.res.write(params.qstring.callback + '(' + JSON.stringify({result: message}, escape_html_entities) + ')');
13791394
}
@@ -1415,9 +1430,10 @@ common.returnOutput = function(params, output, noescape, heads) {
14151430
return;
14161431
}
14171432
//set provided in configuration headers
1418-
var headers = {
1433+
const defaultHeaders = {
14191434
'Content-Type': 'application/json; charset=utf-8'
14201435
};
1436+
let headers = { ...defaultHeaders };
14211437
var add_headers = (plugins.getConfig("security").api_additional_headers || "").replace(/\r\n|\r|\n/g, "\n").split("\n");
14221438
var parts;
14231439
for (let i = 0; i < add_headers.length; i++) {
@@ -1442,7 +1458,13 @@ common.returnOutput = function(params, output, noescape, heads) {
14421458
}
14431459
if (params && params.res && params.res.writeHead && !params.blockResponses) {
14441460
if (!params.res.finished) {
1445-
params.res.writeHead(200, headers);
1461+
try {
1462+
params.res.writeHead(200, headers);
1463+
}
1464+
catch (err) {
1465+
log.e(`Error writing header in 'returnMessage' ${err}`);
1466+
params.res.writeHead(200, defaultHeaders);
1467+
}
14461468
if (params.qstring.callback) {
14471469
params.res.write(params.qstring.callback + '(' + JSON.stringify(output, escape) + ')');
14481470
}

0 commit comments

Comments
 (0)