From 87e653c02e957346e856a10b4c57e55f139ac4b6 Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 29 Nov 2010 19:20:09 +0000 Subject: [PATCH] avoid calling sysread when select exited from interruption. git-svn-id: svn://svn.open-ils.org/OpenSRF/branches/rel_1_6@2115 9efc2488-bf62-4759-914b-345cdb29e865 --- src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm b/src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm index c2d5cbb..556f597 100644 --- a/src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm +++ b/src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm @@ -203,12 +203,15 @@ sub wait { # build the select readset my $infile = ''; vec($infile, $socket->fileno, 1) = 1; - return undef unless select($infile, undef, undef, $timeout); + + my $nfound = select($infile, undef, undef, $timeout); + return undef if !$nfound or $nfound == -1; # now slurp the data off the socket my $buf; my $read_size = 1024; my $nonblock = 0; + while(my $n = sysread($socket, $buf, $read_size)) { $self->{parser}->parse_more($buf) if $buf; if($n < $read_size or $self->peek_msg) { -- 2.43.2