Index: trunk/cgi-bin/IPDB.pm
===================================================================
--- trunk/cgi-bin/IPDB.pm	(revision 763)
+++ trunk/cgi-bin/IPDB.pm	(revision 764)
@@ -1762,9 +1762,12 @@
   $sql .= join " = ?, ", @fieldlist;
 
+  # create these here so we can use the expanded CIDR in the rDNS update after the eval,
+  # if we're expanding the block into a "reserved" freeblock
+  my $cidr = NetAddr::IP->new($binfo->{block});
+  my $newblock = NetAddr::IP->new($cidr->addr, $cidr->masklen - 1)->network;
+
   eval {
     # check for block merge first...
     if ($args{fbmerge}) {
-      my $cidr = NetAddr::IP->new($binfo->{block});
-      my $newblock = NetAddr::IP->new($cidr->addr, $cidr->masklen - 1)->network;
       # safety net?  make sure mergeable block passed in is really one or both of
       # a) reserved for expansion of the block and
@@ -1842,4 +1845,8 @@
     # and the per-IP set, if there is one.
     _rpc('updateRevSet', %{$args{iprev}}, rpcuser => $args{user}) if keys (%{$args{iprev}});
+
+    # and fix up the template's CIDR if required
+    _rpc('resizeTemplate', oldcidr => "$binfo->{block}", newcidr => $newblock->network.'', rpcuser => $args{user}) 
+        if $args{fbmerge};
   }
 
@@ -1997,5 +2004,5 @@
     } # for (... @newblocks)
 
-    $dbh->do("DELETE FROM freeblocks WHERE id IN (".join(',', keys %fbdel).")");
+    $dbh->do("DELETE FROM freeblocks WHERE id IN (".join(',', keys %fbdel).")") if %fbdel;
 
     $dbh->commit;
