1、HTTP_ENTRY增加判断,如果不是一个TCP链接第一个会话或者不是HOST字段,则DROPME;
2、HTTP_ENTRY中project_req_add_struct失败释放结构体, 3、哈希表add失败,释放结构体
This commit is contained in:
@@ -602,6 +602,7 @@ int kni_filestate2_init()
|
||||
g_kni_fs2_info.field_id[FS_REPLAY_WINDOW]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"replay_win");
|
||||
g_kni_fs2_info.field_id[FS_HTABLE_ADD]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"add_htab");
|
||||
g_kni_fs2_info.field_id[FS_HTABLE_DEL]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"del_htab");
|
||||
g_kni_fs2_info.field_id[FS_PRO_ERROR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"http_proj_err");
|
||||
|
||||
|
||||
g_kni_fs2_info.metric_tun_read=FS_register_histogram(g_kni_fs2_info.handler, FS_CALC_CURRENT, "tun_read(us)" ,1,1000000,2);
|
||||
|
||||
@@ -58,6 +58,7 @@ enum kni_FS_COLUME
|
||||
FS_REPLAY_WINDOW,
|
||||
FS_HTABLE_ADD,
|
||||
FS_HTABLE_DEL,
|
||||
FS_PRO_ERROR,
|
||||
FS2_COLUMN_NUM
|
||||
};
|
||||
|
||||
|
||||
23
kni_entry.c
23
kni_entry.c
@@ -6,12 +6,13 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <net/ethernet.h>
|
||||
#include "http.h"
|
||||
#include "kni_replace.h"
|
||||
#include "kni_entry.h"
|
||||
#include "kni_utils.h"
|
||||
#include "kni_sendlog.h"
|
||||
|
||||
int g_kni_version_VERSION_20190110;
|
||||
int g_kni_version_VERSION_20190123;
|
||||
|
||||
struct kni_var_comm g_kni_comminfo;
|
||||
struct kni_var_struct g_kni_structinfo;
|
||||
@@ -250,11 +251,15 @@ int kni_htable_add(const struct streaminfo* pstream,const void* a_packet,struct
|
||||
if(ret == MESA_HTABLE_RET_DUP_ITEM)
|
||||
{
|
||||
kni_log_debug(RLOG_LV_FATAL,(char*)"kni_htable_add dup",a_packet,"-5");
|
||||
free(datainfo);
|
||||
datainfo=NULL;
|
||||
return -1;
|
||||
}
|
||||
else if(ret < 0)
|
||||
{
|
||||
kni_log_debug(RLOG_LV_FATAL,(char*)"kni_htable_add",a_packet,"IPv4 MESA_htable_add() error,ret:%d",ret);
|
||||
free(datainfo);
|
||||
datainfo=NULL;
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
@@ -269,6 +274,8 @@ int kni_htable_add(const struct streaminfo* pstream,const void* a_packet,struct
|
||||
if(ret < 0)
|
||||
{
|
||||
kni_log_debug(RLOG_LV_FATAL,(char*)"kni_htable_add",a_packet,"IPv6 MESA_htable_add() error,ret:%d",ret);
|
||||
free(datainfo);
|
||||
datainfo=NULL;
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
@@ -1129,13 +1136,25 @@ extern "C" char kni_tcpall_entry(const struct streaminfo* pstream,void** pme,int
|
||||
extern "C" char kni_http_entry(stSessionInfo* session_info, void **pme, int thread_seq,struct streaminfo *a_stream,const void *a_packet)
|
||||
{
|
||||
char ret=PROT_STATE_DROPME;
|
||||
|
||||
http_infor* http_info = (http_infor*)(session_info->app_info);
|
||||
|
||||
if((http_info->http_session_seq != 1) || (session_info->prot_flag != HTTP_HOST))
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
int host_len=MIN(session_info->buflen, KNI_DEFAULT_MTU);
|
||||
struct kni_http_project* host_info=ALLOC(struct kni_http_project, 1);
|
||||
host_info->host_len=host_len;
|
||||
memcpy(host_info->host,session_info->buf,host_len);
|
||||
|
||||
project_req_add_struct(a_stream,g_kni_comminfo.project_id,host_info);
|
||||
if(project_req_add_struct(a_stream,g_kni_comminfo.project_id,host_info)<0)
|
||||
{
|
||||
kni_filestate2_set(thread_seq,FS_PRO_ERROR,0,1);
|
||||
free(host_info);
|
||||
host_info=NULL;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user