X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FPod.pm;h=d532b40a6788b6714832342ddc88defdf1103d56;hp=23c714d754d38de88b62c876f76eef6906d1e99a;hb=a10bf5f0f34ee0f552b0a69af7fdfba249a0ba3c;hpb=eed4eeb07f8ebd15948f73006b7b686a6de827c1 diff --git a/lib/ZOOM/Pod.pm b/lib/ZOOM/Pod.pm index 23c714d..d532b40 100644 --- a/lib/ZOOM/Pod.pm +++ b/lib/ZOOM/Pod.pm @@ -1,4 +1,4 @@ -# $Id: Pod.pm,v 1.13 2006-06-21 14:31:24 mike Exp $ +# $Id: Pod.pm,v 1.14 2006-07-18 11:43:55 mike Exp $ package ZOOM::Pod; @@ -265,6 +265,10 @@ indicates whether C should continue (return-value 0) or return immediately (any other value). Exception-handling callbacks may of course re-throw the exception. +Connections that have the C option set are omitted from +consideration. This is useful if, for example, a connection that is +part of a pod is known to have encountered an unrecoverable error. + =cut sub wait { @@ -272,8 +276,21 @@ sub wait { my($arg) = @_; my $res = 0; - while ((my $i = ZOOM::event($this->{conn})) != 0) { - my $conn = $this->{conn}->[$i-1]; + + my @conn; + foreach my $conn (@{ $this->{conn} }) { + if (!$conn->option("pod_omit")) { + push @conn, $conn; + } else { + # If we don't push anything onto @conn, then the index $i + # will be meaningless in the loop below, and the + # references to $rs[$i] will be wrong. Ouch. + push @conn, undef; + } + } + + while ((my $i = ZOOM::event(\@conn)) != 0) { + my $conn = $conn[$i-1]; my $ev = $conn->last_event(); my $evstr = ZOOM::event_str($ev); ZOOM::Log::log("pod", "connection ", $i-1, ": event $ev ($evstr)");