From: erickson Date: Mon, 29 Nov 2010 19:16:34 +0000 (+0000) Subject: avoid calling sysread when select exited from interruption. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=9b8b06ad2a7f9139febf9b267833d469d824807b;p=opensrf%2Fbjwebb.git avoid calling sysread when select exited from interruption. git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@2110 9efc2488-bf62-4759-914b-345cdb29e865 --- 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) {