diff --git a/performance_results/average/output.gif b/performance_results/average/output.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/average/receiver_1_with_FEC.csv b/performance_results/average/receiver_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/average/sender_1_with_FEC.csv b/performance_results/average/sender_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/ideal/output.gif b/performance_results/ideal/output.gif
new file mode 100644
index 0000000000000000000000000000000000000000..36bf9f94f83094a6c326563779624908605cf599
Binary files /dev/null and b/performance_results/ideal/output.gif differ
diff --git a/performance_results/ideal/output.txt b/performance_results/ideal/output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c57eff55ebc0c54973903af5f72bac72762cf4f4
--- /dev/null
+++ b/performance_results/ideal/output.txt
@@ -0,0 +1 @@
+Hello World!
\ No newline at end of file
diff --git a/performance_results/ideal/receiver_1_with_FEC.csv b/performance_results/ideal/receiver_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3ff91771a54b0175db3b1d05c60f39ceafb53786
--- /dev/null
+++ b/performance_results/ideal/receiver_1_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:3
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:2
+ack_received:0
+nack_received:0
+packet_ignored:0
+throughput:47.904190
+packet_duplicated:1
+packet_recovered:0
diff --git a/performance_results/ideal/receiver_1_without_FEC.csv b/performance_results/ideal/receiver_1_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3ff91771a54b0175db3b1d05c60f39ceafb53786
--- /dev/null
+++ b/performance_results/ideal/receiver_1_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:3
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:2
+ack_received:0
+nack_received:0
+packet_ignored:0
+throughput:47.904190
+packet_duplicated:1
+packet_recovered:0
diff --git a/performance_results/ideal/receiver_2_with_FEC.csv b/performance_results/ideal/receiver_2_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e08d64fa78c577dffdddd023b98fd321dfbb4cc3
--- /dev/null
+++ b/performance_results/ideal/receiver_2_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:3
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:2
+ack_received:0
+nack_received:0
+packet_ignored:0
+throughput:47.928108
+packet_duplicated:1
+packet_recovered:0
diff --git a/performance_results/ideal/sender_1_with_FEC.csv b/performance_results/ideal/sender_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5072be82b51ce84b931c2426431e0c2cf5cd9a05
--- /dev/null
+++ b/performance_results/ideal/sender_1_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:4
+data_received:0
+data_truncated_received:0
+fec_sent:1
+fec_received:0
+ack_sent:0
+ack_received:2
+nack_received:0
+packet_ignored:0
+throughput:23.964054
+min_rtt:2001
+max_rtt:2004
+packet_retransmitted:2
diff --git a/performance_results/ideal/sender_1_without_FEC.csv b/performance_results/ideal/sender_1_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8affded02215acf29664e23c151b36647bab665a
--- /dev/null
+++ b/performance_results/ideal/sender_1_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:4
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:2
+nack_received:0
+packet_ignored:0
+throughput:23.958073
+min_rtt:2001
+max_rtt:2006
+packet_retransmitted:2
diff --git a/performance_results/ideal/sender_2_with_FEC.csv b/performance_results/ideal/sender_2_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c545964e0e61a24090565fdce86f045dfb695447
--- /dev/null
+++ b/performance_results/ideal/sender_2_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:4
+data_received:0
+data_truncated_received:0
+fec_sent:1
+fec_received:0
+ack_sent:0
+ack_received:2
+nack_received:0
+packet_ignored:0
+throughput:23.970037
+min_rtt:2001
+max_rtt:2004
+packet_retransmitted:2
diff --git a/performance_results/worst/output.gif b/performance_results/worst/output.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/worst/receiver_1_with_FEC.csv b/performance_results/worst/receiver_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/worst/sender_1_with_FEC.csv b/performance_results/worst/sender_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/receiver_utils.c b/src/receiver_utils.c
index 199338601c06604edeb6141bef212100687ffef5..d572b3c7be4d4f5027e4da9912e7a25340289470 100644
--- a/src/receiver_utils.c
+++ b/src/receiver_utils.c
@@ -128,7 +128,7 @@ uint16_t can_consume(receiver_state_t * state, const pkt_t * latest_packet_recei
     // We have received the last 4 paquets harmless or we just received the last packet
     int to_consume = 0;
     ASSERT(state->next_to_consume >= 0 && state->next_to_consume < TWO_EXP_EIGHT);
-    if (pkt_get_length(latest_packet_received) == 0)
+    if (pkt_get_length(latest_packet_received) == 0 && state->last_received_in_order == pkt_get_seqnum(latest_packet_received))
     {   // Last packet we read everything from the buffer
         for (uint16_t i = state->next_to_consume; state->recvd_data_buf[i] != NULL; i = (i + 1) % TWO_EXP_EIGHT )
             to_consume++;
diff --git a/tests/advanced_test.sh b/tests/advanced_test.sh
index c140a37b71b721c8a8541eaf14a0df4b51708562..b657f66577e28d7007d1717d3d29c405147efe1f 100755
--- a/tests/advanced_test.sh
+++ b/tests/advanced_test.sh
@@ -27,8 +27,8 @@ MODES=(
   'without_FEC'
 )
 
-ERROR_RATE=1
-CUT_RATE=1
+ERROR_RATE=5
+CUT_RATE=5
 DELAY=100
 JITTER=100
 LOSS_RATE=1 
diff --git a/tests/run_perfomance.sh b/tests/run_perfomance.sh
index e05fbbce6c9b40a4783b8236af7cf6441447d22a..b9501e503ee93a8a2a6335a0617eec1a555b7887 100755
--- a/tests/run_perfomance.sh
+++ b/tests/run_perfomance.sh
@@ -20,8 +20,8 @@ LOSS_RATE=0
 if [ ! -d "performance_results/ideal" ]; then
   mkdir "performance_results/ideal"
 fi
-export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/ideal/"
-
+export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/ideal/" &
+wait $!
 
 ### 2. Average Case Transfer
 
@@ -35,18 +35,20 @@ LOSS_RATE=1
 if [ ! -d "performance_results/average" ]; then
   mkdir "performance_results/average"
 fi
-export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/average/"
+export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/average/" &
+wait $!
 
-### 2. Average Case Transfer
+### 3. Worst Case Transfer
 
 # Chosen parameters for Ideal scenario
-ERROR_RATE=10
+ERROR_RATE=15
 CUT_RATE=1
 DELAY=1500
 JITTER=500
-LOSS_RATE=1
+LOSS_RATE=13
 
 if [ ! -d "performance_results/worst" ]; then
   mkdir "performance_results/worst"
 fi
-export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/worst/"
\ No newline at end of file
+export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/worst/" &
+wait $!
\ No newline at end of file
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log
index 1f6ec7cb7b2d60382864f5669fd0c9ed6489c5d8..c2ebc87ef50e91c13d005389804f47688c309a79 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log
@@ -1,14 +1,18 @@
-@@ Using random seed: 1650987716
+@@ Using random seed: 1650988936
 @@ Using parameters:
-.. port: 65169
-.. forward_port: 65135
+.. port: 65074
+.. forward_port: 65008
 .. delay: 100
 .. jitter: 100
-.. err_rate: 1
-.. cut_rate: 1
+.. err_rate: 5
+.. cut_rate: 5
 .. loss_rate: 1
-.. seed: 1650987716
+.. seed: 1650988936
 .. link_direction: Forward
-@@ Remote host is ::1 [59206]
-[SEQ   0] Delayed packet by 143 ms
+@@ Remote host is ::1 [43169]
+[SEQ   0] Delayed packet by 144 ms
 [SEQ   0] Sent packet (Forward).
+[SEQ   1] Sent packet (Reverse).
+[SEQ   1] Delayed packet by 87 ms
+[SEQ   1] Sent packet (Forward).
+[SEQ   2] Sent packet (Reverse).
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_received_file.txt b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_received_file.txt
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c57eff55ebc0c54973903af5f72bac72762cf4f4 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_received_file.txt
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_received_file.txt
@@ -0,0 +1 @@
+Hello World!
\ No newline at end of file
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log
index 7b72f22bd6650637abab42bf58aecdc98be8f8f3..c6145a5c4c32b55d40153f01530bf94e1ef94ad4 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log
@@ -1,4 +1,15 @@
-[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv, listen_ip is ::1, listen_port is 65135
-[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65135
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65169
-[DEBUG] Received data packet seqnum 0 with timestamp 984824098 | current_window_size : 31, current_window_start : 0
+[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv, listen_ip is ::1, listen_port is 65008
+[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65008
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65074
+[DEBUG] Received data packet seqnum 0 with timestamp 1650988936 | current_window_size : 31, current_window_start : 0
+[DEBUG] Sent ACK saying we are waiting for 1, timestamp 0
+[DEBUG] Received data packet seqnum 1 with timestamp 1650988938 | current_window_size : 30, current_window_start : 0
+[DEBUG] Going to consume the next 2 packets.
+[DEBUG] Consuming packet : 0 | curr_recv_window = 29, recv_window_start = 0
+[DEBUG] Consuming packet : 1 | curr_recv_window = 30, recv_window_start = 1
+[DEBUG] Received the last packet
+[DEBUG] Sent ACK saying we are waiting for 2, timestamp 1650988938
+[DEBUG] Done the transfer with done status being true
+[DEBUG] The difference between the two is 2095000.000000 seconds
+[DEBUG] The transfer took 2095.000000 seconds
+[DEBUG] Wrote the transfer statistics to tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv.
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log
index 27fb2b63087f3aa8cc2bbb84fa47c290a5424cae..29f222ca36cbb4e527948f22cb89eff8a54e9f31 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log
@@ -1,10 +1,4 @@
-[DEBUG] Sender has following arguments: 
-		filename is tests_files/greeting.txt,
-		stats_filename is tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv,
-		fec_enabled is 1,
-		receiver_ip is ::1,
-		receiver_port is 65169
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65169
-[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 31 | receiver window size: 1
-[DEBUG] The LAST PTYPE_DATA is being sent !
-[DEBUG] Sending the pkt with seqnum: 0
+[SEND] [Seq: 000, Win_Rec: 1, Len: 12] (ack)
+[RECV] [Seq: 001, Type: 2, len 0]
+[SEND] [Seq: 001, Win_Rec: 30, Len: 0] (ack)
+[RECV] [Seq: 002, Type: 2, len 0]
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log
index d3be1f2b1e3cf838dadbde53ba45afd1afae7502..2aea21b1d26c2f8b7a81d8704bfa5fb3d89cd01b 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log
@@ -1,6 +1,15 @@
-==36399== Memcheck, a memory error detector
-==36399== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==36399== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==36399== Command: ./receiver ::1 65135 -s tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
-==36399== Parent PID: 36367
-==36399== 
+==38465== Memcheck, a memory error detector
+==38465== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==38465== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==38465== Command: ./receiver ::1 65008 -s tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
+==38465== Parent PID: 38434
+==38465== 
+==38465== 
+==38465== HEAP SUMMARY:
+==38465==     in use at exit: 0 bytes in 0 blocks
+==38465==   total heap usage: 13 allocs, 13 frees, 9,872 bytes allocated
+==38465== 
+==38465== All heap blocks were freed -- no leaks are possible
+==38465== 
+==38465== For lists of detected and suppressed errors, rerun with: -s
+==38465== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log
index ff6429b7b183d6cadb3ebe4dcb96a63ad1fc4f86..4d771618c20aa2f73b97687f711970ca5f24021c 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log
@@ -1,33 +1,29 @@
-==36400== Memcheck, a memory error detector
-==36400== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==36400== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==36400== Command: ./sender -f tests_files/greeting.txt ::1 65169 -c -s tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
-==36400== Parent PID: 36367
-==36400== 
-==36400== 
-==36400== Process terminating with default action of signal 2 (SIGINT)
-==36400==    at 0x498D995: poll (poll.c:29)
-==36400==    by 0x1095F6: main (in /home/vany/Desktop/school/networking/project_trtp/sender)
-==36400== 
-==36400== HEAP SUMMARY:
-==36400==     in use at exit: 2,756 bytes in 5 blocks
-==36400==   total heap usage: 7 allocs, 2 frees, 2,836 bytes allocated
-==36400== 
-==36400== 8 bytes in 1 blocks are definitely lost in loss record 1 of 5
-==36400==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
-==36400==    by 0x1095AA: main (in /home/vany/Desktop/school/networking/project_trtp/sender)
-==36400== 
-==36400== 2,748 (1,568 direct, 1,180 indirect) bytes in 1 blocks are definitely lost in loss record 5 of 5
-==36400==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
-==36400==    by 0x10AF9B: state_new (in /home/vany/Desktop/school/networking/project_trtp/sender)
-==36400==    by 0x1095CB: main (in /home/vany/Desktop/school/networking/project_trtp/sender)
-==36400== 
-==36400== LEAK SUMMARY:
-==36400==    definitely lost: 1,576 bytes in 2 blocks
-==36400==    indirectly lost: 1,180 bytes in 3 blocks
-==36400==      possibly lost: 0 bytes in 0 blocks
-==36400==    still reachable: 0 bytes in 0 blocks
-==36400==         suppressed: 0 bytes in 0 blocks
-==36400== 
-==36400== For lists of detected and suppressed errors, rerun with: -s
-==36400== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+==38466== Memcheck, a memory error detector
+==38466== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==38466== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==38466== Command: ./sender -f tests_files/greeting.txt ::1 65074 -c -s tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
+==38466== Parent PID: 38434
+==38466== 
+==38466== 
+==38466== HEAP SUMMARY:
+==38466==     in use at exit: 536 bytes in 2 blocks
+==38466==   total heap usage: 11 allocs, 9 frees, 884 bytes allocated
+==38466== 
+==38466== 512 bytes in 1 blocks are definitely lost in loss record 2 of 2
+==38466==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
+==38466==    by 0x10AE2F: pkt_set_payload (packet_implem.c:313)
+==38466==    by 0x1098A8: append_to_fec_pkt (sender.c:124)
+==38466==    by 0x10A44E: read_write_loop_sender (sender.c:449)
+==38466==    by 0x109559: main (sender.c:560)
+==38466== 
+==38466== LEAK SUMMARY:
+==38466==    definitely lost: 512 bytes in 1 blocks
+==38466==    indirectly lost: 0 bytes in 0 blocks
+==38466==      possibly lost: 0 bytes in 0 blocks
+==38466==    still reachable: 24 bytes in 1 blocks
+==38466==         suppressed: 0 bytes in 0 blocks
+==38466== Reachable blocks (those to which a pointer was found) are not shown.
+==38466== To see them, rerun with: --leak-check=full --show-leak-kinds=all
+==38466== 
+==38466== For lists of detected and suppressed errors, rerun with: -s
+==38466== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv b/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..396f1032f6857b496f16377151b1e6f9b99c243d 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
+++ b/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:2
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:2
+ack_received:0
+nack_received:0
+packet_ignored:0
+throughput:45.823387
+packet_duplicated:0
+packet_recovered:0
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log
index d60443427c67e27434dafa2b4d7d82f05b74d9f1..651c26a63ef19850dcb6590158955c3bd596b95f 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log
@@ -1,11 +1,22 @@
-@@ Using random seed: 1650987718
+@@ Using random seed: 1650988955
 @@ Using parameters:
-.. port: 65002
-.. forward_port: 65137
+.. port: 65068
+.. forward_port: 65085
 .. delay: 100
 .. jitter: 100
-.. err_rate: 1
-.. cut_rate: 1
+.. err_rate: 5
+.. cut_rate: 5
 .. loss_rate: 1
-.. seed: 1650987718
+.. seed: 1650988955
 .. link_direction: Forward
+@@ Remote host is ::1 [46889]
+[SEQ   0] Delayed packet by 20 ms
+[SEQ   0] Sent packet (Forward).
+[SEQ   1] Sent packet (Reverse).
+[SEQ   1] Delayed packet by 132 ms
+[SEQ   2] Delayed packet by 50 ms
+[SEQ   3] Delayed packet by 184 ms
+[SEQ   2] Sent packet (Forward).
+[SEQ   1] Sent packet (Forward).
+[SEQ   3] Sent packet (Forward).
+[SEQ   4] Sent packet (Reverse).
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_received_file.txt b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_received_file.txt
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a18b03ec08fdc53c1f0a5e0fc9187b5a0f18568f 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_received_file.txt
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_received_file.txt
@@ -0,0 +1,29 @@
+Hello I'm a good friend, I've seen that you are writing a protocol named TRTP. 
+How is it going ? Hard ? Good for you. See life is full of hard things just like your 
+network course. But when you manage to thrive throgh tough times then sweet things are 
+ahead. So good luck have a nice day of testing and remember : Tough Times Never Last.
+
+PS: Drink a beer when you pass the test. Share your knowledge to others, computer 
+science isn't a field for selfishness. If you want to switch to Law, Economy, some shit
+
+Hi Vany I'm pleased to read some news from you. As you know I work sometime a bit late in the night.
+In a few hour you'll show up in the famous "Salle Intel" to be really productive as you are.
+
+Best regards,
+
+Samuel
+
+Sorry to be lazy but I'll past down what is above :')
+
+Hello I'm a good friend, I've seen that you are writing a protocol named TRTP. 
+How is it going ? Hard ? Good for you. See life is full of hard things just like your 
+network course. But when you manage to thrive throgh tough times then sweet things are 
+ahead. So good luck have a nice day of testing and remember : Tough Times Never Last.
+
+PS: Drink a beer when you pass the test. Share your knowledge to others, computer 
+science isn't a field for selfishness. If you want to switch to Law, Economy, some shit
+
+Hi Vany I'm pleased to read some news from you. As you know I work sometime a bit late in the night.
+In a few hour you'll show up in the famous "Salle Intel" to be really productive as you are.
+
+Best regards,
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log
index d4228c71b69cf5b9ab5fd290a72ad30185f67615..807c84a77ad3237b8395a067def42195b76a4a0d 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log
@@ -1,2 +1,19 @@
-[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv, listen_ip is ::1, listen_port is 65137
-[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65137
+[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv, listen_ip is ::1, listen_port is 65085
+[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65085
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65068
+[DEBUG] Received data packet seqnum 0 with timestamp 1650988956 | current_window_size : 31, current_window_start : 0
+[DEBUG] Sent ACK saying we are waiting for 1, timestamp 0
+[DEBUG] Received data packet seqnum 2 with timestamp 1650988958 | current_window_size : 30, current_window_start : 0
+[DEBUG] Received data packet seqnum 1 with timestamp 1650988958 | current_window_size : 29, current_window_start : 0
+[DEBUG] Received data packet seqnum 3 with timestamp 1650988958 | current_window_size : 28, current_window_start : 0
+[DEBUG] Going to consume the next 4 packets.
+[DEBUG] Consuming packet : 0 | curr_recv_window = 27, recv_window_start = 0
+[DEBUG] Consuming packet : 1 | curr_recv_window = 28, recv_window_start = 1
+[DEBUG] Consuming packet : 2 | curr_recv_window = 29, recv_window_start = 2
+[DEBUG] Consuming packet : 3 | curr_recv_window = 30, recv_window_start = 3
+[DEBUG] Received the last packet
+[DEBUG] Sent ACK saying we are waiting for 4, timestamp 1650988958
+[DEBUG] Done the transfer with done status being true
+[DEBUG] The difference between the two is 2200000.000000 seconds
+[DEBUG] The transfer took 2200.000000 seconds
+[DEBUG] Wrote the transfer statistics to tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv.
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aeab5b5f16a88bfd1007db626ccce3f0c2d2e32d 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log
@@ -0,0 +1,6 @@
+[SEND] [Seq: 000, Win_Rec: 1, Len: 512] (ack)
+[RECV] [Seq: 001, Type: 2, len 0]
+[SEND] [Seq: 001, Win_Rec: 30, Len: 512] (ack)
+[SEND] [Seq: 002, Win_Rec: 30, Len: 486] (ack)
+[SEND] [Seq: 003, Win_Rec: 30, Len: 0] (ack)
+[RECV] [Seq: 004, Type: 2, len 0]
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log
index 231a08ffaf91da47d5d1343abcf538e118d3002b..edbf717ddda04864f95f63954a8138b634b5fe79 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log
@@ -1,6 +1,15 @@
-==36433== Memcheck, a memory error detector
-==36433== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==36433== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==36433== Command: ./receiver ::1 65137 -s tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
-==36433== Parent PID: 36403
-==36433== 
+==38577== Memcheck, a memory error detector
+==38577== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==38577== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==38577== Command: ./receiver ::1 65085 -s tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
+==38577== Parent PID: 38547
+==38577== 
+==38577== 
+==38577== HEAP SUMMARY:
+==38577==     in use at exit: 0 bytes in 0 blocks
+==38577==   total heap usage: 17 allocs, 17 frees, 11,984 bytes allocated
+==38577== 
+==38577== All heap blocks were freed -- no leaks are possible
+==38577== 
+==38577== For lists of detected and suppressed errors, rerun with: -s
+==38577== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log
index 44cff375100e902ef494d2aca3162b4c94244b58..6d6986c8c1b1d206f42ced395137c61a1bca6296 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log
@@ -1,26 +1,29 @@
-==36434== Memcheck, a memory error detector
-==36434== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==36434== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==36434== Command: ./sender -f tests_files/long_message.txt ::1 65002 -c -s tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
-==36434== Parent PID: 36403
-==36434== 
-==36434== 
-==36434== Process terminating with default action of signal 2 (SIGINT)
-==36434==    at 0x49890A5: write (write.c:26)
-==36434==    by 0x4909EBC: _IO_file_write@@GLIBC_2.2.5 (fileops.c:1181)
-==36434==    by 0x490A7D7: new_do_write (fileops.c:449)
-==36434==    by 0x490A7D7: _IO_new_file_xsputn (fileops.c:1255)
-==36434==    by 0x490A7D7: _IO_file_xsputn@@GLIBC_2.2.5 (fileops.c:1197)
-==36434==    by 0x48F4F82: buffered_vfprintf (vfprintf-internal.c:2395)
-==36434==    by 0x48F1D53: __vfprintf_internal (vfprintf-internal.c:1346)
-==36434==    by 0x49A9152: __fprintf_chk (fprintf_chk.c:33)
-==36434==    by 0x1094E5: main (in /home/vany/Desktop/school/networking/project_trtp/sender)
-==36434== 
-==36434== HEAP SUMMARY:
-==36434==     in use at exit: 0 bytes in 0 blocks
-==36434==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
-==36434== 
-==36434== All heap blocks were freed -- no leaks are possible
-==36434== 
-==36434== For lists of detected and suppressed errors, rerun with: -s
-==36434== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==38578== Memcheck, a memory error detector
+==38578== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==38578== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==38578== Command: ./sender -f tests_files/long_message.txt ::1 65068 -c -s tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
+==38578== Parent PID: 38547
+==38578== 
+==38578== 
+==38578== HEAP SUMMARY:
+==38578==     in use at exit: 536 bytes in 2 blocks
+==38578==   total heap usage: 17 allocs, 15 frees, 3,954 bytes allocated
+==38578== 
+==38578== 512 bytes in 1 blocks are definitely lost in loss record 2 of 2
+==38578==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
+==38578==    by 0x10AE2F: pkt_set_payload (packet_implem.c:313)
+==38578==    by 0x1098A8: append_to_fec_pkt (sender.c:124)
+==38578==    by 0x10A44E: read_write_loop_sender (sender.c:449)
+==38578==    by 0x109559: main (sender.c:560)
+==38578== 
+==38578== LEAK SUMMARY:
+==38578==    definitely lost: 512 bytes in 1 blocks
+==38578==    indirectly lost: 0 bytes in 0 blocks
+==38578==      possibly lost: 0 bytes in 0 blocks
+==38578==    still reachable: 24 bytes in 1 blocks
+==38578==         suppressed: 0 bytes in 0 blocks
+==38578== Reachable blocks (those to which a pointer was found) are not shown.
+==38578== To see them, rerun with: --leak-check=full --show-leak-kinds=all
+==38578== 
+==38578== For lists of detected and suppressed errors, rerun with: -s
+==38578== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv b/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..58c8056b572dc3faaf3e7ff0542ffe13fbc08791 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
+++ b/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:2
+ack_received:0
+nack_received:0
+packet_ignored:0
+throughput:5490.909180
+packet_duplicated:0
+packet_recovered:0