explicitly set the maximum number of nested template calls and variables/params to 250
[irspy-moved-to-github.git] / lib / ZOOM / IRSpy.pm
index 8e6d3ac..243c153 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: IRSpy.pm,v 1.88 2007-09-18 16:57:37 mike Exp $
+# $Id: IRSpy.pm,v 1.90 2008-07-16 11:42:13 mike Exp $
 
 package ZOOM::IRSpy;
 
@@ -77,6 +77,9 @@ sub new {
 
     my $xslt = new XML::LibXSLT;
 
+    # raise the maximum number of nested template calls and variables/params (default 250)
+    $xslt->max_depth(250);
+
     $xslt->register_function($ZOOM::IRSpy::Utils::IRSPY_NS, 'strcmp',
                              \&ZOOM::IRSpy::Utils::xslt_strcmp);
 
@@ -230,6 +233,7 @@ sub _next_connection {
     my $i = $this->{modi};
     if (!defined $n) {
        $target = shift @{ $this->{queue} };
+       return undef if !defined $target;
     } else {
        while (1) {
            $target = shift @{ $this->{queue} };
@@ -237,10 +241,11 @@ sub _next_connection {
            my $h = _hash($target);
            my $hmodn = $h % $n;
            last if $hmodn == $i;
-           $this->log("irspy", "'$target' hash $h % $n = $hmodn != $i");
+           #$this->log("irspy", "'$target' hash $h % $n = $hmodn != $i");
        }
     }
 
+    die "oops -- target is undefined" if !defined $target;
     return create ZOOM::IRSpy::Connection($this, $target, async => 1,
                                          timeout => $this->{timeout});
 }