Index: modules/poll/poll.module
===================================================================
RCS file: /cvsroot/drupal-common/drupal-core/modules/poll/poll.module,v
retrieving revision 1.1.6.2
diff -r1.1.6.2 poll.module
16a17
>       $output .= '<p>'. t('The voting is managed using cookies, so different users with same IP (e.g. from the same company) can still vote. If cookies are disabled in a user\'s browser it falls back on IP-based voting.') .'</p>';
411c412,428
<       $result = db_fetch_object(db_query("SELECT chorder FROM {poll_votes} WHERE nid = %d AND hostname = '%s'", $node->nid, ip_address()));
---
>       if (!isset($_COOKIE["poll-".$node->nid])) {
>         $iprnd = ip_address().'-'.rand();
>         setcookie("poll-".$node->nid, (string) $iprnd, (time()+60*60*24*365), "/");
>         $_COOKIE["poll-".$node->nid] = $iprnd;
>       }
>       if (isset($_COOKIE["poll-".$node->nid])) {
>         $iprnd = $_COOKIE["poll-".$node->nid];
>         if(!preg_match("/^[0-9.\\-]+$/", $iprnd)){
>           $result = db_fetch_object(db_query("SELECT chorder FROM {poll_votes} WHERE nid = %d AND hostname = '%s'", $node->nid, ip_address()));
>         }
>         else {
>           $result = db_fetch_object(db_query("SELECT chorder FROM {poll_votes} WHERE nid = %d AND hostname = '%s'", $node->nid, $iprnd));
>         }
>       }
>       else{
>         $result = db_fetch_object(db_query("SELECT chorder FROM {poll_votes} WHERE nid = %d AND hostname = '%s'", $node->nid, ip_address()));
>       }
418a436,439
>       if (!isset($_COOKIE["poll-".$node->nid])) {
>         $iprnd = ip_address().'-'.rand();
>         setcookie("poll-".$node->nid, (string) $iprnd, (time()+60*60*24*365), "/");
>       }
604c625,635
<     db_query("INSERT INTO {poll_votes} (nid, chorder, hostname) VALUES (%d, %d, '%s')", $node->nid, $choice, ip_address());
---
>     if (isset($_COOKIE["poll-".$node->nid])) {
>       $iprnd = $_COOKIE["poll-".$node->nid];
>       if(!preg_match("/^[0-9.\\-]+$/", $iprnd)){
>         drupal_set_message(t('Your vote wasn\'t recorded.'));
>         return;
>       }
>       db_query("INSERT INTO {poll_votes} (nid, chorder, hostname) VALUES (%d, %d, '%s')", $node->nid, $choice, $iprnd);
>     }
>     else {
>       db_query("INSERT INTO {poll_votes} (nid, chorder, hostname) VALUES (%d, %d, '%s')", $node->nid, $choice, ip_address());
>     }
606c637
< 
---
>   
778a810,814
> 
>   // Vote canceled, delete any poll cookies
>   if (isset($_COOKIE["poll-".$node->nid])) {
>     setcookie("poll-".$node->nid, "", time() - 3600, "/");
>   }
