Simplify keyserver-checking logic
authorMatthew James Goins <mjgoins@openflows.com>
Sun, 3 Oct 2010 04:45:32 +0000 (00:45 -0400)
committerMatthew James Goins <mjgoins@openflows.com>
Sun, 3 Oct 2010 04:46:04 +0000 (00:46 -0400)
msva-perl

index 7ca4b0bfba632a67c284f00c1754cd562cf25b45..1cc518158f7dcc07da300461be56a9db5f2eb9e1 100755 (executable)
--- a/msva-perl
+++ b/msva-perl
@@ -454,24 +454,18 @@ use strict;
           $ret->{message} = sprintf('public key size is less than 1000 bits (was: %d bits)', $cert->pubkey_size());
         } else {
           $ret->{message} = sprintf('Failed to validate "%s" through the OpenPGP Web of Trust.', $uid);
-          my $ks_checked = 0;
+          my $lastloop = 0;
           if (get_keyserver_policy() eq 'always') {
             fetch_uid_from_keyserver($uid);
-            $ks_checked = 1;
+            $lastloop = 1;
+          } elsif (get_keyserver_policy() eq 'never') {
+            $lastloop = 1;
           }
-          my $afterlocalpass = 0;
           my $foundvalid = 0;
           # needed because $gnupg spawns child processes
           $ENV{PATH} = '/usr/local/bin:/usr/bin:/bin';
 
           while (1) {
-
-            if ($afterlocalpass) {
-              # while loop termination condition:
-              last if ($foundvalid || $ks_checked || get_keyserver_policy() eq 'never');
-              fetch_uid_from_keyserver($uid);
-              $ks_checked = 1;
-            }
             foreach my $gpgkey ($gnupg->get_public_keys('='.$uid)) {
               my $notvalid = 1;
               foreach my $tryuid ($gpgkey->user_ids) {
@@ -503,7 +497,12 @@ use strict;
                 }
               }
             }
-            $afterlocalpass = 1;
+            if ($lastloop) {
+              last;
+            } else {
+              fetch_uid_from_keyserver($uid);
+              $lastloop = 1;
+            }
           }
         }
       } else {