avoid calling sysread when select exited from interruption.
authorerickson <erickson@9efc2488-bf62-4759-914b-345cdb29e865>
Mon, 29 Nov 2010 19:16:34 +0000 (19:16 +0000)
committererickson <erickson@9efc2488-bf62-4759-914b-345cdb29e865>
Mon, 29 Nov 2010 19:16:34 +0000 (19:16 +0000)
git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@2110 9efc2488-bf62-4759-914b-345cdb29e865

src/perl/lib/OpenSRF/Transport/SlimJabber/XMPPReader.pm

index c2d5cbb..556f597 100644 (file)
@@ -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) {