@@ -437,16 +437,7 @@ function _storeHeader(firstLine, headers) {
437
437
438
438
function storeHeader ( self , state , key , value , validate ) {
439
439
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 ) ;
450
441
}
451
442
state . header += key + ': ' + escapeHeaderValue ( value ) + CRLF ;
452
443
matchHeader ( self , state , key , value ) ;
@@ -494,20 +485,27 @@ function matchHeader(self, state, field, value) {
494
485
}
495
486
}
496
487
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 ) ) {
505
495
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 ;
507
501
}
508
502
}
503
+
509
504
OutgoingMessage . 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 ) ;
511
509
512
510
if ( ! this [ outHeadersKey ] )
513
511
this [ outHeadersKey ] = { } ;
0 commit comments