'patch_comment_delete' => \&PgCommitFest::PatchComment::delete
);
-our $PG = 'dbi:Pg:dbname=pgcommitfest';
-our $PGUSERNAME = 'pgcommitfest';
-our $PGPASSWORD = '';
-
sub main_loop {
$SIG{'PIPE'} = sub { die "SIGPIPE\n"; };
while (1) {
# Invoke main request handler and save any resulting error message.
- my $db = PgCommitFest::DB->connect($PG, $PGUSERNAME, $PGPASSWORD);
- my $r = PgCommitFest::Request->new($db);
+ my $r = PgCommitFest::Request->new();
last if !defined $r;
eval {
handler($r);
my $err = $@;
# Roll back any uncommited database work.
- $db->tidy;
+ $r->db->tidy if $r->db_is_connected;
# Print errors to system log.
if ($err && $err ne "SIGPIPE\n" && $err ne "DONE\n") {
$r->render_template('error', { 'error_list' => [ $err ] });
}
}
- $db->disconnect;
}
}
our $ROOT = $ENV{'PGCOMMITFEST_ROOT'};
our $template = Template->new({ 'INCLUDE_PATH' => $ROOT . '/template',
'FILTERS' => { 'htmlsafe' => \&PgCommitFest::WebControl::escape } });
+our $PG = 'dbi:Pg:dbname=pgcommitfest';
+our $PGUSERNAME = 'pgcommitfest';
+our $PGPASSWORD = '';
$CGI::POST_MAX = 65536;
$CGI::DISABLE_UPLOADS = 1; # No need for uploads at present.
'cgi' => $cgi,
'control' => {},
'control_list' => [],
- 'db' => $db,
+ 'db' => undef,
'error_list' => [],
'header' => {
'Content-type' => 'text/html',
sub db {
my ($self) = @_;
+ if (!defined $self->{'db'}) {
+ $self->{'db'} =
+ PgCommitFest::DB->connect($PG, $PGUSERNAME, $PGPASSWORD);
+ }
return $self->{'db'};
}
+sub db_is_connected {
+ my ($self) = @_;
+ defined $self->{'db'};
+}
+
sub error {
my ($self, $fmt, @arg) = @_;
push @{$self->{'error_list'}}, sprintf($fmt, @arg);