From bb182bbfb2d77a565e758e9478be285a3be999a3 Mon Sep 17 00:00:00 2001
From: tomneedham <tom@owncloud.com>
Date: Thu, 14 Nov 2013 01:19:46 +0000
Subject: [PATCH] Merge multiple shipped failures before responding.

---
 lib/private/api.php | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/private/api.php b/lib/private/api.php
index 8ff6c3e7ee..3df2095ad4 100644
--- a/lib/private/api.php
+++ b/lib/private/api.php
@@ -164,8 +164,16 @@ class OC_API {
 			// They may have failed for different reasons (different status codes)
 			// Which reponse code should we return?
 			// Maybe any that are not OC_API::RESPOND_SERVER_ERROR
-			$response = reset($shipped['failed']);
-			return $response['response'];
+			// Merge failed responses if more than one
+			$data = array();
+			$meta = array();
+			foreach($shipped['failed'] as $failure) {
+				$data = array_merge_recursive($data, $failure['response']->getData());
+			}
+			$picked = reset($shipped['failed']);
+			$code = $picked['response']->getStatusCode();
+			$response = new OC_OCS_Result($data, $code);
+			return $response;
 		} elseif(!empty($shipped['succeeded'])) {
 			$responses = array_merge($shipped['succeeded'], $thirdparty['succeeded']);
 		} elseif(!empty($thirdparty['failed'])) {
-- 
GitLab