1、HTTP_ENTRY增加判断,如果不是一个TCP链接第一个会话或者不是HOST字段,则DROPME;

2、HTTP_ENTRY中project_req_add_struct失败释放结构体,
3、哈希表add失败,释放结构体
This commit is contained in:
liuyang
2019-01-23 16:57:11 +08:00
parent f85e479bca
commit b1c5147535
3 changed files with 23 additions and 2 deletions

View File

@@ -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);

View File

@@ -58,6 +58,7 @@ enum kni_FS_COLUME
FS_REPLAY_WINDOW,
FS_HTABLE_ADD,
FS_HTABLE_DEL,
FS_PRO_ERROR,
FS2_COLUMN_NUM
};

View File

@@ -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;
}