Index: auth/services_keyauth/services_keyauth.module
===================================================================
--- auth/services_keyauth/services_keyauth.module	(revision 924)
+++ auth/services_keyauth/services_keyauth.module	(working copy)
@@ -113,7 +113,7 @@
 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]);
Index: services.module
===================================================================
--- services.module	(revision 924)
+++ services.module	(working copy)
@@ -394,7 +394,7 @@
   // 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);
       }
@@ -832,9 +832,11 @@
     return $user;
   }
 
-  // Make backup of current user and session data
+  // Make backup of current user and any existing session data
   $backup = $user;
-  $backup->session = session_encode();
+  if (isset($_SESSION)) {
+    $backup->session = session_encode();
+  }
 
   // Empty current session data
   $_SESSION = array();
@@ -869,7 +871,7 @@
   global $user;
 
   // No point in reverting if it's the same user's data
-  if ($user->sid == $backup->sid) {
+  if (isset($user->sid) && isset($backup->sid) && ($user->sid == $backup->sid)) {
     return;
   }
 
Index: services_admin_browse.inc
===================================================================
--- services_admin_browse.inc	(revision 924)
+++ services_admin_browse.inc	(working copy)
@@ -84,7 +84,7 @@
   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 @@
       '#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') {
