From 05e8c9db6912dc95de9691e9b90e549a4c3beffe Mon Sep 17 00:00:00 2001 From: lijia Date: Tue, 18 Jun 2024 16:45:35 +0800 Subject: feat: TSG-20446, support http tunnel with CONNECT method. --- src/http_decoder_tunnel.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/http_decoder_tunnel.h (limited to 'src/http_decoder_tunnel.h') diff --git a/src/http_decoder_tunnel.h b/src/http_decoder_tunnel.h new file mode 100644 index 0000000..b1e74df --- /dev/null +++ b/src/http_decoder_tunnel.h @@ -0,0 +1,21 @@ +#pragma once + +#include "http_decoder_half.h" +#include "llhttp.h" + +enum http_tunnel_state{ + HTTP_TUN_NON = 0, // init, or not tunnel session + HTTP_TUN_C2S_HDR_START, //CONNECT ... + HTTP_TUN_C2S_HDR_END, //CONNECT request all heades end with \r\n + HTTP_TUN_S2C_START, // HTTP 200 connet established + // HTTP_TUN_S2C_END, // http response all heades end with \r\n + HTTP_TUN_INNER_STARTING, // http inner tunnel protocol starting + HTTP_TUN_INNER_TRANS, // http inner tunnel protocol transmitting +}; + +int httpd_tunnel_identify(int curdir, struct http_decoder_half_data *hfdata); +int httpd_is_tunnel_session(const struct http_decoder_exdata *ex_data); +int httpd_in_tunnel_transmitting(struct http_decoder_exdata *ex_data); +void httpd_tunnel_state_update(struct http_decoder_exdata *ex_data); +void http_decoder_push_tunnel_data(struct session *sess, const struct http_decoder_exdata *exdata, enum http_tunnel_message_type type); +enum http_tunnel_message_type httpd_tunnel_state_to_msg(const struct http_decoder_exdata *ex_data); \ No newline at end of file -- cgit v1.2.3