diff src/luan/modules/http/HttpServicer.java @ 787:c49980cdece6

use incremental cloning to serve web pages
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 04 Sep 2016 00:18:00 -0600
parents d69d3c51c44e
children 60661a8e738c
line wrap: on
line diff
--- a/src/luan/modules/http/HttpServicer.java	Fri Sep 02 17:43:29 2016 -0600
+++ b/src/luan/modules/http/HttpServicer.java	Sun Sep 04 00:18:00 2016 -0600
@@ -46,6 +46,12 @@
 	{
 		LuanFunction fn;
 		synchronized(luan) {
+			if( luan.isLocked ) {
+				if( PackageLuan.wouldLoad(luan,"luan:http/Http.luan") || PackageLuan.wouldLoad(luan,modName) ) {
+					luan.isLocked = false;
+					luan.deepenClone(luan,new LuanCloner(LuanCloner.Type.COMPLETE));
+				}
+			}
 			LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan");
 			LuanTable per_session_pages = (LuanTable)module.rawGet("per_session_pages");
 			Object mod = PackageLuan.load(luan,modName);
@@ -65,7 +71,7 @@
 				}
 				fn = (LuanFunction)PackageLuan.require(luan,modName);
 			} else {
-				LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE);
+				LuanCloner cloner = new LuanCloner(LuanCloner.Type.INCREMENTAL);
 				luan = (LuanState)cloner.clone(luan);
 				fn = (LuanFunction)cloner.get(mod);
 			}