@@ -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 }
@@ -2069,19 +2091,16 @@ common.parseAppVersion = function(version) {
20692091 version = String ( version ) ;
20702092 }
20712093
2072- // Ensure version has at least one decimal point
2073- if ( version . indexOf ( '.' ) === - 1 ) {
2074- version += '.0' ;
2075- }
2076-
2077- const parsedVersion = semver . valid ( semver . coerce ( version ) ) ;
2078- if ( parsedVersion ) {
2079- const versionObj = semver . parse ( parsedVersion ) ;
2094+ const isValid = semver . valid ( semver . coerce ( version , { includePrerelease : true } ) ) ;
2095+ if ( isValid ) {
2096+ const versionObj = semver . parse ( semver . coerce ( version , { includePrerelease : true } ) ) ;
20802097 if ( versionObj ) {
20812098 return {
20822099 major : versionObj . major ,
20832100 minor : versionObj . minor ,
20842101 patch : versionObj . patch ,
2102+ prerelease : versionObj . prerelease ,
2103+ build : versionObj . build ,
20852104 original : version ,
20862105 success : true
20872106 } ;
0 commit comments