chiark / gitweb /
break out local_part_inuse
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 Sep 2013 22:00:41 +0000 (23:00 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 Sep 2013 22:00:41 +0000 (23:00 +0100)
service

diff --git a/service b/service
index 741206c8c318c691adb906e2130c876a3124fb1b..a966409b8da72bc043b42c9a52506cbf689f6aac 100755 (executable)
--- a/service
+++ b/service
@@ -145,9 +145,16 @@ sub rhsargs ($) {
     return $row;
 }
 
-sub generate_local_part () {
+sub local_part_inuse ($) {
+    my ($s) = @_;
     our $checkexist_q ||=
        $dbh->prepare("SELECT localpart FROM addrs WHERE localpart=?");
+    $checkexist_q->execute($s);
+    my $row = $checkexist_q->fetchrow_arrayref();
+    return !!$row;
+}
+
+sub generate_local_part () {
     my $s;
     for (;;) {
        $s = chr(ord('a')+goodrand(26));
@@ -158,9 +165,7 @@ sub generate_local_part () {
                      : ord('0')+($v-26));
        }
 #      print STDERR "$s\n";
-       $checkexist_q->execute($s);
-       my $row = $checkexist_q->fetchrow_arrayref();
-       last if !$row;
+       last if !local_part_inuse($s);
     }
     return $s;
 }