You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2017/02/24 21:41:43 UTC

qpid-proton git commit: PROTON-1416: Change handling of operator forced connection close - Treat as if no close from was received at all, so that the underlying transport close will force reconnect to take place.

Repository: qpid-proton
Updated Branches:
  refs/heads/master fa677481c -> 3cb2ace54


PROTON-1416: Change handling of operator forced connection close
- Treat as if no close from was received at all, so that the underlying
  transport close will force reconnect to take place.


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/3cb2ace5
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/3cb2ace5
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/3cb2ace5

Branch: refs/heads/master
Commit: 3cb2ace54bb38a1506e4b3902cc1c557dce6d3ef
Parents: fa67748
Author: Andrew Stitcher <as...@apache.org>
Authored: Fri Feb 17 16:22:42 2017 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Fri Feb 24 16:26:48 2017 -0500

----------------------------------------------------------------------
 proton-c/bindings/cpp/src/messaging_adapter.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/3cb2ace5/proton-c/bindings/cpp/src/messaging_adapter.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/messaging_adapter.cpp b/proton-c/bindings/cpp/src/messaging_adapter.cpp
index 17c84cd..de35989 100644
--- a/proton-c/bindings/cpp/src/messaging_adapter.cpp
+++ b/proton-c/bindings/cpp/src/messaging_adapter.cpp
@@ -42,6 +42,8 @@
 #include <proton/session.h>
 #include <proton/transport.h>
 
+#include <string.h>
+
 namespace proton {
 
 namespace {
@@ -231,8 +233,18 @@ void messaging_adapter::on_session_remote_close(proton_event &pe) {
 void messaging_adapter::on_connection_remote_close(proton_event &pe) {
     pn_event_t *cevent = pe.pn_event();
     pn_connection_t *conn = pn_event_connection(cevent);
+    pn_condition_t *cond = pn_connection_remote_condition(conn);
+
+    // If we got a close with a condition of amqp:connection:forced then treat this
+    // the same as just having the transport closed by the peer without sending any
+    // events. This allows reconnection to happen transparently in this case
+    if (pn_condition_is_set(cond)
+        && !strcmp(pn_condition_get_name(cond),"amqp:connection:forced")) {
+        return;
+    }
+
     connection c(make_wrapper(conn));
-    if (pn_condition_is_set(pn_connection_remote_condition(conn))) {
+    if (pn_condition_is_set(cond)) {
         delegate_.on_connection_error(c);
     }
     delegate_.on_connection_close(c);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org