@@ -36,39 +36,38 @@ td::Result<td::BufferSlice> serialize_candidate(const tl_object_ptr<ton_api::val
3636
3737td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> deserialize_candidate (td::Slice data,
3838 bool compression_enabled,
39- int max_decompressed_data_size,
40- int proto_version) {
39+ int max_decompressed_data_size) {
4140 if (!compression_enabled) {
4241 return fetch_tl_object<ton_api::validatorSession_candidate>(data, true );
4342 }
4443 TRY_RESULT (f, fetch_tl_object<ton_api::validatorSession_Candidate>(data, true ));
4544 td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> res;
46- ton_api::downcast_call (*f, td::overloaded (
47- [&](ton_api::validatorSession_candidate& c) {
48- res = td::Status::Error ( " Received decompressed tl object, while compression_enabled=true " );
49- },
50- [&](ton_api::validatorSession_compressedCandidate& c) {
51- res = [&]() -> td::Result<tl_object_ptr< ton_api::validatorSession_candidate>> {
52- if (c. decompressed_size_ > max_decompressed_data_size) {
53- return td::Status::Error ( " decompressed size is too big " );
54- }
55- TRY_RESULT (p, decompress_candidate_data (c. data_ , false , c. decompressed_size_ ,
56- max_decompressed_data_size, proto_version));
57- return create_tl_object<ton_api::validatorSession_candidate> (c.src_ , c. round_ , c.root_hash_ , std::move (p. first ),
58- std::move (p. second ));
59- }( );
60- },
61- [&](ton_api::validatorSession_compressedCandidateV2& c) {
62- res = [&]() -> td::Result<tl_object_ptr< ton_api::validatorSession_candidate>> {
63- if (c. data_ . size () > max_decompressed_data_size) {
64- return td::Status::Error ( " Compressed data is too big " );
65- }
66- TRY_RESULT (p, decompress_candidate_data (c. data_ , true , 0 ,
67- max_decompressed_data_size, proto_version ));
68- return create_tl_object<ton_api::validatorSession_candidate>(c.src_ , c.round_ , c.root_hash_ , std::move (p. first ) ,
69- std::move (p.second ));
70- }();
71- }));
45+ ton_api::downcast_call (
46+ *f, td::overloaded (
47+ [&](ton_api::validatorSession_candidate& c) {
48+ res = td::Status::Error ( " Received decompressed tl object, while compression_enabled=true " );
49+ },
50+ [&](ton_api::validatorSession_compressedCandidate& c) {
51+ res = [&]() -> td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> {
52+ if (c. decompressed_size_ > max_decompressed_data_size) {
53+ return td::Status::Error ( " decompressed size is too big " );
54+ }
55+ TRY_RESULT (
56+ p, decompress_candidate_data (c.data_ , false , c.decompressed_size_ , max_decompressed_data_size));
57+ return create_tl_object<ton_api::validatorSession_candidate>(c. src_ , c. round_ , c. root_hash_ ,
58+ std::move (p. first ), std::move (p. second ) );
59+ }();
60+ },
61+ [&](ton_api::validatorSession_compressedCandidateV2& c) {
62+ res = [&]() -> td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> {
63+ if (c. data_ . size () > max_decompressed_data_size) {
64+ return td::Status::Error ( " Compressed data is too big " );
65+ }
66+ TRY_RESULT (p, decompress_candidate_data (c. data_ , true , 0 , max_decompressed_data_size ));
67+ return create_tl_object<ton_api::validatorSession_candidate>(c.src_ , c.round_ , c.root_hash_ ,
68+ std::move (p. first ), std::move (p.second ));
69+ }();
70+ }));
7271 return res;
7372}
7473
@@ -80,7 +79,7 @@ td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice c
8079 return td::Status::Error (" block candidate should have exactly one root" );
8180 }
8281 std::vector<td::Ref<vm::Cell>> roots = {boc1.get_root_cell ()};
83- TRY_STATUS (boc2.deserialize (collated_data));
82+ TRY_STATUS (boc2.deserialize (collated_data, 1000000 ));
8483 for (int i = 0 ; i < boc2.get_root_count (); ++i) {
8584 roots.push_back (boc2.get_root_cell (i));
8685 }
@@ -94,8 +93,7 @@ td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice c
9493td::Result<std::pair<td::BufferSlice, td::BufferSlice>> decompress_candidate_data (td::Slice compressed,
9594 bool improved_compression,
9695 int decompressed_size,
97- int max_decompressed_size,
98- int proto_version) {
96+ int max_decompressed_size) {
9997 std::vector<td::Ref<vm::Cell>> roots;
10098 if (!improved_compression) {
10199 TRY_RESULT (decompressed, td::lz4_decompress (compressed, decompressed_size));
@@ -111,8 +109,7 @@ td::Result<std::pair<td::BufferSlice, td::BufferSlice>> decompress_candidate_dat
111109 }
112110 TRY_RESULT (block_data, vm::std_boc_serialize (roots[0 ], 31 ));
113111 roots.erase (roots.begin ());
114- int collated_data_mode = proto_version >= 5 ? 2 : 31 ;
115- TRY_RESULT (collated_data, vm::std_boc_serialize_multi (std::move (roots), collated_data_mode));
112+ TRY_RESULT (collated_data, vm::std_boc_serialize_multi (std::move (roots), 2 ));
116113 LOG (DEBUG) << " Decompressing block candidate " << (improved_compression ? " V2:" : " :" ) << compressed.size () << " -> "
117114 << block_data.size () + collated_data.size ();
118115 return std::make_pair (std::move (block_data), std::move (collated_data));
0 commit comments