sub process_line ($$) {
my ($self, $l) = @_;
my ($req, @args) = split(/\s+/, $l);
+ return unless defined($req);
$req = lc($req);
$req = eval {
no strict 'refs';
$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();
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
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');