2474 Commits

Author SHA1 Message Date
sigiesec
5b510656d0 Problem: unreachable code around socket_base_t::add/remove_signaler
Solution: replaced by assertion
2018-02-08 22:16:30 +01:00
sigiesec
41f459e1dc Problem: formatting inconsistent
Solution: applied clang-format
2018-02-02 15:47:43 +01:00
Pontus Sköldström
542fe67f25 Problem: ZMQ_DISH triggers assert when hitting the watermark(?)
Solves issue #2907 by checking whether the msg already has a group
2018-02-02 14:01:45 +01:00
sigiesec
206c832167 Problem: in case of exhausted resources on creation of a context, assertions are triggered
Solution: signal error to caller, and apply appropriate cleanup
2018-01-31 20:53:06 +01:00
Simon Giesecke
7488be61c2 Problem: add_fd might be called with fd_ == retired_fd
Solution: add assertion
2018-01-25 16:03:43 +01:00
Bill Torpey
ec05166545 prevent duplicate connections from PUB sockets also (see https://github.com/zeromq/libzmq/issues/788) 2017-12-29 14:36:59 -05:00
evoskuil
9622984241 Problem: vc++ 11.0 (vs 2012) compile fails on move semantics. 2017-12-14 14:58:02 -08:00
evoskuil
8d78e08f71 Problem: fn pointers are not bool (vc++ warning C4550). 2017-12-14 12:47:38 -08:00
Jasper Lievisse Adriaanse
22b57f6f28 Problem: Build is broken on OpenBSD
Solution: re-instate block for OpenBSD erroneously removed in 9622a830
2017-12-14 09:47:49 +01:00
Luca Boccassi
ac552ba448 Problem: accept4 not available on all platforms
Solution: check for availability in CMake and autoconf before using it
2017-11-18 11:33:53 +00:00
ccpaging
e8ad51e62f Clean code for Visual Studio 2008 compiler 2017-11-16 14:09:13 +08:00
Rolf Timmermans
c8592dfbc3 Problem: REQ socket with ZMQ_REQ_RELAXED does not report ZMQ_POLLOUT when queried for events after first message.
Solution: Check for strictness before returning false if no reply has been received.
2017-11-08 09:55:14 +01:00
Anton Bärwald
630f6d6ae7 Problem: On OSX usleep() changes the errno value
Solution: Update errno value after calling usleep()
2017-11-02 16:01:11 +01:00
sigiesec
f9d7eea6f9 Problem: code duplication
Solution: unified Windows & non-Windows code further
2017-10-26 11:05:39 +02:00
sigiesec
e7817ad38d Problem: code duplication
Solution: reduced code duplication by introducing local variables and
new function trigger_events
2017-10-26 10:47:05 +02:00
sigiesec
37914d1be2 Problem: get_fd_family call is expensive and called frequently for the
same fds

Solution: cache results of get_fd_family
2017-10-26 09:46:11 +02:00
sigiesec
cd32603c0e Problem: wsa_events are initialized/destroyed within every loop
iteration even if not used

Solution: Move wsa_events closer to usage
2017-10-25 18:30:03 +02:00
f18m
2aa0e6fd4d Change ZMQ_THREAD_AFFINITY to ZMQ_THREAD_AFFINITY_CPU_ADD/ZMQ_THREAD_AFFINITY_CPU_REMOVE. Avoid prefix thread names when no prefix was set. 2017-10-25 09:55:47 +02:00
Yann Diorcet
81327af557 Partial Windows XP support 2017-10-24 13:12:34 +02:00
Simon Giesecke
7ec58b279a Problem: one missed optimization opportunity for blob_t map lookup
Solution: create referencing blob_t
2017-10-23 11:12:15 +02:00
Simon Giesecke
a4aceb272b Problem: use of std::map::insert is inefficient
Solution: use std::map::emplace instead, where available
2017-10-22 17:15:00 +02:00
Simon Giesecke
0897b3e07b Problem: excessive memory allocations around blob_t (#2796)
* Problem: excessive memory allocations around blob_t

Solution: redefine blob_t as a custom type, and use reference/move
semantics where possible
2017-10-21 12:19:51 +01:00
sigiesec
cfb2129557 Problem: comment before sndtimeo/rcvtimeo does not specify dimension
Solution: add "milliseconds"
2017-10-18 15:04:54 +02:00
f18m
f25cd6e7be Background thread names (#2784)
* Add ZMQ_THREAD_NAME_PREFIX ctx option
2017-10-17 12:06:50 +01:00
f18m
bfbb4ff2e9 Background threads enhancements (#2778)
* Background thread scheduling 

- add ZMQ_THREAD_AFFINITY ctx option; set all thread scheduling options
from the context of the secondary thread instead of using the main
process thread context!
- change ZMQ_THREAD_PRIORITY to support setting NICE of the background
thread when using SCHED_OTHER
2017-10-16 12:29:03 +01:00
Luca Boccassi
b6aee51691 Problem: strict ZAP protocol adherence is backward incompatible
Solution: add ZMQ_ZAP_ENFORCE_DOMAIN to hide backward incompatible
change and make it disabled by default.
In a future release that breaks API compatibility we can then switch
the default to enabled in order to achieve full RFC compatibility.

Fixes #2762
2017-10-09 17:48:33 +01:00
Luca Boccassi
50bddbaac9 Problem: dead code in options.hpp
Solution: remove unused zap_ipc_creds boolean variable
2017-10-09 13:52:56 +01:00
Luca Boccassi
e3ee55b191 Problem: missing indentation for UDP branch
Solution: fix it
2017-10-09 13:52:56 +01:00
Luca Boccassi
c8f3f8a5da Problem: ambiguos bitwise ANDs in if statements
Solution: wrap bitwise ANDs in brackets as the static analyzer suggests
2017-10-09 13:52:56 +01:00
Luca Boccassi
7ad06f1449 Problem: IPC event_closed logs -1 as the FD
Solution: take a copy of the file descriptor before setting it to
retired_fd.
2017-10-06 09:53:59 +01:00
Luca Boccassi
9be8cebd21 Merge pull request #2765 from GreatFruitOmsk/issue-2764
Problem: Race condition in IPC sockets
2017-10-06 09:25:33 +01:00
Ilya Kulakov
656cdb959a Problem: Race condition in IPC sockets
Solution: Don't unlink file on close

File may not belong to the socket at that point.
2017-10-05 14:57:10 -07:00
Christopher Hall
997825bdf1 add __FreeBSD__ to ifdefs
On FreeBSD the sysmbol __FreeBSD_kernel__ is only defines if a
specific param.h file is included, unlike Debian/kFreeBSD where this
symbol is always defined.  So also compile the FreeBSD specific code
if __FreeBSD__ is defined for FreeBSD 11 & 12 compatibility.

Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2017-10-03 15:30:42 +08:00
Luca Boccassi
44f96a3652 Merge pull request #2745 from sigiesec/rename-identity
Problem: term "identity" is confusing
2017-09-20 10:08:45 +02:00
sigiesec
2c8a7223b8 Problem: remaining use of "identity"
Solution: replaced by "routing id"
2017-09-19 17:55:00 +02:00
sigiesec
7e3f4b1d32 Problem: ZMTP protocol broken w.r.t. Identity property
Solution: differentiate propertly between ZMTP property names and ZeroMQ API property names
2017-09-19 17:55:00 +02:00
sigiesec
a5e3a65ae2 Problem: inconsistency between zmq.h and zmq_draft.h
Solution: fix zmq_draft.h
2017-09-19 17:55:00 +02:00
sigiesec
4b821d8f84 Problem: remaining uses of "identity"
Solution: replaced by "routing id"
2017-09-19 17:54:59 +02:00
sigiesec
fab57634b4 Problem: Message metadata properties still refer to "identity"
Solution: Renamed, but support querying the property by its old name
2017-09-19 17:53:53 +02:00
sigiesec
27c7e52a5a Problem: Usage of "rid" in server_t
Solution: Replaced by "routing_id"
2017-09-19 17:53:53 +02:00
sigiesec
41bae55af7 Problem: inconsistent naming related to routing ids
Solution: renamed routing_id fields in pipe_t, renamed ZMQ_CONNECT_RID to ZMQ_CONNECT_ROUTING_ID
2017-09-19 17:53:53 +02:00
sigiesec
9e7507b38b Problem: term "identity" is confusing
Solution: replace by "routing id"
2017-09-19 17:53:44 +02:00
Luca Boccassi
edb4ca1023 Problem: zmq_connect fails after disconnect due to RECONNECT_IVL == -1
Solution: when a connection breaks and ZMQ_RECONNECT_IVL is set to -1,
which means a reconnection will not be attempted, send a message from
the I/O thread to the application thread to make the socket call
term_endpoint, which is the equivalent of manually calling
zmq_disconnect.
This way subsequent zmq_connect call to the same endpoint will attempt
again to do a connection.
Otherwise, for some socket types like SUBs, those new connects will
fail as the endpoint is recorded, despite the connection having been
permanently closed.

Add test cases to exercise this corner case with TCP and IPC.
2017-09-19 14:05:43 +01:00
sigiesec
e546f9296e Problem: duplicated code & inconsistent behaviour between
mechanisms

Solution: uniformly require a ZAP domain to be set to activate ZAP
handling, clarify comment on Stonehouse pattern
2017-09-18 17:01:38 +02:00
sigiesec
a5f94cb610 Problem: tests without ZAP handler are failing
Solution: emit events as expected by tests, and refuse connections when
ZAP is required but no handler started

Addresses #2711 partially
2017-09-18 12:58:09 +02:00
Luca Boccassi
5de2a82be8 Merge pull request #2744 from msune/refactor_poller_wait
Problem: duplicated socket_poller::wait() code
2017-09-13 00:48:26 +02:00
Marc Sune
5b92989540 Problem: duplicated socket_poller::wait() code
zmq::socket_poller_t::wait() had an important set of common lines
between POLL and SELECT variant.

Solution: refactor zmq::socket_poller_t::wait() and add the
following methods:

zmq::socket_poller_t::zero_trail_events()
zmq::socket_poller_t::check_events()
zmq::socket_poller_t::adjust_timeout()

Signed-off-by: Marc Sune <mardevel@gmail.com>
2017-09-12 21:47:57 +02:00
Doron Somech
af03241dcb Revert "Problem: term "identity" is confusing" 2017-09-07 15:47:43 +03:00
sigiesec
deae59dca9 Problem: Message metadata properties still refer to "identity"
Solution: Renamed, but support querying the property by its old name
2017-09-07 10:33:25 +02:00
sigiesec
ae2ea1a655 Problem: Usage of "rid" in server_t
Solution: Replaced by "routing_id"
2017-09-07 10:33:25 +02:00