summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
7c89df7)
This is cleaner in most cases and may allow Perl to reuse memory
from unused fields.
We can do this now that we no longer support Perl 5.8; since
Danga::Socket was written with struct-like pseudo-hash support
in mind, and Perl 5.9+ dropped support for pseudo-hashes over
a decade ago.
use parent qw(Exporter);
our @EXPORT_OK = qw(now msg_more write_in_full);
use warnings;
use parent qw(Exporter);
our @EXPORT_OK = qw(now msg_more write_in_full);
use warnings;
use PublicInbox::Syscall qw(:epoll);
use PublicInbox::Syscall qw(:epoll);
# env->{CONTENT_LENGTH} (identity)
my $sock = $self->{sock};
# env->{CONTENT_LENGTH} (identity)
my $sock = $self->{sock};
- my $len = $self->{input_left};
- $self->{input_left} = undef;
+ my $len = delete $self->{input_left};
my $rbuf = \($self->{rbuf});
my $input = $env->{'psgi.input'};
my $rbuf = \($self->{rbuf});
my $input = $env->{'psgi.input'};
sub response_done_cb ($$) {
my ($self, $alive) = @_;
sub {
sub response_done_cb ($$) {
my ($self, $alive) = @_;
sub {
- my $env = $self->{env};
- $self->{env} = undef;
+ my $env = delete $self->{env};
$self->write(\"0\r\n\r\n") if $alive == 2;
$self->write(sub{$alive ? next_request($self) : $self->close});
}
$self->write(\"0\r\n\r\n") if $alive == 2;
$self->write(sub{$alive ? next_request($self) : $self->close});
}
- $self->{forward} = $self->{pull} = undef;
+ delete @$self{qw(forward pull)};
# avoid recursion
if ($forward) {
eval { $forward->close };
# avoid recursion
if ($forward) {
eval { $forward->close };
my ($self) = @_;
my $input = $self->{env}->{'psgi.input'};
my $sock = $self->{sock};
my ($self) = @_;
my $input = $self->{env}->{'psgi.input'};
my $sock = $self->{sock};
- my $len = $self->{input_left};
- $self->{input_left} = undef;
+ my $len = delete $self->{input_left};
my $rbuf = \($self->{rbuf});
while (1) { # chunk start
my $rbuf = \($self->{rbuf});
while (1) { # chunk start
sub close {
my $self = shift;
sub close {
my $self = shift;
- my $forward = $self->{forward};
- my $env = $self->{env};
- delete $env->{'psgix.io'} if $env; # prevent circular references
- $self->{pull} = $self->{forward} = $self->{env} = undef;
- if ($forward) {
+ if (my $env = delete $self->{env}) {
+ delete $env->{'psgix.io'}; # prevent circular references
+ }
+ delete $self->{pull};
+ if (my $forward = delete $self->{forward}) {
eval { $forward->close };
err($self, "forward ->close error: $@") if $@;
}
eval { $forward->close };
err($self, "forward ->close error: $@") if $@;
}
# Done! Error handling will happen in $fh->close
# called by the {cleanup} handler
# Done! Error handling will happen in $fh->close
# called by the {cleanup} handler
- $http->{forward} = undef;
+ delete $http->{forward};
sub close {
my $self = shift;
sub close {
my $self = shift;
- my $cleanup = $self->{cleanup};
- $self->{cleanup} = $self->{cb} = undef;
$self->SUPER::close(@_);
# we defer this to the next timer loop since close is deferred
$self->SUPER::close(@_);
# we defer this to the next timer loop since close is deferred
- PublicInbox::EvCleanup::next_tick($cleanup) if $cleanup;
+ if (my $cleanup = delete $self->{cleanup}) {
+ PublicInbox::EvCleanup::next_tick($cleanup);
+ }
$self->{long_res} = sub {
my $more = eval { $cb->() };
if ($@ || !$self->{sock}) { # something bad happened...
$self->{long_res} = sub {
my $more = eval { $cb->() };
if ($@ || !$self->{sock}) { # something bad happened...
- $self->{long_res} = undef;
+ delete $self->{long_res};
push @$nextq, $self;
$nextt ||= PublicInbox::EvCleanup::asap(*next_tick);
} else { # all done!
push @$nextq, $self;
$nextt ||= PublicInbox::EvCleanup::asap(*next_tick);
} else { # all done!
- $self->{long_res} = undef;
+ delete $self->{long_res};
check_read($self);
res($self, '.');
out($self, " deferred[$fd] done - %0.6f", now() - $t0);
check_read($self);
res($self, '.');
out($self, " deferred[$fd] done - %0.6f", now() - $t0);