@@ -64,8 +64,8 @@ static bool transfer_payload_verify(udpard_rx_transfer_t* const transfer,
6464 const void * const payload ,
6565 const size_t payload_size_wire )
6666{
67- const udpard_fragment_t * frag = transfer -> payload_head ;
68- size_t offset = 0 ;
67+ udpard_fragment_t * frag = udpard_fragment_seek ( transfer -> payload , 0 ) ;
68+ size_t offset = 0 ;
6969 while (frag != NULL ) {
7070 if (frag -> offset != offset ) {
7171 return false;
@@ -77,7 +77,7 @@ static bool transfer_payload_verify(udpard_rx_transfer_t* const transfer,
7777 return false;
7878 }
7979 offset += frag -> view .size ;
80- frag = frag -> next ;
80+ frag = udpard_fragment_next ( frag ) ;
8181 }
8282 return (transfer -> payload_size_wire == payload_size_wire ) && (offset == payload_size_stored );
8383}
@@ -119,7 +119,8 @@ static bool fragment_tree_verify(udpard_tree_t* const root,
119119 }
120120 // Scan the payload tree.
121121 size_t offset = 0 ;
122- for (const udpard_fragment_t * it = (udpard_fragment_t * )cavl2_min (root ); it != NULL ; it = it -> next ) {
122+ for (udpard_fragment_t * it = (udpard_fragment_t * )cavl2_min (root ); it != NULL ;
123+ it = (udpard_fragment_t * )cavl2_next_greater (& it -> index_offset )) {
123124 if (it -> offset != offset ) {
124125 return false;
125126 }
@@ -348,7 +349,7 @@ static void test_rx_fragment_tree_update_a(void)
348349 TEST_ASSERT_EQUAL_size_t (0 , alloc_payload .count_free );
349350 // Free the tree (as in freedom).
350351 TEST_ASSERT (fragment_tree_verify (root , 12 , "abc\0def\0xyz" , 0x2758cbe6UL ));
351- udpard_fragment_free_all (( udpard_fragment_t * )root , mem_frag );
352+ udpard_fragment_free_all (udpard_fragment_seek (( udpard_fragment_t * )root , 0 ) , mem_frag );
352353 // Check the heap.
353354 TEST_ASSERT_EQUAL_size_t (0 , alloc_frag .allocated_fragments );
354355 TEST_ASSERT_EQUAL_size_t (0 , alloc_payload .allocated_fragments );
@@ -2159,7 +2160,7 @@ static void test_rx_session_ordered(void)
21592160 TEST_ASSERT_EQUAL_MEMORY ("01234" , cb_result .ack_mandate .am .payload_head .data , 5 );
21602161
21612162 // Free the transfer payload.
2162- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2163+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
21632164 TEST_ASSERT_EQUAL (0 , alloc_frag .allocated_fragments );
21642165 TEST_ASSERT_EQUAL (1 , alloc_session .allocated_fragments );
21652166 TEST_ASSERT_EQUAL (0 , alloc_payload .allocated_fragments );
@@ -2493,7 +2494,7 @@ static void test_rx_session_ordered(void)
24932494 TEST_ASSERT_EQUAL (1 , alloc_session .allocated_fragments );
24942495 TEST_ASSERT_EQUAL (5 , alloc_payload .allocated_fragments );
24952496 for (size_t i = 0 ; i < 4 ; i ++ ) {
2496- udpard_fragment_free_all (cb_result .message .history [i ].payload_head , mem_frag );
2497+ udpard_fragment_free_all (cb_result .message .history [i ].payload , mem_frag );
24972498 }
24982499 TEST_ASSERT_EQUAL (1 , alloc_frag .allocated_fragments ); // 500 is still there
24992500 TEST_ASSERT_EQUAL (1 , alloc_session .allocated_fragments );
@@ -2535,7 +2536,7 @@ static void test_rx_session_ordered(void)
25352536 TEST_ASSERT_EQUAL (udpard_prio_optional , cb_result .message .history [0 ].priority );
25362537 TEST_ASSERT_EQUAL (500 , cb_result .message .history [0 ].transfer_id );
25372538 TEST_ASSERT (transfer_payload_verify (& cb_result .message .history [0 ], 10 , "9876543210" , 10 ));
2538- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2539+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
25392540 // All transfers processed, nothing is interned.
25402541 TEST_ASSERT_EQUAL (6 , cb_result .message .count );
25412542 TEST_ASSERT_EQUAL (4 , cb_result .ack_mandate .count );
@@ -2594,7 +2595,7 @@ static void test_rx_session_ordered(void)
25942595 TEST_ASSERT_EQUAL (udpard_prio_optional , tr -> priority );
25952596 TEST_ASSERT_EQUAL (1000 + i , tr -> transfer_id );
25962597 TEST_ASSERT (transfer_payload_verify (tr , 2 , (char []){ '0' , (char )('0' + i ) }, 2 ));
2597- udpard_fragment_free_all (tr -> payload_head , mem_frag );
2598+ udpard_fragment_free_all (tr -> payload , mem_frag );
25982599 }
25992600 TEST_ASSERT_EQUAL (14 , cb_result .message .count );
26002601 TEST_ASSERT_EQUAL (4 , cb_result .ack_mandate .count );
@@ -2638,12 +2639,12 @@ static void test_rx_session_ordered(void)
26382639 TEST_ASSERT_EQUAL_INT64 (ts_3000 , cb_result .message .history [1 ].timestamp );
26392640 TEST_ASSERT_EQUAL (3000 , cb_result .message .history [1 ].transfer_id );
26402641 TEST_ASSERT (transfer_payload_verify (& cb_result .message .history [1 ], 2 , "30" , 2 ));
2641- udpard_fragment_free_all (cb_result .message .history [1 ].payload_head , mem_frag );
2642+ udpard_fragment_free_all (cb_result .message .history [1 ].payload , mem_frag );
26422643 // Now 3001.
26432644 TEST_ASSERT_EQUAL_INT64 (ts_3000 + 1 , cb_result .message .history [0 ].timestamp );
26442645 TEST_ASSERT_EQUAL (3001 , cb_result .message .history [0 ].transfer_id );
26452646 TEST_ASSERT (transfer_payload_verify (& cb_result .message .history [0 ], 2 , "31" , 2 ));
2646- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2647+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
26472648 // We still have 3002..3007 in progress. They will be freed once the session has expired.
26482649 TEST_ASSERT_EQUAL (16 , cb_result .message .count );
26492650 TEST_ASSERT_EQUAL (4 , cb_result .ack_mandate .count );
@@ -2741,7 +2742,7 @@ static void test_rx_session_unordered(void)
27412742 TEST_ASSERT_EQUAL_MEMORY ("hello" , cb_result .ack_mandate .am .payload_head .data , 5 );
27422743
27432744 // Free the transfer payload.
2744- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2745+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
27452746 TEST_ASSERT_EQUAL (0 , alloc_frag .allocated_fragments );
27462747 TEST_ASSERT_EQUAL (0 , alloc_payload .allocated_fragments );
27472748
@@ -2760,7 +2761,7 @@ static void test_rx_session_unordered(void)
27602761 TEST_ASSERT_EQUAL (2 , cb_result .message .count );
27612762 TEST_ASSERT_EQUAL (103 , cb_result .message .history [0 ].transfer_id );
27622763 TEST_ASSERT (transfer_payload_verify (& cb_result .message .history [0 ], 6 , "tid103" , 6 ));
2763- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2764+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
27642765
27652766 meta .transfer_id = 102 ;
27662767 meta .priority = udpard_prio_nominal ;
@@ -2776,7 +2777,7 @@ static void test_rx_session_unordered(void)
27762777 TEST_ASSERT_EQUAL (3 , cb_result .message .count );
27772778 TEST_ASSERT_EQUAL (102 , cb_result .message .history [0 ].transfer_id );
27782779 TEST_ASSERT (transfer_payload_verify (& cb_result .message .history [0 ], 6 , "tid102" , 6 ));
2779- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2780+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
27802781
27812782 // Verify that duplicates are still rejected.
27822783 meta .transfer_id = 103 ; // repeat of a received transfer
@@ -2834,7 +2835,7 @@ static void test_rx_session_unordered(void)
28342835 TEST_ASSERT_EQUAL (0x0A000002 , cb_result .message .history [0 ].remote .endpoints [1 ].ip );
28352836 TEST_ASSERT_EQUAL (0x1234 , cb_result .message .history [0 ].remote .endpoints [0 ].port );
28362837 TEST_ASSERT_EQUAL (0x5678 , cb_result .message .history [0 ].remote .endpoints [1 ].port );
2837- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
2838+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
28382839
28392840 // ACK mandate generated upon completion.
28402841 TEST_ASSERT_EQUAL (5 , cb_result .ack_mandate .count );
@@ -2997,7 +2998,7 @@ static void test_rx_port(void)
29972998 TEST_ASSERT_EQUAL (transfer_id , cb_result .ack_mandate .am .transfer_id );
29982999
29993000 // Clean up.
3000- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
3001+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
30013002 cb_result .message .count = 0 ;
30023003 cb_result .ack_mandate .count = 0 ;
30033004 }
@@ -3042,7 +3043,7 @@ static void test_rx_port(void)
30423043 // No ACK for stateless mode without flag_ack.
30433044 TEST_ASSERT_EQUAL (0 , cb_result .ack_mandate .count );
30443045
3045- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
3046+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
30463047 cb_result .message .count = 0 ;
30473048 }
30483049
@@ -3109,7 +3110,7 @@ static void test_rx_port(void)
31093110
31103111 TEST_ASSERT_EQUAL (1 , cb_result .ack_mandate .count );
31113112
3112- udpard_fragment_free_all (cb_result .message .history [0 ].payload_head , mem_frag );
3113+ udpard_fragment_free_all (cb_result .message .history [0 ].payload , mem_frag );
31133114 cb_result .message .count = 0 ;
31143115 cb_result .ack_mandate .count = 0 ;
31153116 }
@@ -3437,7 +3438,7 @@ static void test_rx_port_timeouts(void)
34373438 // The late arrival should have ejected the earlier completed transfers.
34383439 TEST_ASSERT (cb_result .message .count >= 1 );
34393440 for (size_t i = 0 ; i < cb_result .message .count ; i ++ ) {
3440- udpard_fragment_free_all (cb_result .message .history [i ].payload_head , mem_frag );
3441+ udpard_fragment_free_all (cb_result .message .history [i ].payload , mem_frag );
34413442 }
34423443 cb_result .message .count = 0 ;
34433444
0 commit comments