Printer in Admin - kleine Korrekturen
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 30 Sep 2010 11:04:54 +0000 (13:04 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 30 Sep 2010 11:04:54 +0000 (13:04 +0200)
1. Eine Debugmeldung rausgenommen
2. Eine Unsauberkeit behoben die beim Portieren auf 2.6.1 aufgefallen ist.
Folgender Code crasht:

for (1) {
  1 while <>;
}

weil das gealiaste $_ read-only flagged ist, und <> das beschrieben will. Genau
das konnte passieren, wenn die Locales aus auth erstellt wurden und die
special_chars einlesen wollten, aber noch ein alias $_ => 1 aus dem
printer_dispatcher aktuell war.

3. Im admin bereich gezogene user_dbh wurden nicht richtig geschlossen, was ein
Speicherleck unter fcgi bedeutet, und unter cgi das log mit Warnungen flutet,
dass das handle in destruction geschlossen wurde und ein rollback gemacht hat.

SL/Printer.pm
bin/mozilla/admin_printer.pl

index 346d734..ed42b01 100644 (file)
@@ -12,6 +12,8 @@ sub all_printers {
   my $query = qq|SELECT * FROM printers ORDER BY printer_description|;
   my @printers = selectall_hashref_query($::form, $dbh, $query);
 
+  $dbh->disconnect;
+
   $::lxdebug->leave_sub;
 
   return wantarray ? @printers : \@printers;
@@ -27,6 +29,8 @@ sub get_printer {
   my $query = qq|SELECT * FROM printers WHERE id = ?|;
   my ($printer) = selectfirst_hashref_query($::form, $dbh, $query, $params{id});
 
+  $dbh->disconnect;
+
   $::lxdebug->leave_sub;
 
   return $printer;
@@ -61,6 +65,7 @@ SQL
   );
 
   $dbh->commit;
+  $dbh->disconnect;
 
   $::lxdebug->leave_sub;
 }
@@ -76,6 +81,7 @@ sub delete_printer {
   do_query($::form, $dbh, $query, $params{id});
 
   $dbh->commit;
+  $dbh->disconnect;
 
   $::lxdebug->leave_sub;
 }
index bc62332..b245b56 100644 (file)
@@ -20,10 +20,9 @@ sub get_login_form {
 }
 
 sub printer_dispatcher {
-      $::lxdebug->dump(0,  "testing", $::form);
-  for (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer list_users)) {
-    if ($::form->{$_}) {
-      ::call_sub($::locale->findsub($_));
+  for my $action (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer list_users)) {
+    if ($::form->{$action}) {
+      ::call_sub($::locale->findsub($action));
       ::end_of_request()
     }
   }