some updates
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Dispatcher.pm
index fd99ba4..d5c2aeb 100644 (file)
@@ -61,14 +61,17 @@ sub dispatch {
         }
 
         # Execute the auto chain
+        my $auto = 0;
         for my $auto ( @{ $c->get_action( 'auto', $namespace ) } ) {
             $c->execute( @{ $auto->[0] } );
             return if scalar @{ $c->error };
             last unless $c->state;
+            $auto++;
         }
 
         # Execute the action or last default
-        if ( ( my $action = $c->req->action ) && $c->state ) {
+        my $mkay = $auto ? $c->state ? 1 : 0 : 1;
+        if ( ( my $action = $c->req->action ) && $mkay ) {
             if ( my $result = @{ $c->get_action( $action, $default ) }[-1] ) {
                 $c->execute( @{ $result->[0] } );
             }
@@ -121,7 +124,9 @@ sub forward {
     unless ( @{$results} ) {
         my $class = $command;
         if ( $class =~ /[^\w\:]/ ) {
-            $c->log->debug(qq/Couldn't forward to "$class"/) if $c->debug;
+            my $error = qq/Couldn't forward to "$class"/;
+            $c->error($error);
+            $c->log->debug($error) if $c->debug;
             return 0;
         }
         my $method = shift || 'process';
@@ -130,7 +135,9 @@ sub forward {
             $results = [ [ [ $class, $code ] ] ];
         }
         else {
-            $c->log->debug(qq/Couldn't forward to "$class->$method"/)
+            my $error = qq/Couldn't forward to "$class->$method"/;
+            $c->error($error);
+            $c->log->debug($error)
               if $c->debug;
             return 0;
         }
@@ -232,9 +239,10 @@ sub set_action {
     }
 
     if ( $flags{private} && ( keys %flags > 1 ) ) {
-        $c->log->error( 'Bad action definition "'
+        $c->log->debug( 'Bad action definition "'
               . join( ' ', @{$attrs} )
-              . qq/" for "$namespace->$method"/ );
+              . qq/" for "$namespace->$method"/ )
+          if $c->debug;
         return;
     }
     return unless keys %flags;