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();