Skip to content

Commit 6b9a5d8

Browse files
authored
Properly convert all headers statuses returned by the WASM. (proxy-wasm#19)
* Properly convert all headers statuses returned by the WASM. Signed-off-by: Gregory Brail <gregbrail@google.com>
1 parent 77f46ca commit 6b9a5d8

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

WORKSPACE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
66
git_repository(
77
name = "proxy_wasm_cpp_sdk",
88
remote = "https://github.com/proxy-wasm/proxy-wasm-cpp-sdk",
9-
commit = "c12553951d01bb60cb1448ba1fcfeb8f843aad62",
9+
commit = "96927d814b3ec14893b56793e122125e095654c7",
1010
)
1111

1212
http_archive(

src/context.cc

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
// limitations under the License.
1515

1616
#include <deque>
17-
#include <memory>
1817
#include <map>
18+
#include <memory>
1919
#include <mutex>
2020
#include <unordered_map>
2121
#include <unordered_set>
@@ -394,11 +394,10 @@ FilterHeadersStatus ContextBase::onRequestHeaders(uint32_t headers) {
394394
if (!wasm_->on_request_headers_) {
395395
return FilterHeadersStatus::Continue;
396396
}
397-
if (static_cast<FilterHeadersStatus>(wasm_->on_request_headers_(this, id_, headers).u64_) ==
398-
FilterHeadersStatus::Continue) {
399-
return FilterHeadersStatus::Continue;
400-
}
401-
return FilterHeadersStatus::StopIteration;
397+
auto result = wasm_->on_request_headers_(this, id_, headers).u64_;
398+
if (result > static_cast<uint64_t>(FilterHeadersStatus::StopAllIterationAndWatermark))
399+
return FilterHeadersStatus::StopAllIterationAndWatermark;
400+
return static_cast<FilterHeadersStatus>(result);
402401
}
403402

404403
FilterDataStatus ContextBase::onRequestBody(uint32_t data_length, bool end_of_stream) {
@@ -450,11 +449,10 @@ FilterHeadersStatus ContextBase::onResponseHeaders(uint32_t headers) {
450449
if (!wasm_->on_response_headers_) {
451450
return FilterHeadersStatus::Continue;
452451
}
453-
if (static_cast<FilterHeadersStatus>(wasm_->on_response_headers_(this, id_, headers).u64_) ==
454-
FilterHeadersStatus::Continue) {
455-
return FilterHeadersStatus::Continue;
456-
}
457-
return FilterHeadersStatus::StopIteration;
452+
auto result = wasm_->on_response_headers_(this, id_, headers).u64_;
453+
if (result > static_cast<uint64_t>(FilterHeadersStatus::StopAllIterationAndWatermark))
454+
return FilterHeadersStatus::StopAllIterationAndWatermark;
455+
return static_cast<FilterHeadersStatus>(result);
458456
}
459457

460458
FilterDataStatus ContextBase::onResponseBody(uint32_t body_length, bool end_of_stream) {

0 commit comments

Comments
 (0)