mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-17 14:46:16 +00:00
* Bumped version.
* Fixed a crash when XMLRPC download commands were called without any arguments. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@926 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
AC_INIT(rtorrent, 0.7.5, jaris@ifi.uio.no)
|
AC_INIT(rtorrent, 0.7.6, jaris@ifi.uio.no)
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE
|
AM_INIT_AUTOMAKE
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|||||||
+15
-9
@@ -151,27 +151,32 @@ XmlRpc::xmlrpc_to_object_d(xmlrpc_env* env, xmlrpc_value* value, core::Download*
|
|||||||
switch (xmlrpc_value_type(value)) {
|
switch (xmlrpc_value_type(value)) {
|
||||||
case XMLRPC_TYPE_STRING:
|
case XMLRPC_TYPE_STRING:
|
||||||
*download = xmlrpc_to_download(env, value);
|
*download = xmlrpc_to_download(env, value);
|
||||||
return torrent::Object();
|
break;
|
||||||
|
|
||||||
case XMLRPC_TYPE_ARRAY:
|
case XMLRPC_TYPE_ARRAY:
|
||||||
{
|
{
|
||||||
unsigned int last = xmlrpc_array_size(env, value);
|
unsigned int last = xmlrpc_array_size(env, value);
|
||||||
|
|
||||||
if (env->fault_occurred || last < 1)
|
if (env->fault_occurred)
|
||||||
return torrent::Object();
|
break;
|
||||||
|
|
||||||
|
if (last < 1) {
|
||||||
|
xmlrpc_env_set_fault(env, XMLRPC_TYPE_ERROR, "Unsupported type found.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Need to decref.
|
// Need to decref.
|
||||||
xmlrpc_value* tmpDownload;
|
xmlrpc_value* tmpDownload;
|
||||||
xmlrpc_array_read_item(env, value, 0, &tmpDownload);
|
xmlrpc_array_read_item(env, value, 0, &tmpDownload);
|
||||||
|
|
||||||
if (env->fault_occurred)
|
if (env->fault_occurred)
|
||||||
return torrent::Object();
|
break;
|
||||||
|
|
||||||
*download = xmlrpc_to_download(env, tmpDownload);
|
*download = xmlrpc_to_download(env, tmpDownload);
|
||||||
xmlrpc_DECREF(tmpDownload);
|
xmlrpc_DECREF(tmpDownload);
|
||||||
|
|
||||||
if (env->fault_occurred)
|
if (env->fault_occurred)
|
||||||
return torrent::Object();
|
break;
|
||||||
|
|
||||||
torrent::Object result;
|
torrent::Object result;
|
||||||
|
|
||||||
@@ -186,7 +191,7 @@ XmlRpc::xmlrpc_to_object_d(xmlrpc_env* env, xmlrpc_value* value, core::Download*
|
|||||||
xmlrpc_array_read_item(env, value, i, &tmp);
|
xmlrpc_array_read_item(env, value, i, &tmp);
|
||||||
|
|
||||||
if (env->fault_occurred)
|
if (env->fault_occurred)
|
||||||
return torrent::Object();
|
break;
|
||||||
|
|
||||||
listRef.push_back(xmlrpc_to_object(env, tmp));
|
listRef.push_back(xmlrpc_to_object(env, tmp));
|
||||||
xmlrpc_DECREF(tmp);
|
xmlrpc_DECREF(tmp);
|
||||||
@@ -200,7 +205,7 @@ XmlRpc::xmlrpc_to_object_d(xmlrpc_env* env, xmlrpc_value* value, core::Download*
|
|||||||
xmlrpc_array_read_item(env, value, 1, &tmp);
|
xmlrpc_array_read_item(env, value, 1, &tmp);
|
||||||
|
|
||||||
if (env->fault_occurred)
|
if (env->fault_occurred)
|
||||||
return torrent::Object();
|
break;
|
||||||
|
|
||||||
result = xmlrpc_to_object(env, tmp);
|
result = xmlrpc_to_object(env, tmp);
|
||||||
xmlrpc_DECREF(tmp);
|
xmlrpc_DECREF(tmp);
|
||||||
@@ -211,8 +216,9 @@ XmlRpc::xmlrpc_to_object_d(xmlrpc_env* env, xmlrpc_value* value, core::Download*
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
xmlrpc_env_set_fault(env, XMLRPC_TYPE_ERROR, "Unsupported type found.");
|
xmlrpc_env_set_fault(env, XMLRPC_TYPE_ERROR, "Unsupported type found.");
|
||||||
return torrent::Object();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return torrent::Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlrpc_value*
|
xmlrpc_value*
|
||||||
@@ -260,7 +266,7 @@ XmlRpc::call_command(xmlrpc_env* env, xmlrpc_value* args, void* voidServerInfo)
|
|||||||
|
|
||||||
xmlrpc_value*
|
xmlrpc_value*
|
||||||
XmlRpc::call_command_d(xmlrpc_env* env, xmlrpc_value* args, void* voidServerInfo) {
|
XmlRpc::call_command_d(xmlrpc_env* env, xmlrpc_value* args, void* voidServerInfo) {
|
||||||
core::Download* download;
|
core::Download* download = NULL;
|
||||||
torrent::Object object = xmlrpc_to_object_d(env, args, &download);
|
torrent::Object object = xmlrpc_to_object_d(env, args, &download);
|
||||||
|
|
||||||
if (env->fault_occurred)
|
if (env->fault_occurred)
|
||||||
|
|||||||
Reference in New Issue
Block a user