Repository: qpid-proton Updated Branches: refs/heads/master 2a784f41f -> c18484e2f
check for errors on accept Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/c18484e2 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/c18484e2 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/c18484e2 Branch: refs/heads/master Commit: c18484e2f5869a10c6270839c53c97e8bc47a25f Parents: 2a784f4 Author: Rafael Schloming <[email protected]> Authored: Wed Jan 21 22:29:00 2015 -0500 Committer: Rafael Schloming <[email protected]> Committed: Wed Jan 21 22:29:00 2015 -0500 ---------------------------------------------------------------------- proton-c/bindings/python/proton/__init__.py | 3 +++ proton-c/bindings/python/proton/reactors.py | 7 +++++-- proton-c/src/posix/selector.c | 6 ++++++ proton-c/src/reactor/acceptor.c | 5 ++++- 4 files changed, 18 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c18484e2/proton-c/bindings/python/proton/__init__.py ---------------------------------------------------------------------- diff --git a/proton-c/bindings/python/proton/__init__.py b/proton-c/bindings/python/proton/__init__.py index 17cc670..d07fb6f 100644 --- a/proton-c/bindings/python/proton/__init__.py +++ b/proton-c/bindings/python/proton/__init__.py @@ -1225,6 +1225,9 @@ indicate whether the fd has been registered or not. def is_terminal(self): return pn_selectable_is_terminal(self._impl) + def terminate(self): + pn_selectable_terminate(self._impl) + def release(self): pn_selectable_release(self._impl) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c18484e2/proton-c/bindings/python/proton/reactors.py ---------------------------------------------------------------------- diff --git a/proton-c/bindings/python/proton/reactors.py b/proton-c/bindings/python/proton/reactors.py index 5e24269..48eb100 100644 --- a/proton-c/bindings/python/proton/reactors.py +++ b/proton-c/bindings/python/proton/reactors.py @@ -924,9 +924,12 @@ class Reactor(Wrapper): def acceptor(self, host, port, handler=None): impl = _chandler(handler, self.errors) - result = Acceptor(pn_reactor_acceptor(self._impl, host, port, impl)) + aimpl = pn_reactor_acceptor(self._impl, host, str(port), impl) pn_decref(impl) - return result + if aimpl: + return Acceptor(aimpl) + else: + raise IOError(pn_error_text(pn_io_error(pn_reactor_io(self._impl)))) def connection(self, handler=None): impl = _chandler(handler, self.errors) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c18484e2/proton-c/src/posix/selector.c ---------------------------------------------------------------------- diff --git a/proton-c/src/posix/selector.c b/proton-c/src/posix/selector.c index fa38d1c..db82f11 100644 --- a/proton-c/src/posix/selector.c +++ b/proton-c/src/posix/selector.c @@ -183,6 +183,12 @@ pn_selectable_t *pn_selector_next(pn_selector_t *selector, int *events) if (pfd->revents & POLLIN) { ev |= PN_READABLE; } + if ((pfd->revents & POLLERR) || + (pfd->revents & POLLHUP) || + (pfd->revents & POLLNVAL)) { + ev |= PN_READABLE; + ev |= PN_WRITABLE; + } if (pfd->revents & POLLOUT) { ev |= PN_WRITABLE; } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c18484e2/proton-c/src/reactor/acceptor.c ---------------------------------------------------------------------- diff --git a/proton-c/src/reactor/acceptor.c b/proton-c/src/reactor/acceptor.c index 2ca1b1a..405d372 100644 --- a/proton-c/src/reactor/acceptor.c +++ b/proton-c/src/reactor/acceptor.c @@ -54,8 +54,11 @@ void pni_acceptor_finalize(pn_selectable_t *sel) { } pn_acceptor_t *pn_reactor_acceptor(pn_reactor_t *reactor, const char *host, const char *port, pn_handler_t *handler) { - pn_selectable_t *sel = pn_reactor_selectable(reactor); pn_socket_t socket = pn_listen(pn_reactor_io(reactor), host, port); + if (socket == PN_INVALID_SOCKET) { + return NULL; + } + pn_selectable_t *sel = pn_reactor_selectable(reactor); pn_selectable_set_fd(sel, socket); pn_selectable_on_readable(sel, pni_acceptor_readable); pn_selectable_on_finalize(sel, pni_acceptor_finalize); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
