diff options
| author | lijia <[email protected]> | 2024-06-18 16:45:35 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2024-06-20 18:51:47 +0800 |
| commit | 05e8c9db6912dc95de9691e9b90e549a4c3beffe (patch) | |
| tree | ed5d4b3392bdd577986d26ac8d5c6da21f9c2b2a /src/http_decoder_inc.h | |
| parent | 7d6170a23027aff0ebf2e7832dc11e4bbdce57ea (diff) | |
feat: TSG-20446, support http tunnel with CONNECT method.
Diffstat (limited to 'src/http_decoder_inc.h')
| -rw-r--r-- | src/http_decoder_inc.h | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/http_decoder_inc.h b/src/http_decoder_inc.h index 760eaba..0e0f0c5 100644 --- a/src/http_decoder_inc.h +++ b/src/http_decoder_inc.h @@ -31,6 +31,7 @@ extern "C" #include "http_decoder_result_queue.h" #include "http_decoder_utils.h" #include "http_decoder_stat.h" +#include "http_decoder_tunnel.h" #include "fieldstat/fieldstat_easy.h" #include "toml/toml.h" @@ -82,6 +83,7 @@ struct http_message enum http_message_type type; size_t queue_index; struct http_decoder_result_queue *ref_queue; + hstring tunnel_payload; }; struct http_decoder @@ -90,19 +92,45 @@ struct http_decoder struct http_decoder_half *s2c_half; }; +enum httpd_topic_index{ + HTTPD_TOPIC_TCP_STREAM_INDEX = 0, + HTTPD_TOPIC_HTTP_MSG_INDEX, + HTTPD_TOPIC_HTTP_TUNNEL_INDEX, + HTTPD_TOPIC_INDEX_MAX, +}; + struct http_decoder_exdata { + int sub_topic_id; //tcp_stream + int pub_topic_id; //http message or http tunnel msg struct http_decoder_result_queue *queue; struct http_decoder *decoder; nmx_pool_t *mempool; + enum http_tunnel_state tunnel_state; + int in_tunnel_is_http; +}; + +// struct http_decoder_context{ +// int array_size; +// struct http_decoder_exdata **exdata_array; //raw tcp stream for http msg; http tunnel for inner http transaction. +// }; + +struct http_topic_exdata_compose{ + enum httpd_topic_index index; + const char *topic_name; + on_session_msg_cb_func *on_msg_cb; + session_msg_free_cb_func *msg_free_cb; + const char *exdata_name; + session_exdata_free *exdata_free_cb; + int sub_topic_id; //as consumer + int exdata_id; }; struct http_decoder_env { - int plugin_id; - int httpd_msg_topic_id; - int ex_data_idx; struct stellar *st; + int plugin_id; + struct http_topic_exdata_compose topic_exdata_compose[HTTPD_TOPIC_INDEX_MAX]; struct http_decoder_config hd_cfg; struct http_decoder_stat hd_stat; }; @@ -111,7 +139,7 @@ struct http_message; struct http_message *http_message_new(enum http_message_type type, struct http_decoder_result_queue *queue, int queue_index, unsigned char flow_type); - +int http_topic_exdata_compose_get_index(const struct http_decoder_env *httpd_env, int by_topic_id); #ifdef __cplusplus } #endif |
