summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2013-09-29 12:42:33 +0000
committerRobert Godfrey <rgodfrey@apache.org>2013-09-29 12:42:33 +0000
commit44d4ac330b25a6542f75524bd9c0f902b48b8c34 (patch)
tree6d393f14a997283ea0bd5c60a31a0b6ab7e62bd4 /qpid/java
parentb5cb1303361c52533758e5b74b953163358931b3 (diff)
downloadqpid-python-44d4ac330b25a6542f75524bd9c0f902b48b8c34.tar.gz
QPID-5190 : [JMS AMQP 1.0 CLient] Notify the connection endpoint when the socket is remotely closed
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1527319 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java2
-rw-r--r--qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java9
-rw-r--r--qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java14
3 files changed, 24 insertions, 1 deletions
diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
index 2eea6db141..7de2671357 100644
--- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
+++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
@@ -110,7 +110,7 @@ public class SessionImpl implements Session, QueueSession, TopicSession
}
try
{
- final Error error = end.getError();
+ final Error error = end == null ? null : end.getError();
final ExceptionListener exceptionListener = _connection.getExceptionListener();
if(exceptionListener != null)
{
diff --git a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java
index 2cbf0ee591..350c6e690c 100644
--- a/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java
+++ b/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Connection.java
@@ -390,9 +390,18 @@ public class Connection implements SocketExceptionHandler
}
+ if(!handler.isDone())
+ {
+ _conn.inputClosed();
+ if(_conn.getConnectionEventListener() != null)
+ {
+ _conn.getConnectionEventListener().closeReceived();
+ }
+ }
}
catch (IOException e)
{
+ _conn.inputClosed();
e.printStackTrace();
}
}
diff --git a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
index ea3ad7606e..b5520c24e5 100644
--- a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
+++ b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/ConnectionEndpoint.java
@@ -380,6 +380,20 @@ public class ConnectionEndpoint implements DescribedTypeConstructorRegistry.Sour
if (!_closedForInput)
{
_closedForInput = true;
+ switch(_state)
+ {
+ case UNOPENED:
+ case AWAITING_OPEN:
+ case CLOSE_SENT:
+ _state = ConnectionState.CLOSED;
+ case OPEN:
+ _state = ConnectionState.CLOSE_RECEIVED;
+ case CLOSED:
+ // already sent our close - too late to do anything more
+ break;
+ default:
+ }
+
for (int i = 0; i < _receivingSessions.length; i++)
{
if (_receivingSessions[i] != null)