This is an automated email from the ASF dual-hosted git repository.
bneradt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new e33f0d32af HttpSM request tunneling naming updates (#11463)
e33f0d32af is described below
commit e33f0d32afc84904ee68226a1aeeb859f5182c97
Author: Brian Neradt <[email protected]>
AuthorDate: Tue Jun 25 08:58:39 2024 -0500
HttpSM request tunneling naming updates (#11463)
These are some HttpSM naming and comment changes I made to improve
readability while working on request body processing. No functionality
is changed with this PR.
---
include/iocore/eventsystem/VIO.h | 3 +++
include/iocore/net/NetVConnection.h | 3 ++-
include/proxy/http/Http1ClientSession.h | 4 +++-
include/proxy/http/HttpSM.h | 5 ++---
src/proxy/http/Http1ClientSession.cc | 3 ++-
src/proxy/http/HttpSM.cc | 19 ++++++++++---------
src/proxy/http/HttpTransact.cc | 2 +-
7 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/include/iocore/eventsystem/VIO.h b/include/iocore/eventsystem/VIO.h
index ae00f32137..8df0b87297 100644
--- a/include/iocore/eventsystem/VIO.h
+++ b/include/iocore/eventsystem/VIO.h
@@ -206,6 +206,9 @@ public:
Internal backpointer to the VConnection for use in the reenable
functions.
+ Despite the name, this may refer to either a client or server side
+ connection.
+
*/
VConnection *vc_server = nullptr;
diff --git a/include/iocore/net/NetVConnection.h
b/include/iocore/net/NetVConnection.h
index 16a9b89341..ff38f853aa 100644
--- a/include/iocore/net/NetVConnection.h
+++ b/include/iocore/net/NetVConnection.h
@@ -541,7 +541,8 @@ protected:
bool got_local_addr = false;
bool got_remote_addr = false;
- bool is_internal_request = false;
+ bool is_internal_request = false;
+ /// Indicate whether remapping will be done for this connection.
bool is_unmanaged_request = false;
/// Set if this connection is transparent.
bool is_transparent = false;
diff --git a/include/proxy/http/Http1ClientSession.h
b/include/proxy/http/Http1ClientSession.h
index ed8d79e9c6..dcf416c6a0 100644
--- a/include/proxy/http/Http1ClientSession.h
+++ b/include/proxy/http/Http1ClientSession.h
@@ -99,7 +99,9 @@ private:
HCS_CLOSED,
};
- int magic = HTTP_CS_MAGIC_DEAD;
+ int magic = HTTP_CS_MAGIC_DEAD;
+
+ /// A monotonically increasing count of all transactions ever handled by the
session.
int transact_count = 0;
bool half_close = false;
bool conn_decrease = false;
diff --git a/include/proxy/http/HttpSM.h b/include/proxy/http/HttpSM.h
index d191a16641..06036281ba 100644
--- a/include/proxy/http/HttpSM.h
+++ b/include/proxy/http/HttpSM.h
@@ -366,7 +366,6 @@ private:
int state_http_server_open(int event, void *data);
int state_raw_http_server_open(int event, void *data);
int state_send_server_request_header(int event, void *data);
- int state_acquire_server_read(int event, void *data);
int state_read_server_response_header(int event, void *data);
// API
@@ -402,7 +401,7 @@ private:
bool is_prewarm_enabled_or_sni_overridden(const TLSTunnelSupport &tts) const;
void open_prewarmed_connection();
void send_origin_throttled_response();
- void do_setup_post_tunnel(HttpVC_t to_vc_type);
+ void do_setup_client_request_body_tunnel(HttpVC_t to_vc_type);
void do_cache_prepare_write();
void do_cache_prepare_write_transform();
void do_cache_prepare_update();
@@ -507,7 +506,7 @@ public:
bool server_ssl_reused = false;
bool server_connection_is_ssl = false;
bool is_waiting_for_full_body = false;
- bool is_using_post_buffer = false;
+ bool is_buffering_request_body = false;
// hooks_set records whether there are any hooks relevant
// to this transaction. Used to avoid costly calls
// do_api_callout_internal()
diff --git a/src/proxy/http/Http1ClientSession.cc
b/src/proxy/http/Http1ClientSession.cc
index fc947d6239..a3f66c0c42 100644
--- a/src/proxy/http/Http1ClientSession.cc
+++ b/src/proxy/http/Http1ClientSession.cc
@@ -406,7 +406,8 @@ Http1ClientSession::state_keep_alive(int event, void *data)
return 0;
}
-// Called from the Http1Transaction::release
+// Called from the Http1Transaction::release or at the start of a session for
+// the very first transaction from Http1ClientSession::new_connection.
void
Http1ClientSession::release(ProxyTransaction *trans)
{
diff --git a/src/proxy/http/HttpSM.cc b/src/proxy/http/HttpSM.cc
index dca99d1f82..1b9f32b530 100644
--- a/src/proxy/http/HttpSM.cc
+++ b/src/proxy/http/HttpSM.cc
@@ -2079,7 +2079,7 @@ HttpSM::state_send_server_request_header(int event, void
*data)
} else {
// Go ahead and set up the post tunnel if we are not waiting for a
100 response
if (!t_state.hdr_info.client_request.m_100_continue_required) {
- do_setup_post_tunnel(HTTP_SERVER_VC);
+ do_setup_client_request_body_tunnel(HTTP_SERVER_VC);
}
}
}
@@ -2775,7 +2775,7 @@ HttpSM::tunnel_handler_post(int event, void *data)
// It's time to start reading the response
if (is_waiting_for_full_body) {
is_waiting_for_full_body = false;
- is_using_post_buffer = true;
+ is_buffering_request_body = true;
client_request_body_bytes = this->postbuf_buffer_avail();
call_transact_and_set_next_state(HttpTransact::HandleRequestBufferDone);
@@ -2932,7 +2932,7 @@ HttpSM::tunnel_handler_100_continue(int event, void *data)
t_state.hdr_info.server_response.create(HTTP_TYPE_RESPONSE);
handle_server_setup_error(VC_EVENT_EOS, server_entry->read_vio);
} else {
- do_setup_post_tunnel(HTTP_SERVER_VC);
+ do_setup_client_request_body_tunnel(HTTP_SERVER_VC);
}
} else {
terminate_sm = true;
@@ -3826,13 +3826,13 @@ HttpSM::tunnel_handler_for_partial_post(int event, void
* /* data ATS_UNUSED */)
tunnel.reset();
t_state.redirect_info.redirect_in_process = false;
- is_using_post_buffer = false;
+ is_buffering_request_body = false;
if (post_failed) {
post_failed = false;
handle_post_failure();
} else {
- do_setup_post_tunnel(HTTP_SERVER_VC);
+ do_setup_client_request_body_tunnel(HTTP_SERVER_VC);
}
return 0;
@@ -5981,7 +5981,8 @@ HttpSM::handle_http_server_open()
server_txn->has_request_body(t_state.hdr_info.request_content_length,
t_state.client_info.transfer_encoding ==
HttpTransact::CHUNKED_ENCODING) &&
do_post_transform_open()) {
- do_setup_post_tunnel(HTTP_TRANSFORM_VC); /* This doesn't seem quite
right. Should be sending the request header */
+ do_setup_client_request_body_tunnel(
+ HTTP_TRANSFORM_VC); /* This doesn't seem quite right. Should be
sending the request header */
} else {
setup_server_send_request_api();
}
@@ -6186,7 +6187,7 @@ close_connection:
}
void
-HttpSM::do_setup_post_tunnel(HttpVC_t to_vc_type)
+HttpSM::do_setup_client_request_body_tunnel(HttpVC_t to_vc_type)
{
bool chunked = t_state.client_info.transfer_encoding ==
HttpTransact::CHUNKED_ENCODING ||
t_state.hdr_info.request_content_length == HTTP_UNDEFINED_CL;
@@ -6196,7 +6197,7 @@ HttpSM::do_setup_post_tunnel(HttpVC_t to_vc_type)
// YTS Team, yamsat Plugin
// if redirect_in_process and redirection is enabled add static producer
- if (is_using_post_buffer ||
+ if (is_buffering_request_body ||
(t_state.redirect_info.redirect_in_process && enable_redirection &&
this->_postbuf.postdata_copy_buffer_start != nullptr)) {
post_redirect = true;
// copy the post data into a new producer buffer for static producer
@@ -6238,7 +6239,7 @@ HttpSM::do_setup_post_tunnel(HttpVC_t to_vc_type)
chunked ?
_ua.get_txn()->get_remote_reader()->read_avail() : post_bytes);
// If is_using_post_buffer has been used, then client_request_body_bytes
- // will have already been set in wait_for_full_body and there will be
+ // will have already been sent in wait_for_full_body and there will be
// zero bytes in this user agent buffer. We don't want to clobber
// client_request_body_bytes with a zero value here in those cases.
if (client_request_body_bytes == 0) {
diff --git a/src/proxy/http/HttpTransact.cc b/src/proxy/http/HttpTransact.cc
index f2a6308c21..4a3e93b1f2 100644
--- a/src/proxy/http/HttpTransact.cc
+++ b/src/proxy/http/HttpTransact.cc
@@ -1504,7 +1504,7 @@ HttpTransact::HandleRequest(State *s)
{
TxnDbg(dbg_ctl_http_trans, "START HttpTransact::HandleRequest");
- if (!s->state_machine->is_waiting_for_full_body &&
!s->state_machine->is_using_post_buffer) {
+ if (!s->state_machine->is_waiting_for_full_body &&
!s->state_machine->is_buffering_request_body) {
ink_assert(!s->hdr_info.server_request.valid());
Metrics::Counter::increment(http_rsb.incoming_requests);