PROTON-1959: [c epoll] Fix crash in some reconnect scenarios.

Proactor should release driver->collector *not* pn_connection_collector()
as the driver always keeps a valid collector pointer, but the connection may be
NULL if it has been released for reconnect.


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

Branch: refs/heads/master
Commit: 84b0129d636841d3b1e7f4cd76eb84b8d00163bf
Parents: 6e9bbe9
Author: Alan Conway <acon...@redhat.com>
Authored: Fri Oct 26 17:57:12 2018 -0400
Committer: Alan Conway <acon...@redhat.com>
Committed: Tue Oct 30 16:37:01 2018 -0400

----------------------------------------------------------------------
 c/src/proactor/epoll.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/84b0129d/c/src/proactor/epoll.c
----------------------------------------------------------------------
diff --git a/c/src/proactor/epoll.c b/c/src/proactor/epoll.c
index 9ea839f..5537025 100644
--- a/c/src/proactor/epoll.c
+++ b/c/src/proactor/epoll.c
@@ -936,8 +936,7 @@ static void pconnection_forced_shutdown(pconnection_t *pc) {
   // pconnection_process will never be called again.  Zero everything.
   pc->timer_armed = false;
   pc->context.wake_ops = 0;
-  pn_connection_t *c = pc->driver.connection;
-  pn_collector_release(pn_connection_collector(c));
+  pn_collector_release(pc->driver.collector);
   assert(pconnection_is_final(pc));
   pconnection_cleanup(pc);
 }


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

Reply via email to