@@ -83,6 +83,75 @@ function OutgoingMessage() {
83
83
util . inherits ( OutgoingMessage , Stream ) ;
84
84
85
85
86
+ Object . defineProperty ( OutgoingMessage . prototype , '_headers' , {
87
+ get : function ( ) {
88
+ return this . getHeaders ( ) ;
89
+ } ,
90
+ set : function ( val ) {
91
+ if ( val == null ) {
92
+ this [ outHeadersKey ] = null ;
93
+ } else if ( typeof val === 'object' ) {
94
+ const headers = this [ outHeadersKey ] = { } ;
95
+ const keys = Object . keys ( val ) ;
96
+ for ( var i = 0 ; i < keys . length ; ++ i ) {
97
+ const name = keys [ i ] ;
98
+ headers [ name . toLowerCase ( ) ] = [ name , val [ name ] ] ;
99
+ }
100
+ }
101
+ }
102
+ } ) ;
103
+
104
+ Object . defineProperty ( OutgoingMessage . prototype , '_headerNames' , {
105
+ get : function ( ) {
106
+ const headers = this [ outHeadersKey ] ;
107
+ if ( headers ) {
108
+ const out = new StorageObject ( ) ;
109
+ const keys = Object . keys ( headers ) ;
110
+ for ( var i = 0 ; i < keys . length ; ++ i ) {
111
+ const key = keys [ i ] ;
112
+ const val = headers [ key ] [ 0 ] ;
113
+ out [ key ] = val ;
114
+ }
115
+ return out ;
116
+ } else {
117
+ return headers ;
118
+ }
119
+ } ,
120
+ set : function ( val ) {
121
+ if ( typeof val === 'object' && val !== null ) {
122
+ const headers = this [ outHeadersKey ] ;
123
+ if ( ! headers )
124
+ return ;
125
+ const keys = Object . keys ( val ) ;
126
+ for ( var i = 0 ; i < keys . length ; ++ i ) {
127
+ const header = headers [ keys [ i ] ] ;
128
+ if ( header )
129
+ header [ 0 ] = val [ keys [ i ] ] ;
130
+ }
131
+ }
132
+ }
133
+ } ) ;
134
+
135
+
136
+ OutgoingMessage . prototype . _renderHeaders = function _renderHeaders ( ) {
137
+ if ( this . _header ) {
138
+ throw new Error ( 'Can\'t render headers after they are sent to the client' ) ;
139
+ }
140
+
141
+ var headersMap = this [ outHeadersKey ] ;
142
+ if ( ! headersMap ) return { } ;
143
+
144
+ var headers = { } ;
145
+ var keys = Object . keys ( headersMap ) ;
146
+
147
+ for ( var i = 0 , l = keys . length ; i < l ; i ++ ) {
148
+ var key = keys [ i ] ;
149
+ headers [ headersMap [ key ] [ 0 ] ] = headersMap [ key ] [ 1 ] ;
150
+ }
151
+ return headers ;
152
+ } ;
153
+
154
+
86
155
exports . OutgoingMessage = OutgoingMessage ;
87
156
88
157
0 commit comments