Refactor TCP reassembly, the session knows where the TCP segment comes from: raw packet or tcp segment queue
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user