summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwenlin <[email protected]>2022-01-11 19:26:10 +0800
committerliuxueli <[email protected]>2022-01-13 14:19:03 +0800
commitb1239d556e1f930417477a14fe0065197c3bd286 (patch)
tree2724b4e31304d512b104a8e10bf006ab1a9e0706
parent7d9131bec014ee1bf376f2bcf61bef8d5cd4a310 (diff)
TSG-9215: 修复tamper命中tcp后发送两次数据包问题,重新验证合入,之前合入的代码被覆盖了v5.4.28
-rw-r--r--src/tsg_action.cpp15
-rw-r--r--src/tsg_entry.cpp15
2 files changed, 11 insertions, 19 deletions
diff --git a/src/tsg_action.cpp b/src/tsg_action.cpp
index 9d5c42e..ea7e942 100644
--- a/src/tsg_action.cpp
+++ b/src/tsg_action.cpp
@@ -587,29 +587,28 @@ static unsigned char do_action_tamper(const struct streaminfo *a_stream, Maat_ru
memset(_context, 0, sizeof(struct tcpall_context));
set_struct_project(a_stream, g_tsg_para.tcpall_project_id, (void *)_context);
_context->method_type=TSG_METHOD_TYPE_TAMPER;
- _context->tamper_count = 1;
+ _context->tamper_count = -1;
}else{
if(_context->method_type != TSG_METHOD_TYPE_TAMPER)
{
_context->method_type=TSG_METHOD_TYPE_TAMPER;
- _context->tamper_count = 1;
+ _context->tamper_count = -1;
}
else
{
- //to do error log
- //_context->method_type
MESA_handle_runtime_log(g_tsg_para.logger,
RLOG_LV_DEBUG,
__FUNCTION__,
- "_context->method_type : %d",
+ "Tamper is been processed, _context->method_type : %d",
_context->method_type);
-
return STATE_GIVEME;
}
}
- if(0 == send_tamper_xxx(a_stream, &_context->tamper_count, user_data)){
- return STATE_DROPPKT;
+ if(a_stream->type != STREAM_TYPE_TCP){
+ if(0 == send_tamper_xxx(a_stream, &_context->tamper_count, user_data)){
+ return STATE_DROPPKT;
+ }
}
return STATE_GIVEME;
}
diff --git a/src/tsg_entry.cpp b/src/tsg_entry.cpp
index 7fd456b..08f3138 100644
--- a/src/tsg_entry.cpp
+++ b/src/tsg_entry.cpp
@@ -1842,18 +1842,11 @@ static unsigned char tsg_master_all_entry(const struct streaminfo *a_stream, uns
}
break;
case TSG_METHOD_TYPE_TAMPER:
- if(0 == send_tamper_xxx(a_stream, &context->tamper_count, a_packet)){
- state|=APP_STATE_GIVEME|APP_STATE_DROPPKT;
- }else{
- state=APP_STATE_GIVEME;
+ if(a_stream->opstate != OP_STATE_PENDING){
+ if(0 == send_tamper_xxx(a_stream, &context->tamper_count, a_packet)){
+ state|=APP_STATE_GIVEME|APP_STATE_DROPPKT;
+ }
}
- context->tamper_count += 1;
- MESA_handle_runtime_log(g_tsg_para.logger,
- RLOG_LV_DEBUG,
- __FUNCTION__,
- "Addr: %s, send_tamper_xxx num %ld",
- PRINTADDR(a_stream, g_tsg_para.level),
- context->tamper_count);
break;
case TSG_METHOD_TYPE_DEFAULT:
if(!is_do_default_policy(a_stream, context->after_n_packets) || stream_state==OP_STATE_CLOSE)