diff options
author | Olivier Roques <oroques+fdio@cisco.com> | 2019-12-09 20:12:07 +0100 |
---|---|---|
committer | Olivier Roques <oroques+fdio@cisco.com> | 2020-02-04 15:48:14 +0100 |
commit | e1cc8df89a953871b3d76f55f82ebb03b86b8eb5 (patch) | |
tree | 9c7b66c1eead036a17d3d46323ea19023a4fb152 /libtransport/src/hicn/transport/interfaces/socket_producer.cc | |
parent | e90a3ec9cbc98d73dfeb2175ee12edfb56af11ee (diff) |
[HICN-501] Change calculation of next reassembly segment when manifests are enabled
When manifests are enabled, the current way of computing the next
reassembly segment is broken: if manifests are received out of order,
which can happen if a interest for a manifest timeouts, reassembly
will also be out of order.
This patch makes uses of the SuffixContent class introduced in
HICN-392 to correctly compute the index of the next segment to
reassemble.
Change-Id: I2784f3da544fef7b48a110dd6c233657610f44b8
Signed-off-by: Olivier Roques <oroques+fdio@cisco.com>
Diffstat (limited to 'libtransport/src/hicn/transport/interfaces/socket_producer.cc')
-rw-r--r-- | libtransport/src/hicn/transport/interfaces/socket_producer.cc | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/libtransport/src/hicn/transport/interfaces/socket_producer.cc b/libtransport/src/hicn/transport/interfaces/socket_producer.cc index 7d7f4a0fe..6782000ac 100644 --- a/libtransport/src/hicn/transport/interfaces/socket_producer.cc +++ b/libtransport/src/hicn/transport/interfaces/socket_producer.cc @@ -165,7 +165,6 @@ uint32_t ProducerSocket::produce(Name content_name, getSocketOption(GeneralTransportOptions::IDENTITY, identity); auto buffer_size = buffer->length(); - const std::size_t hash_size = 32; int bytes_segmented = 0; std::size_t header_size; std::size_t manifest_header_size = 0; @@ -176,7 +175,6 @@ uint32_t ProducerSocket::produce(Name content_name, core::Packet::Format format; std::shared_ptr<ContentObjectManifest> manifest; bool is_last_manifest = false; - std::unique_ptr<utils::CryptoHash> zero_hash; suffix_content.updateSuffix(start_offset); suffix_content.setUsingManifest(making_manifest); @@ -249,10 +247,6 @@ uint32_t ProducerSocket::produce(Name content_name, manifest->setFinalBlockNumber(std::numeric_limits<uint32_t>::max()); } - uint8_t hash[hash_size]; - std::memset(hash, 0, hash_size); - zero_hash = std::make_unique<utils::CryptoHash>( - hash, hash_size, static_cast<utils::CryptoHashType>(hash_algo)); } for (unsigned int packaged_segments = 0; @@ -260,8 +254,6 @@ uint32_t ProducerSocket::produce(Name content_name, if (making_manifest) { if (manifest->estimateManifestSize(2) > data_packet_size - manifest_header_size) { - // Add next manifest - manifest->addSuffixHash(suffix_manifest.getSuffix(), *zero_hash); // Send the current manifest manifest->encode(); identity->getSigner().sign(*manifest); @@ -339,10 +331,6 @@ uint32_t ProducerSocket::produce(Name content_name, manifest->setFinalManifest(is_last_manifest); } - if (!is_last) { - manifest->addSuffixHash(suffix_content.getSuffix(), *zero_hash); - } - manifest->encode(); identity->getSigner().sign(*manifest); passContentObjectToCallbacks(manifest); |