@@ -437,16 +437,7 @@ function _storeHeader(firstLine, headers) {
437437
438438function storeHeader ( self , state , key , value , validate ) {
439439 if ( validate ) {
440- if ( typeof key !== 'string' || ! key || ! checkIsHttpToken ( key ) ) {
441- throw new errors . TypeError (
442- 'ERR_INVALID_HTTP_TOKEN' , 'Header name' , key ) ;
443- }
444- if ( value === undefined ) {
445- throw new errors . TypeError ( 'ERR_MISSING_ARGS' , `header "${ key } "` ) ;
446- } else if ( checkInvalidHeaderChar ( value ) ) {
447- debug ( 'Header "%s" contains invalid characters' , key ) ;
448- throw new errors . TypeError ( 'ERR_INVALID_CHAR' , 'header content' , key ) ;
449- }
440+ validateHeader ( key , value ) ;
450441 }
451442 state . header += key + ': ' + escapeHeaderValue ( value ) + CRLF ;
452443 matchHeader ( self , state , key , value ) ;
@@ -494,20 +485,27 @@ function matchHeader(self, state, field, value) {
494485 }
495486}
496487
497- function validateHeader ( msg , name , value ) {
498- if ( typeof name !== 'string' || ! name || ! checkIsHttpToken ( name ) )
499- throw new errors . TypeError ( 'ERR_INVALID_HTTP_TOKEN' , 'Header name' , name ) ;
500- if ( value === undefined )
501- throw new errors . TypeError ( 'ERR_MISSING_ARGS' , 'value' ) ;
502- if ( msg . _header )
503- throw new errors . Error ( 'ERR_HTTP_HEADERS_SENT' , 'set' ) ;
504- if ( checkInvalidHeaderChar ( value ) ) {
488+ function validateHeader ( name , value ) {
489+ let err ;
490+ if ( typeof name !== 'string' || ! name || ! checkIsHttpToken ( name ) ) {
491+ err = new errors . TypeError ( 'ERR_INVALID_HTTP_TOKEN' , 'Header name' , name ) ;
492+ } else if ( value === undefined ) {
493+ err = new errors . TypeError ( 'ERR_HTTP_INVALID_HEADER_VALUE' , value , name ) ;
494+ } else if ( checkInvalidHeaderChar ( value ) ) {
505495 debug ( 'Header "%s" contains invalid characters' , name ) ;
506- throw new errors . TypeError ( 'ERR_INVALID_CHAR' , 'header content' , name ) ;
496+ err = new errors . TypeError ( 'ERR_INVALID_CHAR' , 'header content' , name ) ;
497+ }
498+ if ( err !== undefined ) {
499+ Error . captureStackTrace ( err , validateHeader ) ;
500+ throw err ;
507501 }
508502}
503+
509504OutgoingMessage . prototype . setHeader = function setHeader ( name , value ) {
510- validateHeader ( this , name , value ) ;
505+ if ( this . _header ) {
506+ throw new errors . Error ( 'ERR_HTTP_HEADERS_SENT' , 'set' ) ;
507+ }
508+ validateHeader ( name , value ) ;
511509
512510 if ( ! this [ outHeadersKey ] )
513511 this [ outHeadersKey ] = { } ;
0 commit comments