Преглед изворни кода

Ignore unacceptable options in RPC request instead of throwing error.

This change allows RPC client to send same options for the different
type of downloads.
Tatsuhiro Tsujikawa пре 13 година
родитељ
комит
68eb1b6737
2 измењених фајлова са 6 додато и 4 уклоњено
  1. 2 2
      src/RpcMethod.cc
  2. 4 2
      test/RpcMethodTest.cc

+ 2 - 2
src/RpcMethod.cc

@@ -96,8 +96,8 @@ void gatherOption
     }
     const SharedHandle<OptionHandler>& handler = optionParser->find(pref);
     if(!handler || !pred(handler)) {
-      throw DL_ABORT_EX
-        (fmt("%s option cannot be used in this context.", optionName.c_str()));
+      // Just ignore the unacceptable options in this context.
+      continue;
     }
     const String* opval = downcast<String>((*first).second);
     if(opval) {

+ 4 - 2
test/RpcMethodTest.cc

@@ -507,7 +507,8 @@ void RpcMethodTest::testChangeOption_withNotAllowedOption()
   opt->put(PREF_MAX_OVERALL_DOWNLOAD_LIMIT->k, "100K");
   req.params->append(opt);
   RpcResponse res = m.execute(req, e_.get());
-  CPPUNIT_ASSERT_EQUAL(1, res.code);
+  // The unacceptable options are just ignored.
+  CPPUNIT_ASSERT_EQUAL(0, res.code);
 }
 
 void RpcMethodTest::testChangeOption_withoutGid()
@@ -567,7 +568,8 @@ void RpcMethodTest::testChangeGlobalOption_withNotAllowedOption()
   opt->put(PREF_ENABLE_RPC->k, "100K");
   req.params->append(opt);
   RpcResponse res = m.execute(req, e_.get());
-  CPPUNIT_ASSERT_EQUAL(1, res.code);
+  // The unacceptable options are just ignored.
+  CPPUNIT_ASSERT_EQUAL(0, res.code);
 }
 
 void RpcMethodTest::testNoSuchMethod()