296570 EOFException for HttpExchange when HttpClient.stop called
git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@2067 7e9141cc-0065-0410-87d8-b60c137991c4
This commit is contained in:
parent
75dd71b1ff
commit
3e515dd060
|
@ -596,11 +596,22 @@ public class HttpConnection implements Connection
|
|||
{
|
||||
//if there is a live, unfinished exchange, set its status to be
|
||||
//excepted and wake up anyone waiting on waitForDone()
|
||||
|
||||
if (_exchange != null && !_exchange.isDone())
|
||||
{
|
||||
switch (_exchange.getStatus())
|
||||
{
|
||||
case HttpExchange.STATUS_CANCELLED:
|
||||
case HttpExchange.STATUS_CANCELLING:
|
||||
case HttpExchange.STATUS_COMPLETED:
|
||||
case HttpExchange.STATUS_EXCEPTED:
|
||||
case HttpExchange.STATUS_EXPIRED:
|
||||
break;
|
||||
default:
|
||||
_exchange.setStatus(HttpExchange.STATUS_EXCEPTED);
|
||||
_exchange.getEventListener().onException(new EOFException("local close"));
|
||||
}
|
||||
}
|
||||
|
||||
_endp.close();
|
||||
}
|
||||
|
|
|
@ -173,6 +173,7 @@ public class HttpExchange
|
|||
case STATUS_WAITING_FOR_CONNECTION:
|
||||
case STATUS_WAITING_FOR_COMMIT:
|
||||
case STATUS_CANCELLING:
|
||||
case STATUS_EXCEPTED:
|
||||
set=_status.compareAndSet(oldStatus,newStatus);
|
||||
break;
|
||||
}
|
||||
|
@ -283,6 +284,7 @@ public class HttpExchange
|
|||
case STATUS_CANCELLING:
|
||||
switch (newStatus)
|
||||
{
|
||||
case STATUS_EXCEPTED:
|
||||
case STATUS_CANCELLED:
|
||||
if (set=_status.compareAndSet(oldStatus,newStatus))
|
||||
done();
|
||||
|
@ -301,6 +303,9 @@ public class HttpExchange
|
|||
case STATUS_START:
|
||||
set=_status.compareAndSet(oldStatus,newStatus);
|
||||
break;
|
||||
default:
|
||||
set=true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -282,10 +282,10 @@ public abstract class AbstractHttpExchangeCancelTest extends TestCase
|
|||
getHttpClient().send(exchange);
|
||||
|
||||
int status = exchange.waitForDone();
|
||||
assertEquals(HttpExchange.STATUS_COMPLETED, status);
|
||||
assertTrue(exchange.isResponseCompleted());
|
||||
assertFalse(exchange.isFailed());
|
||||
assertFalse(exchange.isAssociated());
|
||||
assertEquals(HttpExchange.STATUS_COMPLETED, status);
|
||||
}
|
||||
|
||||
public void testHttpExchangeOnServerException() throws Exception
|
||||
|
|
|
@ -532,6 +532,11 @@ public class HttpExchangeTest extends TestCase
|
|||
response.getOutputStream().write(bout.toByteArray());
|
||||
}
|
||||
}
|
||||
catch(InterruptedException e)
|
||||
{
|
||||
System.err.println(e);
|
||||
Log.debug(e);
|
||||
}
|
||||
catch(IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
|
|
Loading…
Reference in New Issue