use SL::Template::Plugin::HTMLFixes;
use SL::User;
+use Rose::Object::MakeMethods::Generic (
+ scalar => [ qw(restart_after_request) ],
+);
+
# Trailing new line is added so that Perl will not add the line
# number 'die' was called in.
use constant END_OF_REQUEST => "END-OF-REQUEST\n";
print $::form->parse_html_template($template, \%params);
$::lxdebug->leave_sub;
- ::end_of_request();
+ end_request();
}
sub pre_startup_setup {
my $request = FCGI::Request();
while ($request->Accept() >= 0) {
$self->handle_request($request);
- if (_memory_usage_is_too_high()) {
- $request->Flush();
- last;
- }
+
+ $self->restart_after_request(1) if $self->_interface_is_fcgi && $self->_memory_usage_is_too_high;
+ $request->LastCall if $self->restart_after_request;
}
+
+ exec $0 if $self->restart_after_request;
}
sub handle_request {
action => $action,
);
- ::end_of_request() unless $auth_result{auth_ok};
+ $self->end_request unless $auth_result{auth_ok};
delete @{ $::form }{ grep { m/^\{AUTH\}/ } keys %{ $::form } } unless $auth_result{keep_auth_vars};
$::request = undef;
SL::DBConnect::Cache->reset_all;
- Form::disconnect_standard_dbh;
$self->_watch_for_changed_files;
$action .= '&error=' . $params{error} if $params{error};
print $::request->cgi->redirect("controller.pl?action=${action}");
- ::end_of_request();
+ $self->end_request;
}
sub unrequire_bin_mozilla {
my $ok = all { (stat($_))[9] == $fcgi_file_cache{$_} } keys %fcgi_file_cache;
return if $ok;
$::lxdebug->message(LXDebug::DEBUG1(), "Program modifications detected. Restarting.");
- exit;
+ $self->restart_after_request(1);
}
sub get_standard_filehandles {
$::form->header;
print $::form->parse_html_template('login_screen/old_configuration_files', { FILES => \@old_files });
- ::end_of_request();
+ end_request();
}
sub _parse_number_with_unit {
return 0;
}
-package main;
-
-use strict;
-
-sub end_of_request {
+sub end_request {
die SL::Dispatcher->END_OF_REQUEST;
}