Skip to content

Commit

Permalink
pass noop parsercallbacks to parser implementation
Browse files Browse the repository at this point in the history
Signed-off-by: G Vamshi Krishna Reddy <[email protected]>
  • Loading branch information
vamshi177 committed Oct 4, 2024
1 parent 56a9981 commit 8c80588
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ Config::Config(Stats::Scope& scope)
const absl::string_view Filter::HTTP2_CONNECTION_PREFACE = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n";

Filter::Filter(const ConfigSharedPtr config) : config_(config) {
// Filter for only HTTP_REQUEST and as callbacks are not used with the http_parser initializing as
// nullptr
// Filter for only Request Message types with NoOp callbacks
no_op_callbacks_ = std::make_unique<NoOpParserCallbacks>();
parser_ = std::make_unique<Http::Http1::LegacyHttpParserImpl>(Http::Http1::MessageType::Request,
nullptr);
no_op_callbacks_.get());
}

Network::FilterStatus Filter::onData(Network::ListenerFilterBuffer& buffer) {
Expand Down
36 changes: 36 additions & 0 deletions source/extensions/filters/listener/http_inspector/http_inspector.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,41 @@ class Config {
HttpInspectorStats stats_;
};

class NoOpParserCallbacks : public Http::Http1::ParserCallbacks {
public:
Http::Http1::CallbackResult onMessageBegin() override {
return Http::Http1::CallbackResult::Success;
}

Http::Http1::CallbackResult onUrl(const char* /*data*/, size_t /*length*/) override {
return Http::Http1::CallbackResult::Success;
}

Http::Http1::CallbackResult onStatus(const char* /*data*/, size_t /*length*/) override {
return Http::Http1::CallbackResult::Success;
}

Http::Http1::CallbackResult onHeaderField(const char* /*data*/, size_t /*length*/) override {
return Http::Http1::CallbackResult::Success;
}

Http::Http1::CallbackResult onHeaderValue(const char* /*data*/, size_t /*length*/) override {
return Http::Http1::CallbackResult::Success;
}

Http::Http1::CallbackResult onHeadersComplete() override {
return Http::Http1::CallbackResult::Success;
}

void bufferBody(const char* /*data*/, size_t /*length*/) override {}

Http::Http1::CallbackResult onMessageComplete() override {
return Http::Http1::CallbackResult::Success;
}

void onChunkHeader(bool /*is_final_chunk*/) override {}
};

using ConfigSharedPtr = std::shared_ptr<Config>;

/**
Expand Down Expand Up @@ -87,6 +122,7 @@ class Filter : public Network::ListenerFilter, Logger::Loggable<Logger::Id::filt
absl::string_view protocol_;

std::unique_ptr<Http::Http1::Parser> parser_;
std::unique_ptr<NoOpParserCallbacks> no_op_callbacks_;
ssize_t nread_ = 0;
};

Expand Down

0 comments on commit 8c80588

Please sign in to comment.