--- ../signup.6-1.edit-own/includes/signup_edit_form.inc	2009-01-21 16:56:11.000000000 -0800
+++ includes/signup_edit_form.inc	2009-01-21 17:27:50.000000000 -0800
@@ -147,13 +147,25 @@ function signup_edit_form_update_submit(
 
 /**
  * Submit callback to cancel the signup when editing an existing signup.
+ *
+ * This saves the existing destination (if any), generates a valid token for
+ * canceling the given signup, and then redirects to the signup cancel confirm
+ * form at signup/cancel/[sid]/[token] to confirm the operation.
  */
 function signup_edit_form_cancel_submit($form, &$form_state) {
-  signup_cancel_signup($form['#signup']->sid);
-  if (empty($_REQUEST['destination'])) {
+  $signup = $form['#signup'];
+
+  if (isset($_REQUEST['destination'])) {
+    $destination = drupal_get_destination();
+    unset($_REQUEST['destination']);
+  }
+  else {
     // If there's no destination already set, redirect to the node.
-    $form_state['redirect'] = 'node/'. $form['#signup']->nid;
+    $destination = 'node/'. $signup->nid;
   }
+
+  $signup_token = signup_get_token($signup->sid, 'cancel');
+  $form_state['redirect'] = array("signup/cancel/$signup->sid/$signup_token", $destination);
 }
 
 /**
