diff Lib/IMPL/Web/Handler/ErrorHandler.pm @ 230:6d8092d8ce1b

*reworked IMPL::Security *reworked IMPL::Web::Security *refactoring
author sergey
date Mon, 08 Oct 2012 03:37:37 +0400
parents 47f77e6409f7
children 3cebcf6fdb9b
line wrap: on
line diff
--- a/Lib/IMPL/Web/Handler/ErrorHandler.pm	Sat Sep 29 02:34:47 2012 +0400
+++ b/Lib/IMPL/Web/Handler/ErrorHandler.pm	Mon Oct 08 03:37:37 2012 +0400
@@ -49,12 +49,14 @@
 			error => $err
 		};
 		
-		my $code = 500;
+		my $status = "500 Internal Server Error";
 		
 		if (eval { $err->isa(WebException) }) {
-			($code) = ($err->status =~ m/^(\d+)/);
+			$status = $err->status;
 		}
 		
+		my ($code) = ($status =~ m/^(\d+)/);
+		
 		my $doc = $this->loader->document(
             $this->errors->{$code} || $this->fallback,
             $vars
@@ -63,10 +65,10 @@
         my $text = $doc->Render($vars);
         
         $result = HttpResponse->new(
-            status => $err->status,
+            status => $status,
             type => $this->contentType,
             charset => 'utf-8',
-            headers => $err->headers,
+            headers => eval{ $err->headers } || {},
             body => $text
         );
 	}