face: Throw Face::Error if supplied Interest or Data exceeds maximum packet size
Maximum packet size is defined as MAX_NDN_PACKET_SIZE constant and does
not include any link-layer overhead.
Change-Id: I4c2787d38894096b43fb4e8ffc3175fa7ed24738
Refs: #1774
diff --git a/tests/integrated/test-faces.cpp b/tests/integrated/test-faces.cpp
index c86cd62..e7ce988 100644
--- a/tests/integrated/test-faces.cpp
+++ b/tests/integrated/test-faces.cpp
@@ -21,6 +21,7 @@
#include "face.hpp"
#include "util/scheduler.hpp"
+#include "security/key-chain.hpp"
#include "boost-test.hpp"
@@ -136,6 +137,20 @@
bind(&FacesFixture::onData, this),
bind(&FacesFixture::onTimeout, this));
+ Name veryLongName;
+ for (size_t i = 0; i <= MAX_NDN_PACKET_SIZE / 10; i++)
+ {
+ veryLongName.append("0123456789");
+ }
+
+ BOOST_CHECK_THROW(face.expressInterest(veryLongName, OnData(), OnTimeout()), Face::Error);
+
+ shared_ptr<Data> data = make_shared<Data>(veryLongName);
+ data->setContent(reinterpret_cast<const uint8_t*>("01234567890"), 10);
+ KeyChain keyChain;
+ keyChain.sign(*data);
+ BOOST_CHECK_THROW(face.put(*data), Face::Error);
+
BOOST_REQUIRE_NO_THROW(face.processEvents());
BOOST_CHECK_EQUAL(nData, 1);