Переглянути джерело

2009-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	In XML-RPC option struct, header and index-out option can take
	array as value.
	* src/XmlRpcMethod.cc
Tatsuhiro Tsujikawa 16 роки тому
батько
коміт
dd6d098ccb
2 змінених файлів з 18 додано та 3 видалено
  1. 6 0
      ChangeLog
  2. 12 3
      src/XmlRpcMethod.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2009-05-14  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	In XML-RPC option struct, header and index-out option can take
+	array as value.
+	* src/XmlRpcMethod.cc
+
 2009-05-13  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Removed unused option member from PeerConnection.

+ 12 - 3
src/XmlRpcMethod.cc

@@ -48,6 +48,7 @@
 #include "array_fun.h"
 #include "download_helper.h"
 #include "XmlRpcRequest.h"
+#include "prefs.h"
 
 namespace aria2 {
 
@@ -182,9 +183,17 @@ void XmlRpcMethod::gatherRequestOption
       i != listRequestOptions().end(); ++i) {
     if(optionsDict.containsKey(*i)) {
       const BDE& value = optionsDict[*i];
-      if(value.isString()) {
-	_optionParser->findByName(*i)->parse
-	  (*option.get(), value.s());
+      SharedHandle<OptionHandler> optionHandler = _optionParser->findByName(*i);
+      // header and index-out option can take array as value
+      if((*i == PREF_HEADER || *i == PREF_INDEX_OUT) && value.isList()) {
+	for(BDE::List::const_iterator argiter = value.listBegin();
+	    argiter != value.listEnd(); ++argiter) {
+	  if((*argiter).isString()) {
+	    optionHandler->parse(*option.get(), (*argiter).s());
+	  }
+	}
+      } else if(value.isString()) {
+	optionHandler->parse(*option.get(), value.s());
       }
     }
   }