Index: votingapi.admin.inc
===================================================================
--- votingapi.admin.inc	(revision 768)
+++ votingapi.admin.inc	(working copy)
@@ -20,6 +20,17 @@
     '#options' => $period
   );
 
+  $form['votingapi_anonymous_validation_method'] = array(
+    '#type' => 'select',
+    '#title' => t('Anonymous validation method'),
+    '#description' => t('By default, voting api will handle vote validation on unique IP. With this setting, you can choose to validate on the unique session ID.'),
+    '#default_value' => variable_get('votingapi_anonymous_validation_method', 'ip'),
+    '#options' => array(
+      'ip' => t('Normal approach with IP validation'),
+      'session' => t('Session id validation')
+    )
+  );
+
   $form['votingapi_calculation_schedule'] = array(
     '#type' => 'radios',
     '#title' => t('Vote tallying'),
@@ -94,16 +105,16 @@
 
   $uids = devel_get_users();
   $nids = array();
-  
+
   $sql  = "SELECT n.nid, n.created FROM {node} n ";
   $sql .= "WHERE n.type IN (" . db_placeholders($node_types, 'varchar') . ") ";
   $sql .= "ORDER BY n.created DESC";
-  
+
   $results = db_query($sql, $node_types);
   while ($node = db_fetch_array($results)) {
     $nids[$node['nid']] = $node['created'];
   }
-  
+
   foreach ($nids as $nid => $timestamp) {
     _votingapi_cast_votes($nid, $timestamp, $uids, $vote_type);
   }
Index: votingapi.module
===================================================================
--- votingapi.module	(revision 768)
+++ votingapi.module	(working copy)
@@ -177,7 +177,7 @@
   global $user;
   $criteria = array('uid' => $user->uid);
   if (!$user->uid) {
-    $criteria['vote_source'] = ip_address();
+    $criteria['vote_source'] = variable_get('votingapi_anonymous_validation_method', 'ip') == 'session' ? session_id() : ip_address();
   }
   return $criteria;
 }
@@ -466,7 +466,7 @@
 
     drupal_alter('votingapi_metadata', $data);
   }
-  
+
   return $data;
 }
 
@@ -539,7 +539,7 @@
       'tag' => 'vote',
       'uid' => $user->uid,
       'timestamp' => time(),
-      'vote_source' => ip_address(),
+      'vote_source' => (variable_get('votingapi_anonymous_validation_method', 'ip') == 'session' ? session_id() : ip_address()),
       'prepped' => TRUE
     );
   }
