10
10
#define FFI_NO_REQ_CTX -100
11
11
#define FFI_BAD_CONTEXT -101
12
12
13
+ #define must_get_memory (key , log , key_data , key_len ) \
14
+ key = (char *) ngx_wasm_vm.get_memory((log), (key_data), (key_size)); \
15
+ if (key == NULL) { \
16
+ return PROXY_RESULT_INVALID_MEMORY_ACCESS; \
17
+ }
18
+ #define must_get_req (r ) \
19
+ r = ngx_http_wasm_get_req(); \
20
+ if (r == NULL) { \
21
+ return PROXY_RESULT_BAD_ARGUMENT; \
22
+ }
23
+
13
24
14
25
static int (* set_resp_header ) (ngx_http_request_t * r ,
15
26
const char * key_data , size_t key_len , int is_nil ,
@@ -388,6 +399,23 @@ int32_t
388
399
proxy_replace_header_map_value (int32_t type , int32_t key_data , int32_t key_size ,
389
400
int32_t data , int32_t size )
390
401
{
402
+ ngx_int_t rc ;
403
+ ngx_log_t * log ;
404
+ ngx_http_request_t * r ;
405
+ char * key , * val ;
406
+
407
+ log = ngx_http_wasm_get_log ();
408
+ must_get_req (r );
409
+ must_get_memory (key , log , key_data , key_len );
410
+ must_get_memory (val , log , data , size );
411
+
412
+ if (type == PROXY_MAP_TYPE_HTTP_RESPONSE_HEADERS ) {
413
+ rc = ngx_http_wasm_set_resp_header (r , key , key_size , 0 , val , size , 1 );
414
+ if (rc != NGX_OK ) {
415
+ return PROXY_RESULT_BAD_ARGUMENT ;
416
+ }
417
+ }
418
+
391
419
return PROXY_RESULT_OK ;
392
420
}
393
421
@@ -402,20 +430,9 @@ proxy_add_header_map_value(int32_t type, int32_t key_data, int32_t key_size,
402
430
char * key , * val ;
403
431
404
432
log = ngx_http_wasm_get_log ();
405
- r = ngx_http_wasm_get_req ();
406
- if (r == NULL ) {
407
- return PROXY_RESULT_BAD_ARGUMENT ;
408
- }
409
-
410
- key = (char * ) ngx_wasm_vm .get_memory (log , key_data , key_size );
411
- if (key == NULL ) {
412
- return PROXY_RESULT_INVALID_MEMORY_ACCESS ;
413
- }
414
-
415
- val = (char * ) ngx_wasm_vm .get_memory (log , data , size );
416
- if (val == NULL ) {
417
- return PROXY_RESULT_INVALID_MEMORY_ACCESS ;
418
- }
433
+ must_get_req (r );
434
+ must_get_memory (key , log , key_data , key_len );
435
+ must_get_memory (val , log , data , size );
419
436
420
437
if (type == PROXY_MAP_TYPE_HTTP_RESPONSE_HEADERS ) {
421
438
rc = ngx_http_wasm_set_resp_header (r , key , key_size , 0 , val , size , 0 );
0 commit comments