aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/interfaces/socket_producer.cc
diff options
context:
space:
mode:
authorOlivier Roques <oroques+fdio@cisco.com>2019-12-09 20:12:07 +0100
committerOlivier Roques <oroques+fdio@cisco.com>2020-02-04 15:48:14 +0100
commite1cc8df89a953871b3d76f55f82ebb03b86b8eb5 (patch)
tree9c7b66c1eead036a17d3d46323ea19023a4fb152 /libtransport/src/hicn/transport/interfaces/socket_producer.cc
parente90a3ec9cbc98d73dfeb2175ee12edfb56af11ee (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.cc12
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);