Index: webform.module
===================================================================
--- webform.module	(revision 43)
+++ webform.module	(working copy)
@@ -60,6 +60,20 @@
 }
 
 /**
+ * Implementation of hook_init().
+ */
+function webform_init() {
+  global $user;
+  if (!$user->uid) {
+    if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == 'submission' && is_numeric(arg(3))) {
+      if (user_access('access own webform submissions') || user_access('edit own webform submissions')) {
+        $GLOBALS['conf']['cache'] = FALSE;        
+      }
+    }
+  }
+}
+
+/**
  * Implementation of hook_menu().
  */
 function webform_menu() {
@@ -297,13 +311,15 @@
   global $user;
   $account = isset($account) ? $account : $user;
 


   switch ($op) {
     case 'view':
-      return user_access('access webform results') || (user_access('access own webform submissions') && ($account->uid == $submission->uid));
+      return user_access('access webform results') || (user_access('access own webform submissions') && ($account->uid == $submission->uid) && $user->uid) || (user_access('access own webform submissions') && isset($_SESSION['webform_submission'][$submission->sid]));
     case 'edit':
-      return user_access('edit webform submissions') || (user_access('edit own webform submissions') && ($account->uid == $submission->uid));
+      return user_access('edit webform submissions') || (user_access('edit own webform submissions') && ($account->uid == $submission->uid) && $user->uid) || (user_access('edit own webform submissions') && isset($_SESSION['webform_submission'][$submission->sid])) ;
     case 'delete':
-      return user_access('edit webform submissions') || (user_access('edit own webform submissions') && ($account->uid == $submission->uid)) || user_access('clear webform results');
+      return user_access('edit webform submissions') || (user_access('edit own webform submissions') && ($account->uid == $submission->uid) && $user->uid) || (user_access('edit own webform submissions') && isset($_SESSION['webform_submission'][$submission->sid])) || user_access('clear webform results');
     case 'list':
       return user_access('access webform results') || user_access('access webform submissions') || (user_access('access own webform submissions')  && $user->uid);
   }
@@ -1772,6 +1788,7 @@
       $time = time();
       setcookie($cookie_name .'['. $time .']', $time, $time + $node->webform['submit_interval'] + 86400);
     }
+    $_SESSION['webform_submission'][$form_state['values']['details']['sid']] = $node->nid;
   }
   else {
     // Sid was found thus update the existing sid in the datatbase.
