]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/HTTP.pm
http: improve error handling for aborted responses
[public-inbox.git] / lib / PublicInbox / HTTP.pm
index c7fb954ebd6c0f0b472dce57bf1a07601a01866c..973da3418c76282e3d38989c0e04f1130c4349f1 100644 (file)
@@ -135,6 +135,9 @@ sub app_dispatch ($) {
        sysseek($env->{'psgi.input'}, 0, SEEK_SET) or
                        die "BUG: psgi.input seek failed: $!";
 
+       # note: NOT $self->{sock}, we want our close (+ Danga::Socket::close),
+       # to do proper cleanup:
+       $env->{'psgix.io'} = $self; # only for ->close
        my $res = Plack::Util::run_app($self->{httpd}->{app}, $env);
        eval {
                if (ref($res) eq 'CODE') {
@@ -371,6 +374,12 @@ sub quit {
 sub event_hup { $_[0]->close }
 sub event_err { $_[0]->close }
 
+sub close {
+       my $self = shift;
+       $self->{env} = undef;
+       $self->SUPER::close(@_);
+}
+
 sub write ($$) : method {
        my PublicInbox::HTTP $self = $_[0];
        return 1 if (defined($_[1]) && ref($_[1]) eq '' && $_[1] eq '');