Bladeren bron

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 jaren geleden
bovenliggende
commit
68eb1b6737
2 gewijzigde bestanden met toevoegingen van 6 en 4 verwijderingen
  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()