You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/06/05 15:27:23 UTC
svn commit: r544482 - in
/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util:
SharedInputBuffer.java SharedOutputBuffer.java
Author: olegk
Date: Tue Jun 5 06:27:22 2007
New Revision: 544482
URL: http://svn.apache.org/viewvc?view=rev&rev=544482
Log:
Fixed a severe bug in Shared*Buffer classes that could cause an infinite loop in an read / write operation if it was interrupted by shutting down the shared buffer
Modified:
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java?view=diff&rev=544482&r1=544481&r2=544482
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedInputBuffer.java Tue Jun 5 06:27:22 2007
@@ -31,6 +31,7 @@
package org.apache.http.nio.util;
import java.io.IOException;
+import java.io.InterruptedIOException;
import org.apache.http.nio.ContentDecoder;
import org.apache.http.nio.IOControl;
@@ -96,7 +97,10 @@
protected void waitForData() throws IOException {
synchronized (this.mutex) {
try {
- while (!hasData() && !this.endOfStream && !this.shutdown) {
+ while (!hasData() && !this.endOfStream) {
+ if (this.shutdown) {
+ throw new InterruptedIOException("Input operation aborted");
+ }
this.ioctrl.requestInput();
this.mutex.wait();
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java?view=diff&rev=544482&r1=544481&r2=544482
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java Tue Jun 5 06:27:22 2007
@@ -31,6 +31,7 @@
package org.apache.http.nio.util;
import java.io.IOException;
+import java.io.InterruptedIOException;
import org.apache.http.nio.ContentEncoder;
import org.apache.http.nio.IOControl;
@@ -152,7 +153,10 @@
private void flushContent() throws IOException {
synchronized (this.mutex) {
try {
- while (hasData() && !this.shutdown) {
+ while (hasData()) {
+ if (this.shutdown) {
+ throw new InterruptedIOException("Output operation aborted");
+ }
this.ioctrl.requestOutput();
this.mutex.wait();
}