diff --git a/src/manager/UpstreamManager.cc b/src/manager/UpstreamManager.cc index aa36ba78..b13318c2 100644 --- a/src/manager/UpstreamManager.cc +++ b/src/manager/UpstreamManager.cc @@ -147,6 +147,20 @@ int UpstreamManager::upstream_remove_server(const std::string& name, return -1; } +int UpstreamManager::upstream_delete(const std::string& name) +{ + WFNameService *ns = WFGlobal::get_name_service(); + auto *policy = ns->del_policy(name.c_str()); + + if (policy) + { + delete policy; + return 1; + } + + return 0; +} + std::vector UpstreamManager::upstream_main_address_list(const std::string& name) { diff --git a/test/upstream_unittest.cc b/test/upstream_unittest.cc index e381a14b..f1345529 100644 --- a/test/upstream_unittest.cc +++ b/test/upstream_unittest.cc @@ -305,6 +305,9 @@ int main(int argc, char* argv[]) EXPECT_EQ(RUN_ALL_TESTS(), 0); + EXPECT_EQ(UpstreamManager::upstream_delete("try_another"), 1); + EXPECT_EQ(UpstreamManager::upstream_delete("try_another"), 0); + http_server1.stop(); http_server2.stop(); http_server3.stop();