0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-31 01:43:02 +08:00

Merge pull request #794 from hintjens/master

Fixed use of deprecated tempnam
This commit is contained in:
Ian Barber 2013-12-20 00:49:23 -08:00
commit 32f3fb490a
2 changed files with 432 additions and 7 deletions

430
NEWS
View File

@ -1,3 +1,31 @@
0MQ version 4.0.3 stable, released on 2013/11/24
================================================
Bug Fixes
---------
* Fixed test_many_sockets case, which failed when process socket limit
was 1024.
0MQ version 4.0.2 stable, released on 2013/11/24
================================================
Bug Fixes
---------
* Fixed LIBZMQ-583 - improved low-res timer for Windows
* Fixed LIBZMQ-578 - z85_decode was extremely slow
* Fixed LIBZMQ-577 - fault in man pages.
* Fixed LIBZMQ-574 - assertion failure when ran out of system file handles
* Fixed LIBZMQ-571 - test_stream failing in some cases
* Fixed LIBZMQ-569 - Socket server crashes with random client data and when
talking to 2.2 versions
* Fixed LIBZMQ-39 - Bad file descriptor during shutdown
* Pulled expected failing test_linger.cpp from release
* Reduced pause time in tests to allow "make check" to run faster
0MQ version 4.0.1 stable, released on 2013/10/08
================================================
@ -493,7 +521,403 @@ Distribution
or via apt-get.
Older versions
==============
0MQ version 2.2.0 (Stable), released on 2012/04/04
==================================================
* See NEWS in ZeroMQ 2.1.x repository at http://github.com/zeromq/zeromq2-1.
Changes
-------
* Fixed issue 349, add send/recv timeout socket options.
Bug fixes
---------
* Fixed issue 301, fix builds on HP-UX 11iv3 when using either gcc or aCC.
* Fixed issue 305, memory leakage when using dynamic subscriptions.
* Fixed issue 332, libzmq doesn't compile on Android NDK.
* Fixed issue 293, libzmq doesn't follow ZMTP/1.0 spec.
* Fixed issue 342, cannot build against zmq.hpp under C++11.
0MQ version 2.1.11 (Stable), released on 2011/12/18
===================================================
Bug fixes
---------
* Fixed issue 290, zmq_poll was using system time instead of monotonic
clock (Mika Fischer).
* Fixed issue 281, crash on heavy socket creation - assertion failure in
mutex.hpp:91. (Mika Fischer).
* Fixed issue 273, O_CLOEXEC flag used in ip.cpp:192 is supported only
on Linux kernels 2.6.27+
* Fixed issue 261, assertion failure in kqueue.cpp:76.
* Fixed issue 269, faulty diagnostic code in 2.1.10.
* Fixed issue 254, assertion failure at tcp_socket.cpp:229 on ENOTCONN.
Changes
-------
* Now builds properly on AIX 6.1 (AJ Lewis).
* Builds using libdcekt on HP-UX (AJ Lewis).
* New upstream OpenPGM maintenance release 5.1.118.
* Enabled debugging on assertion failure on Windows (Paul Betts).
0MQ version 2.1.10 (Stable), released on 2011/10/03
===================================================
Bug fixes
---------
* Fixed issue 140, SWAP failed with assertion failure in pipe.cpp:187
if the current directory was not writeable. Behavior now is to return
-1 at zmq_setsockopt in this situation.
* Fixed issue 207, assertion failure in zmq_connecter.cpp:48, when an
invalid zmq_connect() string was used, or the hostname could not be
resolved. The zmq_connect() call now returns -1 in both those cases.
* Fixed issue 218, sockets not opened with SOCK_CLOEXEC, causing fork/exec
to sit on sockets unnecessarily.
* Fixed issue 250, build errors on Windows (Mikko Koppanen).
* Fixed issue 252, assertion failure in req.cpp:87 and req.cpp:88 (Mikko
Koppanen).
0MQ version 2.1.9 (Stable), released on 2011/08/29
==================================================
Bug fixes
---------
* Fixed issue 240, assertion failure in pgm_socket.cpp:437.
* Fixed issue 238, assertion failure in zmq.cpp:655, when zmq_poll is
used on an empty set, on Windows.
* Fixed issue 239, assertion failure in zmq.cpp:223, when ZMQ_SWAP was
used with explicit identities and multiple SUB sockets.
* Fixed issue 236, zmq_send() and zmq_recv() did not always return
error conditions such as EFSM properly. This bug was introduced in
version 2.1.8 by the backport of changes for issue 231.
Building
--------
* 0MQ support for Android added (Bill Roberts, Mikko Koppanen).
0MQ version 2.1.8 (RC), released on 2011/07/28
==============================================
Bug fixes
---------
* Fixed issue 223, assertion failure in tcp_connecter.cpp:300 when
connecting to a server that is on an unreachable network (errno is
equal to ENETUNREACH).
* Fixed issue 228, assertion failure at rep.cpp:88 when HWM was reached.
* Fixed issue 231, assertion failure at mailbox.cpp:183 when too many
pending socketpair operations were queued (major backport from 3.0).
* Fixed issue 234, assertion failure at mailbox.cpp:77 when Ctrl-C was
used (only affected git master following backport for 231).
* Fixed issue 230, SIGPIPE killing servers when client disconnected, hit
OS/X only.
Note: this release was renamed "release candidate" due to issue 236,
fixed in 2.1.9.
0MQ version 2.1.7 (Stable), released on 2011/05/12
==================================================
Bug fixes
---------
* Fixed issue 188, assert when closing socket that had unread multipart
data still on it (affected PULL, SUB, ROUTER, and DEALER sockets).
* Fixed issue 191, message atomicity issue with PUB sockets (an old issue).
* Fixed issue 199 (affected ROUTER/XREP sockets, an old issue).
* Fixed issue 206, assertion failure in zmq.cpp:223, affected all sockets
(bug was introduced in 2.1.6 as part of message validity checking).
* Fixed issue 211, REP socket asserted if sent malformed envelope (old issue
due to abuse of assertions for error checking).
* Fixed issue 212, reconnect failing after resume from sleep on Windows
(due to not handling WSAENETDOWN).
* Properly handle WSAENETUNREACH on Windows (e.g. if client connects
before server binds).
* Fixed memory leak with threads on Windows.
Changes
-------
* Checks zmq_msg_t validity at each operation.
* Inproc performance tests now work on Windows.
* PGM wire format specification improved in zmq_pgm(7)
* Added thread latency/throughput performance examples.
* Added "--with-system-pgm" configure option to use already installed
OpenPGM.
* Runtime checking of socket and context validity, to catch e.g. using a
socket after closing it, or passing an invalid pointer to context/socket
methods.
* Test cases moved off port 5555, which conflicts with other services.
* Clarified zmq_poll man page that the resolution of the timeout is 1msec.
0MQ version 2.1.6 (Broken), released on 2011/04/26
==================================================
Note that this version contained a malformed patch and is not usable.
It is not available for download, but is available in the git via the
2.1.6 tag.
0MQ version 2.1.5 (Broken), released on 2011/04/20
==================================================
Note that this version contained a malformed patch and is not usable.
It is not available for download, but is available in the git via the
2.1.5 tag.
0MQ version 2.1.4 (Stable), released on 2011/03/30
==================================================
Bug fixes
---------
* Fix to OpenPGM which was asserting on small messages (Steven McCoy).
Changes
-------
* Upgraded OpenPGM to version 5.1.115 (Pieter Hintjens).
* OpenPGM build changed to not install OpenPGM artifacts.
0MQ version 2.1.3 (Stable), released on 2011/03/21
==================================================
Bug fixes
---------
* Fix to PUSH sockets, which would sometimes deliver tail frames of a
multipart message to new subscribers (Martin Sustrik).
* Fix to PUB sockets, which would sometimes deliver tail frames of a
multipart message to new subscribers (Martin Sustrik).
* Windows build was broken due to EPROTONOSUPPORT not being defined. This
has now been fixed (Martin Sustrik).
* Various fixes to make OpenVMS port work (Brett Cameron).
* Corrected Reference Manual to note that ZMQ_LINGER socket option may be
set at any time, not just before connecting/binding (Pieter Hintjens).
* Fix to C++ binding to properly close sockets (Guido Goldstein).
* Removed obsolete assert from pgm_socket.cpp (Martin Sustrik).
Changes
-------
* Removed stand-alone devices (/devices subdirectory) from distribution.
These undocumented programs remain available in older packages (Pieter
Hintjens).
* OpenPGM default rate raised to 40mbps by default (Steven McCoy).
* ZMQ_DEALER and ZMQ_ROUTER macros provided to ease upgrade to 0MQ/3.0.
These are scheduled to replace ZMQ_XREQ and ZMQ_XREP (Pieter Hintjens).
* Added man page for zmq_device(3) which was hereto undocumented (Pieter
Hintjens).
* Removed zmq_queue(3), zmq_forwarder(3), zmq_streamer(3) man pages
(Pieter Hintjens).
OpenPGM Integration
-------------------
* Upgraded OpenPGM to version 5.1.114 (Steven McCoy, Mikko Koppanen).
* Build system now calls OpenPGM build process directly, allowing easier
future upgrades of OpenPGM (Mikko Koppanen).
* Build system allows configuration with arbitrary versions of OpenPGM
(./configure --with-pgm=libpgm-x.y.z) (Mikko Koppanen).
* OpenPGM uses new PGM_ODATA_MAX_RTE controlling original data instead of
PGM_TXW_MAX_RTE covering entire channel (Steven McCoy).
Building
--------
* 0MQ builds properly on FreeBSD (Mikko Koppanen).
0MQ version 2.1.2 (rc2), released on 2011/03/06
===============================================
Bug fixes
---------
* 0MQ now correctly handles durable inproc sockets; previously it ignored
explicit identities on inproc sockets.
* Various memory leaks were fixed.
* OpenPGM sender/receiver creation fixed.
0MQ version 2.1.1 (rc1), released on 2011/02/23
===============================================
New functionality
-----------------
* New socket option ZMQ_RECONNECT_IVL_MAX added, allows for exponential
back-off strategy when reconnecting.
* New socket option ZMQ_RECOVERY_IVL_MSEC added, as a fine-grained
counterpart to ZMQ_RECOVERY_IVL (for multicast transports).
* If memory is exhausted, 0MQ warns with an explicit message before
aborting the process.
* Size of inproc HWM and SWAP is sum of peers' HWMs and SWAPs (Douglas
Greager, Martin Sustrik).
Bug fixes
---------
* 0MQ no longer asserts in mailbox.cpp when multiple peers connect with
the same identity.
* 0MQ no longer asserts when rejecting an oversized message.
* 0MQ no longer asserts in pipe.cpp when the swap fills up.
* zmq_poll now works correctly with an empty poll set.
* Many more.
Building
--------
* 0MQ now builds correctly on CentOS, Debian 6, and SunOS/gcc3.
* Added WithOpenPGM configuration into MSVC builds.
Known issues
------------
* OpenPGM integration is still not fully stable.
0MQ version 2.1.0 (Beta), released on 2010/12/01
================================================
New functionality
-----------------
* New semantics for zmq_close () and zmq_term () ensure that all messages
are sent before the application terminates. This behaviour may be
modified using the new ZMQ_LINGER socket option; for further details
refer to the reference manual.
* The new socket options ZMQ_FD and ZMQ_EVENTS provide a way to integrate
0MQ sockets into existing poll/event loops.
* Sockets may now be migrated between OS threads, as long as the
application ensures that a full memory barrier is issued.
* The 0MQ ABI exported by libzmq.so has been formalised; DSO symbol
visibility is used on supported platforms to ensure that only public ABI
symbols are exported. The library ABI version has been set to 1.0.0 for
this release.
* OpenPGM has been updated to version 5.0.92. This version no longer
depends on GLIB, and integration with 0MQ should be much improved.
* zmq_poll() now honors timeouts precisely, and no longer returns if no
events are signaled.
* Blocking calls now return EINTR if interrupted by the delivery of a
signal; this also means that language bindings which previously had
problems with handling SIGINT/^C should now work correctly.
* The ZMQ_TYPE socket option was added; this allows retrieval of the socket
type after creation.
* Added a ZMQ_VERSION macro to zmq.h for compile-time API version
detection.
* The ZMQ_RECONNECT_IVL and ZMQ_BACKLOG socket options have been added.
Bug fixes
---------
* Forwarder and streamer devices now handle multi-part messages correctly.
* 0MQ no longer asserts when malformed data is received on the wire.
* 0MQ internal timers now work correctly if the TSC jumps backwards.
* The internal signalling functionality (mailbox) has been improved
to automatically resize socket buffers on POSIX systems.
* Many more.
Building
--------
* 0MQ now builds correctly with many more non-GCC compilers (Sun Studio,
Intel ICC, CLang).
* AIX and HP-UX builds should work now.
* FD_SETSIZE has been set to 1024 by default for MSVC builds.
* Windows builds using GCC (MinGW) now work out of the box.
Distribution
------------
* A simple framework for regression tests has been added, along with a few
basic self-tests. The tests can be run using "make check".

View File

@ -131,10 +131,11 @@ int zmq::ipc_listener_t::set_address (const char *addr_)
std::string addr (addr_);
// Allow wildcard file
if (addr[0] == '*') {
char *tmpstr = tempnam (NULL, NULL);
addr.assign (tmpstr);
free (tmpstr);
if (addr [0] == '*') {
char buffer [12] = "2134XXXXXX";
if (mkstemp (buffer) == -1)
return -1;
addr.assign (buffer);
}
// Get rid of the file associated with the UNIX domain socket that