diff --git a/core/src/main/java/lucee/runtime/engine/CFMLEngineImpl.java b/core/src/main/java/lucee/runtime/engine/CFMLEngineImpl.java index 98d58c929b..122dafecc7 100644 --- a/core/src/main/java/lucee/runtime/engine/CFMLEngineImpl.java +++ b/core/src/main/java/lucee/runtime/engine/CFMLEngineImpl.java @@ -904,7 +904,6 @@ private ConfigServerImpl getConfigServerImpl() { } private ConfigServerImpl getConfigServerImpl(ConfigServerImpl existing, boolean quick) { - long start = System.currentTimeMillis(); if (configServer == null) { try { Resource context = getSeverContextConfigDirectory(factory); diff --git a/core/src/main/java/lucee/runtime/tag/Flush.java b/core/src/main/java/lucee/runtime/tag/Flush.java index c9de5a2a47..f1bb8f0b1d 100755 --- a/core/src/main/java/lucee/runtime/tag/Flush.java +++ b/core/src/main/java/lucee/runtime/tag/Flush.java @@ -18,8 +18,6 @@ **/ package lucee.runtime.tag; -import java.io.IOException; - import lucee.runtime.PageContextImpl; import lucee.runtime.exp.PageException; import lucee.runtime.ext.tag.TagImpl; @@ -39,10 +37,13 @@ public final class Flush extends TagImpl { */ private double interval = -1; + private boolean throwonerror = true; + @Override public void release() { super.release(); interval = -1; + throwonerror = true; } /** @@ -56,14 +57,18 @@ public void setInterval(double interval) { this.interval = interval; } + public void setThrowonerror(boolean throwonerror) { + this.throwonerror = throwonerror; + } + @Override public int doStartTag() throws PageException { try { if (interval == -1) ((PageContextImpl) pageContext).getRootOut().flush(); else((PageContextImpl) pageContext).getRootOut().setBufferConfig((int) interval, true); } - catch (IOException e) { - throw Caster.toPageException(e); + catch (Exception e) { + if (throwonerror) throw Caster.toPageException(e); } return SKIP_BODY; } diff --git a/core/src/main/java/lucee/transformer/cfml/script/AbstrCFMLScriptTransformer.java b/core/src/main/java/lucee/transformer/cfml/script/AbstrCFMLScriptTransformer.java index 01db08d2be..7d45f05c09 100755 --- a/core/src/main/java/lucee/transformer/cfml/script/AbstrCFMLScriptTransformer.java +++ b/core/src/main/java/lucee/transformer/cfml/script/AbstrCFMLScriptTransformer.java @@ -1472,7 +1472,7 @@ private final Tag __multiAttrStatement(Body parent, Data data, TagLibTag tlt) th } - boolean isValid = (data.srcCode.isCurrent(' ') || (tlt.getHasBody() && data.srcCode.isCurrent('{'))); + boolean isValid = (data.srcCode.isCurrent(' ') || data.srcCode.isCurrent(';') || (tlt.getHasBody() && data.srcCode.isCurrent('{'))); if (isValid && (data.srcCode.isCurrent(" ", "=") || data.srcCode.isCurrent(" ", "("))) { // simply avoid a later exception isValid = false; } diff --git a/core/src/main/java/resource/tld/core-base.tld b/core/src/main/java/resource/tld/core-base.tld index 1eb58465fe..8a26629955 100755 --- a/core/src/main/java/resource/tld/core-base.tld +++ b/core/src/main/java/resource/tld/core-base.tld @@ -1748,7 +1748,7 @@ To use cached data, the tag must be called with the exact same arguments. Only u empty false Flushes currently available data to the client. @@ -1763,6 +1763,15 @@ To use cached data, the tag must be called with the exact same arguments. Only u headers, and any data that is already available when you make this call, are not included in the count. + + boolean + throwonerror + false + true + true + optional + If set to false, any exceptions thrown by the servlet engine, such as those resulting from a client disconnection, will be suppressed. + diff --git a/loader/build.xml b/loader/build.xml index 081b821d3e..70484ec1f4 100644 --- a/loader/build.xml +++ b/loader/build.xml @@ -2,7 +2,7 @@ - + diff --git a/loader/pom.xml b/loader/pom.xml index cdada33c6f..9df048035d 100644 --- a/loader/pom.xml +++ b/loader/pom.xml @@ -3,7 +3,7 @@ org.lucee lucee - 5.4.4.22-SNAPSHOT + 5.4.4.23-SNAPSHOT jar Lucee Loader Build