@@ -176,6 +176,7 @@ function escape_html_entities(key, value, more) {
176176common . getJSON = getJSON ;
177177
178178common . log = logger ;
179+ const log = logger ( 'api:utils:common' ) ;
179180
180181common . 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