]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/NNTP.pm
nntp: improve error reporting for COMPRESS
[public-inbox.git] / lib / PublicInbox / NNTP.pm
index d6f315bab42a9ed7e0b8b607a3ba6cf01066ef55..6fee29f4819b384197bb64defb6f8a3fb7b6c560 100644 (file)
@@ -642,6 +642,11 @@ sub long_response ($$) {
                } 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} ||= [];
@@ -917,14 +922,15 @@ sub cmd_starttls ($) {
 # 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/;