You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2015/07/02 17:26:53 UTC

qpid-proton git commit: PROTON-907: check error status of connections selectable, and close transport if set

Repository: qpid-proton
Updated Branches:
  refs/heads/master c1a1df200 -> 5638c5a86


PROTON-907: check error status of connections selectable, and close transport if set


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

Branch: refs/heads/master
Commit: 5638c5a86c4802e587d111ea888d0d3d3a0045b0
Parents: c1a1df2
Author: Gordon Sim <gs...@redhat.com>
Authored: Thu Jul 2 14:02:32 2015 +0100
Committer: Gordon Sim <gs...@redhat.com>
Committed: Thu Jul 2 15:17:39 2015 +0100

----------------------------------------------------------------------
 proton-c/src/messenger/messenger.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5638c5a8/proton-c/src/messenger/messenger.c
----------------------------------------------------------------------
diff --git a/proton-c/src/messenger/messenger.c b/proton-c/src/messenger/messenger.c
index 9749bf5..4507a45 100644
--- a/proton-c/src/messenger/messenger.c
+++ b/proton-c/src/messenger/messenger.c
@@ -233,6 +233,13 @@ void pni_lnr_modified(pn_listener_ctx_t *lnr)
 
 int pn_messenger_process_events(pn_messenger_t *messenger);
 
+static void pni_connection_error(pn_selectable_t *sel)
+{
+  pn_transport_t *transport = pni_transport(sel);
+  pn_transport_close_tail(transport);
+  pn_transport_close_head(transport);
+}
+
 static void pni_connection_readable(pn_selectable_t *sel)
 {
   pn_connection_ctx_t *context = pni_context(sel);
@@ -444,6 +451,7 @@ static pn_connection_ctx_t *pn_connection_ctx(pn_messenger_t *messenger,
   ctx->connection = conn;
   pn_selectable_t *sel = pn_selectable();
   ctx->selectable = sel;
+  pn_selectable_on_error(sel, pni_connection_error);
   pn_selectable_on_readable(sel, pni_connection_readable);
   pn_selectable_on_writable(sel, pni_connection_writable);
   pn_selectable_on_expired(sel, pni_connection_expired);
@@ -1357,6 +1365,9 @@ int pn_messenger_process(pn_messenger_t *messenger)
     if (events & PN_EXPIRED) {
       pn_selectable_expired(sel);
     }
+    if (events & PN_ERROR) {
+      pn_selectable_error(sel);
+    }
   }
   // ensure timer events are processed. Cannot call this inside the while loop
   // as the timer events are not seen by the selector


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