|
@@ -303,6 +303,8 @@ int update_flow(flow *f) {
|
|
|
//TODO: later figure this out, for now delete
|
|
|
packet *tmp = f->packet_chain;
|
|
|
f->packet_chain = f->packet_chain->next;
|
|
|
+ printf("Freed data %p\n", tmp->data);
|
|
|
+ printf("Freed packet %p\n", tmp);
|
|
|
free(tmp->data);
|
|
|
free(tmp);
|
|
|
|
|
@@ -328,6 +330,8 @@ int update_flow(flow *f) {
|
|
|
packet *tmp = f->packet_chain;
|
|
|
while(tmp != current){
|
|
|
f->packet_chain = tmp->next;
|
|
|
+ printf("Freed data %p\n", tmp->data);
|
|
|
+ printf("Freed packet %p\n", tmp);
|
|
|
free(tmp->data);
|
|
|
free(tmp);
|
|
|
tmp = f->packet_chain;
|
|
@@ -337,6 +341,8 @@ int update_flow(flow *f) {
|
|
|
packet *tmp = f->packet_chain;
|
|
|
while(tmp != current){
|
|
|
f->packet_chain = tmp->next;
|
|
|
+ printf("Freed data %p\n", tmp->data);
|
|
|
+ printf("Freed packet %p\n", tmp);
|
|
|
free(tmp->data);
|
|
|
free(tmp);
|
|
|
tmp = f->packet_chain;
|
|
@@ -367,6 +373,7 @@ err:
|
|
|
*/
|
|
|
int remove_flow(flow *f) {
|
|
|
|
|
|
+ EVP_MD_CTX_cleanup(f->finish_md_ctx);
|
|
|
EVP_MD_CTX_destroy(f->finish_md_ctx);
|
|
|
//Clean up cipher ctxs
|
|
|
if(f->clnt_read_ctx != NULL){
|
|
@@ -397,6 +404,30 @@ int remove_flow(flow *f) {
|
|
|
free(f->current_session);
|
|
|
}
|
|
|
|
|
|
+ if(f->packet_chain != NULL){
|
|
|
+ packet *tmp = f->packet_chain;
|
|
|
+ while(tmp != NULL){
|
|
|
+ f->packet_chain = tmp->next;
|
|
|
+ printf("Freed data %p\n", tmp->data);
|
|
|
+ printf("Freed packet %p\n", tmp);
|
|
|
+ free(tmp->data);
|
|
|
+ free(tmp);
|
|
|
+ tmp = f->packet_chain;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(f->upstream_queue != NULL){
|
|
|
+ queue_block *tmp = f->upstream_queue;
|
|
|
+ while(tmp != NULL){
|
|
|
+ f->upstream_queue = tmp->next;
|
|
|
+ printf("Freed data %p\n", tmp->data);
|
|
|
+ printf("Freed packet %p\n", tmp);
|
|
|
+ free(tmp->data);
|
|
|
+ free(tmp);
|
|
|
+ tmp = f->upstream_queue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
sem_wait(&flow_table_lock);
|
|
|
flow_entry *entry = table->first_entry;
|
|
|
if(entry->f == f){
|
|
@@ -804,10 +835,12 @@ int add_packet(flow *f, struct packet_info *info){
|
|
|
}
|
|
|
|
|
|
packet *new_packet = calloc(1, sizeof(packet));
|
|
|
+ printf("Allocated new packet %p\n", new_packet);
|
|
|
new_packet->seq_num = ntohl(info->tcp_hdr->sequence_num);
|
|
|
new_packet->len = info->app_data_len;
|
|
|
|
|
|
uint8_t *packet_data = calloc(1, new_packet->len);
|
|
|
+ printf("Allocated new packet data %p\n", packet_data);
|
|
|
memcpy(packet_data, info->app_data, new_packet->len);
|
|
|
|
|
|
new_packet->data = packet_data;
|
|
@@ -835,6 +868,11 @@ int add_packet(flow *f, struct packet_info *info){
|
|
|
previous->next = new_packet;
|
|
|
}
|
|
|
|
|
|
+ } else {
|
|
|
+ free(new_packet);
|
|
|
+ if(packet_data != NULL){
|
|
|
+ free(packet_data);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return 0;
|