Explorar o código

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 %!s(int64=13) %!d(string=hai) anos
pai
achega
68eb1b6737
Modificáronse 2 ficheiros con 6 adicións e 4 borrados
  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()