@@ -42,7 +42,7 @@ use tokio::{
4242use tokio_stream:: wrappers:: UnboundedReceiverStream ;
4343use tokio_util:: sync:: CancellationToken ;
4444
45- static REQUEST_TIMEOUT_HEADER : & str = "Request-Timeout " ;
45+ static REQUEST_TIMEOUT_HEADER : & str = "request-timeout " ;
4646
4747/// Centralizes all state related to received nexus tasks
4848pub ( super ) struct NexusManager {
@@ -245,11 +245,23 @@ where
245245 . filter_map ( move |t| {
246246 let res = match t {
247247 TaskStreamInput :: Poll ( t) => match * t {
248- Ok ( t) => {
248+ Ok ( mut t) => {
249249 if let Some ( dur) = t. resp . sched_to_start ( ) {
250250 self . metrics . nexus_task_sched_to_start_latency ( dur) ;
251251 } ;
252252
253+ // Lowercase-ify headers. All headers should be lowercase as per http2
254+ // standard, but, not all of them were initially and this papers over
255+ // that for lang.
256+ if let Some ( ref mut req) = t. resp . request {
257+ let existing_headers = std:: mem:: take ( & mut req. header ) ;
258+ let mut new_headers = HashMap :: new ( ) ;
259+ for ( header_key, val) in existing_headers. into_iter ( ) {
260+ new_headers. insert ( header_key. to_lowercase ( ) , val) ;
261+ } ;
262+ req. header = new_headers;
263+ }
264+
253265 let tt = TaskToken ( t. resp . task_token . clone ( ) ) ;
254266 let mut timeout_task = None ;
255267 if let Some ( timeout_str) = t
0 commit comments