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