mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-14 17:58:01 +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
|
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
|
0MQ version 4.2.2 stable, released on 2017/02/18
|
||||||
=============================================
|
=============================================
|
||||||
|
@ -99,8 +99,17 @@ ZMQ_EVENT_MONITOR_STOPPED
|
|||||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
Monitoring on this socket ended.
|
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
|
ZMQ_EVENT_HANDSHAKE_SUCCEEDED
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The ZMTP security mechanism handshake succeeded.
|
The ZMTP security mechanism handshake succeeded.
|
||||||
The event value is unspecified.
|
The event value is unspecified.
|
||||||
NOTE: in DRAFT state, not yet available in stable releases.
|
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
|
error, either between the ZMTP mechanism peers, or between the mechanism
|
||||||
server and the ZAP handler. This indicates a configuration or implementation
|
server and the ZAP handler. This indicates a configuration or implementation
|
||||||
error in either peer resp. the ZAP handler.
|
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.
|
NOTE: in DRAFT state, not yet available in stable releases.
|
||||||
|
|
||||||
ZMQ_EVENT_HANDSHAKE_FAILED_AUTH
|
ZMQ_EVENT_HANDSHAKE_FAILED_AUTH
|
||||||
|
@ -573,7 +573,7 @@ ZMQ_EXPORT void zmq_threadclose (void* thread);
|
|||||||
|
|
||||||
/* DRAFT 0MQ socket events and monitoring */
|
/* DRAFT 0MQ socket events and monitoring */
|
||||||
/* Unspecified system errors during handshake. Event value is an errno. */
|
/* 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 *
|
/* Handshake complete successfully with successful authentication (if *
|
||||||
* enabled). Event value is unused. */
|
* enabled). Event value is unused. */
|
||||||
#define ZMQ_EVENT_HANDSHAKE_SUCCEEDED 0x1000
|
#define ZMQ_EVENT_HANDSHAKE_SUCCEEDED 0x1000
|
||||||
|
Loading…
x
Reference in New Issue
Block a user