diff options
Diffstat (limited to 'decoders/http/http_decoder_tunnel.cpp')
| -rw-r--r-- | decoders/http/http_decoder_tunnel.cpp | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/decoders/http/http_decoder_tunnel.cpp b/decoders/http/http_decoder_tunnel.cpp index 42f100a..cf5a573 100644 --- a/decoders/http/http_decoder_tunnel.cpp +++ b/decoders/http/http_decoder_tunnel.cpp @@ -3,7 +3,7 @@ #include <string.h> #include <strings.h> #include <unistd.h> -#include "http_decoder_inc.h" +#include "http_decoder_private.h" #include "llhttp.h" struct http_tunnel_message @@ -12,28 +12,32 @@ struct http_tunnel_message hstring tunnel_payload; }; - int httpd_tunnel_identify(struct http_decoder_env *httpd_env, int curdir, struct http_decoder_half_data *hfdata) { - if(0 == httpd_env->hd_cfg.proxy_enable){ + if (0 == httpd_env->hd_cfg.proxy_enable) + { return 0; } - if(FLOW_DIRECTION_C2S == curdir){ + if (FLOW_DIRECTION_C2S == curdir) + { struct http_request_line reqline = {}; http_decoder_half_data_get_request_line(hfdata, &reqline); - if(0 == strncasecmp_safe("CONNECT", (char *)reqline.method.iov_base, - 7, reqline.method.iov_len)){ + if (0 == strncasecmp_safe("CONNECT", (char *)reqline.method.iov_base, + 7, reqline.method.iov_len)) + { return 1; } - }else{ + } + else + { struct http_response_line resline = {}; http_decoder_half_data_get_response_line(hfdata, &resline); - if(resline.status_code == HTTP_STATUS_OK - && 0 == strncasecmp_safe("Connection established", (char *)resline.status.iov_base, - strlen("Connection established"), resline.status.iov_len)){ + if (resline.status_code == HTTP_STATUS_OK && 0 == strncasecmp_safe("Connection established", (char *)resline.status.iov_base, + strlen("Connection established"), resline.status.iov_len)) + { return 1; - } + } } return 0; @@ -41,15 +45,17 @@ int httpd_tunnel_identify(struct http_decoder_env *httpd_env, int curdir, struct int httpd_is_tunnel_session(const struct http_decoder_env *httpd_env, const struct http_decoder_exdata *ex_data) { - if(0 == httpd_env->hd_cfg.proxy_enable){ + if (0 == httpd_env->hd_cfg.proxy_enable) + { return 0; - } + } return (ex_data && ex_data->tunnel_state != HTTP_TUN_NON); } int httpd_in_tunnel_transmitting(const struct http_decoder_env *httpd_env, struct http_decoder_exdata *ex_data) { - if(0 == httpd_env->hd_cfg.proxy_enable){ + if (0 == httpd_env->hd_cfg.proxy_enable) + { return 0; } return (ex_data && ex_data->tunnel_state >= HTTP_TUN_INNER_STARTING); @@ -57,10 +63,12 @@ int httpd_in_tunnel_transmitting(const struct http_decoder_env *httpd_env, struc enum http_tunnel_message_type httpd_tunnel_state_to_msg(const struct http_decoder_exdata *ex_data) { - if(ex_data->tunnel_state == HTTP_TUN_INNER_STARTING){ + if (ex_data->tunnel_state == HTTP_TUN_INNER_STARTING) + { return HTTP_TUNNEL_OPENING; } - if(ex_data->tunnel_state == HTTP_TUN_INNER_TRANS){ + if (ex_data->tunnel_state == HTTP_TUN_INNER_TRANS) + { return HTTP_TUNNEL_ACTIVE; } return HTTP_TUNNEL_MSG_MAX; @@ -68,7 +76,8 @@ enum http_tunnel_message_type httpd_tunnel_state_to_msg(const struct http_decode void httpd_tunnel_state_update(struct http_decoder_exdata *ex_data) { - if(ex_data->tunnel_state == HTTP_TUN_INNER_STARTING){ + if (ex_data->tunnel_state == HTTP_TUN_INNER_STARTING) + { ex_data->tunnel_state = HTTP_TUN_INNER_TRANS; } } @@ -86,21 +95,21 @@ void http_decoder_push_tunnel_data(struct session *sess, const struct http_decod extern "C" { #endif -void http_tunnel_message_get_payload(const struct http_tunnel_message *tmsg, - hstring *tunnel_payload) -{ - if (unlikely(NULL == tmsg || tunnel_payload == NULL)) + void http_tunnel_message_get_payload(const struct http_tunnel_message *tmsg, + hstring *tunnel_payload) { - return; + if (unlikely(NULL == tmsg || tunnel_payload == NULL)) + { + return; + } + tunnel_payload->iov_base = tmsg->tunnel_payload.iov_base; + tunnel_payload->iov_len = tmsg->tunnel_payload.iov_len; } - tunnel_payload->iov_base = tmsg->tunnel_payload.iov_base; - tunnel_payload->iov_len = tmsg->tunnel_payload.iov_len; -} -enum http_tunnel_message_type http_tunnel_message_type_get(const struct http_tunnel_message *tmsg) -{ - return tmsg->type; -} + enum http_tunnel_message_type http_tunnel_message_type_get(const struct http_tunnel_message *tmsg) + { + return tmsg->type; + } #ifdef __cplusplus } |
