Doc fixes, get a bit nearer to working with mod_perl again
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine.pm
index 4cc8c6d..67993f1 100644 (file)
@@ -304,7 +304,8 @@ sub finalize_error {
 </html>
 
 
-    # Trick IE
+    # Trick IE. Old versions of IE would display their own error page instead
+    # of ours if we'd give it less than 512 bytes.
     $c->res->{body} .= ( ' ' x 512 );
 
     # Return 500
@@ -537,7 +538,7 @@ sub prepare_path {
     my $query = $env->{QUERY_STRING} ? '?' . $env->{QUERY_STRING} : '';
     my $uri   = $scheme . '://' . $host . '/' . $path . $query;
 
-    $ctx->request->uri( bless \$uri, $uri_class );
+    $ctx->request->uri( (bless \$uri, $uri_class)->canonical );
 
     # set the base URI
     # base must end in a slash
@@ -743,20 +744,29 @@ header.
 
 The amount of input data that has already been read.
 
-=head2 $self->run($c)
+=head2 $self->run($app, $server)
 
-Start the engine. Implemented by the various engine classes.
+Start the engine. Builds a PSGI application and calls the
+run method on the server passed in..
 
 =cut
 
 sub run {
-    my ($self, $app, @args) = @_;
-    Carp::cluck("Run");
+    my ($self, $app, $server, @args) = @_;
+    $server ||= Plack::Loader->auto(); # We're not being called from a script,
+                                       # so auto detect mod_perl or whatever
     # FIXME - Do something sensible with the options we're passed
-    $self->_run_psgi_app($self->_build_psgi_app($app, @args), @args);
+    $server->run($self->build_psgi_app($app, @args));
 }
 
-sub _build_psgi_app {
+=head2 build_psgi_app ($app, @args)
+
+Builds and returns a PSGI application closure, wrapping it in the reverse proxy
+middleware if the using_frontend_proxy config setting is set.
+
+=cut
+
+sub build_psgi_app {
     my ($self, $app, @args) = @_;
 
     my $psgi_app = sub {
@@ -782,12 +792,6 @@ sub _build_psgi_app {
     return $psgi_app;
 }
 
-sub _run_psgi_app {
-    my ($self, $psgi_app, @args);
-    # FIXME - Need to be able to specify engine and pass options..
-    Plack::Loader->auto()->run($psgi_app);
-}
-
 =head2 $self->write($c, $buffer)
 
 Writes the buffer to the client.