Skip to content

Commit

Permalink
tcp_proxy: switching a data type
Browse files Browse the repository at this point in the history
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
  • Loading branch information
alyssawilk committed Jun 4, 2024
1 parent f7b9872 commit bb24b6f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
21 changes: 11 additions & 10 deletions source/common/tcp_proxy/upstream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -420,40 +420,41 @@ CombinedUpstream::CombinedUpstream(HttpConnPool& http_conn_pool,

void CombinedUpstream::setRouterUpstreamRequest(
Router::UpstreamRequestPtr router_upstream_request) {
LinkedList::moveIntoList(std::move(router_upstream_request), upstream_requests_);
ASSERT(!upstream_request_);
upstream_request_ = std::move(router_upstream_request);
}

void CombinedUpstream::newStream(GenericConnectionPoolCallbacks&) {
upstream_requests_.front()->acceptHeadersFromRouter(false);
upstream_request_->acceptHeadersFromRouter(false);
}

void CombinedUpstream::encodeData(Buffer::Instance& data, bool end_stream) {
if (upstream_requests_.empty()) {
if (!upstream_request_) {
return;
}
upstream_requests_.front()->acceptDataFromRouter(data, end_stream);
upstream_request_->acceptDataFromRouter(data, end_stream);
if (end_stream) {
doneWriting();
}
}

bool CombinedUpstream::readDisable(bool disable) {
if (upstream_requests_.empty()) {
if (!upstream_request_) {
return false;
}
upstream_requests_.front()->readDisableOrDefer(disable);
upstream_request_->readDisableOrDefer(disable);
return true;
}

Tcp::ConnectionPool::ConnectionData*
CombinedUpstream::onDownstreamEvent(Network::ConnectionEvent event) {
if (upstream_requests_.empty()) {
if (!upstream_request_) {
return nullptr;
}

if (event == Network::ConnectionEvent::LocalClose ||
event == Network::ConnectionEvent::RemoteClose) {
upstream_requests_.front()->resetStream();
upstream_request_->resetStream();
}
return nullptr;
}
Expand All @@ -479,8 +480,8 @@ bool CombinedUpstream::isValidResponse(const Http::ResponseHeaderMap& headers) {
void CombinedUpstream::onResetEncoder(Network::ConnectionEvent event, bool inform_downstream) {
if (event == Network::ConnectionEvent::LocalClose ||
event == Network::ConnectionEvent::RemoteClose) {
if (!upstream_requests_.empty()) {
upstream_requests_.front()->resetStream();
if (upstream_request_) {
upstream_request_->resetStream();
}
}

Expand Down
4 changes: 2 additions & 2 deletions source/common/tcp_proxy/upstream.h
Original file line number Diff line number Diff line change
Expand Up @@ -381,9 +381,9 @@ class CombinedUpstream : public GenericUpstream, public Envoy::Router::RouterFil
std::unique_ptr<HttpConnPool::Callbacks> conn_pool_callbacks_;
bool read_half_closed_{};
bool write_half_closed_{};
// upstream_requests_ has to be destroyed first as they may use CombinedUpstream parent
// upstream_request_ has to be destroyed first as they may use CombinedUpstream parent
// during destruction.
std::list<UpstreamRequestPtr> upstream_requests_;
UpstreamRequestPtr upstream_request_;
};

} // namespace TcpProxy
Expand Down

0 comments on commit bb24b6f

Please sign in to comment.