* [PATCH 01/11] ds: new: avoid redundant check, make clobbering fatal
2020-01-12 21:17 5% [PATCH 00/11] ds: various cleanups and fixes Eric Wong
@ 2020-01-12 21:17 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2020-01-12 21:17 UTC (permalink / raw)
To: meta
"fileno(undef)" already dies under "use strict", so there's no
need to check for it ourselves. As far as "fileno($closed_io)"
or "fileno($fake_io)" goes, we'll let epoll_ctl detect the
error, instead.
Our design should make DescriptorMap entries impossible to clobber,
so make it fatal via confess in case it does happen, because
inadvertantly clobbering a FD would be very bad. While we're at
it, remove a redundant return statement and rely on implicit
returns.
---
lib/PublicInbox/DS.pm | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm
index 09dc3992..00b5dca7 100644
--- a/lib/PublicInbox/DS.pm
+++ b/lib/PublicInbox/DS.pm
@@ -337,9 +337,6 @@ sub new {
$self->{sock} = $sock;
my $fd = fileno($sock);
- Carp::cluck("undef sock and/or fd in PublicInbox::DS->new. sock=" . ($sock || "") . ", fd=" . ($fd || ""))
- unless $sock && $fd;
-
_InitPoller();
if (epoll_ctl($Epoll, EPOLL_CTL_ADD, $fd, $ev)) {
@@ -349,11 +346,10 @@ sub new {
}
die "couldn't add epoll watch for $fd: $!\n";
}
- Carp::cluck("PublicInbox::DS::new blowing away existing descriptor map for fd=$fd ($DescriptorMap{$fd})")
- if $DescriptorMap{$fd};
+ confess("DescriptorMap{$fd} defined ($DescriptorMap{$fd})")
+ if defined($DescriptorMap{$fd});
$DescriptorMap{$fd} = $self;
- return $self;
}
^ permalink raw reply related [relevance 7%]
* [PATCH 00/11] ds: various cleanups and fixes
@ 2020-01-12 21:17 5% Eric Wong
2020-01-12 21:17 7% ` [PATCH 01/11] ds: new: avoid redundant check, make clobbering fatal Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2020-01-12 21:17 UTC (permalink / raw)
To: meta
Start taking advantage of autovivification to simplify our code
and reduce allocations. Also, I believe it's my first time
using the return value of "push".
Eric Wong (11):
ds: new: avoid redundant check, make clobbering fatal
ds: add_timer: rename from AddTimer, remove a parameter
ds: add an in_loop() function for Inbox.pm use
ds: remove Timer->cancel and Timer class+bless
ds: PostEventLoop: guard ToClose against DESTROY side-effects
ds|http|nntp: simplify {wbuf} population
ds: rely on autovivification for nextq
ds: rely on autovivication for waitpid bits
ds: rely on autovivification for $later_queue
ds: flatten $EXPMAP, delete entries on close
sigfd: simplify loop and improve documentation
lib/PublicInbox/DS.pm | 200 +++++++++++++++++----------------------
lib/PublicInbox/HTTP.pm | 6 +-
lib/PublicInbox/Inbox.pm | 2 +-
lib/PublicInbox/NNTP.pm | 11 +--
lib/PublicInbox/Sigfd.pm | 13 +--
t/ds-leak.t | 2 +-
6 files changed, 105 insertions(+), 129 deletions(-)
^ permalink raw reply [relevance 5%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2020-01-12 21:17 5% [PATCH 00/11] ds: various cleanups and fixes Eric Wong
2020-01-12 21:17 7% ` [PATCH 01/11] ds: new: avoid redundant check, make clobbering fatal Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).