From ef937863fdccfc4e1fe50d8f68b70063589d5c60 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Wed, 13 Nov 2024 09:33:09 +0000 Subject: [PATCH 1/4] Removed unused code. --- rak/priority_queue.h | 68 +----------------------------------------- src/command_logging.cc | 2 +- 2 files changed, 2 insertions(+), 68 deletions(-) diff --git a/rak/priority_queue.h b/rak/priority_queue.h index 9edd3f21..9a8b67da 100644 --- a/rak/priority_queue.h +++ b/rak/priority_queue.h @@ -1,39 +1,3 @@ -// rak - Rakshasa's toolbox -// Copyright (C) 2005-2007, Jari Sundell -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// In addition, as a special exception, the copyright holders give -// permission to link the code of portions of this program with the -// OpenSSL library under certain conditions as described in each -// individual source file, and distribute linked combinations -// including the two. -// -// You must obey the GNU General Public License in all respects for -// all of the code used other than OpenSSL. If you modify file(s) -// with this exception, you may extend this exception to your version -// of the file(s), but you are not obligated to do so. If you do not -// wish to do so, delete this exception statement from your version. -// If you delete this exception statement from all source files in the -// program, then also delete it here. -// -// Contact: Jari Sundell -// -// Skomakerveien 33 -// 3185 Skoppum, NORWAY - // priority_queue is a priority queue implemented using a binary // heap. It can contain multiple instances of a value. @@ -85,7 +49,7 @@ public: template iterator find(const Key& key) { - return std::find_if(begin(), end(), std::bind2nd(m_equal, key)); + return std::find_if(begin(), end(), [&](auto& value) { return m_equal(value, key); }); } template @@ -110,36 +74,6 @@ private: Equal m_equal; }; -// Iterate while the top node has higher priority, as 'Compare' -// returns false. -template -class queue_pop_iterator - : public std::iterator { -public: - typedef Queue container_type; - - queue_pop_iterator() : m_queue(NULL) {} - queue_pop_iterator(Queue* q, Compare c) : m_queue(q), m_compare(c) {} - - queue_pop_iterator& operator ++ () { m_queue->pop(); return *this; } - queue_pop_iterator& operator ++ (int) { m_queue->pop(); return *this; } - - typename container_type::const_reference operator * () { return m_queue->top(); } - - bool operator != (const queue_pop_iterator& itr) { return !m_queue->empty() && !m_compare(m_queue->top()); } - bool operator == (const queue_pop_iterator& itr) { return m_queue->empty() || m_compare(m_queue->top()); } - -private: - Queue* m_queue; - Compare m_compare; -}; - -template -inline queue_pop_iterator -queue_popper(Queue& queue, Compare comp) { - return queue_pop_iterator(&queue, comp); -} - } #endif diff --git a/src/command_logging.cc b/src/command_logging.cc index c81762cb..002e8dd5 100644 --- a/src/command_logging.cc +++ b/src/command_logging.cc @@ -32,7 +32,7 @@ torrent::Object apply_log_open(int output_flags, const torrent::Object::list_type& args) { if (args.size() < 2) throw torrent::input_error("Invalid number of arguments."); - + torrent::Object::list_const_iterator itr = args.begin(); std::string output_id = (itr++)->as_string(); From 34de2b4ac984659f4d31efe82864a260edf8228e Mon Sep 17 00:00:00 2001 From: kannibalox Date: Sun, 27 Oct 2024 11:07:41 -0400 Subject: [PATCH 2/4] Convert CommandMap to use std::string instead of char* This allows it to own its keys and clean them up automatically on destruction. --- src/command_dynamic.cc | 38 +++++++++++++++++----------------- src/command_helpers.h | 24 ++------------------- src/command_network.cc | 2 +- src/rpc/command_map.cc | 47 +++++++----------------------------------- src/rpc/command_map.h | 42 ++++++++++++++++--------------------- 5 files changed, 47 insertions(+), 106 deletions(-) diff --git a/src/command_dynamic.cc b/src/command_dynamic.cc index 5b65d289..560b673e 100644 --- a/src/command_dynamic.cc +++ b/src/command_dynamic.cc @@ -143,11 +143,11 @@ system_method_insert_object(const torrent::Object::list_type& args, int flags) { throw torrent::input_error("Invalid argument count."); torrent::Object::list_const_iterator itrArgs = args.begin(); - const std::string& rawKey = (itrArgs++)->as_string(); + const std::string& raw_key = (itrArgs++)->as_string(); - if (rawKey.empty() || - control->object_storage()->find_raw_string(torrent::raw_string::from_string(rawKey)) != control->object_storage()->end() || - rpc::commands.has(rawKey) || rpc::commands.has(rawKey + ".set")) + if (raw_key.empty() || + control->object_storage()->find_raw_string(torrent::raw_string::from_string(raw_key)) != control->object_storage()->end() || + rpc::commands.has(raw_key) || rpc::commands.has(raw_key + ".set")) throw torrent::input_error("Invalid key."); torrent::Object value; @@ -186,25 +186,25 @@ system_method_insert_object(const torrent::Object::list_type& args, int flags) { if ((itrArgs)->is_list()) valueListType = (itrArgs)->as_list(); - control->object_storage()->insert_str(rawKey, valueList, flags); + control->object_storage()->insert_str(raw_key, valueList, flags); } else { - control->object_storage()->insert_str(rawKey, value, flags); + control->object_storage()->insert_str(raw_key, value, flags); } if ((flags & rpc::object_storage::mask_type) == rpc::object_storage::flag_function_type || (flags & rpc::object_storage::mask_type) == rpc::object_storage::flag_multi_type) { rpc::commands.insert_slot >::type> - (create_new_key(rawKey), + (raw_key, std::bind(&rpc::object_storage::call_function_str, control->object_storage(), - rawKey, std::placeholders::_1, std::placeholders::_2), + raw_key, std::placeholders::_1, std::placeholders::_2), &rpc::command_base_call, cmd_flags, NULL, NULL); } else { rpc::commands.insert_slot >::type> - (create_new_key(rawKey), - std::bind(&rpc::object_storage::get_str, control->object_storage(), rawKey), + (raw_key, + std::bind(&rpc::object_storage::get_str, control->object_storage(), raw_key), &rpc::command_base_call, cmd_flags, NULL, NULL); } @@ -226,29 +226,29 @@ system_method_insert_object(const torrent::Object::list_type& args, int flags) { switch (flags & rpc::object_storage::mask_type) { case rpc::object_storage::flag_bool_type: rpc::commands.insert_slot >::type> - (create_new_key<5>(rawKey, ".set"), - std::bind(&rpc::object_storage::set_str_bool, control->object_storage(), rawKey, std::placeholders::_2), + (raw_key + ".set", + std::bind(&rpc::object_storage::set_str_bool, control->object_storage(), raw_key, std::placeholders::_2), &rpc::command_base_call_value, cmd_flags, NULL, NULL); break; case rpc::object_storage::flag_value_type: rpc::commands.insert_slot >::type> - (create_new_key<5>(rawKey, ".set"), - std::bind(&rpc::object_storage::set_str_value, control->object_storage(), rawKey, std::placeholders::_2), + (raw_key + ".set", + std::bind(&rpc::object_storage::set_str_value, control->object_storage(), raw_key, std::placeholders::_2), &rpc::command_base_call_value, cmd_flags, NULL, NULL); break; case rpc::object_storage::flag_string_type: rpc::commands.insert_slot >::type> - (create_new_key<5>(rawKey, ".set"), - std::bind(&rpc::object_storage::set_str_string, control->object_storage(), rawKey, std::placeholders::_2), + (raw_key + ".set", + std::bind(&rpc::object_storage::set_str_string, control->object_storage(), raw_key, std::placeholders::_2), &rpc::command_base_call_string, cmd_flags, NULL, NULL); break; case rpc::object_storage::flag_list_type: rpc::commands.insert_slot >::type> - (create_new_key<5>(rawKey, ".set"), - std::bind(&rpc::object_storage::set_str_list, control->object_storage(), rawKey, std::placeholders::_2), + (raw_key + ".set", + std::bind(&rpc::object_storage::set_str_list, control->object_storage(), raw_key, std::placeholders::_2), &rpc::command_base_call_list, cmd_flags, NULL, NULL); break; @@ -345,7 +345,7 @@ system_method_redirect(const torrent::Object::list_type& args) { std::string new_key = torrent::object_create_string(args.front()); std::string dest_key = torrent::object_create_string(args.back()); - rpc::commands.create_redirect(create_new_key(new_key), create_new_key(dest_key), + rpc::commands.create_redirect(new_key, dest_key, rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_delete_key | rpc::CommandMap::flag_modifiable); return torrent::Object(); diff --git a/src/command_helpers.h b/src/command_helpers.h index a104fbbc..0f43f3e0 100644 --- a/src/command_helpers.h +++ b/src/command_helpers.h @@ -148,11 +148,11 @@ void initialize_commands(); rpc::commands.create_redirect(from_key, to_key, rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_tracker_target | rpc::CommandMap::flag_dont_delete); #define CMD2_REDIRECT_GENERIC_STR(from_key, to_key) \ - rpc::commands.create_redirect(create_new_key(from_key), create_new_key(to_key), \ + rpc::commands.create_redirect(from_key, to_key, \ rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_no_target | rpc::CommandMap::flag_delete_key); #define CMD2_REDIRECT_GENERIC_STR_NO_EXPORT(from_key, to_key) \ - rpc::commands.create_redirect(create_new_key(from_key), create_new_key(to_key), \ + rpc::commands.create_redirect(from_key, to_key, \ rpc::CommandMap::flag_no_target | rpc::CommandMap::flag_delete_key); // @@ -188,24 +188,4 @@ template object_convert_type object_convert_void(T f) { return f; } -// -// Key creation: -// - -template -inline const char* -create_new_key(const std::string& key, const char postfix[postfix_size]) { - char *buffer = new char[key.size() + std::max(postfix_size, 1)]; - std::memcpy(buffer, key.c_str(), key.size() + 1); - std::memcpy(buffer + key.size(), postfix, postfix_size); - return buffer; -} - -inline const char* -create_new_key(const std::string& key) { - char *buffer = new char[key.size() + 1]; - std::memcpy(buffer, key.c_str(), key.size() + 1); - return buffer; -} - #endif diff --git a/src/command_network.cc b/src/command_network.cc index 0e53f17f..7bd1c690 100644 --- a/src/command_network.cc +++ b/src/command_network.cc @@ -135,7 +135,7 @@ initialize_xmlrpc() { if (!(itr->second.m_flags & rpc::CommandMap::flag_public_xmlrpc)) continue; - rpc::xmlrpc.insert_command(itr->first, itr->second.m_parm, itr->second.m_doc); + rpc::xmlrpc.insert_command(itr->first.c_str(), itr->second.m_parm, itr->second.m_doc); } lt_log_print(torrent::LOG_RPC_EVENTS, "XMLRPC initialized with %u functions.", count); diff --git a/src/rpc/command_map.cc b/src/rpc/command_map.cc index 17f253b7..805be565 100644 --- a/src/rpc/command_map.cc +++ b/src/rpc/command_map.cc @@ -36,7 +36,6 @@ #include "config.h" -#include #include #include #include @@ -57,23 +56,8 @@ namespace rpc { command_base::stack_type command_base::current_stack; -CommandMap::~CommandMap() { - std::vector keys; - - for (iterator itr = base_type::begin(), last = base_type::end(); itr != last; itr++) { -// if (!(itr->second.m_flags & flag_dont_delete)) -// delete itr->second.m_variable; - - if (itr->second.m_flags & flag_delete_key) - keys.push_back(itr->first); - } - - for (std::vector::iterator itr = keys.begin(), last = keys.end(); itr != last; itr++) - delete [] *itr; -} - CommandMap::iterator -CommandMap::insert(key_type key, int flags, const char* parm, const char* doc) { +CommandMap::insert(const key_type& key, int flags, const char* parm, const char* doc) { iterator itr = base_type::find(key); if (itr != base_type::end()) @@ -81,25 +65,11 @@ CommandMap::insert(key_type key, int flags, const char* parm, const char* doc) { // TODO: This is not honoring the public_xmlrpc flags!!! if (rpc::xmlrpc.is_valid() && (flags & flag_public_xmlrpc)) - // if (rpc::xmlrpc.is_valid()) - rpc::xmlrpc.insert_command(key, parm, doc); + rpc::xmlrpc.insert_command(key.c_str(), parm, doc); return base_type::insert(itr, value_type(key, command_map_data_type(flags, parm, doc))); } -// void -// CommandMap::insert(key_type key, const command_map_data_type src) { -// iterator itr = base_type::find(key); - -// if (itr != base_type::end()) -// throw torrent::internal_error("CommandMap::insert(...) tried to insert an already existing key."); - -// itr = base_type::insert(itr, value_type(key, command_map_data_type(src.m_variable, src.m_flags | flag_dont_delete, src.m_parm, src.m_doc))); - -// // We can assume all the slots are the same size. -// itr->second.m_anySlot = src.m_anySlot; -// } - void CommandMap::erase(iterator itr) { if (itr == end()) @@ -112,14 +82,11 @@ CommandMap::erase(iterator itr) { // if (!(itr->second.m_flags & flag_dont_delete)) // delete itr->second.m_variable; - const char* key = itr->second.m_flags & flag_delete_key ? itr->first : NULL; - base_type::erase(itr); - delete [] key; } void -CommandMap::create_redirect(key_type key_new, key_type key_dest, int flags) { +CommandMap::create_redirect(const key_type& key_new, const key_type& key_dest, int flags) { iterator new_itr = base_type::find(key_new); iterator dest_itr = base_type::find(key_dest); @@ -139,7 +106,7 @@ CommandMap::create_redirect(key_type key_new, key_type key_dest, int flags) { // TODO: This is not honoring the public_xmlrpc flags!!! if (rpc::xmlrpc.is_valid() && (flags & flag_public_xmlrpc)) - rpc::xmlrpc.insert_command(key_new, dest_itr->second.m_parm, dest_itr->second.m_doc); + rpc::xmlrpc.insert_command(key_new.c_str(), dest_itr->second.m_parm, dest_itr->second.m_doc); iterator itr = base_type::insert(base_type::end(), value_type(key_new, command_map_data_type(flags, @@ -152,7 +119,7 @@ CommandMap::create_redirect(key_type key_new, key_type key_dest, int flags) { } const CommandMap::mapped_type -CommandMap::call_catch(key_type key, target_type target, const mapped_type& args, const char* err) { +CommandMap::call_catch(const key_type& key, const target_type& target, const mapped_type& args, const char* err) { try { return call_command(key, args, target); } catch (torrent::input_error& e) { @@ -162,7 +129,7 @@ CommandMap::call_catch(key_type key, target_type target, const mapped_type& args } const CommandMap::mapped_type -CommandMap::call_command(key_type key, const mapped_type& arg, target_type target) { +CommandMap::call_command(const key_type& key, const mapped_type& arg, const target_type& target) { iterator itr = base_type::find(key); if (itr == base_type::end()) @@ -172,7 +139,7 @@ CommandMap::call_command(key_type key, const mapped_type& arg, target_type targe } const CommandMap::mapped_type -CommandMap::call_command(iterator itr, const mapped_type& arg, target_type target) { +CommandMap::call_command(iterator itr, const mapped_type& arg, const target_type& target) { return itr->second.m_anySlot(&itr->second.m_variable, target, arg); } diff --git a/src/rpc/command_map.h b/src/rpc/command_map.h index 4742bddd..555e8e89 100644 --- a/src/rpc/command_map.h +++ b/src/rpc/command_map.h @@ -46,10 +46,6 @@ namespace rpc { -struct command_map_comp : public std::binary_function { - bool operator () (const char* arg1, const char* arg2) const { return std::strcmp(arg1, arg2) < 0; } -}; - struct command_map_data_type { // Some commands will need to share data, like get/set a variable. So // instead of using a single virtual member function, each command @@ -73,9 +69,9 @@ struct command_map_data_type { const char* m_doc; }; -class CommandMap : public std::map { +class CommandMap : public std::map { public: - typedef std::map base_type; + typedef std::map base_type; typedef torrent::Object mapped_type; typedef mapped_type::value_type mapped_value_type; @@ -101,39 +97,37 @@ public: static const int flag_tracker_target = 0x400; CommandMap() {} - ~CommandMap(); + ~CommandMap() {} - bool has(const char* key) const { return base_type::find(key) != base_type::end(); } - bool has(const std::string& key) const { return has(key.c_str()); } + bool has(const std::string& key) const { return base_type::find(key) != base_type::end(); } bool is_modifiable(const_iterator itr) { return itr != end() && (itr->second.m_flags & flag_modifiable); } - iterator insert(key_type key, int flags, const char* parm, const char* doc); + iterator insert(const key_type& key, int flags, const char* parm, const char* doc); template void - insert_slot(key_type key, Slot variable, command_base::any_slot targetSlot, int flags, const char* parm, const char* doc) { + insert_slot(const key_type& key, Slot variable, command_base::any_slot target_slot, int flags, const char* parm, const char* doc) { iterator itr = insert(key, flags, parm, doc); itr->second.m_variable.set_function(variable); - itr->second.m_anySlot = targetSlot; + itr->second.m_anySlot = target_slot; } - // void insert(key_type key, const command_map_data_type src); void erase(iterator itr); - void create_redirect(key_type key_new, key_type key_dest, int flags); + void create_redirect(const key_type& key_new, const key_type& key_dest, int flags); - const mapped_type call(key_type key, const mapped_type& args = mapped_type()); - const mapped_type call(key_type key, target_type target, const mapped_type& args = mapped_type()) { return call_command(key, args, target); } - const mapped_type call_catch(key_type key, target_type target, const mapped_type& args = mapped_type(), const char* err = "Command failed: "); + const mapped_type call(const key_type& key, const mapped_type& args = mapped_type()); + const mapped_type call(const key_type& key, const target_type& target, const mapped_type& args = mapped_type()) { return call_command(key, args, target); } + const mapped_type call_catch(const key_type& key, const target_type& target, const mapped_type& args = mapped_type(), const char* err = "Command failed: "); - const mapped_type call_command (key_type key, const mapped_type& arg, target_type target = target_type((int)command_base::target_generic, NULL)); - const mapped_type call_command (iterator itr, const mapped_type& arg, target_type target = target_type((int)command_base::target_generic, NULL)); + const mapped_type call_command (const key_type& key, const mapped_type& arg, const target_type& target = target_type((int)command_base::target_generic, NULL)); + const mapped_type call_command (iterator itr, const mapped_type& arg, const target_type& target = target_type((int)command_base::target_generic, NULL)); - const mapped_type call_command_d(key_type key, core::Download* download, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_download, download)); } - const mapped_type call_command_p(key_type key, torrent::Peer* peer, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_peer, peer)); } - const mapped_type call_command_t(key_type key, torrent::Tracker* tracker, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_tracker, tracker)); } - const mapped_type call_command_f(key_type key, torrent::File* file, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_file, file)); } + const mapped_type call_command_d(const key_type& key, core::Download* download, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_download, download)); } + const mapped_type call_command_p(const key_type& key, torrent::Peer* peer, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_peer, peer)); } + const mapped_type call_command_t(const key_type& key, torrent::Tracker* tracker, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_tracker, tracker)); } + const mapped_type call_command_f(const key_type& key, torrent::File* file, const mapped_type& arg) { return call_command(key, arg, target_type((int)command_base::target_file, file)); } private: CommandMap(const CommandMap&); @@ -175,7 +169,7 @@ create_object_list(const torrent::Object& o1, const torrent::Object& o2, const t } inline const CommandMap::mapped_type -CommandMap::call(key_type key, const mapped_type& args) { +CommandMap::call(const key_type& key, const mapped_type& args) { return call_command(key, args, make_target()); } From f2f84dd97a2b9e00b103e53303fdab0ba4e76c1c Mon Sep 17 00:00:00 2001 From: kannibalox Date: Mon, 11 Nov 2024 10:46:24 -0500 Subject: [PATCH 3/4] Remove destructor definition entirely --- src/rpc/command_map.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/rpc/command_map.h b/src/rpc/command_map.h index 555e8e89..561ab01a 100644 --- a/src/rpc/command_map.h +++ b/src/rpc/command_map.h @@ -97,7 +97,6 @@ public: static const int flag_tracker_target = 0x400; CommandMap() {} - ~CommandMap() {} bool has(const std::string& key) const { return base_type::find(key) != base_type::end(); } From 5abcf52e553a99fbdb95ac2a33d5c6db7238cc0a Mon Sep 17 00:00:00 2001 From: kannibalox Date: Mon, 11 Nov 2024 10:48:23 -0500 Subject: [PATCH 4/4] Remove unused flag_delete_key --- src/command_dynamic.cc | 6 +++--- src/command_helpers.h | 4 ++-- src/rpc/command_map.cc | 2 +- src/rpc/command_map.h | 1 - 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/command_dynamic.cc b/src/command_dynamic.cc index 560b673e..de54309d 100644 --- a/src/command_dynamic.cc +++ b/src/command_dynamic.cc @@ -172,7 +172,7 @@ system_method_insert_object(const torrent::Object::list_type& args, int flags) { } // We must initialize this varriable to prevent a critical memory leak - int cmd_flags = rpc::CommandMap::flag_delete_key; + int cmd_flags = 0; if (!(flags & rpc::object_storage::flag_static)) cmd_flags |= rpc::CommandMap::flag_modifiable; @@ -287,7 +287,7 @@ system_method_insert(const torrent::Object::list_type& args) { if (rawKey.empty() || rpc::commands.has(rawKey)) throw torrent::input_error("Invalid key."); - int flags = rpc::CommandMap::flag_delete_key | rpc::CommandMap::flag_modifiable | rpc::CommandMap::flag_public_xmlrpc; + int flags = rpc::CommandMap::flag_modifiable | rpc::CommandMap::flag_public_xmlrpc; int new_flags = rpc::parse_option_flags(itrArgs->as_string(), std::bind(&object_storage_parse_flag, std::placeholders::_1)); if ((new_flags & rpc::object_storage::flag_private)) @@ -346,7 +346,7 @@ system_method_redirect(const torrent::Object::list_type& args) { std::string dest_key = torrent::object_create_string(args.back()); rpc::commands.create_redirect(new_key, dest_key, - rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_delete_key | rpc::CommandMap::flag_modifiable); + rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_modifiable); return torrent::Object(); } diff --git a/src/command_helpers.h b/src/command_helpers.h index 0f43f3e0..bba6aab7 100644 --- a/src/command_helpers.h +++ b/src/command_helpers.h @@ -149,11 +149,11 @@ void initialize_commands(); #define CMD2_REDIRECT_GENERIC_STR(from_key, to_key) \ rpc::commands.create_redirect(from_key, to_key, \ - rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_no_target | rpc::CommandMap::flag_delete_key); + rpc::CommandMap::flag_public_xmlrpc | rpc::CommandMap::flag_no_target); #define CMD2_REDIRECT_GENERIC_STR_NO_EXPORT(from_key, to_key) \ rpc::commands.create_redirect(from_key, to_key, \ - rpc::CommandMap::flag_no_target | rpc::CommandMap::flag_delete_key); + rpc::CommandMap::flag_no_target); // // Conversion of return types: diff --git a/src/rpc/command_map.cc b/src/rpc/command_map.cc index 805be565..7dcef244 100644 --- a/src/rpc/command_map.cc +++ b/src/rpc/command_map.cc @@ -102,7 +102,7 @@ CommandMap::create_redirect(const key_type& key_new, const key_type& key_dest, i dest_itr->second.m_flags |= flag_has_redirects; - flags |= dest_itr->second.m_flags & ~(flag_delete_key | flag_has_redirects | flag_public_xmlrpc); + flags |= dest_itr->second.m_flags & ~(flag_has_redirects | flag_public_xmlrpc); // TODO: This is not honoring the public_xmlrpc flags!!! if (rpc::xmlrpc.is_valid() && (flags & flag_public_xmlrpc)) diff --git a/src/rpc/command_map.h b/src/rpc/command_map.h index 561ab01a..27573e60 100644 --- a/src/rpc/command_map.h +++ b/src/rpc/command_map.h @@ -86,7 +86,6 @@ public: using base_type::find; static const int flag_dont_delete = 0x1; - static const int flag_delete_key = 0x2; static const int flag_public_xmlrpc = 0x4; static const int flag_modifiable = 0x10; static const int flag_is_redirect = 0x20;