require PublicInbox::EvCleanup;
use Email::Simple;
use POSIX qw(strftime);
-PublicInbox::DS->import(qw(now));
+use PublicInbox::DS qw(now);
use Digest::SHA qw(sha1_hex);
use Time::Local qw(timegm timelocal);
use constant {
} elsif ($more) { # $self->{wbuf}:
update_idle_time($self);
+ # COMPRESS users all share the same DEFLATE context.
+ # Flush it here to ensure clients don't see
+ # each other's data
+ $self->zflush;
+
# no recursion, schedule another call ASAP
# but only after all pending writes are done
my $wbuf = $self->{wbuf} ||= [];
$long_cb = undef;
res($self, '.');
out($self, " deferred[$fd] done - %0.6f", now() - $t0);
- $self->requeue unless $self->{wbuf};
+ my $wbuf = $self->{wbuf};
+ $self->requeue unless $wbuf && @$wbuf;
}
};
$self->write($long_cb); # kick off!
# RFC 8054
sub cmd_compress ($$) {
my ($self, $alg) = @_;
- return '503 Only the DEFLATE is supported' if uc($alg) ne 'DEFLATE';
+ return '503 Only DEFLATE is supported' if uc($alg) ne 'DEFLATE';
return r502 if $self->compressed || !$have_deflate;
- res($self, '206 Compression active');
PublicInbox::NNTPdeflate->enable($self);
$self->requeue;
undef
}
+sub zflush {} # overridden by NNTPdeflate
+
sub cmd_xpath ($$) {
my ($self, $mid) = @_;
return r501 unless $mid =~ /\A<(.+)>\z/;