Author: remm
Date: Mon Apr 30 11:19:57 2018
New Revision: 1830549
URL: http://svn.apache.org/viewvc?rev=1830549&view=rev
Log:
Sometimes Future write will cause an ISE with NIO2 (timeout or cancel on a
channel). Not a very good idea IMO. Make things more consistent with SSL close.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java?rev=1830549&r1=1830548&r2=1830549&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java Mon Apr
30 11:19:57 2018
@@ -146,30 +146,41 @@ public class SecureNio2Channel extends N
private class FutureFlush implements Future<Boolean> {
private Future<Integer> integer;
+ private Exception e = null;
protected FutureFlush() {
- integer = sc.write(netOutBuffer);
+ try {
+ integer = sc.write(netOutBuffer);
+ } catch (IllegalStateException e) {
+ this.e = e;
+ }
}
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
- return integer.cancel(mayInterruptIfRunning);
+ return (e != null) ? true : integer.cancel(mayInterruptIfRunning);
}
@Override
public boolean isCancelled() {
- return integer.isCancelled();
+ return (e != null) ? true : integer.isCancelled();
}
@Override
public boolean isDone() {
- return integer.isDone();
+ return (e != null) ? true : integer.isDone();
}
@Override
public Boolean get() throws InterruptedException,
ExecutionException {
+ if (e != null) {
+ throw new ExecutionException(e);
+ }
return Boolean.valueOf(integer.get().intValue() >= 0);
}
@Override
public Boolean get(long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException,
TimeoutException {
+ if (e != null) {
+ throw new ExecutionException(e);
+ }
return Boolean.valueOf(integer.get(timeout, unit).intValue() >= 0);
}
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1830549&r1=1830548&r2=1830549&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Apr 30 11:19:57 2018
@@ -52,6 +52,9 @@
from issuing redirects or taking other action that required the response
status code to be changed. (markt)
</fix>
+ <fix>
+ Consistent exception propagation for NIO2 SSL close. (remm)
+ </fix>
</changelog>
</subsection>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]