Paul Thiele
6737d50933
Problem: if ZMQ_XPUB_VERBOSER is used with proxies unsubscribe messages are lost
...
Solution: add socket option ZMQ_XSUB_VERBOSE_UNSUBSCRIBE to forward all unsubscribe messages
2021-11-05 15:12:31 +01:00
E. G. Patrick Bos
36e4c9b474
add zmq_ppoll
...
zmq_ppoll mostly mimics zmq_poll behavior, except for the added feature of being able to specify a signal mask. Signals in this mask will be blocked during execution of zmq_ppoll. Switching of the process' active signal mask happens atomically with the actual poll call, so that no race conditions can occur. This behavior is useful when one wants to gracefully handle POSIX signals without race conditions. See e.g. the discussion below https://250bpm.com/blog:12/ for an explanation.
Also includes two new tests:
1. test_zmq_ppoll_fd does the same thing as test_zmq_poll_fd, demonstrating backwards compatibility with zmq_poll when used with a default signal mask.
2. test_zmq_ppoll_signals demonstrates the use of zmq_ppoll with a signal mask, blocking out SIGTERM everywhere except in zmq_ppoll, allowing to handle the signal in one place without having to worry about race conditions.
2021-09-24 11:04:20 +02:00
Luca Boccassi
276bab8d3b
Problem: test_socks and test_proxy hang under valgrind in Github Actions
...
Solution: skip them
2021-09-22 16:40:17 +01:00
Doron Somech
1c6c5514ed
problem: no way to know when connection is temporarly dropped
...
This is important in order to send the login sequence of a client to the server.
Solution: add ZMQ_HICCUP_MSG to a socket, socket would send that message whenever a connection get temporarly disconnected
2021-06-06 17:14:22 +03:00
Luca Boccassi
38bb82b0c8
Problem: vmci tests built in repo root
...
Solution: move them with the rest
2021-02-20 21:38:02 +00:00
Luca Boccassi
16af1bd622
Problem: test_pubsub broken everywhere
...
Solution: disable it
2021-01-18 09:42:33 +00:00
mjvankampen
2dd24d6d80
Problem: norm fails to compile under windows ( #4123 )
...
* Makes norm useable (but maybe slow) on windows
2021-01-18 08:42:14 +00:00
Luca Boccassi
2347a76413
Problem: build broken on debian/hurd
...
Solution: fix it
2021-01-16 17:48:29 +00:00
Luca Boccassi
e708623c12
Problem: no fuzzing coverage for ZMQ_STREAM
...
Solution: add tests
2020-09-06 11:05:15 +01:00
Simon Giesecke
c6301206dc
Problem: no tests for ZMQ_TCP_ACCEPT_FILTER
...
Solution: add some tests
2020-09-04 15:51:33 +02:00
Luca Boccassi
f43013a7d1
Problem: no fuzz testing for options
...
Solution: add it
2020-08-21 15:25:55 +01:00
Luca Boccassi
a4dbdb614e
Problem: some platforms do not have strnlen
...
Solution: move compat redefinition to compat.hpp header so that
it can be used from msg.cpp
2020-08-21 14:39:08 +01:00
Luca Boccassi
eb9118f0c9
Problem: no fuzz testing for websockets
...
Solution: add tests for plain WS
2020-07-05 23:43:58 +01:00
Luca Boccassi
e95e57d385
Problem: fuzzer corpus file can be quite large
...
Solution: move all corpora to the zeromq/libzmq-fuzz-corpora repository
for easier handling, and to avoid inflating the size of zeromq/libzmq.
Clone it for the CI on the fly.
2020-07-04 17:50:35 +01:00
Luca Boccassi
2d23b599f2
Problem: test_bind_fuzzer does not use corpus for regression tests
...
Solution: do it
2020-05-16 15:01:15 +01:00
Doron Somech
3da84c6d06
problem: no thread-safe alternative for ZMQ_PAIR
...
Solution: create ZMQ_CHANNEL, the thread safe alternative
2020-05-09 08:49:01 +03:00
Luca Boccassi
5b7f67a822
Problem: memory sanitizer not enabled in CI
...
Solution: add -fsanitize=leak to the sanitizers flag, and disable
test_many_sockets as it currently fails due to:
https://github.com/zeromq/libzmq/issues/3898
2020-05-06 00:14:02 +01:00
Luca Boccassi
9ab3fbeee2
Problem: we want to have multiple seed corpora per fuzzer binary
...
Solution: store them each as a single line in the text file and convert them
at install time
2020-05-05 11:48:11 +01:00
Luca Boccassi
c8e62cb2e0
Problem: no dictionaries and seed corpora for fuzzers
...
Solution: add them and install them where oss-fuzz expects them
2020-05-04 02:11:15 +01:00
Luca Boccassi
96787c35f8
Problem: no fuzz testing for API with variable input
...
Solution: add tests for zmq_bind, zmq_connect and zmq_z85_decode
2020-04-27 01:18:45 +01:00
Luca Boccassi
57df836381
Problem: no fuzz testing for CURVE
...
Solution: add simple, initial tests for client and server
2020-04-27 01:18:31 +01:00
Luca Boccassi
8e774f3cd6
Problem: no integration with fuzz testing
...
Solution: port the 2 new tests from oss-fuzz, and wire them up to
be ran manually with a static input in normal builds.
Add a specific configure option to use the external fuzzing engine
from oss-fuzz.
2020-04-27 01:18:08 +01:00
Doron Somech
81444136d5
problem: router doesn't know when peer disconnected
...
ZMQ_ROUTER_NOTIFY doesn't have a context and doesn't play nice with protocols. with ZMQ_DISCONNECT_MSG we can set it to a protocol message, like DISCONNECT in majordomo. Router will send it when a peer is disconnected. Another advantage of ZMQ_DISCONNECT_MSG is that it also works on inproc.
Together with ZMQ_HEARTBEAT it allows to build very reliable protocols, and much simpler as well.
2020-04-17 18:04:28 +03:00
Doron Somech
93da6763b0
problem: ZMQ_HEARTBEAT is not useful without sending an hello message
...
When using ZMQ_HEARTBEAT one still needs to implement application-level heartbeat in order to know when to send a hello message.
For example, with the majordomo protocol, the worker needs to send a READY message when connecting to a broker. If the connection to the broker drops, and the heartbeat recognizes it the worker won't know about it and won't send the READY msg.
To solve that, the majordomo worker still has to implement heartbeat. With this new option, whenever the connection drops and reconnects the hello message will be sent, greatly simplify the majordomo protocol, as now READY and HEARTBEAT can be handled by zeromq.
2020-04-17 14:54:58 +03:00
Gudmundur Adalsteinsson
7b1fef28f9
Problem: boilerplate when init msg from data copy ( #3860 )
...
* Problem: boilerplate when init msg from data copy
Solution: Add zmq_msg_init_buffer to construct
a message by copying memory from buffer.
2020-04-09 23:59:43 +01:00
Bill Torpey
debbe08fb8
add option to stop trying to reconnect on ECONNREFUSED ( #3831 )
...
* add option to stop trying to reconnect on ECONNREFUSED
2020-02-23 17:17:22 +00:00
Luca Boccassi
52044b38f7
Merge pull request #3823 from somdoron/ZMQ_PEER
...
problem: zeromq doesn't has a thread-safe peer to peer socket
2020-02-09 21:53:18 +00:00
Doron Somech
70bc7dd925
problem: zeromq doesn't has a thread-safe peer to peer socket
...
Solution: a new socket type, called PEER. Very similar to SERVER, but can only connect to other PEERs. Also a new zmq_connect_peer method, that connect and return a routing-id in thread-safe and atomic operation
2020-02-09 23:20:14 +02:00
Luca Boccassi
253e9dd27b
Problem: libzmq does not send ZMTP 3.1 sub/cancel commands
...
Solution: if all peers of a socket are >= 3.1 use sub/cancel commands
instead of the old 0/1 messages.
For backward compatibility, move the handling of 0/1 or sub/cancel
command strings to the encoders, so that the right thing can be done
depending on the protocol version.
Do not set the command flag until the encoder, so that we can handle
the inproc case (which skips the encoder).
2020-02-05 17:03:39 +00:00
Simon Giesecke
b01685ea0a
Problem: no unittests for curve_encoding_t
...
Solution: add initial tests
2020-02-03 22:24:16 +01:00
Luca Boccassi
068385c951
Problem: internal reimplementation of strlcpy used by default on Linux
...
Solution: use libbsd by default when available, and the internal implementation
only as a fallback, to take advantage of Linux distros maintenance of the
string libraries.
2019-12-28 16:21:06 +01:00
Luca Boccassi
a61db18eee
Problem: WSS LAST_ENDPOINT returns WS transport
...
Solution: add wss_address_t subclass of ws_address_t to override the
to_string method
2019-11-28 12:37:53 +00:00
somdoron
7296fb5b15
problem: unsecured websocket is rarely used in production
...
Solution: support websocket with tls (wss)
2019-10-02 08:58:26 +03:00
somdoron
9be8334938
problem: sha1 external module conflict with czmq
...
Solution: allow to use external library (nss) for sha1 to avoid the conflict
2019-09-11 15:01:28 +03:00
somdoron
a48fdd6a7f
problem: ws_engine doesn't send correct host and path
...
Solution: extract path and host from the address
2019-09-05 17:33:38 +03:00
Luca Boccassi
2fe2ce1e37
Problem: static-only test run fails
...
Solution: add libtestutil.a before libzmq.a in LDADD listings, as the
linker will complain about undefined symbols otherwise
Fixes https://github.com/zeromq/libzmq/issues/3646
2019-09-02 12:11:25 +01:00
Luca Boccassi
a56d36b8e5
Merge pull request #3587 from somdoron/stream_engine_base
...
problem: ws_engine duplicate code from stream_engine
2019-07-18 11:57:27 +01:00
somdoron
157b2a2ee0
problem: ws_engine duplicate code from stream_engine
...
Solution: New class called stream_engine_base which is inherited by ws_engine, zmtp_engine and raw_engine.
2019-07-18 11:28:08 +03:00
Luca Boccassi
3692b26649
Merge pull request #3579 from somdoron/zws2
...
problem: browser cannot communicate with zeromq directly
2019-07-16 13:28:30 +01:00
somdoron
39941a0c82
problem: browser cannot communicate with zeromq directly
...
Solution: implement ZWS 2.0 which websocket transport for zeromq
2019-07-16 10:12:20 +03:00
Simon Giesecke
92dbb4caee
Problem: no C++ style secure memory allocator available
...
Solution: Added secure_allocator_t based on libsodium's memory management functions when available
2019-07-14 17:12:39 +02:00
Christophe Guillon
153418e175
Add tests for SOCKS proxy support
2019-06-13 15:35:27 +02:00
Luca Boccassi
9bcfc251f4
Problem: new test_xpub_manual_last_value not built by automake
...
Solution: list it
2019-05-18 16:10:12 +01:00
Simon Giesecke
5b40bdb194
Problem: redundant specific of testutil headers
...
Solution: remove redundant entries
2019-03-23 09:09:24 -04:00
Simon Giesecke
347708bcf2
Problem: test utilities are in headers and recompiled for every test
...
Solution: move test utilities to separate testutil library
2019-03-23 09:09:24 -04:00
Simon Giesecke
cbd4157638
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:36:28 -04:00
Simon Giesecke
9528983d95
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:36:24 -04:00
Simon Giesecke
90a4d268d9
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:07:32 -04:00
Simon Giesecke
6ed03e9333
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:07:14 -04:00
Simon Giesecke
75cd23d6af
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:06:39 -04:00
Simon Giesecke
06e713e9e0
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:06:39 -04:00
Simon Giesecke
4ab381436d
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
6f083df5fb
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
740780293a
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
924d47f818
Problem: tests without test framework
...
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
669fc4df5a
Problem: test_security_zap not using a test framework
...
Solution: migrate to unity
2019-03-20 16:49:46 +01:00
Simon Giesecke
36a16ec7d1
Problem: test_security_plain not using a test framework
...
Solution: migrate to Unity
2019-03-16 17:51:25 +01:00
Simon Giesecke
223ef516b6
Problem: test_security_null not using a test framework
...
Solution: migrate to Unity and separate test_security_no_zap_handler
2019-03-16 17:20:19 +01:00
Claudio Biagi
d41ed6180b
Proxy performance fix, ticket #3439
...
Improve performance of the proxy forwarding batch of message.
Add throughput benchmark for proxy.
Fix valgrind error reported on unitialized vars
RELICENSE: Add emtr grant
2019-03-08 15:02:58 +01:00
Luca Boccassi
e5a7f2eb56
Merge pull request #3402 from sigiesec/revert-64-bit-assertions
...
Revert 64 bit assertions
2019-02-07 15:58:38 +00:00
Simon Giesecke
31ff05d156
Revert "Problem: test build fails on 32 bit systems"
...
This reverts commit ac19d5f41ccca7acc40fb5970d6f7a0b20e0bc66.
2019-02-07 10:42:32 -05:00
Simon Giesecke
ec4ecb01ff
Problem: no test for ZMQ_BINDTODEVICE
...
Solution: add test case run with cap_net_admin
Fixes #3397
2019-02-07 09:39:02 -05:00
Simon Giesecke
ac19d5f41c
Problem: test build fails on 32 bit systems
...
Solution: define UNITY_SUPPORT_64 to force 64 bit support
2019-02-07 12:13:11 +01:00
Simon Giesecke
30e0cbbcdc
Problem: test_monitor depends on testutil_security
...
Solution: move general monitoring test utilities to new testutil_monitoring
2019-02-02 15:33:27 +01:00
Simon Giesecke
367246bb23
Problem: test_monitor is not using a test framework
...
Solution: migrate to unity
2019-02-02 15:33:27 +01:00
Simon Giesecke
01371398e9
Problem: monitor events are unversioned
...
Solution: add monitor event socket option
2019-02-02 15:33:27 +01:00
Simon Giesecke
93c1843f3e
Problem: duplication across ipc_listener_t, tcp_listener_t, tipc_listener_t
...
Solution: extract common base class stream_listener_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
d6f8d246e2
Problem: data members are duplicated across tcp_connecter_t, ipc_connecter_t, tipc_connecter_t
...
Solution: extract common base class stream_connecter_base_t
2019-02-01 04:58:47 -05:00
Luca Boccassi
9fae3d1f10
Problem: one more test fails on GNU/Hurd
...
Solution: mark test_rebind_ipc as XFAIL on Hurd as it does not
implement getsockname on IPC and thus it's impossible to use
wildcard IPC binds.
Document that ZMQ_LAST_ENDPOINT does not work on Hurd with IPC.
2019-01-27 14:04:18 +00:00
Luca Boccassi
3b6db4b370
Problem: test_pair_ipc fails on GNU/Hurd due to wildcard bind
...
Solution: mark it as XFAIL like the other tests that use ipc://*
2019-01-19 22:28:15 +00:00
Simon Giesecke
88bea4fd73
Problem: tests without test framework
...
Solution: migrate to unity
2018-12-25 13:50:31 +01:00
Luca Boccassi
16af86d49c
Merge pull request #3337 from sigiesec/sigiesec/migrate-more-tests
...
Migrate more tests to Unity
2018-12-16 17:52:00 +00:00
Simon Giesecke
00f4bd05be
Problem: tests without test framework
...
Solution: migrate to unity
2018-12-16 12:28:42 -05:00
Luca Boccassi
9d06e29cb2
Problem: duplicated pkg-config template
...
Solution: use the same for both autotools and cmake
2018-12-14 23:27:42 +00:00
Jeremie Courreges-Anglas
687c75858e
Problem: libtool -export-symbols-regexp seems to leak weak symbols
...
Solution: go back to using -Wl,--version-script.
Use ax_check_vscript.m4 from the autoconf-archive to detect support on
multiple platforms (eg Solaris ld(1) -M).
libtool -export-symbols-regexp used ld(1) --retain-symbols-file under
the hood, the latter lets some C++ weak symbols make their way into the
dynamic symbols table, along with the zmq_* interface. The reason for
such behavior is unknown to me.
2018-12-14 18:48:39 +01:00
Simon Giesecke
4a48184032
Problem: tests without test framework
...
Solution: migrate to unity
2018-12-10 07:01:06 -05:00
Simon Giesecke
a8b2e5a617
Problem: tests without test framework
...
Solution: migrate to unity
2018-12-09 07:36:39 -05:00
Jeremie Courreges-Anglas
941915d142
Problem: needlessly complicated conditionals in Makefile.am
...
Solution: the generic approach taken in 70b48a9 allows us to use the
same LDFLAGS on most platforms.
2018-12-07 20:36:51 +01:00
Jeremie Courreges-Anglas
386fa6e013
Problem: unused Debian/kFreeBSD-specific code
...
Solution: delete it
2018-12-07 20:31:25 +01:00
Luca Boccassi
4d1d64b764
Merge pull request #3322 from jcourreges/libtool-export-symbols
...
Portable solution for library symbols visibility
2018-12-07 18:06:36 +00:00
Jérémie Courrèges-Anglas
70b48a9c0c
Problem: --version-script not used on OpenBSD
...
Solution: switch to libtool symbol visibility support, which leads to
more portable constructs in the autotools glue. As noted in the libtool
documentation "This option has no effect on some platforms."
After this commit, global symbols intended to be kept private will
disappear on platforms that were previously not handled
using -Wl,--version-script.
2018-12-07 18:58:19 +01:00
Jérémie Courrèges-Anglas
fb4629eea2
Problem: build fails on OpenBSD due to -Wl in LDFLAGS
...
Solution: remove stray -Wl.
2018-12-07 17:05:49 +01:00
Shubham Lagwankar
3659c1204a
Problem: radix tree needs benchmarks and improvements ( #3290 )
...
* Problem: radix tree needs benchmarks and improvements
Solution: add a benchmark and make suggested improvements
2018-11-09 10:49:40 +00:00
Luca Boccassi
ffd99fbaf5
Problem: GNU/Hurd does not implement getsockname for ipc
...
Solution: skip tests that use ipc://* as it's impossible to get the
address back for the client
2018-11-05 10:59:12 +00:00
Luca Boccassi
54295cb342
Problem: passing tests on debian/kfreebsd marked as XFAIL
...
Solution: use a different system variable for debian/hurd and
debian/kfreebsd so that the tests are skipped only on hurd.
2018-11-04 18:12:55 +00:00
Shubham Lagwankar
c68afb412e
Problem: potentially large memory footprint of trie as number of
...
subscriptions increases
Solution: use a radix tree instead of a trie to store subscriptions
2018-10-31 07:49:55 -04:00
Luca Boccassi
1a5937750c
Problem: test_connect_delay_tipc randomly fails
...
Solution: use a monitor to wait for a disconnect instead of a sleep,
and retry to send a message until it fails since the state machine
might be delayed due to the I/O thread being pre-empted on busy
systems.
Also set a receive timeout to avoid random hangs.
Fixes #3124
2018-09-29 22:39:36 +01:00
Francesco Montorsi
eb3e63e22f
Hwm tests and docs ( #3242 )
...
Add new HWM tests and more detailed documentation
2018-09-13 22:14:06 +01:00
Simon Giesecke
1734a64d62
Revert "Problem: test_proxy not yet using unity"
...
This reverts commit fd27324ec3daa50bebea381ce7fd4b505a6a53e6.
2018-08-24 09:49:41 +02:00
Simon Giesecke
430b97fc73
Problem: test_use_fd not yet using unity
...
Solution: migrate to unity
2018-08-23 18:03:16 +02:00
Simon Giesecke
d668925bca
Problem: extensive duplication between test_use_fd_tcp and test_use_fd_ipc
...
Solution: merge into a single test_use_fd and reduce code duplication by extracting common functions
2018-08-23 18:00:52 +02:00
Simon Giesecke
929d295e01
Problem: test_timers not yet using unity
...
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
980791d182
Problem: test_stream_timeout not yet using unity
...
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
f01682292c
Problem: test_stream_disconnect not yet using unity
...
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
309fe2e6fd
Problem: test_router_mandatory_hwm not yet using unity
...
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
fd27324ec3
Problem: test_proxy not yet using unity
...
Solution: migrate to unity
2018-08-23 18:00:50 +02:00
Simon Giesecke
2334090732
Problem: test_stream not yet using unity
...
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
7ad0ff5e9a
Problem: test_stream_empty not yet using unity
...
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
7b39d2cb2a
Problem: test_unbind_wildcard not yet using unity
...
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
713f075fec
Problem: test_xpub_manual not yet using unity
...
Solution: migrate to unity
2018-08-22 11:51:10 +02:00