X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FPOP3.pm;h=741b5e58a90949854fdcf4331d2e3ad8e89bcfdf;hb=a5e39d0e4e2d9b7ad937e8dd9af726d96eec6126;hp=ec73893c5694d6cdda85ad5d3739d4c910c21d69;hpb=f40f4695c0cb576a4e00819da45c1bea8f548aec;p=public-inbox.git diff --git a/lib/PublicInbox/POP3.pm b/lib/PublicInbox/POP3.pm index ec73893c..741b5e58 100644 --- a/lib/PublicInbox/POP3.pm +++ b/lib/PublicInbox/POP3.pm @@ -33,7 +33,6 @@ package PublicInbox::POP3; use v5.12; use parent qw(PublicInbox::DS); -use PublicInbox::Syscall qw(EPOLLIN EPOLLONESHOT); use PublicInbox::GitAsyncCat; use PublicInbox::DS qw(now); use Errno qw(EAGAIN); @@ -56,24 +55,6 @@ sub out ($$;@) { printf { $self->{pop3d}->{out} } $fmt."\n", @args; } -sub zflush {} # noop - -sub requeue_once ($) { - my ($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. - # autovivify wbuf: - my $new_size = push(@{$self->{wbuf}}, \&long_step); - - # wbuf may be populated by $cb, no need to rearm if so: - $self->requeue if $new_size == 1; -} - sub long_step { my ($self) = @_; # wbuf is unset or empty, here; {long} may add to it @@ -113,29 +94,15 @@ sub long_response ($$;@) { undef; } -sub _greet ($) { +sub do_greet { my ($self) = @_; my $s = $self->{salt} = sprintf('%x.%x', int(rand(0x7fffffff)), time); $self->write("+OK POP3 server ready <$s\@public-inbox>\r\n"); } -sub new ($$$) { - my ($class, $sock, $pop3d) = @_; - my $self = bless { pop3d => $pop3d }, __PACKAGE__; - my $ev = EPOLLIN; - my $wbuf; - if ($sock->can('accept_SSL') && !$sock->accept_SSL) { - return CORE::close($sock) if $! != EAGAIN; - $ev = PublicInbox::TLS::epollbit() or return CORE::close($sock); - $wbuf = [ \&PublicInbox::DS::accept_tls_step, \&_greet ]; - } - $self->SUPER::new($sock, $ev | EPOLLONESHOT); - if ($wbuf) { - $self->{wbuf} = $wbuf; - } else { - _greet($self); - } - $self; +sub new { + my ($cls, $sock, $pop3d) = @_; + (bless { pop3d => $pop3d }, $cls)->greet($sock) } # POP user is $UUID1@$NEWSGROUP.$SLICE