Just checked the code, and you're right. The leap year fixes in v3.2 did fix part of it, but not all of it; theres still a case where 29th Feb is not though of as valid in a leap year in downtime_sched.pl.
I've done the fix in v3.3.
Here's the bit of downtime_sched.pl to fix,where it tries to jump forwar done day:
Code:
# if in the past, advance one day
if(($h>$nh) or ($h==$nh and $min>$nmin) ) {
$nd+=1; $dow += 1; $dow = 0 if($dow == 7);
if(($nd>29)and($nm==1)and(int($ny/4)==($ny/4)))
{$nm+=1;$nd-=29;} # Leap yrs?
if(($nd>28)and($nm==1)and(int($ny/4)!=($ny/4)))
{$nm+=1;$nd-=28;}
if(($nd>30)and($nm==8 or $nm==3 or $nm==5 or $nm==10))
{$nm+=1;$nd-=30;}
if($nd>31) {$nm+=1;$nd-=31;}
if($nm>11) {$ny+=1;$nm-=12;}
}
Also this bit, where it tries to go forward one week:
Code:
# if we advanced the day, then make sure the month is right
if(($nd>29)and($nm==1)and(int($ny/4)==($ny/4)))
{$nm+=1;$nd-=29;} # Leap yrs?
if(($nd>28)and($nm==1)and(int($ny/4)!=($ny/4)))
{$nm+=1;$nd-=28;}
if(($nd>30)and($nm==8 or $nm==3 or $nm==5 or $nm==10))
{$nm+=1;$nd-=30;}
if($nd>31) {$nm+=1;$nd-=31;}
if($nm>11){$nm-=12;$ny+=1; }