diff --git a/lib/Test/Nginx/IMAP.pm b/lib/Test/Nginx/IMAP.pm
index f2e5b5d..c8c12ff 100644
--- a/lib/Test/Nginx/IMAP.pm
+++ b/lib/Test/Nginx/IMAP.pm
@@ -34,6 +34,7 @@
 	}
 
 	$self->{_socket}->autoflush(1);
+	$self->{_read_buffer} = '';
 
 	return $self;
 }
@@ -55,25 +56,39 @@
 	$self->{_socket}->print($cmd . CRLF);
 }
 
+sub getline {
+	my ($self) = @_;
+	my $socket = $self->{_socket};
+
+	if ($self->{_read_buffer} =~ /^(.*?\x0a)(.*)/ms) {
+		$self->{_read_buffer} = $2;
+		return $1;
+	}
+
+	while (IO::Select->new($socket)->can_read(8)) {
+	        $socket->blocking(0);
+		my $n = $socket->sysread(my $buf, 1024);
+	        $socket->blocking(1);
+		last unless $n;
+
+		$self->{_read_buffer} .= $buf;
+
+		if ($self->{_read_buffer} =~ /^(.*?\x0a)(.*)/ms) {
+			$self->{_read_buffer} = $2;
+			return $1;
+		}
+	};
+}
+
 sub read {
 	my ($self) = @_;
 	my $socket = $self->{_socket};
-	eval {
-		local $SIG{ALRM} = sub { die "timeout\n" };
-		alarm(8);
-		while (<$socket>) {
-			log_in($_);
-			# XXX
-			next if m/^\d\d\d-/;
-			last;
-		}
-		alarm(0);
-	};
-	alarm(0);
-	if ($@) {
-		log_in("died: $@");
-		return undef;
+
+	while (defined($_ = $self->getline())) {
+		log_in($_);
+		last;
 	}
+
 	return $_;
 }
 
diff --git a/lib/Test/Nginx/POP3.pm b/lib/Test/Nginx/POP3.pm
index 05310cc..1e11a69 100644
--- a/lib/Test/Nginx/POP3.pm
+++ b/lib/Test/Nginx/POP3.pm
@@ -34,6 +34,7 @@
 	}
 
 	$self->{_socket}->autoflush(1);
+	$self->{_read_buffer} = '';
 
 	return $self;
 }
@@ -55,25 +56,39 @@
 	$self->{_socket}->print($cmd . CRLF);
 }
 
+sub getline {
+	my ($self) = @_;
+	my $socket = $self->{_socket};
+
+	if ($self->{_read_buffer} =~ /^(.*?\x0a)(.*)/ms) {
+		$self->{_read_buffer} = $2;
+		return $1;
+	}
+
+	while (IO::Select->new($socket)->can_read(8)) {
+		$socket->blocking(0);
+		my $n = $socket->sysread(my $buf, 1024);
+		$socket->blocking(1);
+		last unless $n;
+
+		$self->{_read_buffer} .= $buf;
+
+		if ($self->{_read_buffer} =~ /^(.*?\x0a)(.*)/ms) {
+			$self->{_read_buffer} = $2;
+			return $1;
+		}
+	};
+}
+
 sub read {
 	my ($self) = @_;
 	my $socket = $self->{_socket};
-	eval {
-		local $SIG{ALRM} = sub { die "timeout\n" };
-		alarm(8);
-		while (<$socket>) {
-			log_in($_);
-			# XXX
-			next if m/^\d\d\d-/;
-			last;
-		}
-		alarm(0);
-	};
-	alarm(0);
-	if ($@) {
-		log_in("died: $@");
-		return undef;
+
+	while (defined($_ = $self->getline())) {
+		log_in($_);
+		last;
 	}
+
 	return $_;
 }
 
diff --git a/lib/Test/Nginx/SMTP.pm b/lib/Test/Nginx/SMTP.pm
index f1098c4..c1dd2c7 100644
--- a/lib/Test/Nginx/SMTP.pm
+++ b/lib/Test/Nginx/SMTP.pm
@@ -34,6 +34,7 @@
 	}
 
 	$self->{_socket}->autoflush(1);
+	$self->{_read_buffer} = '';
 
 	return $self;
 }
@@ -55,24 +56,40 @@
 	$self->{_socket}->print($cmd . CRLF);
 }
 
+sub getline {
+	my ($self) = @_;
+	my $socket = $self->{_socket};
+
+	if ($self->{_read_buffer} =~ /^(.*?\x0a)(.*)/ms) {
+		$self->{_read_buffer} = $2;
+		return $1;
+	}
+
+	while (IO::Select->new($socket)->can_read(8)) {
+		$socket->blocking(0);
+		my $n = $socket->sysread(my $buf, 1024);
+		$socket->blocking(1);
+		last unless $n;
+
+		$self->{_read_buffer} .= $buf;
+
+		if ($self->{_read_buffer} =~ /^(.*?\x0a)(.*)/ms) {
+			$self->{_read_buffer} = $2;
+			return $1;
+		}
+	};
+}
+
 sub read {
 	my ($self) = @_;
 	my $socket = $self->{_socket};
-	eval {
-		local $SIG{ALRM} = sub { die "timeout\n" };
-		alarm(8);
-		while (<$socket>) {
-			log_in($_);
-			next if m/^\d\d\d-/;
-			last;
-		}
-		alarm(0);
-	};
-	alarm(0);
-	if ($@) {
-		log_in("died: $@");
-		return undef;
+
+	while (defined($_ = $self->getline())) {
+		log_in($_);
+		next if m/^\d\d\d-/;
+		last;
 	}
+
 	return $_;
 }
 
