@@ -476,8 +476,12 @@ FilterHeadersStatus ContextBase::onRequestHeaders(uint32_t headers, bool end_of_
476
476
->on_request_headers_abi_02_ (this , id_, headers,
477
477
static_cast <uint32_t >(end_of_stream))
478
478
.u64_ ;
479
- if (result > static_cast <uint64_t >(FilterHeadersStatus::StopAllIterationAndWatermark))
479
+
480
+ if (stop_iteration_) {
481
+ return FilterHeadersStatus::StopIteration;
482
+ } else if (result > static_cast <uint64_t >(FilterHeadersStatus::StopAllIterationAndWatermark)) {
480
483
return FilterHeadersStatus::StopAllIterationAndWatermark;
484
+ }
481
485
return static_cast <FilterHeadersStatus>(result);
482
486
}
483
487
@@ -486,7 +490,7 @@ FilterDataStatus ContextBase::onRequestBody(uint32_t data_length, bool end_of_st
486
490
DeferAfterCallActions actions (this );
487
491
auto result =
488
492
wasm_->on_request_body_ (this , id_, data_length, static_cast <uint32_t >(end_of_stream)).u64_ ;
489
- if (result > static_cast <uint64_t >(FilterDataStatus::StopIterationNoBuffer))
493
+ if (stop_iteration_ || result > static_cast <uint64_t >(FilterDataStatus::StopIterationNoBuffer))
490
494
return FilterDataStatus::StopIterationNoBuffer;
491
495
return static_cast <FilterDataStatus>(result);
492
496
}
@@ -495,8 +499,9 @@ FilterTrailersStatus ContextBase::onRequestTrailers(uint32_t trailers) {
495
499
CHECK_HTTP (on_request_trailers_, FilterTrailersStatus::Continue,
496
500
FilterTrailersStatus::StopIteration);
497
501
DeferAfterCallActions actions (this );
498
- if (static_cast <FilterTrailersStatus>(wasm_->on_request_trailers_ (this , id_, trailers).u64_ ) ==
499
- FilterTrailersStatus::Continue) {
502
+ if (!stop_iteration_ &&
503
+ static_cast <FilterTrailersStatus>(wasm_->on_request_trailers_ (this , id_, trailers).u64_ ) ==
504
+ FilterTrailersStatus::Continue) {
500
505
return FilterTrailersStatus::Continue;
501
506
}
502
507
return FilterTrailersStatus::StopIteration;
@@ -522,8 +527,12 @@ FilterHeadersStatus ContextBase::onResponseHeaders(uint32_t headers, bool end_of
522
527
->on_response_headers_abi_02_ (this , id_, headers,
523
528
static_cast <uint32_t >(end_of_stream))
524
529
.u64_ ;
525
- if (result > static_cast <uint64_t >(FilterHeadersStatus::StopAllIterationAndWatermark))
530
+
531
+ if (stop_iteration_) {
532
+ return FilterHeadersStatus::StopIteration;
533
+ } else if (result > static_cast <uint64_t >(FilterHeadersStatus::StopAllIterationAndWatermark)) {
526
534
return FilterHeadersStatus::StopAllIterationAndWatermark;
535
+ }
527
536
return static_cast <FilterHeadersStatus>(result);
528
537
}
529
538
@@ -533,7 +542,8 @@ FilterDataStatus ContextBase::onResponseBody(uint32_t body_length, bool end_of_s
533
542
DeferAfterCallActions actions (this );
534
543
auto result =
535
544
wasm_->on_response_body_ (this , id_, body_length, static_cast <uint32_t >(end_of_stream)).u64_ ;
536
- if (result > static_cast <uint64_t >(FilterDataStatus::StopIterationNoBuffer))
545
+
546
+ if (stop_iteration_ || result > static_cast <uint64_t >(FilterDataStatus::StopIterationNoBuffer))
537
547
return FilterDataStatus::StopIterationNoBuffer;
538
548
return static_cast <FilterDataStatus>(result);
539
549
}
@@ -542,8 +552,9 @@ FilterTrailersStatus ContextBase::onResponseTrailers(uint32_t trailers) {
542
552
CHECK_HTTP (on_response_trailers_, FilterTrailersStatus::Continue,
543
553
FilterTrailersStatus::StopIteration);
544
554
DeferAfterCallActions actions (this );
545
- if (static_cast <FilterTrailersStatus>(wasm_->on_response_trailers_ (this , id_, trailers).u64_ ) ==
546
- FilterTrailersStatus::Continue) {
555
+ if (!stop_iteration_ &&
556
+ static_cast <FilterTrailersStatus>(wasm_->on_response_trailers_ (this , id_, trailers).u64_ ) ==
557
+ FilterTrailersStatus::Continue) {
547
558
return FilterTrailersStatus::Continue;
548
559
}
549
560
return FilterTrailersStatus::StopIteration;
0 commit comments