summaryrefslogtreecommitdiff
path: root/src/tsg_proxy.cpp
diff options
context:
space:
mode:
author刘学利 <[email protected]>2023-05-27 09:37:46 +0000
committer刘学利 <[email protected]>2023-05-27 09:37:46 +0000
commit7abc5766214917aec7073093271442c4a6a69eca (patch)
treede42b79b27da6951b3c5386361e2dc410214a163 /src/tsg_proxy.cpp
parentbc7909e57bba412ff1f7f5d323f5c44c20486d3a (diff)
TSG-14946: 安全策略支持allow(deny)和monitor动作同时命中v6.0.13
Diffstat (limited to 'src/tsg_proxy.cpp')
-rw-r--r--src/tsg_proxy.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/tsg_proxy.cpp b/src/tsg_proxy.cpp
index 7d7372f..5f069e3 100644
--- a/src/tsg_proxy.cpp
+++ b/src/tsg_proxy.cpp
@@ -310,24 +310,29 @@ void tsg_proxy_first_data_process(const struct streaminfo *stream, struct tsg_pr
void tsg_proxy_tcp_options_parse(const struct streaminfo *stream, const void *a_packet)
{
- struct pkt_info pktinfo;
- struct tsg_proxy_tcp_attribute *tcp_attr = tsg_proxy_tcp_attribute_get(stream);
+ if(a_packet==NULL)
+ {
+ return ;
+ }
+
+ struct pkt_info pktinfo;
+ struct tsg_proxy_tcp_attribute *tcp_attr = tsg_proxy_tcp_attribute_get(stream);
- if (tcp_attr == NULL) {
- return;
- }
+ if (tcp_attr == NULL) {
+ return;
+ }
if (tcp_attr->first_data_pkt_processed) {
return;
}
- memset(&pktinfo, 0, sizeof(struct pkt_info));
- tsg_proxy_ip_header_parse(a_packet, (enum addr_type_t)stream->addr.addrtype, stream, &pktinfo);
- if (pktinfo.parse_failed) {
- MESA_handle_runtime_log(g_tsg_para.logger, RLOG_LV_FATAL, "PROXY", "invalid ip header, bypass pkt");
- return;
- }
+ memset(&pktinfo, 0, sizeof(struct pkt_info));
+ tsg_proxy_ip_header_parse(a_packet, (enum addr_type_t)stream->addr.addrtype, stream, &pktinfo);
+ if (pktinfo.parse_failed) {
+ MESA_handle_runtime_log(g_tsg_para.logger, RLOG_LV_FATAL, "PROXY", "invalid ip header, bypass pkt");
+ return;
+ }
if(stream->ptcpdetail->datalen > 0) {
tsg_proxy_first_data_process(stream, tcp_attr, &pktinfo);
@@ -337,7 +342,7 @@ void tsg_proxy_tcp_options_parse(const struct streaminfo *stream, const void *a_
tsg_proxy_tcp_parse(tcp_attr, &pktinfo, stream);
- return;
+ return;
}
static void tsg_proxy_cmsg_subscriber_fill(struct session_runtime_attribute *session_attr, struct proxy_cmsg *cmsg)