aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/protocols/datagram_reassembly.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libtransport/src/protocols/datagram_reassembly.cc')
-rw-r--r--libtransport/src/protocols/datagram_reassembly.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/libtransport/src/protocols/datagram_reassembly.cc b/libtransport/src/protocols/datagram_reassembly.cc
index 962c1e020..069873a52 100644
--- a/libtransport/src/protocols/datagram_reassembly.cc
+++ b/libtransport/src/protocols/datagram_reassembly.cc
@@ -14,6 +14,7 @@
*/
#include <protocols/datagram_reassembly.h>
+#include <protocols/transport_protocol.h>
namespace transport {
@@ -25,7 +26,17 @@ DatagramReassembly::DatagramReassembly(
: Reassembly(icn_socket, transport_protocol) {}
void DatagramReassembly::reassemble(core::ContentObject& content_object) {
- read_buffer_ = content_object.getPayload();
+ auto read_buffer = content_object.getPayload();
+ DLOG_IF(INFO, VLOG_IS_ON(4))
+ << "Size of payload: " << read_buffer->length() << ". Trimming "
+ << transport_protocol_->transportHeaderLength();
+ read_buffer->trimStart(transport_protocol_->transportHeaderLength());
+ Reassembly::read_buffer_ = std::move(read_buffer);
+ Reassembly::notifyApplication();
+}
+
+void DatagramReassembly::reassemble(utils::MemBuf& buffer, uint32_t suffix) {
+ read_buffer_ = buffer.cloneOne();
Reassembly::notifyApplication();
}