소스 검색

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()