ambrop7 15 lat temu
rodzic
commit
c5e652b3fd

+ 1 - 1
flow/DataProtoKeepaliveSource.c

@@ -30,7 +30,7 @@ static void output_handler_recv (DataProtoKeepaliveSource *o, uint8_t *data)
     DebugObject_Access(&o->d_obj);
     
     struct dataproto_header *header = (struct dataproto_header *)data;
-    header->flags = 0;
+    header->flags = htol8(0);
     header->from_id = htol16(0);
     header->num_peer_ids = htol16(0);
     

+ 3 - 3
flow/FragmentProtoAssembler.c

@@ -111,7 +111,7 @@ static int frame_is_timed_out (FragmentProtoAssembler *o, struct FragmentProtoAs
 {
     ASSERT(frame->time <= o->time)
     
-    return (o->time - frame->time > (uint32_t)o->time_tolerance);
+    return (o->time - frame->time > o->time_tolerance);
 }
 
 static void reduce_times (FragmentProtoAssembler *o)
@@ -360,10 +360,10 @@ static void do_io (FragmentProtoAssembler *o)
 
 static void input_handler_send (FragmentProtoAssembler *o, uint8_t *data, int data_len)
 {
-    ASSERT(o->in_len == -1)
-    ASSERT(!o->output_ready)
     ASSERT(data_len >= 0)
     ASSERT(data_len <= o->input_mtu)
+    ASSERT(o->in_len == -1)
+    ASSERT(!o->output_ready)
     DebugObject_Access(&o->d_obj);
     
     // save input packet

+ 23 - 26
flow/FragmentProtoDisassembler.c

@@ -107,11 +107,30 @@ static void write_chunks (FragmentProtoDisassembler *o)
     ASSERT(o->in_len < 0 || !o->out)
 }
 
+static void work_chunks (FragmentProtoDisassembler *o)
+{
+    ASSERT(o->in_len >= 0)
+    ASSERT(o->out)
+    
+    // write input to output
+    write_chunks(o);
+    
+    // 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 input_handler_send (FragmentProtoDisassembler *o, uint8_t *data, int data_len)
 {
-    ASSERT(o->in_len == -1)
     ASSERT(data_len >= 0)
     ASSERT(data_len <= o->input_mtu)
+    ASSERT(o->in_len == -1)
     
     // set input packet
     o->in_len = data_len;
@@ -123,18 +142,7 @@ static void input_handler_send (FragmentProtoDisassembler *o, uint8_t *data, int
         return;
     }
     
-    // write input to output
-    write_chunks(o);
-    
-    // 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);
-    }
+    work_chunks(o);
 }
 
 static void input_handler_cancel (FragmentProtoDisassembler *o)
@@ -147,8 +155,8 @@ static void input_handler_cancel (FragmentProtoDisassembler *o)
 
 static void output_handler_recv (FragmentProtoDisassembler *o, uint8_t *data)
 {
-    ASSERT(!o->out)
     ASSERT(data)
+    ASSERT(!o->out)
     
     // set output packet
     o->out = data;
@@ -159,18 +167,7 @@ static void output_handler_recv (FragmentProtoDisassembler *o, uint8_t *data)
         return;
     }
     
-    // write input to output
-    write_chunks(o);
-    
-    // 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);
-    }
+    work_chunks(o);
 }
 
 static void timer_handler (FragmentProtoDisassembler *o)

+ 1 - 1
flow/PacketProtoDecoder.c

@@ -90,7 +90,7 @@ void process_data (PacketProtoDecoder *enc)
     }
     
     // receive data
-    StreamRecvInterface_Receiver_Recv(enc->input, enc->buf + (enc->buf_start + enc->buf_used), enc->buf_size - ((enc->buf_start + enc->buf_used)));
+    StreamRecvInterface_Receiver_Recv(enc->input, enc->buf + (enc->buf_start + enc->buf_used), enc->buf_size - (enc->buf_start + enc->buf_used));
     
     // if we had error, report it
     if (was_error) {

+ 2 - 0
flow/PacketProtoFlow.h

@@ -28,6 +28,8 @@
 #ifndef BADVPN_FLOW_PACKETPROTOFLOW_H
 #define BADVPN_FLOW_PACKETPROTOFLOW_H
 
+#include <misc/debug.h>
+
 #include <system/DebugObject.h>
 #include <flow/BufferWriter.h>
 #include <flow/PacketProtoEncoder.h>

+ 2 - 2
flow/PacketRecvBlocker.c

@@ -41,7 +41,7 @@ static void input_handler_done (PacketRecvBlocker *o, int data_len)
     ASSERT(o->out_input_blocking)
     DebugObject_Access(&o->d_obj);
     
-    // have no output packet
+    // schedule done
     o->out_have = 0;
     PacketRecvInterface_Done(&o->output, data_len);
 }
@@ -87,6 +87,6 @@ void PacketRecvBlocker_AllowBlockedPacket (PacketRecvBlocker *o)
     }
     
     // schedule receive
-    PacketRecvInterface_Receiver_Recv(o->input, o->out);
     o->out_input_blocking = 1;
+    PacketRecvInterface_Receiver_Recv(o->input, o->out);
 }