X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FHTTP.pm;h=808cbca4cb50e3ae1dd51a40b991315ccfd1629e;hb=00c9932455ecd6ca565d60d76180a2d850b7317b;hp=881bf278e6534039efb9a22f8b7179bd385b6a0b;hpb=8b9d02987edc3e51c44c36aef698de78659a0c35;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/HTTP.pm b/lib/Catalyst/Engine/HTTP.pm index 881bf27..808cbca 100644 --- a/lib/Catalyst/Engine/HTTP.pm +++ b/lib/Catalyst/Engine/HTTP.pm @@ -50,7 +50,12 @@ sub finalize_headers { $c->response->headers->date(time); $c->response->headers->header( Connection => $self->_keep_alive ? 'keep-alive' : 'close' ); - $self->NEXT::finalize_headers($c); + + $c->response->header( Status => $c->response->status ); + + # Avoid 'print() on closed filehandle Remote' warnings when using IE + print $c->response->headers->as_string("\015\012") if *STDOUT->opened(); + print "\015\012" if *STDOUT->opened(); } =head2 $self->finalize_read($c) @@ -106,6 +111,19 @@ sub read_chunk { } } +=head2 $self->write($c, $buffer) + +Writes the buffer to the client. Can only be called once for a request. + +=cut + +sub write { + # Avoid 'print() on closed filehandle Remote' warnings when using IE + return unless *STDOUT->opened(); + + shift->NEXT::write( @_ ); +} + =head2 run =cut @@ -335,10 +353,11 @@ sub _parse_request_line { sub _socket_data { my ( $self, $handle ) = @_; - my $iaddr; - my $remote_sockaddr = getpeername($handle); - ( undef, $iaddr ) = sockaddr_in($remote_sockaddr); + my ( undef, $iaddr ) = $remote_sockaddr + ? sockaddr_in($remote_sockaddr) + : (undef, undef); + my $local_sockaddr = getsockname($handle); my ( undef, $localiaddr ) = sockaddr_in($local_sockaddr);