diff options
author | Eric Wong <e@yhbt.net> | 2020-01-12 21:17:51 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-01-13 23:21:25 +0000 |
commit | a65ebdc3a1f064bab0cddf64b34caad49f1c4c9c (patch) | |
tree | 2f3dea59884e4d6ee37393abd5f3a901593f4b79 /lib/PublicInbox/DS.pm | |
parent | 8f23c134b6c9bfc9f23b3eed7811082e6d33a84c (diff) | |
download | public-inbox-a65ebdc3a1f064bab0cddf64b34caad49f1c4c9c.tar.gz |
We can rely on autovification to turn `undef' value of {wbuf} into an arrayref. Furthermore, "push" returns the (new) size of the array since at least Perl 5.0 (I didn't look further back), so we can use that return value instead of calling "scalar" again.
Diffstat (limited to 'lib/PublicInbox/DS.pm')
-rw-r--r-- | lib/PublicInbox/DS.pm | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index d0aefec0..f7c8ad2b 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -31,7 +31,7 @@ use PublicInbox::Tmpfile; use fields ('sock', # underlying socket 'rbuf', # scalarref, usually undef - 'wbuf', # arrayref of coderefs or GLOB refs + 'wbuf', # arrayref of coderefs or GLOB refs (autovivified) 'wbuf_off', # offset into first element of wbuf to start writing at ); @@ -555,7 +555,7 @@ sub write { # wbuf may be an empty array if we're being called inside # ->flush_write via CODE bref: - push @{$self->{wbuf} ||= []}, $tmpio; + push @{$self->{wbuf}}, $tmpio; # autovivifies return 0; } } @@ -575,8 +575,7 @@ sub msg_more ($$) { return 1 if $nlen == 0; # all done! # queue up the unwritten substring: my $tmpio = tmpio($self, \($_[1]), $n) or return 0; - $self->{wbuf} //= $wbuf //= []; - push @$wbuf, $tmpio; + push @{$self->{wbuf}}, $tmpio; # autovivifies epwait($sock, EPOLLOUT|EPOLLONESHOT); return 0; } @@ -599,7 +598,7 @@ sub accept_tls_step ($) { return 1 if $sock->accept_SSL; return $self->close if $! != EAGAIN; epwait($sock, PublicInbox::TLS::epollbit() | EPOLLONESHOT); - unshift @{$self->{wbuf} ||= []}, \&accept_tls_step; + unshift(@{$self->{wbuf}}, \&accept_tls_step); # autovivifies 0; } @@ -610,7 +609,7 @@ sub shutdn_tls_step ($) { return $self->close if $sock->stop_SSL(SSL_fast_shutdown => 1); return $self->close if $! != EAGAIN; epwait($sock, PublicInbox::TLS::epollbit() | EPOLLONESHOT); - unshift @{$self->{wbuf} ||= []}, \&shutdn_tls_step; + unshift(@{$self->{wbuf}}, \&shutdn_tls_step); # autovivifies 0; } |