? temp.patch
Index: services.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/services/services.module,v
retrieving revision 1.8.2.88.2.20
diff -u -p -r1.8.2.88.2.20 services.module
--- services.module	26 Oct 2010 17:58:39 -0000	1.8.2.88.2.20
+++ services.module	26 Oct 2010 19:36:09 -0000
@@ -394,7 +394,7 @@ function services_method_call($method_na
   // Check for missing args
   $hash_parameters = array();
   foreach ($method['args'] as $key => $arg) {
-    if (!$arg['optional']) {
+    if (isset($arg['optional']) && !$arg['optional']) {
       if (!isset($args[$key]) && !is_array($args[$key]) && !is_bool($args[$key])) {
         return services_error(t('Missing required arguments.'), 406);
       }
@@ -854,7 +854,7 @@ function services_session_load($sessid) 
   sess_read($sessid);
 
   // Check if it really loaded the user.
-  if ($user->sid != $sessid) {
+  if (isset($user->sid) && $user->sid != $sessid) {
     services_session_unload($backup);
     return NULL;
   }
Index: services_admin_browse.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/services/Attic/services_admin_browse.inc,v
retrieving revision 1.5.2.45.2.9
diff -u -p -r1.5.2.45.2.9 services_admin_browse.inc
--- services_admin_browse.inc	20 Sep 2010 03:01:10 -0000	1.5.2.45.2.9
+++ services_admin_browse.inc	26 Oct 2010 19:36:09 -0000
@@ -84,7 +84,7 @@ function services_admin_browse_method($m
   foreach ($method['args'] as $arg) {
     $count++;
     $output .= '<dt><em class="type">'. $arg['type'] .'</em><strong class="name">'.
-      ' '. $arg['name'] .'</strong> ('. (($arg['optional']) ? t('optional') : t('required')) .')</dt>';
+      ' '. $arg['name'] .'</strong> ('. (isset($arg['optional']) && ($arg['optional']) ? t('optional') : t('required')) .')</dt>';
     $output .= '<dd>'. $arg['description'] .'</dd>';
   }
 
@@ -125,7 +125,7 @@ function services_admin_browse_test() {
       '#value' => $arg['name']
     );
     $form['optional'][$key]     = array(
-      '#value' => ($arg['optional']) ? t('optional') : t('required')
+      '#value' => (isset($arg['optional']) && $arg['optional']) ? t('optional') : t('required')
     );
 
     if (isset($arg['size']) && $arg['size'] == 'big') {
Index: auth/services_keyauth/services_keyauth.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/services/auth/services_keyauth/Attic/services_keyauth.module,v
retrieving revision 1.1.2.6.2.8
diff -u -p -r1.1.2.6.2.8 services_keyauth.module
--- auth/services_keyauth/services_keyauth.module	20 Sep 2010 02:53:57 -0000	1.1.2.6.2.8
+++ auth/services_keyauth/services_keyauth.module	26 Oct 2010 19:36:09 -0000
@@ -113,7 +113,7 @@ function services_keyauth_menu() {
 function services_get_hash($timestamp, $domain, $nonce, $method, $args) {
   $hash_parameters = array($timestamp, $domain, $nonce, $method['method']);
   foreach ($method['args'] as $key => $arg) {
-    if ($arg['signed'] == TRUE) {
+    if (isset($arg['signed']) && $arg['signed'] == TRUE) {
       if (is_numeric($args[$key]) || !empty($args[$key])) {
         if (is_array($args[$key]) || is_object($args[$key])) {
           $hash_parameters[] = serialize($args[$key]);
