mgmt: respond with 414 if StrategyChoice prefix is too long
refs #4262 Change-Id: Ief6dec02d7fbf372382a167e04d82e48777fa30b
This commit is contained in:
1 parent
d96744d968
commit
332783b3e5
3 files changed
+40
-10
No files matched your search
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) 2014-2017, Regents of the University of California,
|
||||
/*
|
||||
* Copyright (c) 2014-2018, Regents of the University of California,
|
||||
* Arizona Board of Regents,
|
||||
* Colorado State University,
|
||||
* University Pierre & Marie Curie, Sorbonne University,
|
||||
@@ -57,7 +57,7 @@ StrategyChoiceManager::setStrategy(ControlParameters parameters,
|
||||
StrategyChoice::InsertResult res = m_table.insert(prefix, strategy);
|
||||
if (!res) {
|
||||
NFD_LOG_DEBUG("strategy-choice/set(" << prefix << "," << strategy << "): cannot-create " << res);
|
||||
return done(ControlResponse(404, boost::lexical_cast<std::string>(res)));
|
||||
return done(ControlResponse(res.getStatusCode(), boost::lexical_cast<std::string>(res)));
|
||||
}
|
||||
|
||||
NFD_LOG_DEBUG("strategy-choice/set(" << prefix << "," << strategy << "): OK");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2014-2017, Regents of the University of California,
|
||||
* Copyright (c) 2014-2018, Regents of the University of California,
|
||||
* Arizona Board of Regents,
|
||||
* Colorado State University,
|
||||
* University Pierre & Marie Curie, Sorbonne University,
|
||||
@@ -83,12 +83,20 @@ public: // Strategy Choice table
|
||||
return m_status == OK || m_status == EXCEPTION;
|
||||
}
|
||||
|
||||
/** \brief get a status code for use in management command response
|
||||
*/
|
||||
int
|
||||
getStatusCode() const
|
||||
{
|
||||
return static_cast<int>(m_status);
|
||||
}
|
||||
|
||||
private:
|
||||
enum Status {
|
||||
OK,
|
||||
NOT_REGISTERED,
|
||||
EXCEPTION,
|
||||
DEPTH_EXCEEDED
|
||||
OK = 200,
|
||||
NOT_REGISTERED = 404,
|
||||
EXCEPTION = 409,
|
||||
DEPTH_EXCEEDED = 414,
|
||||
};
|
||||
|
||||
// implicitly constructible from Status
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/**
|
||||
* Copyright (c) 2014-2017, Regents of the University of California,
|
||||
/*
|
||||
* Copyright (c) 2014-2018, Regents of the University of California,
|
||||
* Arizona Board of Regents,
|
||||
* Colorado State University,
|
||||
* University Pierre & Marie Curie, Sorbonne University,
|
||||
@@ -120,6 +120,28 @@ BOOST_AUTO_TEST_CASE(SetUnknownStrategy)
|
||||
BOOST_CHECK_EQUAL(hasEntry("/A"), false);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(SetNameTooLong)
|
||||
{
|
||||
Name prefix;
|
||||
while (prefix.size() <= FIB_MAX_DEPTH) {
|
||||
prefix.append("A");
|
||||
}
|
||||
ControlParameters reqParams;
|
||||
reqParams.setName(prefix)
|
||||
.setStrategy(strategyNameP);
|
||||
auto req = makeControlCommandRequest("/localhost/nfd/strategy-choice/set", reqParams);
|
||||
receiveInterest(req);
|
||||
|
||||
ControlResponse expectedResp;
|
||||
expectedResp.setCode(414)
|
||||
.setText("Prefix has too many components (limit is " +
|
||||
to_string(NameTree::getMaxDepth()) + ")");
|
||||
BOOST_CHECK_EQUAL(checkResponse(0, req.getName(), expectedResp),
|
||||
CheckResponseResult::OK);
|
||||
|
||||
BOOST_CHECK_EQUAL(hasEntry(prefix), false);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(UnsetSuccess)
|
||||
{
|
||||
auto insertRes = sc.insert("/A", strategyNameP);
|
||||
|
||||
Reference in new issue
Block a user