@@ -9,7 +9,7 @@ public partial class UdpConnection
99
1010 private ConcurrentDictionary < byte , UdpFragmentedMessage > fragmented_messages_received = new ConcurrentDictionary < byte , UdpFragmentedMessage > ( ) ;
1111
12- private const byte fragment_header_size = sizeof ( byte ) + sizeof ( ushort ) + sizeof ( int ) + sizeof ( byte ) ;
12+ private const byte fragment_header_size = sizeof ( byte ) + sizeof ( ushort ) + sizeof ( int ) + sizeof ( byte ) + sizeof ( ushort ) ;
1313
1414 private async Task FragmentedSend ( byte [ ] _buffer )
1515 {
@@ -35,6 +35,10 @@ private async Task FragmentedSend(byte[] _buffer)
3535
3636 fragment_buffer [ 7 ] = fragment_id ;
3737
38+ // Add fragment sequence index
39+ fragment_buffer [ 8 ] = ( byte ) i ;
40+ fragment_buffer [ 9 ] = ( byte ) ( i >> 8 ) ;
41+
3842 Array . Copy ( _buffer , fragment_size * i , fragment_buffer , fragment_header_size , data_length ) ;
3943
4044 await WriteBytesToConnection ( fragment_buffer , fragment_buffer . Length ) ;
@@ -55,6 +59,7 @@ private async Task FragmentMessageReceive(MessageReader _reader)
5559
5660 var fragments_count = _reader . ReadInt32 ( ) ;
5761 var fragmented_message_id = _reader . ReadByte ( ) ;
62+ var fragment_index = _reader . ReadUInt16 ( ) ;
5863
5964 UdpFragmentedMessage fragmented_message ;
6065
@@ -71,7 +76,7 @@ private async Task FragmentMessageReceive(MessageReader _reader)
7176 fragmented_message = fragmented_messages_received [ fragmented_message_id ] ;
7277 }
7378
74- fragmented_message . Fragments . TryAdd ( result . Item2 , _reader ) ;
79+ fragmented_message . Fragments . TryAdd ( fragment_index , _reader ) ;
7580
7681 if ( fragmented_message . Fragments . Count == fragments_count )
7782 {
0 commit comments