@@ -640,16 +640,22 @@ def __init__(self, method):
640640 self .salt = b"auth_chain_b"
641641 self .no_compatible_method = 'auth_chain_b'
642642 self .data_size_list = []
643+ self .data_size_list2 = []
643644
644645 def init_data_size (self , key ):
645646 if self .data_size_list :
646647 self .data_size_list = []
648+ self .data_size_list2 = []
647649 random = xorshift128plus ()
648650 random .init_from_bin (key )
649- list_len = random .next () % 16 + 4 ;
651+ list_len = random .next () % 16 + 4
650652 for i in range (0 , list_len ):
651653 self .data_size_list .append ((int )(random .next () % 1440 ))
652654 self .data_size_list .sort ()
655+ list_len = random .next () % 32 + 32
656+ for i in range (0 , list_len ):
657+ self .data_size_list2 .append ((int )(random .next () % 1440 ))
658+ self .data_size_list2 .sort ()
653659
654660 def set_server_info (self , server_info ):
655661 self .server_info = server_info
@@ -669,6 +675,11 @@ def rnd_data_len(self, buf_size, last_hash, random):
669675 if final_pos < len (self .data_size_list ):
670676 return self .data_size_list [final_pos ] - buf_size - self .server_info .overhead
671677
678+ pos = bisect .bisect_left (self .data_size_list2 , buf_size + self .server_info .overhead )
679+ final_pos = pos + random .next () % (len (self .data_size_list2 ) + 1 - pos )
680+ if final_pos < len (self .data_size_list2 ):
681+ return self .data_size_list2 [final_pos ] - buf_size - self .server_info .overhead
682+
672683 if buf_size > 1300 :
673684 return random .next () % 31
674685 if buf_size > 900 :
0 commit comments