diff -Naur tomato118/tomato/release/src/linux/linux/net/ipv4/route.c tomato119/tomato/release/src/linux/linux/net/ipv4/route.c
--- tomato118/tomato/release/src/linux/linux/net/ipv4/route.c	2008-04-14 09:14:28.000000000 +1000
+++ tomato119/tomato/release/src/linux/linux/net/ipv4/route.c	2008-04-21 05:20:53.000000000 +1000
@@ -2464,8 +2464,8 @@
 	if (!ipv4_dst_ops.kmem_cachep)
 		panic("IP: failed to allocate ip_dst_cache\n");
 
-//	goal = num_physpages >> (26 - PAGE_SHIFT);	zzz
-	goal = num_physpages >> (20 - PAGE_SHIFT);
+	goal = num_physpages >> (26 - PAGE_SHIFT);
+//	goal = num_physpages >> (21 - PAGE_SHIFT);
 
 	for (order = 0; (1UL << order) < goal; order++)
 		/* NOTHING */;
@@ -2495,10 +2495,17 @@
 		rt_hash_table[i].chain = NULL;
 	}
 
+//	ip_rt_max_size = (rt_hash_mask + 1) * 2;
+//	ipv4_dst_ops.gc_thresh = (ip_rt_max_size / 4);
+
 	ipv4_dst_ops.gc_thresh = (rt_hash_mask + 1);
-//	ip_rt_max_size = (rt_hash_mask + 1) * 16;	zzz
-	ip_rt_max_size = (rt_hash_mask + 1);
-	printk(KERN_INFO "ip_rt_max_size = %d\n", ip_rt_max_size);
+	ip_rt_max_size = (rt_hash_mask + 1) * 16;
+
+//	printk("gc_thresh=%d\n", ipv4_dst_ops.gc_thresh);
+//	printk("ip_rt_max_size=%d\n", ip_rt_max_size);
+//	printk("rt_hash_mask=%d\n", rt_hash_mask);
+//	printk("goal=%d\n", goal);
+
 
 	devinet_init();
 	ip_fib_init();
diff -Naur tomato118/tomato/release/src/router/layer7/protocols/CHANGELOG tomato119/tomato/release/src/router/layer7/protocols/CHANGELOG
--- tomato118/tomato/release/src/router/layer7/protocols/CHANGELOG	2008-02-11 09:10:17.000000000 +1100
+++ tomato119/tomato/release/src/router/layer7/protocols/CHANGELOG	2008-02-21 00:43:18.000000000 +1100
@@ -1,3 +1,6 @@
+2008 02 20
+Added png.
+
 2008 02 10
 Added rtp (see comments in rtp.pat).
 
diff -Naur tomato118/tomato/release/src/router/layer7/protocols/file_types/png.pat tomato119/tomato/release/src/router/layer7/protocols/file_types/png.pat
--- tomato118/tomato/release/src/router/layer7/protocols/file_types/png.pat	1970-01-01 10:00:00.000000000 +1000
+++ tomato119/tomato/release/src/router/layer7/protocols/file_types/png.pat	2008-02-21 00:43:06.000000000 +1100
@@ -0,0 +1,10 @@
+# PNG - Portable Network Graphics, a popular image format
+# Pattern attributes: good fast notsofast subset
+# Protocol groups: file
+
+png
+# drawn from /usr/share/magic
+\x89PNG\x0d\x0a\x1a\x0a
+
+# this is probably sufficient, but by default let's use the longer version
+# \x89PNG
diff -Naur tomato118/tomato/release/src/router/rc/firewall.c tomato119/tomato/release/src/router/rc/firewall.c
--- tomato118/tomato/release/src/router/rc/firewall.c	2008-04-14 09:15:11.000000000 +1000
+++ tomato119/tomato/release/src/router/rc/firewall.c	2008-04-21 05:21:36.000000000 +1000
@@ -552,6 +552,7 @@
 	int wanproto;
 	
 	simple_lock("firewall");
+	simple_lock("restrictions");
 
 	wanproto = get_wan_proto();
 	wanup = check_wanup();
@@ -673,6 +674,7 @@
 #endif
 	}
 
+	simple_unlock("restrictions");
 	sched_restrictions();
 	enable_ip_forward();
 
diff -Naur tomato118/tomato/release/src/router/rc/init.c tomato119/tomato/release/src/router/rc/init.c
--- tomato118/tomato/release/src/router/rc/init.c	2008-04-14 09:15:11.000000000 +1000
+++ tomato119/tomato/release/src/router/rc/init.c	2008-04-21 05:21:36.000000000 +1000
@@ -694,6 +694,7 @@
 	f_write("/etc/hosts", NULL, 0, 0, 0644);			// blank
 	simple_unlock("cron");
 	simple_unlock("firewall");
