* [PATCH] nntp: allow and ignore empty commands
@ 2018-04-18 20:30 Eric Wong
0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2018-04-18 20:30 UTC (permalink / raw)
To: meta
Somebody hitting "\n" into telnet shouldn't hold a client up
indefinitely and prevent shutdown.
---
lib/PublicInbox/NNTP.pm | 5 +++--
t/nntpd.t | 2 ++
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index 23be775..c574c9e 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -116,6 +116,7 @@ sub args_ok ($$) {
sub process_line ($$) {
my ($self, $l) = @_;
my ($req, @args) = split(/\s+/, $l);
+ return unless defined($req);
$req = lc($req);
$req = eval {
no strict 'refs';
@@ -955,7 +956,7 @@ sub event_read {
$self->{rbuf} .= $$buf;
}
my $r = 1;
- while ($r > 0 && $self->{rbuf} =~ s/\A\s*([^\r\n]+)\r?\n//) {
+ while ($r > 0 && $self->{rbuf} =~ s/\A\s*([^\r\n]*)\r?\n//) {
my $line = $1;
return $self->close if $line =~ /[[:cntrl:]]/s;
my $t0 = now();
@@ -975,7 +976,7 @@ sub event_read {
sub watch_read {
my ($self, $bool) = @_;
my $rv = $self->SUPER::watch_read($bool);
- if ($bool && $self->{rbuf} ne '') {
+ if ($bool && index($self->{rbuf}, "\n") >= 0) {
# Force another read if there is a pipelined request.
# We don't know if the socket has anything for us to read,
# and we must double-check again by the time the timer fires
diff --git a/t/nntpd.t b/t/nntpd.t
index 2815d8d..20191cb 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -122,6 +122,8 @@ EOF
is($buf, "201 server ready - post via email\r\n", 'got greeting');
$s->autoflush(1);
+ ok(syswrite($s, " \r\n"), 'wrote spaces');
+ ok(syswrite($s, "\r\n"), 'wrote nothing');
syswrite($s, "NEWGROUPS\t19990424 000000 \033GMT\007\r\n");
is(0, sysread($s, $buf, 4096), 'GOT EOF on cntrl');
--
EW
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2018-04-18 20:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-18 20:30 [PATCH] nntp: allow and ignore empty commands 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).