@@ -812,6 +812,8 @@ ngx_http_wasm_resp_get_headers(ngx_http_request_t *r, int32_t addr, int32_t size
812812    ngx_uint_t            i ;
813813    u_char               * content_length_hdr  =  NULL ;
814814    u_char                content_length_hdr_len  =  0 ;
815+     u_char               * status_length_hdr  =  NULL ;
816+     u_char                status_length_hdr_len  =  0 ;
815817    char                 * lowcase_key ;
816818    char                 * val ;
817819    ngx_list_part_t      * part ;
@@ -885,6 +887,20 @@ ngx_http_wasm_resp_get_headers(ngx_http_request_t *r, int32_t addr, int32_t size
885887        size  +=  sizeof ("transfer-encoding" ) +  sizeof ("chunked" );
886888    }
887889
890+     if  (r -> headers_out .status ) {
891+         count ++ ;
892+         status_length_hdr  =  ngx_pcalloc (r -> pool , NGX_INT_T_LEN );
893+         if  (status_length_hdr  ==  NULL ) {
894+             ngx_log_error (NGX_LOG_ERR , log , 0 , "no memory" );
895+             return  PROXY_RESULT_INTERNAL_FAILURE ;
896+         }
897+ 
898+         status_length_hdr_len  =  ngx_snprintf (status_length_hdr , NGX_INT_T_LEN , "%ui" ,
899+                                              r -> headers_out .status ) -  status_length_hdr ;
900+ 
901+         size  +=  sizeof (":status" ) +  status_length_hdr_len  +  1 ;
902+     }
903+ 
888904    size  +=  4  +  count  *  2  *  4 ;
889905    buf  =  ngx_http_wasm_get_buf_to_write (log , size , addr , size_addr );
890906    if  (buf  ==  NULL ) {
@@ -953,6 +969,13 @@ ngx_http_wasm_resp_get_headers(ngx_http_request_t *r, int32_t addr, int32_t size
953969        proxy_wasm_map_reserve_literal (& it , "transfer-encoding" , "chunked" );
954970    }
955971
972+     if  (status_length_hdr  !=  NULL ) {
973+         proxy_wasm_map_reserve (& it , & lowcase_key , sizeof (":status" ) - 1 ,
974+                                & val , status_length_hdr_len );
975+         ngx_memcpy (lowcase_key , ":status" , sizeof (":status" ) -  1 );
976+         ngx_memcpy (val , status_length_hdr , status_length_hdr_len );
977+     }
978+ 
956979    return  PROXY_RESULT_OK ;
957980}
958981
0 commit comments