You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2016/01/26 14:29:11 UTC
qpid-proton git commit: PROTON-1104: Delay releasing timer and IPC
pipes until pn_reactor_stop()
Repository: qpid-proton
Updated Branches:
refs/heads/master 72b5f9532 -> 8c6c7c531
PROTON-1104: Delay releasing timer and IPC pipes until pn_reactor_stop()
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/8c6c7c53
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/8c6c7c53
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/8c6c7c53
Branch: refs/heads/master
Commit: 8c6c7c53198f4152472572b8fccc5ab453d9ca86
Parents: 72b5f95
Author: Ken Giusti <kg...@apache.org>
Authored: Sun Jan 24 16:59:30 2016 -0500
Committer: Ken Giusti <kg...@apache.org>
Committed: Tue Jan 26 08:23:10 2016 -0500
----------------------------------------------------------------------
proton-c/src/reactor/reactor.c | 41 +++++++++++--------------------------
1 file changed, 12 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/8c6c7c53/proton-c/src/reactor/reactor.c
----------------------------------------------------------------------
diff --git a/proton-c/src/reactor/reactor.c b/proton-c/src/reactor/reactor.c
index 7ea279b..3397e40 100644
--- a/proton-c/src/reactor/reactor.c
+++ b/proton-c/src/reactor/reactor.c
@@ -406,22 +406,14 @@ bool pn_reactor_process(pn_reactor_t *reactor) {
previous = reactor->previous = type;
pn_decref(event);
pn_collector_pop(reactor->collector);
- } else {
- if (pni_reactor_more(reactor)) {
- if (previous != PN_REACTOR_QUIESCED && reactor->previous != PN_REACTOR_FINAL) {
- pn_collector_put(reactor->collector, PN_OBJECT, reactor, PN_REACTOR_QUIESCED);
- } else {
- return true;
- }
+ } else if (pni_reactor_more(reactor)) {
+ if (previous != PN_REACTOR_QUIESCED && reactor->previous != PN_REACTOR_FINAL) {
+ pn_collector_put(reactor->collector, PN_OBJECT, reactor, PN_REACTOR_QUIESCED);
} else {
- if (reactor->selectable) {
- pn_selectable_terminate(reactor->selectable);
- pn_reactor_update(reactor, reactor->selectable);
- reactor->selectable = NULL;
- } else {
- return false;
- }
+ return true;
}
+ } else {
+ return false;
}
}
}
@@ -441,25 +433,11 @@ static void pni_timer_readable(pn_selectable_t *sel) {
pni_timer_expired(sel);
}
-static void pni_timer_finalize(pn_selectable_t *sel) {
- pn_reactor_t *reactor = pni_reactor(sel);
- pn_socket_t fd = pn_selectable_get_fd(sel);
- if (fd == reactor->wakeup[0]) {
- for (int i = 0; i < 2; i++) {
- if (reactor->wakeup[i] != PN_INVALID_SOCKET) {
- pn_close(reactor->io, reactor->wakeup[i]);
- reactor->wakeup[i] = PN_INVALID_SOCKET;
- }
- }
- }
-}
-
pn_selectable_t *pni_timer_selectable(pn_reactor_t *reactor) {
pn_selectable_t *sel = pn_reactor_selectable(reactor);
pn_selectable_set_fd(sel, reactor->wakeup[0]);
pn_selectable_on_readable(sel, pni_timer_readable);
pn_selectable_on_expired(sel, pni_timer_expired);
- pn_selectable_on_finalize(sel, pni_timer_finalize);
pn_selectable_set_reading(sel, true);
pn_selectable_set_deadline(sel, pn_timer_deadline(reactor->timer));
pn_reactor_update(reactor, sel);
@@ -484,8 +462,13 @@ void pn_reactor_start(pn_reactor_t *reactor) {
void pn_reactor_stop(pn_reactor_t *reactor) {
assert(reactor);
+ if (reactor->selectable) {
+ pn_selectable_terminate(reactor->selectable);
+ pn_reactor_update(reactor, reactor->selectable);
+ reactor->selectable = NULL;
+ }
pn_collector_put(reactor->collector, PN_OBJECT, reactor, PN_REACTOR_FINAL);
- // XXX: should consider removing this fron stop to avoid reentrance
+ // XXX: should consider removing this from stop to avoid reentrance
pn_reactor_process(reactor);
pn_collector_release(reactor->collector);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org