Refactor TCP reassembly, the session knows where the TCP segment comes from: raw packet or tcp segment queue

This commit is contained in:
luwenpeng
2024-04-02 16:21:39 +08:00
parent a509f0ce3b
commit e8e60cee6d
25 changed files with 678 additions and 1419 deletions

View File

@@ -87,9 +87,6 @@ void plugin_manager_dispatch(void *plugin_mgr, struct session *sess, const struc
return;
}
uint32_t len = 0;
const char *payload = NULL;
printf("=> plugin dispatch session: %p\n", sess);
session_dump(sess);
@@ -97,13 +94,14 @@ void plugin_manager_dispatch(void *plugin_mgr, struct session *sess, const struc
{
do
{
payload = tcp_data_peek(sess, &len);
if (payload && len > 0)
struct tcp_segment *seg = session_get_tcp_segment(sess);
if (seg == NULL)
{
hex_dump(payload, len);
break;
}
tcp_data_dequeue(sess, len);
} while (payload && len > 0);
hex_dump((const char *)seg->data, seg->len);
session_free_tcp_segment(sess, seg);
} while (1);
}
session_clean_packet(sess, SESSION_PACKET_CURRENT);
session_set_cur_dir(sess, SESSION_DIR_NONE);