Don't run the moose controller test if Moose isn't available
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine.pm
index 9b59c7d..18addd4 100644 (file)
@@ -4,10 +4,10 @@ use strict;
 use base 'Class::Accessor::Fast';
 use CGI::Simple::Cookie;
 use Data::Dump qw/dump/;
+use Errno 'EWOULDBLOCK';
 use HTML::Entities;
 use HTTP::Body;
 use HTTP::Headers;
-use IO::Select ();
 use URI::QueryParam;
 use Scalar::Util ();
 
@@ -157,6 +157,9 @@ EOF
 (no) Vennligst prov igjen senere
 (dk) Venligst prov igen senere
 (pl) Prosze sprobowac pozniej
+(pt) Por favor volte mais tarde
+(ru) Попробуйте еще раз позже
+(ua) Спробуйте ще раз пізніше
 </pre>
 
         $name = '';
@@ -314,7 +317,7 @@ sub prepare_body {
         unless ( $c->request->{_body} ) {
             my $type = $c->request->header('Content-Type');
             $c->request->{_body} = HTTP::Body->new( $type, $length );
-            $c->request->{_body}->{tmpdir} = $c->config->{uploadtmp}
+            $c->request->{_body}->tmpdir( $c->config->{uploadtmp} )
               if exists $c->config->{uploadtmp};
         }
         
@@ -452,13 +455,13 @@ sub prepare_query_parameters {
     # replace semi-colons
     $query_string =~ s/;/&/g;
     
-    my @params = split /&/, $query_string;
+    my @params = grep { length $_ } split /&/, $query_string;
 
     for my $item ( @params ) {
         
         my ($param, $value) 
             = map { $self->unescape_uri($_) }
-              split( /=/, $item );
+              split( /=/, $item, 2 );
           
         $param = $self->unescape_uri($item) unless defined $param;
         
@@ -622,29 +625,30 @@ sub write {
         $self->{_prepared_write} = 1;
     }
     
-    my $wrote;
-    my $len = length($buffer);
+    my $len   = length($buffer);
+    my $wrote = syswrite STDOUT, $buffer;
     
-    my $sel = IO::Select->new();
-    $sel->add( \*STDOUT );
+    if ( !defined $wrote && $! == EWOULDBLOCK ) {
+        # Unable to write on the first try, will retry in the loop below
+        $wrote = 0;
+    }
     
-    while ( $sel->can_write() ) {
-        $wrote ||= 0;
-        
-        my $ret = syswrite STDOUT, $buffer, $CHUNKSIZE, $wrote;
-        if ( defined $ret ) {
-            $wrote += $ret;
-        }
-        else {
-            # Write error
-            return;
+    if ( defined $wrote && $wrote < $len ) {
+        # We didn't write the whole buffer
+        while (1) {
+            my $ret = syswrite STDOUT, $buffer, $CHUNKSIZE, $wrote;
+            if ( defined $ret ) {
+                $wrote += $ret;
+            }
+            else {
+                next if $! == EWOULDBLOCK;
+                return;
+            }
+            
+            last if $wrote >= $len;
         }
-    
-        last if $wrote >= $len;
     }
     
-    $sel->remove( \*STDOUT );
-    
     return $wrote;
 }
 
@@ -669,9 +673,7 @@ sub unescape_uri {
 
 =head1 AUTHORS
 
-Sebastian Riedel, <sri@cpan.org>
-
-Andy Grundman, <andy@hybridized.org>
+Catalyst Contributors, see Catalyst.pm
 
 =head1 COPYRIGHT