chiark / gitweb /
return 1 from module load
[cgi-auth-flexible.git] / cgi-auth-flexible.pm
index c7ded66d751abbe2049e579e7da05763e009af13..fb161cc8f315a5d2ea6f7c84e0bdec12725f08e6 100644 (file)
@@ -180,6 +180,7 @@ sub new_verifier {
     my $verifier = {
        S => {
             dir => undef,
     my $verifier = {
        S => {
             dir => undef,
+           assocdb_dbh => undef, # must have AutoCommit=0, RaiseError=1
            assocdb_path => 'caf-assocs.db',
            keys_path => 'caf-keys',
            assocdb_dsn => undef,
            assocdb_path => 'caf-assocs.db',
            keys_path => 'caf-keys',
            assocdb_dsn => undef,
@@ -254,17 +255,23 @@ sub _dbopen ($) {
     my $dbh = $v->{Dbh};
     return $dbh if $dbh; 
 
     my $dbh = $v->{Dbh};
     return $dbh if $dbh; 
 
-    $v->{S}{assocdb_dsn} ||= "dbi:SQLite:dbname=".$v->_get_path('assocdb');
-    my $dsn = $v->{S}{assocdb_dsn};
-
-    my $u = umask 077;
-    $dbh = DBI->connect($dsn, $v->{S}{assocdb_user}, 
-                        $v->{S}{assocdb_password}, { 
-                            AutoCommit => 0,
-                            RaiseError => 1,
-                            ShowErrorStatement => 1,
-                        });
-    die "$dsn $! ?" unless $dbh;
+    $dbh = $v->{S}{assocdb_dbh};
+    if ($dbh) {
+        die if $dbh->{AutoCommit};
+        die unless $dbh->{RaiseError};
+    } else {
+        $v->{S}{assocdb_dsn} ||= "dbi:SQLite:dbname=".$v->_get_path('assocdb');
+        my $dsn = $v->{S}{assocdb_dsn};
+
+        my $u = umask 077;
+        $dbh = DBI->connect($dsn, $v->{S}{assocdb_user},
+                            $v->{S}{assocdb_password}, {
+                                AutoCommit => 0,
+                                RaiseError => 1,
+                                ShowErrorStatement => 1,
+                            });
+        die "$dsn $! ?" unless $dbh;
+    }
     $v->{Dbh} = $dbh;
 
     $v->_db_setup_do("CREATE TABLE $v->{S}{assocdb_table} (".
     $v->{Dbh} = $dbh;
 
     $v->_db_setup_do("CREATE TABLE $v->{S}{assocdb_table} (".
@@ -999,6 +1006,8 @@ sub secret_cookie ($) {
     return $cookv;
 }
 
     return $cookv;
 }
 
+1;
+
 __END__
 
 =head1 NAME
 __END__
 
 =head1 NAME