diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-09-29 12:42:33 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-09-29 12:42:33 +0000 |
| commit | 44d4ac330b25a6542f75524bd9c0f902b48b8c34 (patch) | |
| tree | 6d393f14a997283ea0bd5c60a31a0b6ab7e62bd4 /qpid/java | |
| parent | b5cb1303361c52533758e5b74b953163358931b3 (diff) | |
| download | qpid-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')
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) |