+	simple_unlock("restrictions");
 	umask(022);
 
 	if ((d = opendir("/rom/etc")) != NULL) {
diff -Naur tomato118/tomato/release/src/router/rc/restrict.c tomato119/tomato/release/src/router/rc/restrict.c
--- tomato118/tomato/release/src/router/rc/restrict.c	2008-04-14 09:15:11.000000000 +1000
+++ tomato119/tomato/release/src/router/rc/restrict.c	2008-04-21 05:21:37.000000000 +1000
@@ -72,10 +72,13 @@
 	unsigned long long activated;
 	int count;
 	int radio;
+	int r;
 
 	if (!nvram_contains_word("log_events", "acre")) {
 		setlogmask(LOG_MASK(LOG_EMERG));	// can't set to 0
 	}
+
+	simple_lock("restrictions");
 	
 	now = time(0);
 	if (now < Y2K) {
@@ -122,10 +125,24 @@
 		}
 		else {
 			sprintf(buf, "r%s%02d", (comp != '|') ? "dev" : "res", nrule);
+			
+			r = eval("iptables", "-D", "restrict", "-j", buf);
+			if (insch) {
+				// ignore error above (if any)
+
+				r = eval("iptables", "-A", "restrict", "-j", buf);
+			}
+			
+			if (r != 0) {
+				syslog(LOG_ERR, "Iptables command failed. Retrying in 15 minutes.");
+				continue;
+			}
+/*
 			if (eval("iptables", insch ? "-A" : "-D", "restrict", "-j", buf) != 0) {
 				syslog(LOG_ERR, "iptables command failed");
 				continue;
 			}
+*/
 		}
 	
 		if (insch) activated |= n;
@@ -155,6 +172,7 @@
 		}
 	}
 
+	simple_unlock("restrictions");
 	return 0;
 }
 
diff -Naur tomato118/tomato/release/src/router/shared/tomato_version tomato119/tomato/release/src/router/shared/tomato_version
--- tomato118/tomato/release/src/router/shared/tomato_version	2008-04-14 09:15:30.000000000 +1000
+++ tomato119/tomato/release/src/router/shared/tomato_version	2008-04-21 05:21:56.000000000 +1000
@@ -1 +1 @@
-1.18.0000
\ No newline at end of file
+1.19.0000
\ No newline at end of file
diff -Naur tomato118/tomato/release/src/router/www/basic-time.asp tomato119/tomato/release/src/router/www/basic-time.asp
--- tomato118/tomato/release/src/router/www/basic-time.asp	2008-04-14 09:15:16.000000000 +1000
+++ tomato119/tomato/release/src/router/www/basic-time.asp	2008-04-21 05:21:42.000000000 +1000
@@ -84,7 +84,7 @@
 		}
 		f_tz.value = s;
 	}
-	
+
 	var a = 1;
 	var b = 1;
 	switch (E('_ntp_updates').value * 1) {
@@ -95,11 +95,11 @@
 		break;
 	}
 	elem.display(PR('_f_ntp_tdod'), a);
-	
+
 	elem.display(PR('_f_ntp_server'), b);
 	a = (E('_f_ntp_server').value == 'custom');
 	elem.display(PR('_f_ntp_1'), PR('_f_ntp_2'), PR('_f_ntp_3'), a && b);
-	
+
 	elem.display(PR('ntp-preset'), !a && b);
 
 	if (a) {
@@ -125,7 +125,7 @@
 	fom = E('_fom');
 	fom.tm_dst.value = fom.f_tm_dst.checked ? 1 : 0;
 	fom.tm_tz.value = fom.f_tm_tz.value;
-	
+
 	if (E('_f_ntp_server').value != 'custom') {
 		fom.ntp_server.value = ntpString(E('_f_ntp_server').value);
 	}
@@ -137,7 +137,7 @@
 		}
 		fom.ntp_server.value = a.join(' ');
 	}
-	
+
 	fom.ntp_tdod.value = fom.f_ntp_tdod.checked ? 1 : 0;
 	fom.ntp_kiss.disabled = !clearKiss;
 	form.submit(fom);
@@ -240,9 +240,9 @@
 		['UTC0','UTC+00:00 Gambia, Liberia, Morocco'],
 		['GMT0BST,M3.5.0/2,M10.5.0/2','UTC+00:00 England'],
 		['UTC-1','UTC+01:00 Tunisia'],
-		['STD-1DST,M3.5.0/2,M10.5.0/2','UTC+01:00 France, Germany, Italy, Sweden'],
+		['CET-1CEST,M3.5.0/2,M10.5.0/3','UTC+01:00 France, Germany, Italy, Poland, Sweden'],
 		['UTC-2','UTC+02:00 South Africa'],
-		['STD-2DST,M3.5.0/2,M10.5.0/2','UTC+02:00 Greece, Ukraine, Romania, Turkey, Latvia'],
+		['STD-2DST,M3.5.0/2,M10.5.0/2','UTC+02:00 Greece, Ukraine, Romania, Turkey, Latvia'],		
 		['UTC-3','UTC+03:00 Iraq, Jordan, Kuwait'],
 		['EET-2EEST-3,M3.5.0/3,M10.5.0/4','UTC+03:00 Finland'],
 		['UTC-4','UTC+04:00 Armenia'],
diff -Naur tomato118/tomato/release/src/router/www/tomato.css tomato119/tomato/release/src/router/www/tomato.css
--- tomato118/tomato/release/src/router/www/tomato.css	2008-04-14 09:15:19.000000000 +1000
+++ tomato119/tomato/release/src/router/www/tomato.css	2008-04-21 05:21:45.000000000 +1000
@@ -39,7 +39,6 @@
 input,
 select {
 	font: 12px sans-serif;
-	color: #000;
 }
 input[type='checkbox'][disabled] {
 	opacity: 0.3;
@@ -62,12 +61,16 @@
 }
 
 input[type='button'] {
+	color: #000;
 	background: #f7f7f7;
 	border-top: 1px solid #ddd;
 	border-left: 1px solid #ddd;
 	border-bottom: 1px solid #ccc;
 	border-right: 1px solid #ccc;
 }
+input[type='button'][disabled] {
+	color: #aaa;
+}
 input[type='button']:hover {
 	background: #BF6060;
 	color: #fff;
