See: http://drupal.org/node/1087528

This is a partial fix of the problem.
This fixes the part of the problem where the real node id is not used.
$node->id seems to be guaranteed whereas $node->nid seems to get overwritten due to a bug in views module around: modules/field/views_handler_field_field.inc:115
diff -Nurp ../calendar.orig/calendar.module ../calendar/calendar.module
--- ../calendar.orig/calendar.module	2011-03-28 15:17:19.560703204 -0500
+++ ../calendar/calendar.module	2011-03-28 15:19:57.202724527 -0500
@@ -421,8 +421,8 @@ function calendar_get_node_link($node, $
   if (isset($node->url)) {
     return url($node->url, array('absolute' => TRUE));
   }
-  elseif (empty($node->remote) && is_numeric($node->nid)) {
-    return url("node/$node->nid", array('absolute' => TRUE));
+  elseif (empty($node->remote) && is_numeric($node->id)) {
+    return url("node/$node->id", array('absolute' => TRUE));
   }
   elseif (!empty($default)) {
     return url($default, array('absolute' => TRUE));
