Quellcode durchsuchen

PacketCopier, FragmentProtoDisassembler: always call Done for input and output in the same order, giving priority to output

ambrop7 vor 15 Jahren
Ursprung
Commit
5bf73c9771
2 geänderte Dateien mit 8 neuen und 8 gelöschten Zeilen
  1. 5 5
      flow/FragmentProtoDisassembler.c
  2. 3 3
      flow/PacketCopier.c

+ 5 - 5
flow/FragmentProtoDisassembler.c

@@ -162,15 +162,15 @@ static void output_handler_recv (FragmentProtoDisassembler *o, uint8_t *data)
     // write input to output
     write_chunks(o);
     
-    // finish output packet if needed
-    if (!o->out) {
-        PacketRecvInterface_Done(&o->output, o->out_used);
-    }
-    
     // finish input packet if needed
     if (o->in_len == -1) {
         PacketPassInterface_Done(&o->input);
     }
+    
+    // finish output packet if needed
+    if (!o->out) {
+        PacketRecvInterface_Done(&o->output, o->out_used);
+    }
 }
 
 static void timer_handler (FragmentProtoDisassembler *o)

+ 3 - 3
flow/PacketCopier.c

@@ -71,12 +71,12 @@ static void output_handler_recv (PacketCopier *o, uint8_t *data)
     
     memcpy(data, o->in, o->in_len);
     
-    // finish output packet
-    PacketRecvInterface_Done(&o->output, o->in_len);
-    
     // finish input packet
     PacketPassInterface_Done(&o->input);
     
+    // finish output packet
+    PacketRecvInterface_Done(&o->output, o->in_len);
+    
     o->in_len = -1;
 }