Author: isudana
Date: Sun May 22 14:49:13 2016
New Revision: 1745062

URL: http://svn.apache.org/viewvc?rev=1745062&view=rev
Log:
fix for SYNAPSE-1004 by Ravi

Modified:
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/Pipe.java

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/Pipe.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/Pipe.java?rev=1745062&r1=1745061&r2=1745062&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/Pipe.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/Pipe.java
 Sun May 22 14:49:13 2016
@@ -322,6 +322,9 @@ public class Pipe {
             try {
                 if (!hasData(buffer, inBufferInputMode)) {
                     waitForData();
+                    if (producerError) {
+                        return -1;
+                    }
                 }
                 if (isEndOfStream()) {
                     return -1;
@@ -362,6 +365,9 @@ public class Pipe {
             try {
                 try {
                     while (!hasData(buffer, inBufferInputMode) && 
!producerCompleted) {
+                        if (producerError) {
+                            break;
+                        }
                         producerIoControl.requestInput();
                         readCondition.await();
                     }
@@ -406,6 +412,10 @@ public class Pipe {
                 while (remaining > 0) {
                     if (!outputBuffer.hasRemaining()) {
                         flushContent();
+                        if (consumerError) {
+                            buffer.clear();
+                            break;
+                        }
                         setInputMode(outputBuffer, outBufferInputMode);
                     }
                     int chunk = Math.min(remaining, outputBuffer.remaining());
@@ -428,6 +438,9 @@ public class Pipe {
             try {
                 try {
                                        while (hasData(outputBuffer, 
outBufferInputMode)) {
+                        if(consumerError) {
+                            break;
+                        }
                                                if (consumerIoControl != null 
&& writeCondition != null) {
                                                        
consumerIoControl.requestOutput();
                                                        writeCondition.await();


Reply via email to