mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-14 01:37:56 +08:00
Merge pull request #2841 from bluca/news
Problems: no NEWS for 4.2.3, missing some events docs, whitespace in header
This commit is contained in:
commit
0d0d72e836
220
NEWS
220
NEWS
@ -1,5 +1,223 @@
|
||||
0MQ version 4.2.3 stable, released on 20xx/xx/xx
|
||||
=============================================
|
||||
================================================
|
||||
|
||||
* API change: previously ZMQ_POLLOUT on a ZMQ_ROUTER socket returned always
|
||||
true due to how the type works. When ZMQ_ROUTER_MANDATORY is set, sending
|
||||
fails when the peer is not available, but ZMQ_POLLOUT always returns true
|
||||
anyway, which does not make sense. Now when ZMQ_ROUTER_MANDATORY is set,
|
||||
ZMQ_POLLOUT on a ZMQ_ROUTER will return true only if at least one peer is
|
||||
available.
|
||||
Given ZMQ_POLLOUT with ZMQ_ROUTER was not usable at all previously, we do
|
||||
not consider this a breakage warranting a major or minor version increase.
|
||||
|
||||
* ZMQ_IDENTITY has been renamed to ZMQ_ROUTING_ID and ZMQ_CONNECT_RID has been
|
||||
renamed to ZMQ_CONNTECT_ROUTING_ID to disambiguate. ZMQ_IDENTITY and
|
||||
ZMQ_CONNECT_RID are still available to keep backward compatibility, and will
|
||||
be removed in a future release after further advance notice.
|
||||
|
||||
* Existing non-DRAFT socket types ZMQ_REP/REQ, ZMQ_ROUTER/DEALER and
|
||||
ZMQPUB/SUB, that were previously declared deprecated, have been reinstated
|
||||
as stable and supported. See #2699 for details.
|
||||
|
||||
* Tweetnacl: add support for, and use preferably if available, getrandom() as
|
||||
a simpler and less error-prone alternative to /dev/urandom on OSes where it
|
||||
is available (eg: Linux 3.18 with glibc 2.25).
|
||||
|
||||
* Curve: all remaining traces of debug output to console are now removed, and
|
||||
new DRAFT events are available to properly debug CURVE, PLAIN, GSSAPI and
|
||||
ZAP events and failures. See below for details on the new events.
|
||||
|
||||
* New DRAFT (see NEWS for 4.2.0) socket options:
|
||||
- ZMQ_GSSAPI_PRINCIPAL_NAMETYPE and ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE, for
|
||||
the corresponding GSSAPI features. Additional definitions for principal
|
||||
name types:
|
||||
- ZMQ_GSSAPI_NT_HOSTBASED
|
||||
- ZMQ_GSSAPI_NT_USER_NAME
|
||||
- ZMQ_GSSAPI_NT_KRB5_PRINCIPAL
|
||||
See doc/zmq_gssapi.txt for details.
|
||||
- ZMQ_BINDTODEVICE (Linux only), which will bind the socket(s) to the
|
||||
specified interface. Allows to use Linux VRF, see:
|
||||
https://www.kernel.org/doc/Documentation/networking/vrf.txt
|
||||
NOTE: requires the program to be ran as root OR with CAP_NET_RAW
|
||||
- ZMQ_ZAP_ENFORCE_DOMAIN, enables strict RFC 27 compatibility mode and makes
|
||||
the ZAP Domain mandatory when using security. See:
|
||||
https://rfc.zeromq.org/spec:27/ZAP
|
||||
See doc/zmq_setsockopt.txt and doc/zmq_getsockopt.txt for details.
|
||||
|
||||
* New DRAFT (see NEWS for 4.2.0) context options:
|
||||
- ZMQ_THREAD_AFFINITY_CPU_ADD and ZMQ_THREAD_AFFINITY_CPU_REMOVE (Posix only),
|
||||
to add and remove CPUs to the affinity set of the I/O threads. Useful to pin
|
||||
the background threads to specific CPUs.
|
||||
- ZMQ_THREAD_NAME_PREFIX (Posix only), to add a specific integer prefix to the
|
||||
background threads names, to easily identify them for debugging purposes.
|
||||
See doc/zmq_ctx_set.txt and doc/zmq_ctx_get.txt for details.
|
||||
|
||||
* New DRAFT (see NEWS for 4.2.0) message property name definitions to facilitate
|
||||
the use of zmq_msg_gets:
|
||||
- ZMQ_MSG_PROPERTY_ROUTING_ID
|
||||
- ZMQ_MSG_PROPERTY_SOCKET_TYPE
|
||||
- ZMQ_MSG_PROPERTY_USER_ID
|
||||
- ZMQ_MSG_PROPERTY_PEER_ADDRESS
|
||||
See doc/zmq_msg_gets.txt for details.
|
||||
|
||||
* New DRAFT (see NEWS for 4.2.0) API zmq_socket_get_peer_state, to be used to
|
||||
query the state of a specific peer (via routing-id) of a ZMQ_ROUTER socket.
|
||||
|
||||
* New DRAFT (see NEWS for 4.2.0) Socket Monitor events:
|
||||
- ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL, unknown system error and returns errno
|
||||
- ZMQ_EVENT_HANDSHAKE_SUCCEEDED, handshake was successful
|
||||
- ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL, protocol errors between peers or server
|
||||
and ZAP handler. Returns one of ZMQ_PROTOCOL_ERROR_* - see manpage for list
|
||||
- ZMQ_EVENT_HANDSHAKE_FAILED_AUTH, failed authentication, returns ZAP status
|
||||
These events trigger when the ZMTP security mechanism handshake is
|
||||
completed or failed. See doc/zmq_socket_monitor.txt for more information.
|
||||
|
||||
* New DRAFT (see NEWS for 4.2.0) zmq_proxy_steerable command 'STATISTICS' to
|
||||
retrieve stats about the amount of messages and bytes sent and received by
|
||||
the proxy. See doc/zmq_proxy_steerable.txt for more information.
|
||||
|
||||
* Add new autoconf --disable-libunwind option to stop building with libunwind
|
||||
even if it is available.
|
||||
|
||||
* Use pkg-config as the first method for finding and building with external
|
||||
optional dependencies such as libnorm, libpgm and gssapi.
|
||||
|
||||
* On Posix platform where the feature is available, name the ZMQ background
|
||||
threads to simplify debugging: "ZMQbg/<num_thread>"
|
||||
|
||||
* Improve performance of zmq_poller_* (and zmq_poll and zmq_proxy when building
|
||||
with DRAFT APIs enabled).
|
||||
|
||||
* The TCP unit tests have been refactored to bind and connect to random ports
|
||||
rather than hard-coded ones, to allow running tests in parallel.
|
||||
There are 6 exceptions where it is necessary to use an hard-coded port to
|
||||
test specific code paths that would not be exercised when binding to a
|
||||
wildcard port. These are listed in tests/testutil.hpp so that distributions
|
||||
can easily patch them if they wish to and so that they can be unique across
|
||||
all the tests, allowing parallel runs.
|
||||
The IPC unit tests have been changed as well to use unique socket file names
|
||||
per test, where before there were some clashes.
|
||||
|
||||
* Fixed #2349 - fix building with libsodium when using CMake
|
||||
|
||||
* Fixed #2334 - do not assert when tuning socket options fails due to network
|
||||
errors, but simply retry again when connecting or send a socket monitor
|
||||
ZMQ_EVENT_ACCEPT_FAILED event when binding
|
||||
|
||||
* Fixed #2341 - fix source files path in VS2015 solution
|
||||
|
||||
* Fixed #2344 - Note that on Windows with VS2012 it is mandatory to increase
|
||||
the default stack size to at least 2MB
|
||||
|
||||
* Fixed #2348 - ZMQ_ROUTER send with ZMQ_ROUTER_MANDATORY can be stuck in case of
|
||||
network problem
|
||||
|
||||
* Fixed #2358 - occasional abort on zmq_connect on Windows
|
||||
|
||||
* Fixed #2370 - zmq_curve_keypair should return an error on failure rather
|
||||
than ignoring them and always returning 0
|
||||
|
||||
* Fixed #2452 - __STDC_LIMIT_MACROS before precompiled headers causes VC++
|
||||
warning
|
||||
|
||||
* Fixed #2457 - fix building with libsodium in Visual Studio solutions
|
||||
|
||||
* Fixed #2466 - add const qualifier to internal and public API that does not
|
||||
modify parameters
|
||||
|
||||
* Fixed #2471 - do more checks for OOM conditions when dynamic allocations is
|
||||
used
|
||||
|
||||
* Fixed #2476 - assertion causes abort after ZAP stop at shutdown
|
||||
|
||||
* Fixed #2479 - improve zmq_poller performance on Windows
|
||||
|
||||
* Fixed #2481 - potential memory leaks due to ZMTP handshake failures
|
||||
|
||||
* Fixed #2531 - ZMQ_GSSAPI_PRINCIPAL sockopt has no effect on client side
|
||||
|
||||
* Fixed #2535 - add BUILD_SHARED and BUILD_STATIC options to CMake, both on by
|
||||
default, to toggle shared and static library builds
|
||||
|
||||
* Fixed #2537 - use SYSTEM_CLOCK on OSX and CLOCK_MONOTONIC elsewhere for
|
||||
internal timers to avoid races
|
||||
|
||||
* Fixed #2540 - new zmq_poller used by zmq_poll without DRAFTs
|
||||
|
||||
* Fixed #2552 - Fix WITH_DOC CMake build to avoid checking for asciidoc if the
|
||||
option is disabled
|
||||
|
||||
* Fixed #2567 - Memory leak in REP socket handling
|
||||
|
||||
* Fixed #2579 - Compilation issue on Windows with CMake + ninja
|
||||
|
||||
* Fixed #2588 - SIGBUS under 64-bit SunOS Sparc
|
||||
|
||||
* Fixed #2590 - crash when using ZMQ_IMMEDIATE and ZMQ_LINGER to non-zero
|
||||
|
||||
* Fixed #2601 - XPUB_MANUAL subscriptions not removed on peer term
|
||||
|
||||
* Fixed #2602 - intermittent memory leak for ZMQ_REQ/REP send/recv
|
||||
|
||||
* Fixed #2608 - CURVE server (connect) fails when client rebinds
|
||||
|
||||
* Fixed #2610 - print backtraces in mutual exclusion to avoid mixing
|
||||
different traces
|
||||
|
||||
* Fixed #2621 - add missing CMake files to distributable tarball
|
||||
|
||||
* Fixed #2630 - improve compatibility with OpenBSD w.r.t. IPV6_V6ONLY
|
||||
|
||||
* Fixed #2638 - note in INSTALL that when using Windows builds on Linux with
|
||||
Wine it is necessary to increase the minimum TCP buffers
|
||||
|
||||
* Fixed #2632 - Fix file descriptor leak when using Tweetnacl (internal NACL
|
||||
implementation) instead of Libsodium, and fix race condition when using
|
||||
multiple ZMQ contexts with Tweetnacl
|
||||
|
||||
* Fixed #2681 - Possible buffer overflow in CURVE mechanism handshake.
|
||||
NOTE: this was protected by an assert previously, so there is no security
|
||||
risk.
|
||||
|
||||
* Fixed #2704 - test_sockopt_hwm fails occasionally on Windows
|
||||
|
||||
* Fixed #2701 - pgm build via cmake doesn't link libzmq with libpgm
|
||||
|
||||
* Fixed #2711 - ZAP handler communication errors should be handled consistently
|
||||
|
||||
* Fixed #2723 - assertion in src\select.cpp:111 or hang on zmq_ctx_destroy on
|
||||
Windows
|
||||
|
||||
* Fixed #2728 - fix support O_CLOEXEC when building with CMake
|
||||
|
||||
* Fixed #2761 - improve compatibility with TrueOS (FreeBSD 12)
|
||||
|
||||
* Fixed #2764 - do not unlink IPC socket files when closing a socket to avoid
|
||||
race conditions
|
||||
|
||||
* Fixed #2770 - support lcov 1.13 and newer
|
||||
|
||||
* Fixed #2787 - add libiphlpapi to PKGCFG_LIBS_PRIVATE for static mingw builds
|
||||
|
||||
* Fixed #2788 - document that adding -DZMQ_STATIC is required for Windows
|
||||
static builds with Mingw
|
||||
|
||||
* Fixed #2789 - description of zmq_atomic_counter_value return value is cloned
|
||||
from zmq_atomic_counter_new
|
||||
|
||||
* Fixed #2791 - fix building with DRAFT APIs on CentOS 6
|
||||
|
||||
* Fixed #2794 - router_t methods should not allocate memory for lookup in
|
||||
outpipes
|
||||
|
||||
* Fixed #2809 - optimize select() usage on Windows
|
||||
|
||||
* Fixed #2824 - ZMQ_REQ socket does not report ZMQ_POLLOUT when ZMQ_REQ_RELAXED
|
||||
is set
|
||||
|
||||
* Fixed #2827 - add support for Haiku
|
||||
|
||||
* Fixed #2840 - fix building with VS2008
|
||||
|
||||
0MQ version 4.2.2 stable, released on 2017/02/18
|
||||
=============================================
|
||||
|
@ -99,8 +99,17 @@ ZMQ_EVENT_MONITOR_STOPPED
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Monitoring on this socket ended.
|
||||
|
||||
DRAFT events - subject to change without notice
|
||||
-----------------------------------------------
|
||||
|
||||
ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Unspecified error during handshake.
|
||||
The event value is an errno.
|
||||
NOTE: in DRAFT state, not yet available in stable releases.
|
||||
|
||||
ZMQ_EVENT_HANDSHAKE_SUCCEEDED
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The ZMTP security mechanism handshake succeeded.
|
||||
The event value is unspecified.
|
||||
NOTE: in DRAFT state, not yet available in stable releases.
|
||||
@ -111,7 +120,27 @@ The ZMTP security mechanism handshake failed due to some mechanism protocol
|
||||
error, either between the ZMTP mechanism peers, or between the mechanism
|
||||
server and the ZAP handler. This indicates a configuration or implementation
|
||||
error in either peer resp. the ZAP handler.
|
||||
The event value is one of the ZMQ_PROTOCOL_ERROR_* values.
|
||||
The event value is one of the ZMQ_PROTOCOL_ERROR_* values:
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_UNSPECIFIED
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_UNEXPECTED_COMMAND
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_INVALID_SEQUENCE
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_KEY_EXCHANGE
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_UNSPECIFIED
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_MESSAGE
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_HELLO
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_INITIATE
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_ERROR
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_READY
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MALFORMED_COMMAND_WELCOME
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_INVALID_METADATA
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_CRYPTOGRAPHIC
|
||||
ZMQ_PROTOCOL_ERROR_ZMTP_MECHANISM_MISMATCH
|
||||
ZMQ_PROTOCOL_ERROR_ZAP_UNSPECIFIED
|
||||
ZMQ_PROTOCOL_ERROR_ZAP_MALFORMED_REPLY
|
||||
ZMQ_PROTOCOL_ERROR_ZAP_BAD_REQUEST_ID
|
||||
ZMQ_PROTOCOL_ERROR_ZAP_BAD_VERSION
|
||||
ZMQ_PROTOCOL_ERROR_ZAP_INVALID_STATUS_CODE
|
||||
ZMQ_PROTOCOL_ERROR_ZAP_INVALID_METADATA
|
||||
NOTE: in DRAFT state, not yet available in stable releases.
|
||||
|
||||
ZMQ_EVENT_HANDSHAKE_FAILED_AUTH
|
||||
|
@ -573,7 +573,7 @@ ZMQ_EXPORT void zmq_threadclose (void* thread);
|
||||
|
||||
/* DRAFT 0MQ socket events and monitoring */
|
||||
/* Unspecified system errors during handshake. Event value is an errno. */
|
||||
#define ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL 0x0800
|
||||
#define ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL 0x0800
|
||||
/* Handshake complete successfully with successful authentication (if *
|
||||
* enabled). Event value is unused. */
|
||||
#define ZMQ_EVENT_HANDSHAKE_SUCCEEDED 0x1000
|
||||
|
Loading…
x
Reference in New Issue
Block a user