@@ -55,6 +55,7 @@ pub(crate) struct Config {
55
55
pub ( crate ) keep_alive_timeout : Duration ,
56
56
pub ( crate ) max_send_buffer_size : usize ,
57
57
pub ( crate ) max_header_list_size : u32 ,
58
+ pub ( crate ) date_header : bool ,
58
59
}
59
60
60
61
impl Default for Config {
@@ -72,6 +73,7 @@ impl Default for Config {
72
73
keep_alive_timeout : Duration :: from_secs ( 20 ) ,
73
74
max_send_buffer_size : DEFAULT_MAX_SEND_BUF_SIZE ,
74
75
max_header_list_size : DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE ,
76
+ date_header : true ,
75
77
}
76
78
}
77
79
}
@@ -86,6 +88,7 @@ pin_project! {
86
88
timer: Time ,
87
89
service: S ,
88
90
state: State <T , B >,
91
+ date_header: bool ,
89
92
}
90
93
}
91
94
@@ -108,6 +111,7 @@ where
108
111
ping : Option < ( ping:: Recorder , ping:: Ponger ) > ,
109
112
conn : Connection < Compat < T > , SendBuf < B :: Data > > ,
110
113
closing : Option < crate :: Error > ,
114
+ date_header : bool ,
111
115
}
112
116
113
117
impl < T , S , B , E > Server < T , S , B , E >
@@ -167,6 +171,7 @@ where
167
171
hs : handshake,
168
172
} ,
169
173
service,
174
+ date_header : config. date_header ,
170
175
}
171
176
}
172
177
@@ -219,6 +224,7 @@ where
219
224
ping,
220
225
conn,
221
226
closing : None ,
227
+ date_header : me. date_header ,
222
228
} )
223
229
}
224
230
State :: Serving ( ref mut srv) => {
@@ -302,7 +308,13 @@ where
302
308
req. extensions_mut ( ) . insert ( Protocol :: from_inner ( protocol) ) ;
303
309
}
304
310
305
- let fut = H2Stream :: new ( service. call ( req) , connect_parts, respond) ;
311
+ let fut = H2Stream :: new (
312
+ service. call ( req) ,
313
+ connect_parts,
314
+ respond,
315
+ self . date_header ,
316
+ ) ;
317
+
306
318
exec. execute_h2stream ( fut) ;
307
319
}
308
320
Some ( Err ( e) ) => {
@@ -357,6 +369,7 @@ pin_project! {
357
369
reply: SendResponse <SendBuf <B :: Data >>,
358
370
#[ pin]
359
371
state: H2StreamState <F , B >,
372
+ date_header: bool ,
360
373
}
361
374
}
362
375
@@ -392,10 +405,12 @@ where
392
405
fut : F ,
393
406
connect_parts : Option < ConnectParts > ,
394
407
respond : SendResponse < SendBuf < B :: Data > > ,
408
+ date_header : bool ,
395
409
) -> H2Stream < F , B > {
396
410
H2Stream {
397
411
reply : respond,
398
412
state : H2StreamState :: Service { fut, connect_parts } ,
413
+ date_header,
399
414
}
400
415
}
401
416
}
@@ -454,10 +469,12 @@ where
454
469
let mut res = :: http:: Response :: from_parts ( head, ( ) ) ;
455
470
super :: strip_connection_headers ( res. headers_mut ( ) , false ) ;
456
471
457
- // set Date header if it isn't already set...
458
- res. headers_mut ( )
459
- . entry ( :: http:: header:: DATE )
460
- . or_insert_with ( date:: update_and_header_value) ;
472
+ // set Date header if it isn't already set if instructed
473
+ if * me. date_header {
474
+ res. headers_mut ( )
475
+ . entry ( :: http:: header:: DATE )
476
+ . or_insert_with ( date:: update_and_header_value) ;
477
+ }
461
478
462
479
if let Some ( connect_parts) = connect_parts. take ( ) {
463
480
if res. status ( ) . is_success ( ) {
0 commit comments