@@ -32,7 +32,11 @@ use temporal_sdk_core_protos::{
3232 CancelNexusTask , NexusTask , NexusTaskCancelReason , nexus_task, nexus_task_completion,
3333 } ,
3434 } ,
35- temporal:: api:: nexus:: v1:: { request:: Variant , response, start_operation_response} ,
35+ temporal:: api:: nexus:: {
36+ self ,
37+ v1:: { request:: Variant , response, start_operation_response} ,
38+ } ,
39+ utilities:: normalize_http_headers,
3640} ;
3741use tokio:: {
3842 join,
@@ -42,7 +46,7 @@ use tokio::{
4246use tokio_stream:: wrappers:: UnboundedReceiverStream ;
4347use tokio_util:: sync:: CancellationToken ;
4448
45- static REQUEST_TIMEOUT_HEADER : & str = "Request-Timeout " ;
49+ static REQUEST_TIMEOUT_HEADER : & str = "request-timeout " ;
4650
4751/// Centralizes all state related to received nexus tasks
4852pub ( super ) struct NexusManager {
@@ -245,11 +249,18 @@ where
245249 . filter_map ( move |t| {
246250 let res = match t {
247251 TaskStreamInput :: Poll ( t) => match * t {
248- Ok ( t) => {
252+ Ok ( mut t) => {
249253 if let Some ( dur) = t. resp . sched_to_start ( ) {
250254 self . metrics . nexus_task_sched_to_start_latency ( dur) ;
251255 } ;
252256
257+ if let Some ( ref mut req) = t. resp . request {
258+ req. header = normalize_http_headers ( std:: mem:: take ( & mut req. header ) ) ;
259+ if let Some ( nexus:: v1:: request:: Variant :: StartOperation ( ref mut sor) ) = req. variant {
260+ sor. callback_header = normalize_http_headers ( std:: mem:: take ( & mut sor. callback_header ) ) ;
261+ }
262+ }
263+
253264 let tt = TaskToken ( t. resp . task_token . clone ( ) ) ;
254265 let mut timeout_task = None ;
255266 if let Some ( timeout_str) = t
0 commit comments