@@ -877,14 +877,38 @@ func buildRateLimit(input interface{}) []string {
877
877
}
878
878
879
879
if loc .RateLimit .RPS .Limit > 0 {
880
- limit := fmt .Sprintf ("limit_req zone=%v burst=%v nodelay;" ,
881
- loc .RateLimit .RPS .Name , loc .RateLimit .RPS .Burst )
880
+ limit := fmt .Sprintf ("limit_req zone=%v" , loc .RateLimit .RPS .Name )
881
+
882
+ if loc .RateLimit .RPS .Burst == 0 {
883
+ limit = fmt .Sprintf ("%v" , limit )
884
+ } else {
885
+ limit = fmt .Sprintf ("%v burst=%v" , limit , loc .RateLimit .RPS .Burst )
886
+ }
887
+
888
+ if loc .RateLimit .RPS .Delay < 0 {
889
+ limit = fmt .Sprintf ("%v nodelay;" , limit )
890
+ } else {
891
+ limit = fmt .Sprintf ("%v delay=%v;" , limit , loc .RateLimit .RPS .Delay )
892
+ }
893
+
882
894
limits = append (limits , limit )
883
895
}
884
896
885
897
if loc .RateLimit .RPM .Limit > 0 {
886
- limit := fmt .Sprintf ("limit_req zone=%v burst=%v nodelay;" ,
887
- loc .RateLimit .RPM .Name , loc .RateLimit .RPM .Burst )
898
+ limit := fmt .Sprintf ("limit_req zone=%v" , loc .RateLimit .RPM .Name )
899
+
900
+ if loc .RateLimit .RPM .Burst == 0 {
901
+ limit = fmt .Sprintf ("%v" , limit )
902
+ } else {
903
+ limit = fmt .Sprintf ("%v burst=%v" , limit , loc .RateLimit .RPM .Burst )
904
+ }
905
+
906
+ if loc .RateLimit .RPM .Delay < 0 {
907
+ limit = fmt .Sprintf ("%v nodelay;" , limit )
908
+ } else {
909
+ limit = fmt .Sprintf ("%v delay=%v;" , limit , loc .RateLimit .RPM .Delay )
910
+ }
911
+
888
912
limits = append (limits , limit )
889
913
}
890
914
0 commit comments