File tree Expand file tree Collapse file tree 8 files changed +61
-9
lines changed Expand file tree Collapse file tree 8 files changed +61
-9
lines changed Original file line number Diff line number Diff line change 67
67
import nginx .clojure .Stack ;
68
68
import nginx .clojure .UnknownHeaderHolder ;
69
69
import nginx .clojure .java .DefinedPrefetch ;
70
+ import nginx .clojure .java .JavaLazyHeaderMap ;
70
71
import nginx .clojure .java .NginxJavaRequest ;
71
72
import nginx .clojure .java .RequestRawMessageAdapter ;
72
73
import nginx .clojure .java .RequestRawMessageAdapter .RequestOrderedRunnable ;
@@ -704,5 +705,12 @@ public void applyDelayed() {
704
705
NginxClojureRT .unsafeSetNginxVariable (r , var , prefetchedVariables .get (var ));
705
706
}
706
707
}
708
+
709
+ if (phase == MiniConstants .NGX_HTTP_REWRITE_PHASE ) {
710
+ Object headers = array [index (HEADERS ) + 1 ];
711
+ if (headers instanceof JavaLazyHeaderMap ) {
712
+ ((JavaLazyHeaderMap )headers ).applyDelayed ();
713
+ }
714
+ }
707
715
}
708
716
}
Original file line number Diff line number Diff line change @@ -77,9 +77,9 @@ public void enableSafeCache(String[] headers) {
77
77
78
78
this .size = safeCache .size ();
79
79
80
- if ((NGX_HTTP_CLOJURE_GET_HEADER_FLAG_HEADERS_OUT & flag ) != 0 ) {
80
+ // if ((NGX_HTTP_CLOJURE_GET_HEADER_FLAG_HEADERS_OUT & flag) != 0) {
81
81
updatedHeaders = new LinkedHashSet <>();
82
- }
82
+ // }
83
83
}
84
84
85
85
@ Override
Original file line number Diff line number Diff line change @@ -580,5 +580,13 @@ public void applyDelayed() {
580
580
NginxClojureRT .unsafeSetNginxVariable (r , var , prefetchedVariables .get (var ));
581
581
}
582
582
}
583
+
584
+ if (phase == MiniConstants .NGX_HTTP_REWRITE_PHASE ) {
585
+ Object headers = array [(index (HEADERS ) << 1 ) + 1 ];
586
+ if (headers instanceof JavaLazyHeaderMap ) {
587
+ ((JavaLazyHeaderMap )headers ).applyDelayed ();
588
+ }
589
+ }
590
+
583
591
}
584
592
}
Original file line number Diff line number Diff line change 8
8
9
9
(def ^:dynamic *host* " localhost" )
10
10
(def ^:dynamic *port* " 8080" )
11
- (def ^:dynamic *debug* false )
11
+ (def ^:dynamic *debug* true )
12
12
13
13
(def ^:dynamic *http-get* client /get )
14
14
671
671
(debug-println " =================javarewriteheaders=============================" )
672
672
(is (= 200 (:status r)))
673
673
(is (= " Good!" (b " jwt-token" )))
674
- (is (= " gzip" (b " Accept-Encoding" )))))
674
+ (is (= nil (b " User-Agent" )))
675
+ (is (or (= " gzip" (b " Accept-Encoding" )) (= " gzip" (b " accept-encoding" ))))))
675
676
(testing " /cljrewrite/headers"
676
677
(let [r (client/get (str " http://" *host* " :" *port* " /cljrewrite/headers" ) {:follow-redirects false })
677
678
h (:headers r)
681
682
(is (= 200 (:status r)))
682
683
(is (= " Good!" (b " jwt-token" )))
683
684
(is (= nil (b " User-Agent" )))
684
- (is (= " gzip" (b " Accept-Encoding" )))))
685
+ (is (or ( = " gzip" (b " Accept-Encoding" )) ( = " gzip " ( b " accept-encoding " ))))))
685
686
(testing " rewrite proxy pass"
686
687
(let [r (client/get (str " http://" *host* " :" *port* " /uptest" ) {:follow-redirects false })
687
688
h (:headers r)
Original file line number Diff line number Diff line change @@ -42,8 +42,10 @@ public static class HeadersRewriteHandler implements NginxJavaRingHandler {
42
42
@ Override
43
43
public Object [] invoke (Map <String , Object > request ) throws IOException {
44
44
Map <String , String > requestHeaders = (Map <String , String >) request .get (HEADERS );
45
+ requestHeaders .remove ("User-Agent" );
45
46
requestHeaders .put ("jwt-token" , "Good!" );
46
- requestHeaders .put ("accept-encoding" , "gzip" );
47
+ requestHeaders .remove ("Accept-Encoding" );
48
+ requestHeaders .put ("Accept-Encoding" , "gzip" );
47
49
return Constants .PHASE_DONE ;
48
50
}
49
51
Original file line number Diff line number Diff line change @@ -241,6 +241,11 @@ http {
241
241
content_handler_property file testfiles/wcp.html;
242
242
send_timeout 10s;
243
243
}
244
+
245
+ location /java/loadheader {
246
+ content_handler_type java;
247
+ content_handler_name 'nginx.clojure.java.Loadstress$HeaderEchoHanlder';
248
+ }
244
249
245
250
location /groovy {
246
251
content_handler_type 'groovy';
@@ -390,7 +395,13 @@ http {
390
395
rewrite_handler_property continueToContentHandler true;
391
396
content_handler_name 'nginx.clojure.java.RewriteHandlerTestSet4NginxJavaRingHandler$SimpleVarHandler';
392
397
}
393
-
398
+
399
+ location /cljrewrite/headers {
400
+ rewrite_handler_type clojure;
401
+ rewrite_handler_name nginx.clojure.rewrite-handler-for-test/headers-more;
402
+ proxy_pass http://localhost:8080/java/loadheader;
403
+ }
404
+
394
405
set $myup "";
395
406
set $mypath "";
396
407
location /uptest {
Original file line number Diff line number Diff line change @@ -231,6 +231,11 @@ http {
231
231
content_handler_property file testfiles/wcp.html;
232
232
send_timeout 10s;
233
233
}
234
+
235
+ location /java/loadheader {
236
+ content_handler_type java;
237
+ content_handler_name 'nginx.clojure.java.Loadstress$HeaderEchoHanlder';
238
+ }
234
239
235
240
location /groovy {
236
241
content_handler_type 'groovy';
@@ -318,7 +323,7 @@ http {
318
323
location /javarewriteheaders {
319
324
handler_type 'java';
320
325
rewrite_handler_name 'nginx.clojure.java.RewriteHandlerTestSet4NginxJavaRingHandler$HeadersRewriteHandler';
321
- proxy_pass http://localhost :8080/java/loadheader;
326
+ proxy_pass http://127.0.0.1 :8080/java/loadheader;
322
327
}
323
328
324
329
location /javarewritebybodyproxy {
@@ -380,6 +385,12 @@ http {
380
385
rewrite_handler_property continueToContentHandler true;
381
386
content_handler_name 'nginx.clojure.java.RewriteHandlerTestSet4NginxJavaRingHandler$SimpleVarHandler';
382
387
}
388
+
389
+ location /cljrewrite/headers {
390
+ rewrite_handler_type clojure;
391
+ rewrite_handler_name nginx.clojure.rewrite-handler-for-test/headers-more;
392
+ proxy_pass http://localhost:8080/java/loadheader;
393
+ }
383
394
384
395
set $myup "";
385
396
set $mypath "";
Original file line number Diff line number Diff line change @@ -233,6 +233,11 @@ http {
233
233
content_handler_property file testfiles/wcp.html;
234
234
send_timeout 10s;
235
235
}
236
+
237
+ location /java/loadheader {
238
+ content_handler_type java;
239
+ content_handler_name 'nginx.clojure.java.Loadstress$HeaderEchoHanlder';
240
+ }
236
241
237
242
location /groovy {
238
243
content_handler_type 'groovy';
@@ -320,7 +325,7 @@ http {
320
325
location /javarewriteheaders {
321
326
handler_type 'java';
322
327
rewrite_handler_name 'nginx.clojure.java.RewriteHandlerTestSet4NginxJavaRingHandler$HeadersRewriteHandler';
323
- proxy_pass http://localhost :8080/java/loadheader;
328
+ proxy_pass http://127.0.0.1 :8080/java/loadheader;
324
329
}
325
330
326
331
location /javarewritebybodyproxy {
@@ -382,6 +387,12 @@ http {
382
387
rewrite_handler_property continueToContentHandler true;
383
388
content_handler_name 'nginx.clojure.java.RewriteHandlerTestSet4NginxJavaRingHandler$SimpleVarHandler';
384
389
}
390
+
391
+ location /cljrewrite/headers {
392
+ rewrite_handler_type clojure;
393
+ rewrite_handler_name nginx.clojure.rewrite-handler-for-test/headers-more;
394
+ proxy_pass http://localhost:8080/java/loadheader;
395
+ }
385
396
386
397
set $myup "";
387
398
set $mypath "";
You can’t perform that action at this time.
0 commit comments