Index: amfserver.resources.inc
===================================================================

@@ -96,19 +96,23 @@
     
     //loop through the arguments definitions for the callback to check for required arguments and set default values for optional arguments
     $number_of_required_arguments = 0;
+    $args = array();
+    $i = 0;
     foreach ($controller['args'] as $key => $value) {
-      if (isset($value['optional']) && $value['optional'] == FALSE) {
+      
+      if(isset($value['optional']) && $value['optional'] == FALSE)
         $number_of_required_arguments++;
+        
+      if(isset($arguments[$key]))
+        $args[$key] = $arguments[$key];
+      elseif(isset($arguments[$i]))
+        $args[$key] = $arguments[$i];
+      elseif(isset($value['optional']) && $value['optional'] == TRUE) {
+        if(isset($value['default value']))
+          $args[$key] = $value['default value'];
       }
-      else {
-        //check and set default values for optional arguments
-        if (isset($value['default value'])) {
-          //if not set, create a default value
-          if (!isset($arguments[$key])) {
-            $arguments[$key] = $value['default value'];
-          }
-        }
-      }
+           
+      $i++;
     }
     
     //check for too few arguments
@@ -117,9 +121,8 @@
         '@got' => $number_of_passed_arguments , '@expected' => $number_of_required_arguments)), 400);
     }
     
-    
      $options = array();
-     $data = services_controller_execute($controller, $arguments, $options);
+     $data = services_controller_execute($controller, $args, $options);
      return $data;
     } catch (Exception $e) {
      //convert it to the right type of exception to let zendamf handle it.
