Compare commits

...

324 Commits

Author SHA1 Message Date
Constantin Rack
ec95f91e68 Merge pull request #156 from bluca/rel
Problem: need to tag a new release
2016-11-01 18:15:43 +01:00
Luca Boccassi
ceb72c7e06 Finalize NEWS and bump ABI to 5:2:0 for 4.1.6 2016-11-01 15:58:34 +00:00
Luca Boccassi
b41ef3963b Problem: spec file hard codes .so version
Solution: use wildcard instead
2016-11-01 15:53:56 +00:00
Doron Somech
3ae04f1d3e Merge pull request #155 from bluca/alignment
Problem: pointer union for zmq_msg_t is a hack
2016-11-01 16:48:14 +02:00
Luca Boccassi
fb1ee2b078 Update NEWS for #1325 2016-11-01 13:07:53 +00:00
Luca Boccassi
f2de03a480 Problem: MS VC++ build broken
Solution: try to detect architecture if building with VC++ and
hardcode pointer size accordingly.
Expressions are not allowed inside declspec intrinsics, which
includes other intrinsics.
2016-11-01 13:07:18 +00:00
Luca Boccassi
a077adb4a0 Problem: pointer union for zmq_msg_t is a hack
Solution: use compiler's alignment attributes instead which is
clearer and less of a hack.
Pointer alignment violations causing crashes on architectures
such as sparc64 and aarch64.
This also avoid triggering ABI checkers as the change is compatible
even though applications that suffer from the bug should rebuild to
take advantage of the fix.
2016-11-01 13:07:18 +00:00
Luca Boccassi
21e484750e Merge pull request #154 from vielmetti/patch-1
Update INSTALL to note issues with parallel "make -j check"
2016-10-23 20:25:47 +01:00
Edward Vielmetti
dc68d2ef45 Update INSTALL to note issues with parallel "make -j check"
Documentation also patched in libzmq. 

Closes #151 to document non-support for parallel make check.
2016-10-23 15:21:57 -04:00
Luca Boccassi
7302228026 Merge pull request #153 from jens-auer/2158
Fixed function prototypes
2016-10-21 12:40:22 +01:00
Jens Auer
56611dd46b Fixed function prototypes 2016-10-21 12:27:32 +02:00
Constantin Rack
ff8b0aa6ec Merge pull request #150 from bluca/news
Problem: NEWS out of date
2016-10-13 13:13:58 +02:00
Luca Boccassi
5e207100f5 Problem: NEWS out of date
Solution: mention recently backported fixes
2016-10-13 10:48:16 +01:00
Luca Boccassi
cd3680d178 Merge pull request #148 from jens-auer/backport-#1649
Merged PR 1649
2016-10-13 10:37:50 +01:00
Luca Boccassi
107266b77d Merge pull request #149 from jens-auer/2158
Add mutex to socket monitor access
2016-10-13 10:37:37 +01:00
Jens Auer
798532e0c5 Merged PR 1649
https://github.com/zeromq/libzmq/pull/1649/commits
2016-10-13 08:34:04 +00:00
Jens Auer
7aec4be368 Add mutex to socket monitor access
The monitor socket is used concurrently from different threads
and needs protection.
2016-10-13 08:32:20 +00:00
Luca Boccassi
5ea5629451 Merge pull request #147 from WGH-/doc-router-mandatory-block
doc/zmq_socket.txt: clarify that ROUTER can be blocking
2016-10-03 23:54:30 +01:00
WGH
064a8b6766 doc/zmq_socket.txt: clarify that ROUTER can be blocking
Problem: zmq_socket doc doesn't mention that router can block on send

Solution: clarify that it may block, and under which conditions
2016-10-04 00:37:50 +03:00
Constantin Rack
44c1d81506 Merge pull request #146 from bluca/dealer_router_async
Problem: zmq_ctx_term asserts with connect-before-bind and sockets with identity over inproc transport
2016-09-24 21:33:05 +02:00
Luca Boccassi
05f1912b63 Problem: Travis CI OSX builds are broken
Solution: add a workaround to reinstall libtool. Travis hasn't fixed
the issue in a month, so time for a little hack until they sort it.
2016-09-24 19:58:35 +01:00
Luca Boccassi
0527673982 Update NEWS for #2117 2016-09-24 19:48:07 +01:00
Luca Boccassi
d38a2d507d Problem: zmq_ctx_term asserts with connect-before-bind and sockets with identity over inproc transport
Solution: check if the connecting inproc socket has been closed
before trying to send the identity.
Otherwise the pipe will be in waiting_for_delimiter state causing
writes to fail and the connect to assert when the context is being
torn down and the pending inproc connects are resolved.
Add test case that covers this behaviour.
2016-09-24 19:45:54 +01:00
Constantin Rack
89cf62b977 Merge pull request #145 from bluca/ipv6_multi_endpoint
Problem: zmq_connect with IPv6 "source:port;dest:port" format is broken
2016-09-17 21:35:56 +02:00
Luca Boccassi
1a51f726a8 Update NEWS for #2107 2016-09-17 20:04:21 +01:00
Luca Boccassi
acab1f487b Problem: zmq_connect with IPv6 "source:port;dest:port" format is broken
Solution: allow for '[' character when doing the basic sanity check
on the TCP endpoint.
Also add unit tests for both IPv4 and IPv6 source;dest format.
2016-09-17 20:04:21 +01:00
Luca Boccassi
8ddf198256 Problem: test_reqrep_tcp does not have IPv6 tests
Solution: add them
2016-09-17 20:04:21 +01:00
Luca Boccassi
67d60b1909 Problem: test_reqrep_tcp does not test multiple endpoints
Solution: add a test for this use case
2016-09-17 19:46:55 +01:00
Luca Boccassi
9c35093782 Problem: test_reqrep_tcp does not test disconnect/unbind
Solution: add disconnect and unbind calls to the test
2016-09-17 19:46:55 +01:00
Luca Boccassi
7bc7395a2a Problem: test_reqrep_tcp is too limited
Solution: refactor it to allow for multiple functionalities to be
tested
2016-09-17 19:46:13 +01:00
Luca Boccassi
7d11efa0e2 Merge pull request #144 from kou/support-mingw-cross-compile
Support cross compile with MinGW on Linux
2016-09-14 16:16:24 +01:00
Kouhei Sutou
f942303cd5 Support cross compile with MinGW on Linux
Linux uses case sensitive file system. So we can't find "wincrypt.h" by
"WinCrypt.h".
2016-09-14 23:28:46 +09:00
Constantin Rack
3f791bb92b Merge pull request #141 from bluca/cmake_dist
Problem: CMake build from dist tarball broken
2016-09-02 10:16:46 +02:00
Luca Boccassi
60162b5226 Update NEWS for #2096 2016-09-01 13:29:19 +01:00
Luca Boccassi
e00b2c4b08 Problem: CMake build from dist tarball broken
Solution: include src/version.rc.in and tests/CMakeLists.txt in the
make dist tarball by adding them to makefile.am EXTRA_DIST list.
2016-09-01 13:23:09 +01:00
Constantin Rack
aac9e54f8d Merge pull request #140 from bluca/xp_testutils_ipv6
Problem: testutil.hpp fails to build on Windows XP
2016-08-27 18:31:54 +02:00
Luca Boccassi
22680094ca Update NEWS for #2091 2016-08-27 17:15:58 +01:00
Luca Boccassi
328fe09946 Problem: testutil.hpp fails to build on Windows XP
Solution: ifdef is_ipv6_available to always return false if building
on Windows XP, as it doesn't support the needed standard libc
functions
2016-08-27 17:15:09 +01:00
Luca Boccassi
a6d24d7fd8 Merge pull request #137 from gcv/master
Fix alignment problem with zmq_msg_t
2016-08-26 11:37:40 +01:00
Luca Boccassi
aab1edfd7d Merge pull request #139 from t-b/bugfix/fix_compilation_on_windows
Fix compilation on windows
2016-08-22 20:34:25 +01:00
Thomas Braun
b86717dc9a Tests: Fix compilation on Windows
Visual Studio 2015 does grok the preprocessor defintion.
Add an explicit call to defined as done in other places.
2016-08-22 21:26:26 +02:00
Thomas Braun
64dbf56d6e testutil.hpp: Fix include path to windows.hpp 2016-08-22 20:57:01 +02:00
Constantine Vetoshev
2b7b903a85 Fix alignment problem with zmq_msg_t.
Problem occurs on SPARC and ARM CPUs. This commit is a backport of
d9fb1d36ff (from
libzmq), first reported in https://github.com/zeromq/libzmq/issues/1325.
2016-08-16 13:31:46 -07:00
Doron Somech
4732951d05 Merge pull request #136 from GreatFruitOmsk/master
Backport fix libzmq #2084
2016-08-16 11:47:56 +03:00
Ilya Kulakov
727178f1ac Backport fix libzmq #2084 2016-08-16 00:59:42 -07:00
Kevin Sapper
61b8f1a424 Merge pull request #134 from bluca/news
Problem: NEWS out of date
2016-07-26 06:34:39 +00:00
Luca Boccassi
888b1f8649 Update NEWS to mention fixed issue 2051 2016-07-21 10:15:55 +01:00
Luca Boccassi
53c7bcfa5f Merge pull request #133 from garlick/issue_2051
Problem: getifaddrs can fail with ECONNREFUSED
2016-07-20 23:24:24 +01:00
Jim Garlick
565892f3cd Problem: getifaddrs can fail with ECONNREFUSED
getifaddrs() can fail transiently with ECONNREFUSED on Linux.
This has been observed with Linux 3.10 when multiple processes
call zmq::tcp_address_t::resolve_nic_name() simultaneously.

Before asserting in this case, make 10 attempts, with exponential
backoff, given by (1 msec * 2^i), where i is the attempt number.

Fixes #2051
2016-07-20 10:15:55 -07:00
Luca Boccassi
e8116b1f1c Bump version to 4.1.6 for next release 2016-06-17 12:41:42 +01:00
Luca Boccassi
c5bd2870c2 Finalize NEWS and bump ABI to 5:1:0 for 4.1.5 2016-06-17 12:06:46 +01:00
Kevin Sapper
2ef080588a Merge pull request #127 from bluca/fix_deploy
Problem: Travis deploy token is wrong
2016-06-04 18:32:48 +02:00
Luca Boccassi
7a8a83ba84 Problem: Travis deploy token is wrong
Solution: encrypt it wit the right parameter and fix it
2016-06-04 17:43:45 +02:00
Kevin Sapper
b849af44c5 Merge pull request #126 from bluca/distcheck
Problem: make distcheck is broken and deploying release artifacts is a manual process
2016-06-04 16:46:16 +02:00
Kevin Sapper
3f7c3c2658 Problem: Deploying release artifacts is a manual process Solution: Use travis to deploy these artifacts automatically.
The deployment is triggered by tagging on the zeromq/libzmq repository.
Of the many builds travis is checking only the default one with
libsodium and drafts disabled is used for deployment.

For now the results of `make distcheck` are deployed as well as their
md5 and sha1 hash sums. Further changes may upload a generated
Changelog as well.
2016-06-04 16:37:01 +02:00
Luca Boccassi
81a68d73dd Problem: Travis CI does not run make distcheck
Solution: do it
2016-06-04 16:03:25 +02:00
Pieter Hintjens
6c1851efdb Problem: autotools platform.hpp is not compatible with CMake
Specifically, the poller detection code does not set macros in
platform.hpp. The configure script passed them as -D on the command
line.

Solution: rewrite the poller detection code.
2016-06-04 16:03:25 +02:00
Luca Boccassi
83bf40ee1f Update NEWS for fix #2021 2016-06-04 15:41:57 +02:00
Luca Boccassi
7d540d6dfe Merge pull request #125 from wbx-github/master
allow to build sparc (v8,leon)
2016-06-04 14:34:41 +01:00
Luca Boccassi
330c682403 Merge pull request #124 from aburgm/issue-1542
Backport fix for issue 1542 to zmq 4.1.x
2016-06-04 10:28:56 +01:00
Luca Boccassi
4d613cb890 Merge pull request #122 from pijyoi/master
fix: sockets are not signed int on Windows
2016-06-04 10:28:12 +01:00
Waldemar Brodkorb
d0b22397eb allow to build sparc (v8,leon)
Only set sparcv9 optimization for sparc64 systems.
This allows to run for example application using zeromq
on sparc32 systems.

Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
2016-06-04 09:37:37 +02:00
Armin Burgmeier
1b06a5025d Update NEWS to mention fixed issue 1542 2016-06-03 20:43:13 -07:00
Matt Bolger
783fb45f9d -Set signaler_port to 0 which allows the OS to find a free port, rather than crashing if 5905 is in use (https://github.com/zeromq/libzmq/issues/1542)
-Added config.hpp to the source list so it shows up in generated projects
-Remove CMAKE_BUILD_TYPE setting for generators that don't use it
2016-06-03 19:20:33 -07:00
KIU Shueng Chuan
ca69183592 fix: sockets are not signed int on Windows 2016-05-09 21:31:09 +08:00
Pieter Hintjens
56b71af22d Merge pull request #121 from bluca/builds_make_dist
Problem: missing files in release tarballs
2016-05-04 12:46:47 +02:00
Luca Boccassi
6bbc6b67f6 Update NEWS for fix #1952 2016-05-04 11:38:25 +01:00
Luca Boccassi
c369d9bd36 Problem: doc/Makefile.am ignores --without-docs
Solution: add the document files to the MAN_DOC and MAN_HTML targets
in doc/Makefile.am only if BUILD_DOC and INSTALL_MAN are set,
otherwise leave the targets empty to avoid errors in make distcheck.
2016-05-04 11:29:46 +01:00
Pieter Hintjens
4dd6257d93 Problem: source packages lack makefiles for all systems except msvc
Solution: specify the necessary EXTRA_DIST

I added a Makefile.am in builds that covers all systems except msvc,
which already has a Makefile.am that does this.

Fixes #1505
2016-05-04 11:25:35 +01:00
Min RK
3ad076a7a3 Merge pull request #118 from bluca/zmq_unbind_api_breakage
Problem: can't unbind with bound addr with IPv6
2016-04-21 12:03:17 +02:00
Luca Boccassi
81c9c498ee Update NEWS for fix #114 2016-04-21 10:52:35 +01:00
Luca Boccassi
0af39a443f Problem: can't unbind with bound addr with IPv6
Solution: try to resolve the TCP endpoint passed by the user in the
zmq_unbind call before giving up, if it doesn't match.
This fixes a breakage in the API, where after a call to
zmq_bind(s, "tcp://127.0.0.1:9999") with IPv6 enabled on s would
result in the call to zmq_unbind(s, "tcp://127.0.0.1:9999") failing.
Add more test cases to increase coverage on all combinations of TCP
endpoints.
2016-04-21 10:52:11 +01:00
Luca Boccassi
1586f3f25e Problem: can't test if IPv6 is available in tests
Solution: add helper function is_ipv6_available to testutil.hpp to
test if IPv6 is available on the building platform.
This function will try to open and bind a socket to ::1:*, as it's
the ultimate way of knowing if, at least on the loopback, IPv6 is
enabled.
2016-04-21 10:52:11 +01:00
Pieter Hintjens
b315d610b8 Merge pull request #119 from hitstergtd/fix-NEWS-for-pr-1877
Problem: No NEWS entry for Issue #919
2016-04-20 19:12:30 +02:00
hitstergtd
2018743b4e Problem: No NEWS entry for Issue #919
Solution: add entry and mark it as related to Issue #1877 and PR #1511
2016-04-20 08:59:43 +01:00
Constantin Rack
dd077bc2b2 Merge pull request #117 from bluca/solaris_fixes
Problem: build broken on Solaris 10
2016-04-13 22:56:53 +02:00
Luca Boccassi
e488df7892 Update NEWS for fix #1866 2016-04-13 00:22:22 +01:00
Luca Boccassi
02d71a88ab Problem: missing () after sizeof cause build fail
Solution: use sizeof () to avoid build failure on Solaris 10 with
gcc 3.4
2016-04-13 00:14:25 +01:00
Luca Boccassi
b2eddf9746 Problem: -lssp causes build failure on Solaris
Solution: add -lssp on Solaris only when libsodium is enabled and has
been found. Also disable pedantic and Werror, as libsodium headers
use pragma diagnostic which are not available in gcc 3.4.
2016-04-13 00:14:25 +01:00
Luca Boccassi
3945f27f6d Problem: pragma diagnostic is new in GCC 4.2
Solution: check for GCC version before using pragma diagnostic
in tweetnacl to avoid an additional warning.
2016-04-12 23:52:34 +01:00
Constantin Rack
71050259f7 Merge pull request #116 from bluca/ipv6_downgrade 2016-04-07 18:30:13 +02:00
Luca Boccassi
6d92d263e1 Update NEWS for fix #1887 2016-04-07 17:11:06 +01:00
Luca Boccassi
1a1abe3d5e Problem: redundant Windows errno conversion
Solution: in the Windows-specific ifdef in tcp_listener set_address,
check for error and set errno only after the IPv4 fallback has failed
too, to avoid setting errno when the socket creation succeeds through
the fallback.
2016-04-07 14:16:35 +01:00
Luca Boccassi
1e87d92527 Problem: zmq_connect (TCP) has no IPv4 fallback
Solution: if opening an IPv6 TCP socket fails because IPv6 is not
available, try to open an IPv4 socket instead when creating and
connecting a TCP endpoint.
2016-04-07 14:16:35 +01:00
Luca Boccassi
82aed1dee6 Problem: zmq_bind IPv4 fallback still tries IPv6
Solution: if opening an IPv6 TCP socket fails because IPv6 is not
available, try to open an IPv4 socket instead when creating and
binding a TCP endpoint.
2016-04-07 14:15:29 +01:00
Pieter Hintjens
197a9e05e2 Merge pull request #115 from bluca/linger_fix_backport
Problem: connection might terminate prematurely
2016-03-30 19:41:34 +02:00
Luca Boccassi
cf0dcd2379 Problem: NEWS not up to date with bug fixes
Solution: mention closing issue #1877
2016-03-30 18:11:57 +01:00
Soren Hansen
bf92026527 Avoid terminating connections prematurely
While sending very large messages (far beyond what fits in a the tcp
buffer, so it takes multiple sendto system calls for it to finish),
zmq_close will close the connection regardless of ZMQ_LINGER.

In case no engine is attached, a pipe->check_read() is needed to look
for the delimiter in the pipe and ultimately trigger the pipe
termination.

However, if there *is* an engine attached, the check_read() looks ahead
and finds the delimiter and terminates the connection even though the
engine might actually still be in the middle of sending a message.

This happens because while the io_thread is still busy sending the data,
the pipe can get terminated and the io thread ends up being terminated.
2016-03-30 17:04:48 +01:00
Constantin Rack
d8732929d5 Merge pull request #112 from hintjens/master 2016-03-15 07:02:50 +01:00
Pieter Hintjens
bbe4f3ede4 Problem: does not build on Windows with libsodium
Solution: fixed wrong condition around randombytes_close ().
2016-03-15 06:26:34 +01:00
Constantin Rack
e0041f1fcb Merge pull request #111 from hintjens/master
Problem: cannot disable encryption if libsodium is installed
2016-03-12 20:52:29 +01:00
Pieter Hintjens
98834596f1 Problem: cannot disable encryption if libsodium is installed
The sodium/tweetnacl detection logic does not yet you disable
encryption if libsodium is installed.

Fixes #1850 in libzmq/master
2016-03-12 15:40:24 +01:00
Pieter Hintjens
5aa7bdfc68 Merge pull request #109 from hintjens/master
Updated news for fix #1831
2016-03-01 17:05:52 +01:00
Pieter Hintjens
25be170b57 Updated news for fix #1831 2016-03-01 17:05:22 +01:00
Pieter Hintjens
c1d8420335 Merge pull request #108 from hintjens/master
Problem: can't be sure crypto_box always returns 0
2016-03-01 17:05:10 +01:00
Pieter Hintjens
58badc44c1 Problem: can't be sure crypto_box always returns 0
Libsodium has started returning -1 in some cases.

Solution: allow and handle error returns from these calls.

Fixes #1831
2016-03-01 17:01:00 +01:00
Pieter Hintjens
4985b084e6 Merge pull request #107 from grimbeaver/fix-vs-versions
Update VS version resource and package version.
2016-02-29 21:38:54 +01:00
Thomas Brezinski
2fba10d691 Update VS version resource and package version. 2016-02-29 13:32:07 -06:00
Pieter Hintjens
0b781f84e8 Merge pull request #104 from bluca/uninitialised_news
Problem: news out of date
2016-02-16 15:05:39 +01:00
Luca Boccassi
b1a150a675 Problem: my name is not in the AUTHORS file
Solution: add myself to the list
2016-02-16 14:04:10 +00:00
Luca Boccassi
5977a8a5b6 Problem: NEWS not up to date with bug fixes
Solution: mention issues 1806 and 1807
2016-02-16 14:02:30 +00:00
Pieter Hintjens
4d45ee9440 Merge pull request #103 from bluca/uninitialised_sockopt
Problem: curve keys getsockopt uninitialised read
2016-02-16 14:51:29 +01:00
Luca Boccassi
eda5426865 Problem: Travis CI uses libsodium unstable branch
Solution: use stable branch instead of the development branch, and
also clone with --depth 1 to make it more efficient.
2016-02-16 13:41:46 +00:00
Luca Boccassi
6a66c05179 Problem: curve keys getsockopt uninitialised read
Solution: always initialised zmq::options_t class variables arrays to
avoid reading uninitialised data when CURVE is not yet configured and
a getsockopt ZMQ_CURVE_{SERVER | PUBLIC | SECRET]KEY is issued.

Backport from libzmq.
2016-02-16 13:40:40 +00:00
Pieter Hintjens
cb811a1e0c Merge pull request #102 from hintjens/master
Backported fix #1608
2016-02-16 12:03:11 +01:00
Pieter Hintjens
87dd03750b Updated NEWS for fix #1608 2016-02-16 12:02:26 +01:00
Pieter Hintjens
4cee289697 Problem: Windows 7 TCP slow start
See issue #1608.

This is an old issue with Windows 7. The effect is that we see a latency
ramp on the first 500 messages.

* The ramp is unaffected by message size.
* Sleeping up to 100msec between sends has no effect except to switch
    off ZeroMQ batching so making the ramp more visible.
* After 500 messages, latency falls back down to ~10-40 usec.
* Over inproc:// the ramp happens when we use the signaler class.
* Client-server over inproc:// does not show the ramp.
* Client-server over tcp:// shows a similar ramp.

We know that the signaller is using TCP on Windows. We can 'prime' the
connection by doing 500 dummy sends. This potentially causes new sockets
to be delayed on creation, which is not a good solution.

Note that the signaller sends zero-byte messages. This may also be
confusing TCP.

Solution: flood the receive buffer when creating a new FD pair; send a
1M buffer and discard it.

Fixes #1608
2016-02-16 12:01:45 +01:00
Pieter Hintjens
b624f1adc9 Merge pull request #101 from bluca/gcc6
Problem: build broken with gcc 6
2016-02-12 23:17:22 +01:00
meox
49593151db [PATCH] fix error with gcc 5.2 2016-02-12 21:57:51 +00:00
Pieter Hintjens
b341dd7ffe Merge pull request #100 from CommanderBubble/master
compilation fixes for when _WIN32_WINNT >= 0x0600
2016-02-12 13:45:12 +01:00
Michael
2058dece77 added windows.hpp with include check
windows.hpp must be included before zmq.h when _WIN32_WINNT >= 0x0600
2016-02-12 23:36:48 +11:00
Michael
45404f4b06 added windows.hpp with include check
windows.hpp must be included before zmq.h when _WIN32_WINNT >= 0x0600
2016-02-12 23:36:07 +11:00
Michael
6f4e9f13f3 changed order of includes
windows.hpp must be included before zmq.h when _WIN32_WINNT >= 0x0600
2016-02-12 23:34:43 +11:00
Michael
af3b9452a2 remove include that is already in header 2016-02-12 23:33:22 +11:00
Michael
626abbdaf2 update for mingw's default _WIN32_WINNT
mingw defaults with _WIN32_WINNT as 0x0502 which doesn't define inet_pton(), so add a conditional check
2016-02-12 23:32:20 +11:00
Michael
d0b341cf0f update for mingw's default _WIN32_WINNT
mingw defaults with _WIN32_WINNT as 0x0502 which doesn't define inet_pton(), so add a conditional check
2016-02-12 23:31:55 +11:00
Michael
41cc603d11 update for mingw's default _WIN32_WINNT
mingw defaults with _WIN32_WINNT as 0x0502 which doesn't define inet_pton(), so add a conditional check
2016-02-12 23:31:24 +11:00
Pieter Hintjens
ad7fe55e95 Merge pull request #98 from zeromq/revert-95-patch-1
Revert "update minimum _WIN32_WINNT version to 0x0600 for 4.1.4 onwards"
2016-02-11 14:16:39 +01:00
Min RK
e68c2d2563 Revert "update minimum _WIN32_WINNT version to 0x0600 for 4.1.4 onwards" 2016-02-11 14:00:41 +01:00
Pieter Hintjens
b539733cee Merge pull request #97 from minrk/configure-tweetnacl
support tweetnacl in configure
2016-02-08 13:01:12 +01:00
Min RK
3ae84e6b00 fallback on tweetnacl if libsodium is not found and not explicitly requested 2016-02-08 12:44:45 +01:00
Min RK
6f022cce92 add --with-tweetnacl to configure
allows building with tweetnacl without cmake
2016-02-08 12:44:45 +01:00
Pieter Hintjens
58ac36593f Merge pull request #95 from CommanderBubble/patch-1
update minimum _WIN32_WINNT version to 0x0600 for 4.1.4 onwards
2016-02-02 14:17:48 +01:00
Michael
e3fba7d447 updated minimum _WIN32_WINNT version to 0x0600
if_nametoindex requires minimum windows version vista, which is 0x0600
2016-02-02 22:32:16 +11:00
Pieter Hintjens
5501f19a0f Update NEWS 2016-01-21 18:04:09 +01:00
Pieter Hintjens
9bdfb94999 Merge pull request #93 from GreatFruitOmsk/master
Backport zeromq/libzmq#1723
2016-01-21 18:03:03 +01:00
Ilya Kulakov
0c5c536303 Backport zeromq/libzmq#1723 2016-01-21 19:56:23 +06:00
Pieter Hintjens
802c2a8a2b Merge pull request #92 from GreatFruitOmsk/master
Backport zeromq/libzmq#1722
2016-01-21 08:58:23 +01:00
Ilya Kulakov
4788c7d2a9 Backport zeromq/libzmq#1722 2016-01-21 13:47:55 +06:00
Pieter Hintjens
b7a30978ca Merge pull request #91 from minrk/backport-winrandom-backwards
backport winrandom fix
2016-01-18 15:53:16 +01:00
Anonymous Maarten
d1a0baf25f tweetNaCL: fix winrandom
problem: random byte generation on windows got stuck in an infinite loop
solution: the failure test is incorrect. Change it
2016-01-18 15:24:33 +01:00
Pieter Hintjens
c7642aa434 Merge pull request #90 from hintjens/master
Reverted patch for IPv6 support
2016-01-18 13:05:29 +01:00
Pieter Hintjens
795a7e3de2 Revert "Fix missing include for if_nametoindex on Windows."
This reverts commit b9dbc5b8caea5491c7330d891e93e2791d84c906.
2016-01-18 13:04:00 +01:00
Pieter Hintjens
95766dd09c Revert "Add missing support for IPv6 link local addresses (which include % followed by the interface name)"
This reverts commit 849e5b07d982e7c0917a13d9ff22d447817dd7fe.
2016-01-18 13:03:49 +01:00
Pieter Hintjens
7689bc30b9 Merge pull request #89 from minrk/stdint.h
don't include stdint.h on msc < 1600
2016-01-18 12:47:33 +01:00
Min RK
0f684ac16c don't include stdint.h on msc < 1600
where stdint.h is unavailable

(see stdint.hpp for the same check)
2016-01-18 12:30:05 +01:00
Pieter Hintjens
e8095071d9 Merge pull request #88 from minrk/tweetnacl
tweetnacl in sdists
2016-01-18 11:14:08 +01:00
Min RK
f13d4f1d04 add windows randombytes implementation
backport zeromq/libzmq#1619
2016-01-18 11:13:11 +01:00
Min RK
56835bc833 include tweetnacl in dist
backport zeromq/libzmq#1707
2016-01-18 10:39:00 +01:00
Pieter Hintjens
6933dfff58 Merge pull request #87 from GreatFruitOmsk/master
Backport #1702
2016-01-14 15:15:55 +01:00
Ilya Kulakov
6c3f1069aa Backport #1702 2016-01-14 18:26:05 +06:00
Pieter Hintjens
6548a48bc7 Merge pull request #85 from GreatFruitOmsk/master
Backport of #1676
2015-12-18 16:11:22 +01:00
Ilya Kulakov
a649a13117 Backport of #1676 2015-12-18 20:56:24 +06:00
Pieter Hintjens
e2a2175f15 Merge pull request #84 from GreatFruitOmsk/master
Fix missing include for if_nametoindex on Windows.
2015-12-18 15:07:53 +01:00
Ilya Kulakov
b9dbc5b8ca Fix missing include for if_nametoindex on Windows.
Raise min version to Vista.
2015-12-18 19:42:44 +06:00
Pieter Hintjens
9dd76f68b1 Updated NEWS for #1673 2015-12-18 10:33:50 +01:00
Ilya Kulakov
ef8145b25f Fix redirecting location of pdb via CMAKE_PDB_OUTPUT_DIRECTORY. 2015-12-18 10:32:25 +01:00
Pieter Hintjens
71bc8bee04 Updated for release 4.1.5 2015-12-18 10:12:00 +01:00
Pieter Hintjens
7ee12b527d Updated .gitignore 2015-12-18 09:25:11 +01:00
Pieter Hintjens
e4bb5662c0 Updated NEWS for release 4.1.4 2015-12-18 09:21:40 +01:00
Pieter Hintjens
d89467270e Merge pull request #79 from hintjens/master
Fixed #1661
2015-12-10 17:07:14 +01:00
Pieter Hintjens
e8577bf1dd Updated NEWS 2015-12-10 08:56:18 +01:00
Sathish Yenna
849e5b07d9 Add missing support for IPv6 link local addresses (which include % followed by the interface name) 2015-12-10 00:15:51 +01:00
Pieter Hintjens
e1e5a10dd1 Merge pull request #75 from hintjens/master
Backported fixes from master
2015-11-20 13:55:44 +02:00
Pieter Hintjens
7d749ad66a Updated NEWS for #1315 2015-11-20 13:54:16 +02:00
Sergey Kovalevich
5ee936a9be backport https://github.com/zeromq/libzmq/pull/1604 2015-11-20 13:54:16 +02:00
Pieter Hintjens
8c5ca359e8 Merge pull request #74 from ksergey/backport_1315
backport https://github.com/zeromq/libzmq/pull/1604
2015-11-20 13:51:12 +02:00
Sergey Kovalevich
cb47f02f42 backport https://github.com/zeromq/libzmq/pull/1604 2015-11-20 13:15:11 +03:00
Pieter Hintjens
7cfa9f647b Backported fix for #1644 2015-11-19 14:03:21 +02:00
somdoron
af543a58f2 Fix a bug when stream_engine try to set alreadt set metadata 2015-11-19 14:01:05 +02:00
Pieter Hintjens
c100ad1dc0 Merge pull request #73 from snikulov/port_1394_libzmq
ported #1394 from libzmq
2015-11-10 09:45:58 +01:00
Sergei Nikulov
6a88bdb606 ported #1394 from libzmq 2015-11-10 10:34:34 +03:00
Pieter Hintjens
30b070a376 Merge pull request #72 from hintjens/master
Updated NEWS
2015-11-04 10:03:33 +01:00
Pieter Hintjens
550013b9e4 Updated NEWS 2015-11-04 10:02:16 +01:00
Joe Eli McIlvain
a75b7543e8 Merge pull request #69 from maytechnet/master
Problem: return code of sodium_init() is not checked.
2015-11-03 08:33:43 -08:00
Constantin Rack
89d4e995ef Problem: return code of sodium_init() is not checked.
There are two todo comments in curve_client.cpp and curve_server.cpp that suggest
checking the return code of sodium_init() call. sodium_init() returns -1 on error,
0 on success and 1 if it has been called before and is already initalized:
https://github.com/jedisct1/libsodium/blob/master/src/libsodium/sodium/core.c
2015-11-03 18:04:42 +02:00
Constantin Rack
2aa08155f4 Merge pull request #68 from zeromq/revert-42-vs2008_stdint_fix
Revert "stdint.h is available in VS2008 (1500)"
2015-11-03 10:31:54 +01:00
Min RK
28432b562d Revert "stdint.h is available in VS2008 (1500)" 2015-11-03 09:56:19 +01:00
Constantin Rack
7bec6c1bdb Merge pull request #67 from hintjens/master
Backported fix for #1399
2015-11-01 10:47:55 +01:00
Pieter Hintjens
c41d8aa12b Updated version number for next release 2015-11-01 09:10:28 +01:00
Pieter Hintjens
a73740b304 Backported fix for #1399
Problem: asserts if EINVAL recieved on read/write

This causes assertion failures after network reconnects.

Solution: allow EINVAL as a possible condition after read/write.

Fixes #829
Fixes #1399

Patch provided by Michele Dionisio @mdionisio, thanks :)
2015-11-01 09:10:09 +01:00
Pieter Hintjens
e3e699190f Merge pull request #65 from jstefanski/fix_cmake_3_build
Fix FindAsciiDoc module for CMake 3
2015-10-06 14:47:10 +02:00
Jakub Stefanski
3db502ba47 Fix FindAsciiDoc module for CMake 3
Fixed '(' and ')' braces usage volation according to CMake
policy CMP0053 in FindAsciiDoc module.
2015-10-06 14:23:33 +02:00
Constantin Rack
549ee2401c Merge pull request #64 from GreatFruitOmsk/fix-msvc2015
Fix configure failure on 32-bit MSVC.
2015-09-11 10:49:51 +02:00
Artem Martynovich
279bcb2843 Fix configure failure on 32-bit MSVC.
Windows libraries being checked (ws2_32, rpcrt4, iphlpapi) contain functions following stdcall convention. While on 64-bit platform it makes no difference, on 32-bit it does. For example, function WSAGetLastError is mangled by MSVC like "_WSAGetLastError@0". CMake checks if a function FUNC is present in a library by compiling a simple C source containing function definition "char FUNC()" and then calling it. Since stdcall functions are mangled in such a way that requires correct number of arguments (written after "@"), checking for a function with non-zero number of arguments will fail.
That is why we check for functions which have zero arguments and we also force stdcall convention.
2015-09-11 13:39:19 +05:00
Pieter Hintjens
759790cadc Merge pull request #63 from GreatFruitOmsk/fix-msvc2015
Fix CMake configuration issue with MSVC 2015.
2015-09-08 08:21:10 -04:00
Artem Martynovich
415916d5f9 Fix CMake configuration issue with MSVC 2015.
Check for actual functions in ws2_32, ws2, rpcrt4, iphlpapi instead of printf.
2015-09-08 13:29:17 +06:00
Pieter Hintjens
cf38d9b7df Prepared for next release 4.1.4 2015-08-17 13:11:10 +02:00
Pieter Hintjens
765b1f24e3 Merge pull request #62 from hintjens/master
Fixed NEWS for release 4.1.3
2015-08-17 12:49:15 +02:00
Pieter Hintjens
a1fcf2f740 Fixed NEWS for release 4.1.3 2015-08-17 12:48:04 +02:00
Joe Eli McIlvain
53db7468b6 Merge pull request #61 from bluca/ci-container-build
Enable container-based build
2015-08-16 18:28:35 -07:00
Luca Boccassi
e39517c9f5 Enable container-based build
Remove use of "sudo", build and install in local directory in order
to enable container-based CI builds
2015-08-17 01:36:10 +01:00
Constantin Rack
7f45c052c4 Merge pull request #60 from GreatFruitOmsk/master
Fix documentation of the ZMQ_REQ_CORRELATE option.
2015-08-11 04:39:39 +02:00
Ilya Kulakov
b1bdec4404 Fix documentation of the ZMQ_REQ_CORRELATE option.
Full message is actually (request id, identity, 0,
user frames...).
2015-08-10 22:32:16 -04:00
Richard Newton
1cccf94c2e Merge pull request #59 from bluca/fix-ci-timeout
Problem: CI may fail due to timeout. Fixes #58
2015-08-02 19:32:43 +01:00
Luca Boccassi
92f2b073be Problem: CI may fail due to timeout. Fixes #58
Solution: cherry-pick Pieter Hintjens commit a7a512ab from libzmq
repository to increase test timeouts to 250 msec.
2015-08-02 19:23:22 +01:00
Richard Newton
6282d76268 Merge pull request #57 from bluca/travis-ci-osx
Travis ci osx
2015-08-02 19:22:07 +01:00
Luca Boccassi
866b02895f Increase file limit in travis config
Test cases occasionally fail, especially on OSX, due to socket limit.
2015-08-02 19:16:38 +01:00
Luca Boccassi
073807371c Add OSX build to travis config. Fixes #56 2015-08-02 19:04:21 +01:00
Luca Boccassi
7849d02214 Do not use ldconfig in CI if running on OSX
ldconfig is not available on OSX, so Travis CI build fails
2015-08-02 18:53:33 +01:00
Constantin Rack
0b4dfd8193 Merge pull request #55 from bluca/fix-autogen-libtool-detection
Solution: check for libtoolize in autogen. Fixes #54
2015-08-01 13:59:55 +02:00
Luca Boccassi
b7226da0d0 Solution: check for libtoolize in autogen. Fixes #54
Autogen.sh looks for the libtool command as a mean to check if
libtool is available. But distributions like Debian and Ubuntu have
split the libtool package, and the libtool script is now in a
separate package. The solution is to look for the libtoolize command
too before failing, which is what the Autotools chain actually needs
on Linux. Keep checking for libtool to be compatible with OSX, where
the opposite is true.
2015-08-01 12:42:16 +01:00
Constantin Rack
74fe8b6125 Merge pull request #53 from rikvdh/master
Fix issue #52, reset all bits in getsockopt
2015-08-01 10:55:15 +02:00
Rik van der Heijden
a9ca06847b Fix issue #52, reset all bits in getsockopt 2015-08-01 10:28:57 +02:00
Joe Eli McIlvain
7e7ce778ef Merge pull request #50 from leonarf/patch-1
THREAD_SCHED_POLICY & THREAD_PRIORITY documentation
2015-07-15 09:35:45 -04:00
leonarf
95b3f204a8 THREAD_SCHED_POLICY & THREAD_PRIORITY documentation
Documentaion of ZMQ_THREAD_SCHED_POLICY and ZMQ_THREAD_PRIORITY context's option.
2015-07-15 15:19:17 +02:00
Richard Newton
1d0f7b6979 Merge pull request #49 from blalor/patch-1
Fix path to libzmq .so files in RPM spec file
2015-07-03 16:03:01 +01:00
Brian Lalor
a3f4b4ef78 Remove missing man page from spec file 2015-07-03 07:57:31 -04:00
Brian Lalor
c78a5fd443 Fix path to libzmq .so files in RPM spec file
Fixes a packaging error when building the RPM:

```
$ rpmbuild -tb --with libsodium zeromq-4.1.2.tar.gz
[…]
RPM build errors:
    File not found: …/zeromq-4.1.2-1.el6.x86_64/usr/lib64/libzmq.so.4
    File not found: …/zeromq-4.1.2-1.el6.x86_64/usr/lib64/libzmq.so.4.0.0

$ ls …/zeromq-4.1.2-1.el6.x86_64/usr/lib64/libzmq*
libzmq.a  libzmq.la  libzmq.so  libzmq.so.5  libzmq.so.5.0.0
```
2015-07-03 07:47:48 -04:00
Pieter Hintjens
9a63ac7c54 Merge pull request #47 from calid/ignore-test_proxy_single_socket
add test_proxy_single_socket to gitignore
2015-06-29 08:08:08 +02:00
Pieter Hintjens
533437a5c0 Merge pull request #48 from calid/issue-949-tests
add tests for zeromq/libzmq#949
2015-06-29 08:04:41 +02:00
Dylan Cali
6b8aae0b54 be pedantic and call zmq_close in tests 2015-06-28 22:32:55 -05:00
Dylan Cali
b0023f0ccf fix errant comments 2015-06-28 21:28:49 -05:00
Dylan Cali
0684a760c9 add test_proxy_single_socket to gitignore 2015-06-28 21:04:55 -05:00
Dylan Cali
c8c36f5907 add tests for zeromq/libzmq#949 2015-06-28 20:53:04 -05:00
Constantin Rack
b5d8b360d7 Merge pull request #46 from dnaeon/typo-fix
Typo fix
2015-06-23 10:37:58 +02:00
Marin Atanasov Nikolov
5bd3a0d433 Typo fix 2015-06-23 14:34:33 +03:00
Pieter Hintjens
97a0b5dc08 Merge pull request #45 from c-rack/update-news
Problem: NEWS was not updated for backported fix on ipv6 addresses
2015-06-23 09:42:10 +02:00
Constantin Rack
b178072326 Solution: add backported fix to NEWS 2015-06-23 09:24:22 +02:00
Richard Newton
3869d7d490 Merge pull request #44 from c-rack/fix-ipv6-resolve
Solution: allow brackets in tcp address. Fixes #43
2015-06-23 08:11:03 +01:00
Constantin Rack
81464652d2 Solution: allow brackets in tcp address. Fixes #43 2015-06-23 08:29:36 +02:00
Constantin Rack
66d32eb04c Merge pull request #42 from mindw/vs2008_stdint_fix
stdint.h is available in VS2008 (1500)
2015-06-19 14:13:15 +02:00
Gabi Davar
8a41475b74 stdint is available in VS2008 (1600) 2015-06-19 14:49:04 +03:00
Constantin Rack
982f9ebfdb Merge pull request #41 from hintjens/master
Update version for next release, 4.1.3
2015-06-15 11:47:09 +02:00
Pieter Hintjens
e740796065 Update version for next release, 4.1.3 2015-06-15 11:45:16 +02:00
Pieter Hintjens
575da3ec7a Merge pull request #40 from hintjens/master
Updated NEWS for 4.1.2
2015-06-15 11:42:56 +02:00
Pieter Hintjens
58d8206c05 Updated NEWS for 4.1.2 2015-06-15 11:39:27 +02:00
Pieter Hintjens
d62bf33503 Merge pull request #39 from hintjens/master
Problem: 4.1 broke the ABI yet did not bump ABI number
2015-06-11 23:54:51 +02:00
Pieter Hintjens
7e89feb7ce Problem: 4.1 broke the ABI yet did not bump ABI number
Solution: bump to ABI version 5
2015-06-11 23:52:30 +02:00
Pieter Hintjens
f2c32954eb Merge pull request #38 from minrk/4.1.2
bump version to 4.1.2
2015-06-08 09:03:25 +02:00
Min RK
87c888a9c0 bump version to 4.1.2
4.1.1 has been released
2015-06-07 21:33:22 -07:00
Constantin Rack
b2f788135a Merge pull request #37 from minrk/proxy-single-socket
backport fix for #1428
2015-06-07 20:22:13 +02:00
Min RK
9be539a1e1 test proxy with single REP socket 2015-06-07 11:09:08 -07:00
Min RK
fd7ba4d509 don't check POLLOUT for single-socket proxies 2015-06-07 11:09:08 -07:00
Pieter Hintjens
a2e6e12b6c Merge pull request #36 from junovitch/fix-man-install-without-doc-build
Enable install of man pages when BUILD_DOC is not set by shifting INS…
2015-06-07 01:11:09 +02:00
Jason Unovitch
c75cc9ec5b Enable install of man pages when BUILD_DOC is not set by shifting INSTALL_MAN outside of BUILD_DOC's if/endif 2015-06-06 18:49:21 -04:00
Constantin Rack
23f68d2b39 Merge pull request #35 from hintjens/master
Problem: event interface isn't compatible with CZMQ 3.0
2015-06-04 13:51:47 +02:00
Pieter Hintjens
4f0fd36410 Problem: event interface isn't compatible with CZMQ 3.0
Solution: backport the latest STDINT definitions from libzmq.

Fixes #34
2015-06-04 13:19:52 +02:00
Pieter Hintjens
25cd81b7f3 Merge pull request #33 from hintjens/master
Fixes to README
2015-06-02 23:46:49 +02:00
Pieter Hintjens
7515323295 Fixes to README 2015-06-02 23:46:05 +02:00
Pieter Hintjens
d5a66f7b7d Merge pull request #32 from hintjens/master
Problem: source file headers are somewhat confusing about LGPLv3
2015-06-02 23:41:02 +02:00
Pieter Hintjens
b0a69fc623 Problem: source file headers are somewhat confusing about LGPLv3
Of course people still "can" distributed the sources under the
LGPLv3. However we provide COPYING.LESSER with additional grants.

Solution: specify these grants in the header of each source file.
2015-06-02 22:47:01 +02:00
Pieter Hintjens
203cd808e2 Updated NEWS for release 4.1.1 2015-06-02 12:34:28 +02:00
Pieter Hintjens
e31c108885 Merge pull request #31 from c-rack/fix-travis-ci-badge
Solution: Use the correct URL. Fixes #30
2015-05-27 15:32:00 +02:00
Constantin Rack
610a956bed Solution: Use the correct URL. Fixes #30 2015-05-27 14:44:31 +02:00
Constantin Rack
7b786b2537 Merge pull request #29 from rikvdh/master
Fix another degradation, CPU maxes out when POLLOUT is set
2015-05-27 14:34:55 +02:00
Rik van der Heijden
b5a00b76e8 Fix another degradation, CPU maxes out when POLLOUT is set because poll exits on POLLOUT and doesn't wait for POLLIN. 2015-05-27 14:21:47 +02:00
Pieter Hintjens
1d18b39c4b Merge pull request #28 from rikvdh/master
Fix degradation from #1382, POLLOUT was tested but not requested
2015-05-24 22:59:10 +02:00
Rik van der Heijden
3a0f218cae Fix degradation from #1382, POLLOUT was tested but not requested 2015-05-24 22:38:22 +02:00
Pieter Hintjens
934b599938 Merge pull request #26 from hintjens/master
Backported fix for #1382
2015-05-01 11:36:58 +02:00
Pieter Hintjens
d41b1ecdf7 Problem: Makefile.am doesn't built test_proxy_terminate correctly
Solution: fix it.
2015-05-01 11:35:35 +02:00
Pieter Hintjens
c188667963 Merge pull request #25 from hintjens/master
Merged fix for #1382
2015-05-01 11:33:30 +02:00
Rik van der Heijden
1c7b09afaf Merged fix for #1382
Also fixed Makefile.am with missing specs for test case.
2015-05-01 11:32:42 +02:00
Rik van der Heijden
f5e1c607a5 Merged fix for #1382 2015-05-01 11:26:26 +02:00
Pieter Hintjens
752338ec87 Merge pull request #24 from hintjens/master
Fix for #1384
2015-05-01 08:45:46 +02:00
Pieter Hintjens
3ef80cec74 Updated NEWS for #1389 2015-05-01 08:43:34 +02:00
Martin Hurton
6f75687c9e pub: Don't delay pipe termination 2015-05-01 08:42:54 +02:00
Martin Hurton
8e26e4b35c push: Don't delay pipe termination 2015-05-01 08:42:38 +02:00
Pieter Hintjens
837cc2cd75 Merge pull request #23 from hintjens/master
Backported 594e3d
2015-04-22 00:29:41 +03:00
Pieter Hintjens
7b4c323bfd Updated NEWS for 594e3d 2015-04-21 23:28:38 +02:00
Pieter Hintjens
fee19e26ac Problem: shutdown asserts if WSASTARUP wasn't done previously
This is a silly assertion that causes problems if libzmq.dll is
called in some esoteric ways.

Solution: if the shutdown code detects WSANOTINITIALISED, then
exit silently.

Fixes #1377
Fixes #1144
2015-04-21 23:23:42 +02:00
Pieter Hintjens
f22094b61a Merge pull request #22 from calid/docfix-zmq-msg-init
doc: zmq_msg_init does not set errno
2015-03-15 11:25:44 +01:00
Dylan Cali
ff0380d1f6 doc: zmq_msg_init does not set errno
In fact it always returns zero.

Backport of zeromq/libzmq#1368
2015-03-15 04:02:44 -05:00
Pieter Hintjens
6072d3dbdc Merge pull request #21 from hintjens/master
Fixed issue #1362
2015-02-20 09:15:02 +01:00
Pieter Hintjens
609ec133b4 Updated news for #1362 2015-02-20 09:14:02 +01:00
Martin Hurton
160a7efae4 Adjust number of sent messages on hiccups
Not adjusting the sent message count may lead to situation when SUB
socket does not forward its subscriptions.
2015-02-20 09:13:47 +01:00
Constantin Rack
aa2237b8d6 Merge pull request #20 from rodgert/master
resolve #1347 addresses issue of no metadata on identity frame
2015-02-19 20:33:49 +01:00
Thomas Rodgers
73fa40b9ac resolve #1347 addresses issue of no metadata on identity frame 2015-02-19 13:31:26 -06:00
Thomas Rodgers
2a3379af4d Revert "resolve #1347 addresses issue of no metadata on identity frame"
This reverts commit f75ed8565e984f423e748717108486b458d5a724.
2015-02-19 13:27:18 -06:00
Thomas Rodgers
f75ed8565e resolve #1347 addresses issue of no metadata on identity frame 2015-02-19 13:26:26 -06:00
Pieter Hintjens
5b6b850d9a Merge pull request #19 from rodgert/master
Revert previous accidental push directly to zeromq/zeromq4-1
2015-02-18 21:18:43 +01:00
Thomas Rodgers
d172875f52 Backport resolve #1357 Support limited metadata for STREAM sockets 2015-02-18 13:09:11 -06:00
Thomas Rodgers
9fe4fb3929 Remove autogen.sh warning due to id2fd test cruft 2015-02-18 12:41:33 -06:00
Thomas Rodgers
48ed789c18 Revert "STREAM socket support for limited metadata"
This reverts commit 5afd4e16edb51a3996c8d4b9f698dea8d2917c43.
2015-02-18 12:36:21 -06:00
Thomas Rodgers
c6d5c965fa Revert "Remove debugging cruft"
This reverts commit bbecdf397e0661ff469eb4898008c09d00efc397.
2015-02-18 12:36:19 -06:00
Thomas Rodgers
a69a043e14 Revert "Add connector.close() back"
This reverts commit 5e60f18d3a68947f469346162deae7e65732ba50.
2015-02-18 12:36:13 -06:00
Thomas Rodgers
5e60f18d3a Add connector.close() back
Needed if session->push() ever fails
2015-02-18 11:17:41 -06:00
Thomas Rodgers
bbecdf397e Remove debugging cruft 2015-02-18 11:14:23 -06:00
Thomas Rodgers
5afd4e16ed STREAM socket support for limited metadata
WIP - STREAM socket support for limited metadata

STREAM socket support for limited metadata
2015-02-18 11:12:32 -06:00
Pieter Hintjens
ea3b9c28ae Merge pull request #18 from hintjens/master
Updated NEWS
2015-02-14 17:48:13 +01:00
Pieter Hintjens
fa277000d0 Updated NEWS 2015-02-14 17:47:55 +01:00
Pieter Hintjens
29b7266041 Merge pull request #17 from rodgert/master
resolve #1347 Backport zmq_msg_gets "Peer-Address"
2015-02-14 17:47:01 +01:00
Thomas Rodgers
5229eeef5b resolve #1347 Backport zmq_msg_gets "Peer-Address" 2015-02-14 10:44:52 -06:00
Constantin Rack
712e74eebd Merge pull request #16 from topher200/master
close (clean up) unsendable messages
2015-01-22 23:02:24 +01:00
Topher Brown
89dd9fddaf close (clean up) unsendable messages 2015-01-22 16:56:30 -05:00
Pieter Hintjens
583a5f9601 Merge pull request #14 from metadings/master
Upgrading zmq_msg_t to 64 bytes
2015-01-14 13:31:24 +01:00
Pieter Hintjens
20e3a9f535 Merge pull request #12 from rodgert/master
resolve #1296 Remove of ZMQ_IDENTITY_FD socket option
2015-01-14 13:30:20 +01:00
metadings
d206fe2d45 Upgrading zmq_msg_t to 64 bytes 2015-01-14 13:26:48 +01:00
Constantin Rack
67afb90ba8 Merge pull request #13 from hintjens/master
Problem: patch version was not updated yet for 4.1.1
2015-01-11 21:55:38 +01:00
Pieter Hintjens
79e3de21c3 Problem: patch version was not updated yet for 4.1.1
Solution: ZMQ_VERSION_PATCH is now 1
2015-01-11 21:54:05 +01:00
Thomas Rodgers
8f236dc55e resolve #1296 Remove of ZMQ_IDENTITY_FD socket option
Revert "linking fd to pipe identity via socket option"

This reverts commit fe3e8c5c70dc3fbcb0244c5f4c52dcd71b80f858.

Conflicts:
	include/zmq.h
	src/pipe.hpp
	src/session_base.cpp
2015-01-09 18:14:22 -06:00
Pieter Hintjens
4a8bf129b3 Merge pull request #11 from hintjens/master
Problem: zmq_epgm man page is confusing and redundant
2014-12-07 17:08:24 +01:00
Pieter Hintjens
c477182735 Problem: zmq_epgm man page is confusing and redundant
Solution: delete it. The epgm:// transport is documented in zmq_pgm.
2014-12-07 17:07:22 +01:00
Pieter Hintjens
b272cca3e8 Merge pull request #10 from hintjens/master
Backported fix for #1273 (protocol downgrade attack)
2014-12-05 09:10:26 +01:00
Pieter Hintjens
61a3242085 Updated NEWS for #1273 2014-12-05 09:09:05 +01:00
Phillip Mienk
934973acf0 Alter --with-libsodium default. 2014-12-05 08:50:59 +01:00
Pieter Hintjens
e28b752aad Fixed .gitignore for test files 2014-12-04 14:01:56 +01:00
Pieter Hintjens
aa91fec015 Updated news for issue #1273 2014-12-04 13:43:41 +01:00
Min RK
fffaf6fd42 craft vanilla socket security test messages
use explicit ZMTP/1.0 anonymous greeting
rather than HTTP request that just happened to work
2014-12-04 13:42:27 +01:00
Min RK
4cff7bf372 allow vanilla socket security tests to run on Windows
- add ws2tcpip.h
- alias close->closesocket
- increment port in sec_null test
2014-12-04 13:42:19 +01:00
Min RK
14c94c0df9 add session->zap_enabled()
checks mechanism != NULL, or NULL + non-empty zap_domain
2014-12-04 13:42:15 +01:00
Min RK
56e09c80f8 reject old ZMTP connections if auth enabled
auth mechanisms were only enabled when ZMTP handshake
is latest version, meaning that connections from old sockets
would skip authentication altogether
2014-12-04 13:42:07 +01:00
Min RK
3c1a710d06 Resolved conflict when picking c35c0ca 2014-12-04 13:42:00 +01:00
Pieter Hintjens
66c8b70c7d Merge pull request #9 from hintjens/master
Updated for issue #1213
2014-11-08 10:32:53 +01:00
Pieter Hintjens
b1cba6b8b6 Updated for issue #1213 2014-11-08 10:32:34 +01:00
Pieter Hintjens
06d5d6010e Merge pull request #8 from hintjens/master
Fix builds/msvc/Makefile.am to include all properties files in the build
2014-11-08 10:29:45 +01:00
Dan Mick
8a2052cc52 Fix builds/msvc/Makefile.am to include all properties files in the build
I attempted to fix up the properties files manifests in the Makefile,
but neglected the end-of-line escape characters.  It was good enough
to pass whatever make dist on Linux did, but I had no Windows build
env to test in.  The broken change was in commit de4a442.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
2014-11-08 10:29:08 +01:00
Pieter Hintjens
a90183d0de Merge pull request #7 from hintjens/master
Problem: zmq_ctx_term has insane behavior by default
2014-11-06 10:58:20 +01:00
Pieter Hintjens
88c9a4e5ec Problem: zmq_ctx_term has insane behavior by default
Solution: document this with a clear warning. It would be
nicer perhaps to change the default LINGER to e.g. a few
seconds. However this could break existing applications.
2014-11-06 10:57:12 +01:00
Pieter Hintjens
ef71d6f930 Merge pull request #6 from lysyloren/master
Unbind socket with real endpoint when binding by wild-card * address
2014-10-29 17:00:46 +01:00
lysyloren
ed6bf9f178 Unbind socket with real endpoint when binding by wild-card * address 2014-10-29 10:17:30 +01:00
Pieter Hintjens
acd55c7464 Merge pull request #5 from johntconklin/master
backport configure and rpmbuild fixes.
2014-10-28 13:38:51 +01:00
J.T. Conklin
a87c0d495f Support both --enable-eventfd and --disable-eventfd options. 2014-10-28 05:10:06 -07:00
J.T. Conklin
3b9049f163 Correct libgssapi_krb5 packages. 2014-10-28 04:56:32 -07:00
J.T. Conklin
3592c1ec1a Pass --with/--without-libgssapi_krb5 to configure. 2014-10-28 04:56:14 -07:00
Phillip Mienk
c0579448d8 Add support for --with/--without libgssapi_krb5 2014-10-28 04:55:54 -07:00
Phillip Mienk
0b1b5f283f Add --with-libgssapi_krb5 to match libsodium and pgm. 2014-10-28 04:55:32 -07:00
Pieter Hintjens
95fa16f3ef Merge pull request #4 from hintjens/master
Backported fixes from master
2014-10-23 10:30:00 +02:00
Pieter Hintjens
68f16a06ae Backported pull request #1225 2014-10-23 10:29:37 +02:00
Martin Hurton
03c35d2659 Fix issue #1224 2014-10-23 10:28:19 +02:00
Pieter Hintjens
966256d1b6 Merge pull request #3 from johntconklin/master
Cherry-picked configure and rpmbuild fixes from libzmq/master
2014-10-19 18:33:39 +02:00
J.T. Conklin
663781fbd4 Support both --with-* and --without-* options for libsodium and pgm 2014-10-19 09:06:46 -07:00
J.T. Conklin
1251d06dcc Append to libzmq_la_CPPFLAGS and libzmq_la_LIBADD. 2014-10-19 09:06:15 -07:00
Phillip Mienk
bf950e4241 Correct declaration of HAVE_LIBSODIUM. 2014-10-19 09:04:45 -07:00
Phillip Mienk
2b36c01870 Require pkg-config, use pkg-config to pull seek libsodium. 2014-10-19 09:04:32 -07:00
J.T. Conklin
08a5014e73 Add support for --with/--without libsodium and --with/--without pgm
command line options.
2014-10-19 08:55:59 -07:00
J.T. Conklin
7daeb846ec Remove build and runtime dependencies on e2fsprogs and e2fsprogs-devel. 2014-10-18 11:44:40 -07:00
Pieter Hintjens
779a2c1e76 Updated NEWS for #1208 2014-10-16 06:49:33 +02:00
Pieter Hintjens
f67b723ed4 Merge pull request #2 from pmienk/master
Reduce automake recursion; simplify pgm dependency
2014-10-16 06:44:54 +02:00
Phillip Mienk
6f9ad96225 Remove local pgm configuration option, cleanup configure.ac, remove unused Makefile.am instances. 2014-10-15 18:33:33 -07:00
Phillip Mienk
898ef212fa Partial migration to nonrecursive make. 2014-10-15 18:33:33 -07:00
Pieter Hintjens
8185c8039e Updated change history 2014-10-14 16:31:37 +02:00
Pieter Hintjens
f31aafd63c Marked TCP and IPC filters as deprecated (ZAP) 2014-10-14 16:29:15 +02:00
Pieter Hintjens
25af7d9768 Updated for release 4.1.0 2014-10-14 10:57:23 +02:00
306 changed files with 8752 additions and 4127 deletions

169
.gitignore vendored
View File

@ -22,84 +22,89 @@ autom4te.cache
*~ *~
.*~ .*~
tools/curve_keygen tools/curve_keygen
tests/test_resource test_resource
tests/test_ipc_wildcard test_ipc_wildcard
tests/test_stream_empty test_stream_empty
tests/test_stream_timeout test_stream_timeout
tests/test_issue_566 test_issue_566
tests/test_ctx_destroy test_ctx_destroy
tests/test_term_endpoint test_term_endpoint
tests/test_system test_system
tests/test_monitor test_monitor
tests/test_last_endpoint test_last_endpoint
tests/test_pair_inproc test_pair_inproc
tests/test_pair_ipc test_pair_ipc
tests/test_pair_tcp test_pair_tcp
tests/test_reqrep_inproc test_reqrep_inproc
tests/test_reqrep_ipc test_reqrep_ipc
tests/test_reqrep_tcp test_reqrep_tcp
tests/test_shutdown_stress test_shutdown_stress
tests/test_hwm test_hwm
tests/test_timeo test_timeo
tests/test_reqrep_device test_reqrep_device
tests/test_reqrep_drop test_reqrep_drop
tests/test_sub_forward test_sub_forward
tests/test_invalid_rep test_invalid_rep
tests/test_msg_flags test_msg_flags
tests/test_ts_context test_ts_context
tests/test_connect_resolve test_connect_resolve
tests/test_immediate test_immediate
tests/test_term_endpoint test_term_endpoint
tests/test_router_mandatory test_router_mandatory
tests/test_disconnect_inproc test_disconnect_inproc
tests/test_raw_sock test_unbind_inproc
tests/test_disconnect_inproc test_unbind_wildcard
tests/test_ctx_options test_raw_sock
tests/test_iov test_disconnect_inproc
tests/test_security test_ctx_options
tests/test_security_curve test_iov
tests/test_probe_router test_security
tests/test_stream test_security_curve
tests/test_spec_dealer test_probe_router
tests/test_spec_pushpull test_stream
tests/test_spec_rep test_spec_dealer
tests/test_spec_req test_spec_pushpull
tests/test_spec_router test_spec_rep
tests/test_req_correlate test_spec_req
tests/test_req_relaxed test_spec_router
tests/test_fork test_req_correlate
tests/test_conflate test_req_relaxed
tests/test_inproc_connect test_fork
tests/test_linger test_conflate
tests/test_security_null test_inproc_connect
tests/test_security_plain test_linger
tests/test_proxy test_security_null
tests/test_abstract_ipc test_security_plain
tests/test_filter_ipc test_proxy
tests/test_connect_delay_tipc test_proxy_single_socket
tests/test_pair_tipc test_proxy_terminate
tests/test_reqrep_device_tipc test_abstract_ipc
tests/test_reqrep_tipc test_filter_ipc
tests/test_router_handover test_connect_delay_tipc
tests/test_router_mandatory_tipc test_pair_tipc
tests/test_shutdown_stress_tipc test_reqrep_device_tipc
tests/test_sub_forward_tipc test_reqrep_tipc
tests/test_term_endpoint_tipc test_router_handover
tests/test_many_sockets test_router_mandatory_tipc
tests/test_diffserv test_shutdown_stress_tipc
tests/test_connect_rid test_sub_forward_tipc
tests/test_srcfd test_term_endpoint_tipc
tests/test_stream_disconnect test_many_sockets
tests/test_proxy_chain test_diffserv
tests/test_bind_src_address test_connect_rid
tests/test_metadata test_srcfd
tests/test_id2fd test_stream_disconnect
tests/test_capabilities test_proxy_chain
tests/test_hwm_pubsub test_bind_src_address
tests/test_router_mandatory_hwm test_metadata
tests/test_xpub_nodrop test_id2fd
tests/test*.log test_capabilities
tests/test*.trs test_hwm_pubsub
test_router_mandatory_hwm
test_xpub_nodrop
test_getsockopt_memset
test*.log
test*.trs
src/platform.hpp* src/platform.hpp*
src/stamp-h1 src/stamp-h1
perf/local_lat perf/local_lat
@ -133,3 +138,11 @@ zeromq-*.tar.gz
zeromq-*.zip zeromq-*.zip
core core
build build
test-suite.log
curve_keygen
inproc_lat
inproc_thr
local_lat
local_thr
remote_lat
remote_thr

View File

@ -2,14 +2,54 @@
language: c language: c
os:
- linux
- osx
sudo: false
env:
global:
- BUILD_PREFIX=$PWD/tmp
- CFLAGS=-I${BUILD_PREFIX}/include
- CPPFLAGS=-I${BUILD_PREFIX}/include
- CXXFLAGS=-I${BUILD_PREFIX}/include
- LDFLAGS=-L${BUILD_PREFIX}/lib
- PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig
- DISTCHECK_CONFIGURE_FLAGS="--with-libsodium --prefix=${BUILD_PREFIX}"
before_install:
# workaround for Travis OSX CI bug, hasn't been fixed in a month so time for a hack
- if [ $TRAVIS_OS_NAME == "osx" ] ; then brew uninstall libtool && brew install libtool ; fi
# Build required projects first # Build required projects first
before_script: before_script:
- mkdir tmp
# libsodium # libsodium
- git clone git://github.com/jedisct1/libsodium.git - git clone --depth 1 -b stable git://github.com/jedisct1/libsodium.git
- ( cd libsodium; ./autogen.sh; ./configure; make check; sudo make install; sudo ldconfig ) - ( cd libsodium; ./autogen.sh; ./configure --prefix=${BUILD_PREFIX}; make check; make install )
# ZMQ stress tests need more open socket (files) than the usual default
# On OSX, it seems the way to set the max files limit is constantly changing, so
# try to use all known knobs to ensure compatibility across various versions
- if [ $TRAVIS_OS_NAME == "osx" ] ; then sudo sysctl -w kern.maxfiles=64000 ; sudo sysctl -w kern.maxfilesperproc=64000 ; sudo launchctl limit maxfiles 64000 64000 ; fi ; ulimit -n 64000
# Build and check this project # Build and check this project
script: script:
- ./autogen.sh && ./configure && make && make check - ./autogen.sh && ./configure --with-libsodium --prefix=${BUILD_PREFIX} && make distcheck
- sudo make install
# Deploy tags
before_deploy:
- . ./ci_deploy.sh
deploy:
provider: releases
api_key:
secure: "C+hbVQQL62twHIit4vjExT908acpjQzxPvCgnKKVdEYm58+rXVvQ4HzOlNve7py522m/2iazwnJDX5bPskES5Kof3jqTJ2hZI9rcFXh1KuEjUojiPwix/mUnxFYcxS4PhgmyqG3z5YUsEXnDhwkOwsAVnQIJUFV1XAWMWwDCilI="
file_glob: true
file: ${ZEROMQ41_DEPLOYMENT}
skip_cleanup: true
on:
repo: zeromq/zeromq4-1
branch: master
tags: true
condition: "$TRAVIS_OS_NAME =~ (linux)"

View File

@ -1,7 +1,7 @@
Corporate Contributors Corporate Contributors
====================== ======================
Copyright (c) 2007-2014 iMatix Corporation Copyright (c) 2007-2015 iMatix Corporation
Copyright (c) 2009-2011 250bpm s.r.o. Copyright (c) 2009-2011 250bpm s.r.o.
Copyright (c) 2010-2011 Miru Limited Copyright (c) 2010-2011 Miru Limited
Copyright (c) 2011 VMware, Inc. Copyright (c) 2011 VMware, Inc.
@ -59,6 +59,7 @@ Jon Dyte
Kamil Shakirov Kamil Shakirov
Ken Steele Ken Steele
Laurent Alebarde Laurent Alebarde
Luca Boccassi
Marc Rossi Marc Rossi
Mark Barbisan Mark Barbisan
Martin Hurton Martin Hurton
@ -86,6 +87,7 @@ Philip Kovacs
Pieter Hintjens Pieter Hintjens
Piotr Trojanek Piotr Trojanek
Richard Newton Richard Newton
Rik van der Heijden
Robert G. Jakabosky Robert G. Jakabosky
Sebastian Otaegui Sebastian Otaegui
Stefan Radomski Stefan Radomski

View File

@ -1,6 +1,6 @@
# CMake build script for ZeroMQ # CMake build script for ZeroMQ
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8.11)
project(ZeroMQ) project(ZeroMQ)
option(WITH_OPENPGM "Build with support for OpenPGM" OFF) option(WITH_OPENPGM "Build with support for OpenPGM" OFF)
@ -9,31 +9,46 @@ if(APPLE)
option(ZMQ_BUILD_FRAMEWORK "Build as OS X framework" ON) option(ZMQ_BUILD_FRAMEWORK "Build as OS X framework" ON)
endif() endif()
if(WIN32)
option(WITH_TWEETNACL "Build with tweetnacl" OFF)
else()
option(WITH_TWEETNACL "Build with tweetnacl" ON)
endif()
if(WITH_TWEETNACL) # Select curve encryption library, defaults to tweetnacl
add_definitions(-DHAVE_TWEETNACL -DHAVE_LIBSODIUM) # To use libsodium instead, use --with-libsodium (must be installed)
include_directories( # To disable curve, use --disable-curve
tweetnacl/contrib/randombytes
tweetnacl/src
)
set(TWEETNACL_SOURCES option (WITH_LIBSODIUM "Use libsodium instead of built-in tweetnacl" OFF)
tweetnacl/src/tweetnacl.c option (ENABLE_CURVE "Enable CURVE security" ON)
)
if(WIN32)
else()
list(APPEND TWEETNACL_SOURCES tweetnacl/contrib/randombytes/devurandom.c)
endif()
else()
find_library(SODIUM_FOUND sodium)
endif()
if (NOT ENABLE_CURVE)
message (STATUS "CURVE security is disabled")
elseif (WITH_LIBSODIUM)
find_package (Sodium)
if (SODIUM_FOUND)
message (STATUS "Using libsodium for CURVE security")
include_directories (${SODIUM_INCLUDE_DIRS})
# On Solaris, libsodium depends on libssp
if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
target_link_libraries (libzmq ssp)
endif ()
set (ZMQ_USE_LIBSODIUM 1)
set (ZMQ_HAVE_CURVE 1)
else ()
message (FATAL_ERROR
"libsodium is not installed. Install it, then run CMake again")
endif ()
else ()
message (STATUS "Using tweetnacl for CURVE security")
set (ZMQ_USE_TWEETNACL 1)
set (ZMQ_HAVE_CURVE 1)
set (TWEETNACL_SOURCES tweetnacl/src/tweetnacl.c)
if (WIN32)
list(APPEND TWEETNACL_SOURCES tweetnacl/contrib/randombytes/winrandom.c)
else ()
list(APPEND TWEETNACL_SOURCES tweetnacl/contrib/randombytes/devurandom.c)
endif ()
include_directories (tweetnacl/contrib/randombytes tweetnacl/src)
endif ()
set(POLLER "" CACHE STRING "Choose polling system. valid values are set(POLLER "" CACHE STRING "Choose polling system. valid values are
kqueue, epoll, devpoll, poll or select [default=autodetect]") kqueue, epoll, devpoll, poll or select [default=autodetect]")
@ -117,10 +132,21 @@ check_include_files(windows.h ZMQ_HAVE_WINDOWS)
check_include_files(sys/uio.h ZMQ_HAVE_UIO) check_include_files(sys/uio.h ZMQ_HAVE_UIO)
check_include_files(sys/eventfd.h ZMQ_HAVE_EVENTFD) check_include_files(sys/eventfd.h ZMQ_HAVE_EVENTFD)
check_library_exists(ws2_32 printf "" HAVE_WS2_32) # TODO: Why doesn't something logical like WSAStartup work? if(MSVC)
check_library_exists(ws2 printf "" HAVE_WS2) # Force stdcall convention
check_library_exists(rpcrt4 printf "" HAVE_RPCRT4) # UuidCreateSequential set(CMAKE_REQUIRED_FLAGS "/Gz")
check_library_exists(iphlpapi printf "" HAVE_IPHLAPI) # GetAdaptersAddresses
if(MSVC_IDE)
set(MSVC_TOOLSET "-${CMAKE_VS_PLATFORM_TOOLSET}")
else()
set(MSVC_TOOLSET "")
endif()
endif()
check_library_exists(ws2_32 WSAGetLastError "" HAVE_WS2_32)
check_library_exists(ws2 WSAGetLastError "" HAVE_WS2)
check_library_exists(rpcrt4 RpcErrorClearInformation "" HAVE_RPCRT4)
check_library_exists(iphlpapi GetAdapterOrderMap "" HAVE_IPHLAPI)
unset(CMAKE_REQUIRED_FLAGS)
check_cxx_symbol_exists(SO_PEERCRED sys/socket.h ZMQ_HAVE_SO_PEERCRED) check_cxx_symbol_exists(SO_PEERCRED sys/socket.h ZMQ_HAVE_SO_PEERCRED)
check_cxx_symbol_exists(LOCAL_PEERCRED sys/socket.h ZMQ_HAVE_LOCAL_PEERCRED) check_cxx_symbol_exists(LOCAL_PEERCRED sys/socket.h ZMQ_HAVE_LOCAL_PEERCRED)
@ -298,8 +324,8 @@ if(MSVC)
set(OPENPGM_INCLUDE_DIRS ${OPENPGM_ROOT}/include) set(OPENPGM_INCLUDE_DIRS ${OPENPGM_ROOT}/include)
set(OPENPGM_LIBRARY_DIRS ${OPENPGM_ROOT}/lib) set(OPENPGM_LIBRARY_DIRS ${OPENPGM_ROOT}/lib)
set(OPENPGM_LIBRARIES set(OPENPGM_LIBRARIES
optimized libpgm${_zmq_COMPILER}-mt-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib optimized libpgm${MSVC_TOOLSET}-mt-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib
debug libpgm${_zmq_COMPILER}-mt-gd-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib) debug libpgm${MSVC_TOOLSET}-mt-gd-${OPENPGM_VERSION_MAJOR}_${OPENPGM_VERSION_MINOR}_${OPENPGM_VERSION_MICRO}.lib)
endif() endif()
else() else()
if(WITH_OPENPGM) if(WITH_OPENPGM)
@ -330,7 +356,9 @@ endif()
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# default to Release build # default to Release build
if(NOT CMAKE_BUILD_TYPE) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
# CMAKE_BUILD_TYPE is not used for multi-configuration generators like Visual Studio/XCode
# which instead use CMAKE_CONFIGURATION_TYPES
set(CMAKE_BUILD_TYPE Release CACHE STRING set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE) FORCE)
@ -355,10 +383,12 @@ if(MSVC)
# Optimization flags. # Optimization flags.
# http://msdn.microsoft.com/en-us/magazine/cc301698.aspx # http://msdn.microsoft.com/en-us/magazine/cc301698.aspx
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL") if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GL")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /LTCG")
endif()
endif() endif()
@ -437,7 +467,8 @@ set(cxx-sources
xpub.cpp xpub.cpp
xsub.cpp xsub.cpp
zmq.cpp zmq.cpp
zmq_utils.cpp) zmq_utils.cpp
config.hpp)
set(rc-sources version.rc) set(rc-sources version.rc)
@ -580,15 +611,17 @@ if(MSVC)
target_link_libraries(libzmq ${OPTIONAL_LIBRARIES}) target_link_libraries(libzmq ${OPTIONAL_LIBRARIES})
set_target_properties(libzmq PROPERTIES set_target_properties(libzmq PROPERTIES
PUBLIC_HEADER "${public_headers}" PUBLIC_HEADER "${public_headers}"
RELEASE_POSTFIX "${_zmq_COMPILER}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" RELEASE_POSTFIX "${MSVC_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
DEBUG_POSTFIX "${_zmq_COMPILER}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" RELWITHDEBINFO_POSTFIX "${MSVC_TOOLSET}-mt-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
add_library(libzmq-static STATIC ${sources}) add_library(libzmq-static STATIC ${sources})
set_target_properties(libzmq-static PROPERTIES set_target_properties(libzmq-static PROPERTIES
PUBLIC_HEADER "${public_headers}" PUBLIC_HEADER "${public_headers}"
RELEASE_POSTFIX "${_zmq_COMPILER}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" RELEASE_POSTFIX "${MSVC_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
DEBUG_POSTFIX "${_zmq_COMPILER}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}" RELWITHDEBINFO_POSTFIX "${MSVC_TOOLSET}-mt-s-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
COMPILE_FLAGS "/D ZMQ_STATIC" DEBUG_POSTFIX "${MSVC_TOOLSET}-mt-sgd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}"
COMPILE_FLAGS "/DZMQ_STATIC"
OUTPUT_NAME "libzmq") OUTPUT_NAME "libzmq")
else() else()
add_library(libzmq SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig}) add_library(libzmq SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs} ${zmq-pkgconfig})
@ -697,8 +730,10 @@ if(MSVC)
ARCHIVE DESTINATION lib ARCHIVE DESTINATION lib
PUBLIC_HEADER DESTINATION include PUBLIC_HEADER DESTINATION include
COMPONENT SDK) COMPONENT SDK)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/libzmq${_zmq_COMPILER}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}.pdb DESTINATION lib if(NOT CMAKE_PDB_OUTPUT_DIRECTORY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/libzmq${MSVC_TOOLSET}-mt-gd-${ZMQ_VERSION_MAJOR}_${ZMQ_VERSION_MINOR}_${ZMQ_VERSION_PATCH}.pdb DESTINATION lib
COMPONENT SDK) COMPONENT SDK)
endif()
else() else()
install(TARGETS libzmq install(TARGETS libzmq
RUNTIME DESTINATION bin RUNTIME DESTINATION bin

View File

@ -62,7 +62,8 @@ The simplest way to compile this package is:
2. Type `make' to compile the package. 2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with 3. Optionally, type `make check' to run any self-tests that come with
the package. the package. Note that `make -j check' is not supported as some
tests share infrastructure and cannot be run in parallel.
4. Type `make install' to install the programs and any data files and 4. Type `make install' to install the programs and any data files and
documentation. documentation.

View File

@ -1,26 +1,635 @@
ACLOCAL_AMFLAGS = -I config ACLOCAL_AMFLAGS = -I config
if BUILD_PGM SUBDIRS = doc
SUBDIRS = foreign/openpgm src doc perf tests tools
DIST_SUBDIRS = doc builds builds/msvc
pkgconfig_DATA = src/libzmq.pc
AM_CPPFLAGS = \
-I$(top_builddir)/include \
-I$(top_srcdir)/include
#
# libraries/binaries
#
lib_LTLIBRARIES = libzmq.la
include_HEADERS = \
include/zmq.h \
include/zmq_utils.h
libzmq_la_SOURCES = \
src/address.cpp \
src/address.hpp \
src/array.hpp \
src/atomic_counter.hpp \
src/atomic_ptr.hpp \
src/blob.hpp \
src/clock.cpp \
src/clock.hpp \
src/command.hpp \
src/config.hpp \
src/ctx.cpp \
src/ctx.hpp \
src/curve_client.cpp \
src/curve_client.hpp \
src/curve_server.cpp \
src/curve_server.hpp \
src/dbuffer.hpp \
src/dealer.cpp \
src/dealer.hpp \
src/decoder.hpp \
src/devpoll.cpp \
src/devpoll.hpp \
src/dist.cpp \
src/dist.hpp \
src/encoder.hpp \
src/epoll.cpp \
src/epoll.hpp \
src/err.cpp \
src/err.hpp \
src/fd.hpp \
src/fq.cpp \
src/fq.hpp \
src/gssapi_mechanism_base.cpp \
src/gssapi_mechanism_base.hpp \
src/gssapi_client.cpp \
src/gssapi_client.hpp \
src/gssapi_server.cpp \
src/gssapi_server.hpp \
src/i_encoder.hpp \
src/i_engine.hpp \
src/i_decoder.hpp \
src/i_poll_events.hpp \
src/io_object.cpp \
src/io_object.hpp \
src/io_thread.cpp \
src/io_thread.hpp \
src/ip.cpp \
src/ip.hpp \
src/ipc_address.cpp \
src/ipc_address.hpp \
src/ipc_connecter.cpp \
src/ipc_connecter.hpp \
src/ipc_listener.cpp \
src/ipc_listener.hpp \
src/kqueue.cpp \
src/kqueue.hpp \
src/lb.cpp \
src/lb.hpp \
src/likely.hpp \
src/mailbox.cpp \
src/mailbox.hpp \
src/mechanism.cpp \
src/mechanism.hpp \
src/metadata.cpp \
src/metadata.hpp \
src/msg.cpp \
src/msg.hpp \
src/mtrie.cpp \
src/mtrie.hpp \
src/mutex.hpp \
src/norm_engine.cpp \
src/norm_engine.hpp \
src/null_mechanism.cpp \
src/null_mechanism.hpp \
src/object.cpp \
src/object.hpp \
src/options.cpp \
src/options.hpp \
src/own.cpp \
src/own.hpp \
src/pair.cpp \
src/pair.hpp \
src/pgm_receiver.cpp \
src/pgm_receiver.hpp \
src/pgm_sender.cpp \
src/pgm_sender.hpp \
src/pgm_socket.cpp \
src/pgm_socket.hpp \
src/pipe.cpp \
src/pipe.hpp \
src/plain_client.cpp \
src/plain_client.hpp \
src/plain_server.cpp \
src/plain_server.hpp \
src/platform.hpp \
src/poll.cpp \
src/poll.hpp \
src/poller.hpp \
src/poller_base.cpp \
src/poller_base.hpp \
src/proxy.cpp \
src/proxy.hpp \
src/pub.cpp \
src/pub.hpp \
src/pull.cpp \
src/pull.hpp \
src/push.cpp \
src/push.hpp \
src/random.cpp \
src/random.hpp \
src/raw_decoder.cpp \
src/raw_decoder.hpp \
src/raw_encoder.cpp \
src/raw_encoder.hpp \
src/reaper.cpp \
src/reaper.hpp \
src/rep.cpp \
src/rep.hpp \
src/req.cpp \
src/req.hpp \
src/router.cpp \
src/router.hpp \
src/select.cpp \
src/select.hpp \
src/session_base.cpp \
src/session_base.hpp \
src/signaler.cpp \
src/signaler.hpp \
src/socket_base.cpp \
src/socket_base.hpp \
src/socks.cpp \
src/socks.hpp \
src/socks_connecter.cpp \
src/socks_connecter.hpp \
src/stdint.hpp \
src/stream.cpp \
src/stream.hpp \
src/stream_engine.cpp \
src/stream_engine.hpp \
src/sub.cpp \
src/sub.hpp \
src/tcp.cpp \
src/tcp.hpp \
src/tcp_address.cpp \
src/tcp_address.hpp \
src/tcp_connecter.cpp \
src/tcp_connecter.hpp \
src/tcp_listener.cpp \
src/tcp_listener.hpp \
src/thread.cpp \
src/thread.hpp \
src/tipc_address.cpp \
src/tipc_address.hpp \
src/tipc_connecter.cpp \
src/tipc_connecter.hpp \
src/tipc_listener.cpp \
src/tipc_listener.hpp \
src/trie.cpp \
src/trie.hpp \
src/v1_decoder.cpp \
src/v1_decoder.hpp \
src/v2_decoder.cpp \
src/v2_decoder.hpp \
src/v1_encoder.cpp \
src/v1_encoder.hpp \
src/v2_encoder.cpp \
src/v2_encoder.hpp \
src/v2_protocol.hpp \
src/windows.hpp \
src/wire.hpp \
src/xpub.hpp \
src/xpub.cpp \
src/xsub.cpp \
src/xsub.hpp \
src/ypipe.hpp \
src/ypipe_base.hpp \
src/ypipe_conflate.hpp \
src/yqueue.hpp \
src/zmq.cpp \
src/zmq_utils.cpp
if ON_MINGW
libzmq_la_LDFLAGS = \
-no-undefined \
-avoid-version \
-version-info @LTVER@ \
@LIBZMQ_EXTRA_LDFLAGS@
else else
SUBDIRS = src doc perf tests tools if ON_ANDROID
libzmq_la_LDFLAGS = \
-avoid-version \
-version-info @LTVER@ \
@LIBZMQ_EXTRA_LDFLAGS@
else
if ON_LINUX
libzmq_la_LDFLAGS = \
-version-info @LTVER@ \
@LIBZMQ_EXTRA_LDFLAGS@ \
-Wl,--version-script=$(srcdir)/src/libzmq.vers
else
libzmq_la_LDFLAGS = \
-version-info @LTVER@ \
@LIBZMQ_EXTRA_LDFLAGS@ \
-Wl
endif
endif
endif endif
DIST_SUBDIRS = foreign/openpgm src doc perf tests tools builds/msvc libzmq_la_CPPFLAGS =
libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@
libzmq_la_LIBADD =
if USE_LIBSODIUM
libzmq_la_CPPFLAGS += ${sodium_CFLAGS}
libzmq_la_LIBADD += ${sodium_LIBS}
endif
if USE_TWEETNACL
libzmq_la_SOURCES += \
tweetnacl/src/tweetnacl.c \
tweetnacl/contrib/randombytes/devurandom.c
libzmq_la_CXXFLAGS += \
-I$(top_builddir)/tweetnacl/contrib/randombytes \
-I$(top_builddir)/tweetnacl/src
endif
if HAVE_PGM
libzmq_la_CPPFLAGS += ${pgm_CFLAGS}
libzmq_la_LIBADD += ${pgm_LIBS}
endif
noinst_PROGRAMS = \
local_lat \
remote_lat \
local_thr \
remote_thr \
inproc_lat \
inproc_thr
local_lat_LDADD = libzmq.la
local_lat_SOURCES = perf/local_lat.cpp
remote_lat_LDADD = libzmq.la
remote_lat_SOURCES = perf/remote_lat.cpp
local_thr_LDADD = libzmq.la
local_thr_SOURCES = perf/local_thr.cpp
remote_thr_LDADD = libzmq.la
remote_thr_SOURCES = perf/remote_thr.cpp
inproc_lat_LDADD = libzmq.la
inproc_lat_SOURCES = perf/inproc_lat.cpp
inproc_thr_LDADD = libzmq.la
inproc_thr_SOURCES = perf/inproc_thr.cpp
bin_PROGRAMS = curve_keygen
curve_keygen_LDADD = libzmq.la
curve_keygen_SOURCES = tools/curve_keygen.cpp
#
# tests
#
test_apps = \
test_system \
test_pair_inproc \
test_pair_tcp \
test_reqrep_inproc \
test_reqrep_tcp \
test_hwm \
test_hwm_pubsub \
test_reqrep_device \
test_sub_forward \
test_invalid_rep \
test_msg_flags \
test_connect_resolve \
test_immediate \
test_last_endpoint \
test_term_endpoint \
test_srcfd \
test_monitor \
test_router_mandatory \
test_router_mandatory_hwm \
test_router_handover \
test_probe_router \
test_stream \
test_stream_empty \
test_stream_disconnect \
test_stream_timeout \
test_disconnect_inproc \
test_unbind_inproc \
test_unbind_wildcard \
test_ctx_options \
test_ctx_destroy \
test_security_null \
test_security_plain \
test_security_curve \
test_iov \
test_spec_req \
test_spec_rep \
test_spec_dealer \
test_spec_router \
test_spec_pushpull \
test_req_correlate \
test_req_relaxed \
test_conflate \
test_inproc_connect \
test_issue_566 \
test_proxy \
test_proxy_single_socket \
test_proxy_terminate \
test_getsockopt_memset \
test_many_sockets \
test_ipc_wildcard \
test_diffserv \
test_connect_rid \
test_bind_src_address \
test_metadata \
test_capabilities \
test_xpub_nodrop
test_system_SOURCES = tests/test_system.cpp
test_system_LDADD = libzmq.la
test_pair_inproc_SOURCES = \
tests/test_pair_inproc.cpp \
tests/testutil.hpp
test_pair_inproc_LDADD = libzmq.la
test_pair_tcp_SOURCES = \
tests/test_pair_tcp.cpp \
tests/testutil.hpp
test_pair_tcp_LDADD = libzmq.la
test_reqrep_inproc_SOURCES = \
tests/test_reqrep_inproc.cpp \
tests/testutil.hpp
test_reqrep_inproc_LDADD = libzmq.la
test_reqrep_tcp_SOURCES = \
tests/test_reqrep_tcp.cpp \
tests/testutil.hpp
test_reqrep_tcp_LDADD = libzmq.la
test_hwm_SOURCES = tests/test_hwm.cpp
test_hwm_LDADD = libzmq.la
test_hwm_pubsub_SOURCES = tests/test_hwm_pubsub.cpp
test_hwm_pubsub_LDADD = libzmq.la
test_reqrep_device_SOURCES = tests/test_reqrep_device.cpp
test_reqrep_device_LDADD = libzmq.la
test_sub_forward_SOURCES = tests/test_sub_forward.cpp
test_sub_forward_LDADD = libzmq.la
test_invalid_rep_SOURCES = tests/test_invalid_rep.cpp
test_invalid_rep_LDADD = libzmq.la
test_msg_flags_SOURCES = tests/test_msg_flags.cpp
test_msg_flags_LDADD = libzmq.la
test_connect_resolve_SOURCES = tests/test_connect_resolve.cpp
test_connect_resolve_LDADD = libzmq.la
test_immediate_SOURCES = tests/test_immediate.cpp
test_immediate_LDADD = libzmq.la
test_last_endpoint_SOURCES = tests/test_last_endpoint.cpp
test_last_endpoint_LDADD = libzmq.la
test_term_endpoint_SOURCES = tests/test_term_endpoint.cpp
test_term_endpoint_LDADD = libzmq.la
test_srcfd_SOURCES = tests/test_srcfd.cpp
test_srcfd_LDADD = libzmq.la
test_monitor_SOURCES = tests/test_monitor.cpp
test_monitor_LDADD = libzmq.la
test_router_mandatory_SOURCES = tests/test_router_mandatory.cpp
test_router_mandatory_LDADD = libzmq.la
test_router_mandatory_hwm_SOURCES = tests/test_router_mandatory_hwm.cpp
test_router_mandatory_hwm_LDADD = libzmq.la
test_router_handover_SOURCES = tests/test_router_handover.cpp
test_router_handover_LDADD = libzmq.la
test_probe_router_SOURCES = tests/test_probe_router.cpp
test_probe_router_LDADD = libzmq.la
test_stream_SOURCES = tests/test_stream.cpp
test_stream_LDADD = libzmq.la
test_stream_empty_SOURCES = tests/test_stream_empty.cpp
test_stream_empty_LDADD = libzmq.la
test_stream_timeout_SOURCES = tests/test_stream_timeout.cpp
test_stream_timeout_LDADD = libzmq.la
test_stream_disconnect_SOURCES = tests/test_stream_disconnect.cpp
test_stream_disconnect_LDADD = libzmq.la
test_disconnect_inproc_SOURCES = tests/test_disconnect_inproc.cpp
test_disconnect_inproc_LDADD = libzmq.la
test_unbind_inproc_SOURCES = tests/test_unbind_inproc.cpp
test_unbind_inproc_LDADD = libzmq.la
test_unbind_wildcard_SOURCES = tests/test_unbind_wildcard.cpp
test_unbind_wildcard_LDADD = libzmq.la
test_ctx_options_SOURCES = tests/test_ctx_options.cpp
test_ctx_options_LDADD = libzmq.la
test_iov_SOURCES = tests/test_iov.cpp
test_iov_LDADD = libzmq.la
test_ctx_destroy_SOURCES = tests/test_ctx_destroy.cpp
test_ctx_destroy_LDADD = libzmq.la
test_security_null_SOURCES = tests/test_security_null.cpp
test_security_null_LDADD = libzmq.la
test_security_plain_SOURCES = tests/test_security_plain.cpp
test_security_plain_LDADD = libzmq.la
test_security_curve_SOURCES = tests/test_security_curve.cpp
test_security_curve_LDADD = libzmq.la
test_spec_req_SOURCES = tests/test_spec_req.cpp
test_spec_req_LDADD = libzmq.la
test_spec_rep_SOURCES = tests/test_spec_rep.cpp
test_spec_rep_LDADD = libzmq.la
test_spec_dealer_SOURCES = tests/test_spec_dealer.cpp
test_spec_dealer_LDADD = libzmq.la
test_spec_router_SOURCES = tests/test_spec_router.cpp
test_spec_router_LDADD = libzmq.la
test_spec_pushpull_SOURCES = tests/test_spec_pushpull.cpp
test_spec_pushpull_LDADD = libzmq.la
test_req_correlate_SOURCES = tests/test_req_correlate.cpp
test_req_correlate_LDADD = libzmq.la
test_req_relaxed_SOURCES = tests/test_req_relaxed.cpp
test_req_relaxed_LDADD = libzmq.la
test_conflate_SOURCES = tests/test_conflate.cpp
test_conflate_LDADD = libzmq.la
test_inproc_connect_SOURCES = tests/test_inproc_connect.cpp
test_inproc_connect_LDADD = libzmq.la
test_issue_566_SOURCES = tests/test_issue_566.cpp
test_issue_566_LDADD = libzmq.la
test_proxy_SOURCES = tests/test_proxy.cpp
test_proxy_LDADD = libzmq.la
test_proxy_single_socket_SOURCES = tests/test_proxy_single_socket.cpp
test_proxy_single_socket_LDADD = libzmq.la
test_proxy_terminate_SOURCES = tests/test_proxy_terminate.cpp
test_proxy_terminate_LDADD = libzmq.la
test_getsockopt_memset_SOURCES = tests/test_getsockopt_memset.cpp
test_getsockopt_memset_LDADD = libzmq.la
test_many_sockets_SOURCES = tests/test_many_sockets.cpp
test_many_sockets_LDADD = libzmq.la
test_ipc_wildcard_SOURCES = tests/test_ipc_wildcard.cpp
test_ipc_wildcard_LDADD = libzmq.la
test_diffserv_SOURCES = tests/test_diffserv.cpp
test_diffserv_LDADD = libzmq.la
test_connect_rid_SOURCES = tests/test_connect_rid.cpp
test_connect_rid_LDADD = libzmq.la
test_bind_src_address_SOURCES = tests/test_bind_src_address.cpp
test_bind_src_address_LDADD = libzmq.la
test_metadata_SOURCES = tests/test_metadata.cpp
test_metadata_LDADD = libzmq.la
test_capabilities_SOURCES = tests/test_capabilities.cpp
test_capabilities_LDADD = libzmq.la
test_xpub_nodrop_SOURCES = tests/test_xpub_nodrop.cpp
test_xpub_nodrop_LDADD = libzmq.la
if !ON_MINGW
test_apps += \
test_shutdown_stress \
test_pair_ipc \
test_reqrep_ipc \
test_timeo \
test_filter_ipc
test_shutdown_stress_SOURCES = tests/test_shutdown_stress.cpp
test_shutdown_stress_LDADD = libzmq.la
test_pair_ipc_SOURCES = \
tests/test_pair_ipc.cpp \
tests/testutil.hpp
test_pair_ipc_LDADD = libzmq.la
test_reqrep_ipc_SOURCES = \
tests/test_reqrep_ipc.cpp \
tests/testutil.hpp
test_reqrep_ipc_LDADD = libzmq.la
test_timeo_SOURCES = tests/test_timeo.cpp
test_timeo_LDADD = libzmq.la
test_filter_ipc_SOURCES = tests/test_filter_ipc.cpp
test_filter_ipc_LDADD = libzmq.la
if HAVE_FORK
test_apps += test_fork
test_fork_SOURCES = tests/test_fork.cpp
test_fork_LDADD = libzmq.la
endif
endif
if BUILD_TIPC
test_apps += \
test_connect_delay_tipc \
test_pair_tipc \
test_reqrep_device_tipc \
test_reqrep_tipc \
test_router_mandatory_tipc \
test_shutdown_stress_tipc \
test_sub_forward_tipc \
test_term_endpoint_tipc
test_connect_delay_tipc_SOURCES = tests/test_connect_delay_tipc.cpp
test_connect_delay_tipc_LDADD = libzmq.la
test_pair_tipc_SOURCES = tests/test_pair_tipc.cpp
test_pair_tipc_LDADD = libzmq.la
test_reqrep_device_tipc_SOURCES = tests/test_reqrep_device_tipc.cpp
test_reqrep_device_tipc_LDADD = libzmq.la
test_reqrep_tipc_SOURCES = tests/test_reqrep_tipc.cpp
test_reqrep_tipc_LDADD = libzmq.la
test_router_mandatory_tipc_SOURCES = tests/test_router_mandatory_tipc.cpp
test_router_mandatory_tipc_LDADD = libzmq.la
test_shutdown_stress_tipc_SOURCES = tests/test_shutdown_stress_tipc.cpp
test_shutdown_stress_tipc_LDADD = libzmq.la
test_sub_forward_tipc_SOURCES = tests/test_sub_forward_tipc.cpp
test_sub_forward_tipc_LDADD = libzmq.la
test_term_endpoint_tipc_SOURCES = tests/test_term_endpoint_tipc.cpp
test_term_endpoint_tipc_LDADD = libzmq.la
endif
if ON_LINUX
test_apps += test_abstract_ipc
test_abstract_ipc_SOURCES = tests/test_abstract_ipc.cpp
test_abstract_ipc_LDADD = libzmq.la
endif
check_PROGRAMS = ${test_apps}
# Run the test cases
TESTS = $(test_apps)
XFAIL_TESTS =
if !ON_LINUX
XFAIL_TESTS += test_abstract_ipc
endif
EXTRA_DIST = \ EXTRA_DIST = \
CMakeLists.txt \ CMakeLists.txt \
autogen.sh \ autogen.sh \
version.sh \ version.sh \
MAINTAINERS \ MAINTAINERS \
foreign/openpgm/@pgm_basename@.tar.gz src/libzmq.pc.cmake.in \
src/libzmq.vers \
src/version.rc.in \
tests/CMakeLists.txt \
tweetnacl \
tools/curve_keygen.cpp
MAINTAINERCLEANFILES = \ MAINTAINERCLEANFILES = \
$(srcdir)/aclocal.m4 \ $(srcdir)/aclocal.m4 \
$(srcdir)/autom4te.cache \ $(srcdir)/autom4te.cache \
$(srcdir)/configure \ $(srcdir)/configure \
`find "$(srcdir)" -type f -name Makefile.in -print` `find "$(srcdir)" -type f -name Makefile.in -print`
dist-hook: dist-hook:
-rm $(distdir)/src/platform.hpp
@if test -d "$(srcdir)/.git"; \ @if test -d "$(srcdir)/.git"; \
then \ then \
echo Creating ChangeLog && \ echo Creating ChangeLog && \
@ -34,8 +643,7 @@ dist-hook:
echo A git clone is required to generate a ChangeLog >&2; \ echo A git clone is required to generate a ChangeLog >&2; \
fi fi
-cp $(top_srcdir)/builds/redhat/zeromq.spec $(distdir)/zeromq.spec -cp $(top_srcdir)/builds/redhat/zeromq.spec $(distdir)/zeromq.spec
-rm -rf $(distdir)/foreign/openpgm/build-staging
distclean-local:
-rm -rf $(top_srcdir)/foreign/openpgm/build-staging
maintainer-clean-local: maintainer-clean-local:
-rm -rf $(top_srcdir)/config -rm -rf $(top_srcdir)/config

191
NEWS
View File

@ -1,3 +1,194 @@
0MQ version 4.1.6 stable, released on 2016/11/01
================================================
* Fixed #2051 - getifaddrs can fail with ECONNREFUSED
* Fixed #2091 - testutil.hpp fails to build on Windows XP
* Fixed #2096 - add tests/CMakeLists.in and version.rc.in to dist tar
* Fixed #2107 - zmq_connect with IPv6 "source:port;dest:port" broken
* Fixed #2117 - ctx_term assert with inproc zmq_router connect-before-bind
* Fixed #2158 - Socket monitor uses internal Pair from multiple threads
* Fixed #2161 - messages dropped due to HWM race
* Fixed #1325 - alignment issue with zmq_msg_t causes SIGBUS on SPARC and ARM
0MQ version 4.1.5 stable, released on 2016/06/17
================================================
* Fixed #1673 - CMake on Windows put PDB in wrong directory.
* Fixed #1723 - Family is not set when resolving NIC on Android.
* Fixed #1608 - Windows 7 TCP slow start issue.
* Fixed #1806 - uninitialised read in curve getsockopt.
* Fixed #1807 - build broken with GCC 6.
* Fixed #1831 - potential assertion failure with latest libsodium.
* Fixed #1850 - detection issues with tweetnacl/libsodium.
* Fixed #1877 - Avoid terminating connections prematurely
* Fixed #1887 - zmq_bind IPv4 fallback still tries IPv6
* Fixed #1866 - fails to build on SunOS 5.10 / Solaris 10
* Fixed #919 - ZMQ_LINGER (related to #1877)
* Fixed #114 - cannot unbind with same endpoint with IPv6 enabled.
* Fixed #1952 - CMake scripts not part of release tarballs
* Fixed #1542 - Fix a crash on Windows when port 5905 is in use.
* Fixed #2021 - Fix building on sparc32.
0MQ version 4.1.4 stable, released on 2015/12/18
================================================
* Fixed #1315 - socket monitor hangs if bind/setsockopt failed.
* Fixed #1399 - assertion failure in tcp.cpp after network reconnect.
* Fixed #1632 - build failure using latest libsodium.
* Fixed #1644 - assertion failure in msg.cpp:390 on STREAM sockets.
* Fixed #1661 - does not handle IPv6 link local addresses.
0MQ version 4.1.3 stable, released on 2015/08/17
================================================
* Fixed #1532 - getsockopt ZMQ_RCVMORE now resets all bits instead of only 32
* Fixed #1445 - zmq::socket_base_t::connect fails on tcp ipv6 address
0MQ version 4.1.2 stable, released on 2015/06/15
================================================
* Added explicit reference to static link exception in every source file.
* Bumped ABI version to 5:0:0 since 4.1.x changed the ABI.
* Fixed STDINT event interface macros to work with CZMQ 3.0.
* Fixed installation of man pages when BUILD_DOC is not set.
* Fixed #1428 - regression on single-socket proxies.
0MQ version 4.1.1 stable, released on 2015/06/02
================================================
* Fixed #1208 - fix recursion in automake packaging.
* Fixed #1224 - crash when processing empty unsubscribe message.
* Fixed #1213 - properties files were missing from source packages.
* Fixed #1273 - V3 protocol handler vulnerable to downgrade attacks.
* Fixed #1347 - lack way to get peer address.
* Fixed #1362 - SUB socket sometimes fails to resubscribe properly.
* Fixed #1377, #1144 - failed with WSANOTINITIALISED in some cases.
* Fixed #1389 - PUB, PUSH sockets had slow memory leak.
* Fixed #1382 - zmq_proxy did not terminate if there were no readers.
0MQ version 4.1.0 rc1, released on 2014/10/14
=============================================
* All issues that were fixed in 4.0.x
* Improved client reconnection strategy on errors
* GSSAPI security mechanism
* SOCKS5 support (ZMQ_SOCKS_PROXY)
* ZMQ_ROUTER_HANDOVER
* ZMQ_TOS
* ZMQ_CONNECT_RID
* ZMQ_HANDSHAKE_IVL
* ZMQ_IDENTITY_FD
* ZMQ_XPUB_NODROP
* ZMQ_SRCFD and ZMQ_SHARED message options
* Message metadata -- zmq_msg_gets ()
* Probe library configuration -- zmq_has ()
0MQ version 4.0.5 stable, released on 2014/10/14
================================================
* Fixed #1191; CURVE mechanism does not verify short term nonces.
* Fixed #1190; stream_engine is vulnerable to downgrade attacks.
* Fixed #1088; assertion failure for WSAENOTSOCK on Windows.
* Fixed #1015; race condition while connecting inproc sockets.
* Fixed #994; bump so library number to 4.0.0
* Fixed #939, assertion failed: !more (fq.cpp:99) after many ZAP requests.
* Fixed #872; lost first part of message over inproc://.
* Fixed #797, keep-alive on Windows.
0MQ version 4.0.4 stable, released on 2014/03/10
================================================
Bug Fixes
---------
* Fixed #909; out of tree build issue on Linux.
* Fixed #888; hangs on terminate when inproc connected but never bound.
* Fixed #868; assertion failure at ip.cpp:137 when using port scanner.
* Fixed #818; fix timestamp counter on s390/s390x.
* Fixed #817; only export zmq_* symbols.
* Fixed #797; fixed setting TCP keepalive on Windows.
* Fixed #775; compile error on Windows.
* Fixed #763; when talking to a ZMTP v1 peer (libzmq 2.2), a socket would
send an extra identity frame at the start of the connection.
* Fixed LIBZMQ-576 - Crash closing a socket after zmq_msg_send returns
EAGAIN (reverts LIBZMQ-497)
* Fixed LIBZMQ-584; subscription filters getting lost on reconnection.
0MQ version 4.0.3 stable, released on 2013/11/24 0MQ version 4.0.3 stable, released on 2013/11/24
================================================ ================================================

View File

@ -1,17 +1,16 @@
# ZeroMQ # ZeroMQ
[![Build Status](https://travis-ci.org/zeromq/libzmq.png?branch=master)](https://travis-ci.org/zeromq/libzmq) [![Build Status](https://travis-ci.org/zeromq/zeromq4-1.png?branch=master)](https://travis-ci.org/zeromq/zeromq4-1)
## Welcome ## Welcome
The 0MQ lightweight messaging kernel is a library which extends the The ZeroMQ lightweight messaging kernel is a library which extends the
standard socket interfaces with features traditionally provided by standard socket interfaces with features traditionally provided by
specialised messaging middleware products. 0MQ sockets provide an specialised messaging middleware products. ZeroMQ sockets provide an
abstraction of asynchronous message queues, multiple messaging patterns, abstraction of asynchronous message queues, multiple messaging patterns,
message filtering (subscriptions), seamless access to multiple transport message filtering (subscriptions), seamless access to multiple transport
protocols and more. protocols and more.
## Building and installation ## Building and installation
See the INSTALL file included with the distribution. See the INSTALL file included with the distribution.
@ -19,7 +18,7 @@ See the INSTALL file included with the distribution.
## Resources ## Resources
Extensive documentation is provided with the distribution. Refer to Extensive documentation is provided with the distribution. Refer to
doc/zmq.html, or "man zmq" after you have installed 0MQ on your system. doc/zmq.html, or "man zmq" after you have installed libzmq on your system.
Website: http://www.zeromq.org/ Website: http://www.zeromq.org/
@ -28,11 +27,29 @@ Announcements mailing list: zeromq-announce@lists.zeromq.org
Git repository: http://github.com/zeromq/libzmq Git repository: http://github.com/zeromq/libzmq
0MQ developers can also be found on the IRC channel #zeromq, on the ZeroMQ developers can also be found on the IRC channel #zeromq, on the
Freenode network (irc.freenode.net). Freenode network (irc.freenode.net).
## Copying ## License
Free use of this software is granted under the terms of the GNU Lesser General The project license is specified in COPYING and COPYING.LESSER.
Public License (LGPL). For details see the files `COPYING` and `COPYING.LESSER`
included with the 0MQ distribution. libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.

View File

@ -745,20 +745,17 @@ dnl # LIBZMQ_CHECK_POLLER_KQUEUE([action-if-found], [action-if-not-found])
dnl # Checks kqueue polling system # dnl # Checks kqueue polling system #
dnl ################################################################################ dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_KQUEUE], [{ AC_DEFUN([LIBZMQ_CHECK_POLLER_KQUEUE], [{
AC_LINK_IFELSE( AC_LINK_IFELSE([
[AC_LANG_PROGRAM( AC_LANG_PROGRAM([
[
#include <sys/types.h> #include <sys/types.h>
#include <sys/event.h> #include <sys/event.h>
#include <sys/time.h> #include <sys/time.h>
], ],[[
[[
struct kevent t_kev; struct kevent t_kev;
kqueue(); kqueue();
]] ]])],
)], [$1], [$2]
[libzmq_cv_have_poller_kqueue="yes" ; $1], )
[libzmq_cv_have_poller_kqueue="no" ; $2])
}]) }])
dnl ################################################################################ dnl ################################################################################
@ -767,35 +764,27 @@ dnl # Checks epoll polling system can actually run #
dnl # For cross-compile, only requires that epoll can link # dnl # For cross-compile, only requires that epoll can link #
dnl ################################################################################ dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_EPOLL], [{ AC_DEFUN([LIBZMQ_CHECK_POLLER_EPOLL], [{
AC_RUN_IFELSE( AC_RUN_IFELSE([
[AC_LANG_PROGRAM( AC_LANG_PROGRAM([
[
#include <sys/epoll.h> #include <sys/epoll.h>
], ],[[
[[
struct epoll_event t_ev; struct epoll_event t_ev;
int r; int r;
r = epoll_create(10); r = epoll_create(10);
return(r < 0); return(r < 0);
]] ]])],
)], [$1],[$2],[
[libzmq_cv_have_poller_epoll="yes" ; $1], AC_LINK_IFELSE([
[libzmq_cv_have_poller_epoll="no" ; $2], AC_LANG_PROGRAM([
[
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[
#include <sys/epoll.h> #include <sys/epoll.h>
], ],[[
[[ struct epoll_event t_ev;
struct epoll_event t_ev; epoll_create(10);
epoll_create(10); ]])],
]] [$1], [$2]
)], )
[libzmq_cv_have_poller_epoll="yes" ; $1], ]
[libzmq_cv_have_poller_epoll="no" ; $2]) )
])
}]) }])
dnl ################################################################################ dnl ################################################################################
@ -803,18 +792,15 @@ dnl # LIBZMQ_CHECK_POLLER_DEVPOLL([action-if-found], [action-if-not-found])
dnl # Checks devpoll polling system # dnl # Checks devpoll polling system #
dnl ################################################################################ dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_DEVPOLL], [{ AC_DEFUN([LIBZMQ_CHECK_POLLER_DEVPOLL], [{
AC_LINK_IFELSE( AC_LINK_IFELSE([
[AC_LANG_PROGRAM( AC_LANG_PROGRAM([
[
#include <sys/devpoll.h> #include <sys/devpoll.h>
], ],[[
[[
struct pollfd t_devpoll; struct pollfd t_devpoll;
int fd = open("/dev/poll", O_RDWR); int fd = open("/dev/poll", O_RDWR);
]] ]])],
)], [$1], [$2]
[libzmq_cv_have_poller_devpoll="yes" ; $1], )
[libzmq_cv_have_poller_devpoll="no" ; $2])
}]) }])
dnl ################################################################################ dnl ################################################################################
@ -822,18 +808,15 @@ dnl # LIBZMQ_CHECK_POLLER_POLL([action-if-found], [action-if-not-found])
dnl # Checks poll polling system # dnl # Checks poll polling system #
dnl ################################################################################ dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_POLL], [{ AC_DEFUN([LIBZMQ_CHECK_POLLER_POLL], [{
AC_LINK_IFELSE( AC_LINK_IFELSE([
[AC_LANG_PROGRAM( AC_LANG_PROGRAM([
[
#include <poll.h> #include <poll.h>
], ],[[
[[
struct pollfd t_poll; struct pollfd t_poll;
poll(&t_poll, 1, 1); poll(&t_poll, 1, 1);
]] ]])],
)], [$1], [$2]
[libzmq_cv_have_poller_poll="yes" ; $1], )
[libzmq_cv_have_poller_poll="no" ; $2])
}]) }])
dnl ################################################################################ dnl ################################################################################
@ -841,9 +824,8 @@ dnl # LIBZMQ_CHECK_POLLER_SELECT([action-if-found], [action-if-not-found])
dnl # Checks select polling system # dnl # Checks select polling system #
dnl ################################################################################ dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_SELECT], [{ AC_DEFUN([LIBZMQ_CHECK_POLLER_SELECT], [{
AC_LINK_IFELSE( AC_LINK_IFELSE([
[AC_LANG_PROGRAM( AC_LANG_PROGRAM([
[
#ifdef ZMQ_HAVE_WINDOWS #ifdef ZMQ_HAVE_WINDOWS
#include "winsock2.h" #include "winsock2.h"
#elif defined ZMQ_HAVE_OPENVMS #elif defined ZMQ_HAVE_OPENVMS
@ -852,79 +834,84 @@ AC_DEFUN([LIBZMQ_CHECK_POLLER_SELECT], [{
#else #else
#include <sys/select.h> #include <sys/select.h>
#endif #endif
], ],[[
[[
fd_set t_rfds; fd_set t_rfds;
struct timeval tv; struct timeval tv;
FD_ZERO(&t_rfds); FD_ZERO(&t_rfds);
FD_SET(0, &t_rfds); FD_SET(0, &t_rfds);
tv.tv_sec = 5; tv.tv_sec = 5;
tv.tv_usec = 0; tv.tv_usec = 0;
select(1, &t_rfds, NULL, NULL, &tv); select(1, &t_rfds, NULL, NULL, &tv);
]] ]])],
)], [$1],[$2]
[libzmq_cv_have_poller_select="yes" ; $1], )
[libzmq_cv_have_poller_select="no" ; $2])
}]) }])
dnl ################################################################################ dnl ################################################################################
dnl # LIBZMQ_CHECK_POLLER([action-if-found], [action-if-not-found]) # dnl # LIBZMQ_CHECK_POLLER([action-if-found], [action-if-not-found]) #
dnl # Choose polling system # dnl # Choose polling system #
dnl ################################################################################ dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER], [{ AC_DEFUN([LIBZMQ_CHECK_POLLER], [{
# Allow user to override poller autodetection # Allow user to override poller autodetection
AC_ARG_WITH([poller], [AS_HELP_STRING([--with-poller], AC_ARG_WITH([poller],
[choose polling system manually. valid values are kqueue, epoll, devpoll, poll or select [default=autodetect]])]) [AS_HELP_STRING([--with-poller],
[choose polling system manually. Valid values are 'kqueue', 'epoll', 'devpoll', 'poll', 'select', or 'auto'. [default=auto]])])
case "${with_poller}" in if test "x$with_poller" == "x"; then
kqueue|epoll|devpoll|poll|select) pollers=auto
# User has chosen polling system else
AC_MSG_CHECKING([for suitable polling system skipped for preselect]) pollers=$with_poller
libzmq_cv_poller="${with_poller}" fi
;; if test "$pollers" == "auto"; then
# We search for pollers in this order
pollers="kqueue epoll devpoll poll select"
fi
*) # try to find suitable polling system. the order of testing is:
# try to find suitable polling system. the order of testing is: AC_MSG_NOTICE([Choosing polling system from '$pollers'...])
# kqueue -> epoll -> devpoll -> poll -> select poller_found=0
AC_MSG_CHECKING([for suitable polling system]) for poller in $pollers; do
for subsystem in kqueue epoll devpoll poll select; do case "$poller" in
kqueue)
case "${subsystem}" in LIBZMQ_CHECK_POLLER_KQUEUE([
kqueue) AC_MSG_NOTICE([Using 'kqueue' polling system])
LIBZMQ_CHECK_POLLER_KQUEUE([libzmq_cv_poller=$subsystem], []) AC_DEFINE(ZMQ_USE_KQUEUE, 1, [Use 'kqueue' polling system])
;; poller_found=1
])
epoll) ;;
LIBZMQ_CHECK_POLLER_EPOLL([libzmq_cv_poller=$subsystem], []) epoll)
;; LIBZMQ_CHECK_POLLER_EPOLL([
AC_MSG_NOTICE([Using 'epoll' polling system])
devpoll) AC_DEFINE(ZMQ_USE_EPOLL, 1, [Use 'epoll' polling system])
LIBZMQ_CHECK_POLLER_DEVPOLL([libzmq_cv_poller=$subsystem], []) poller_found=1
;; ])
;;
poll) devpoll)
LIBZMQ_CHECK_POLLER_POLL([libzmq_cv_poller=$subsystem], []) LIBZMQ_CHECK_POLLER_DEVPOLL([
;; AC_MSG_NOTICE([Using 'devpoll' polling system])
AC_DEFINE(ZMQ_USE_DEVPOLL, 1, [Use 'devpoll' polling system])
select) poller_found=1
LIBZMQ_CHECK_POLLER_SELECT([libzmq_cv_poller=$subsystem], []) ])
;; ;;
esac poll)
LIBZMQ_CHECK_POLLER_POLL([
if test "x${libzmq_cv_poller}" != "x"; then AC_MSG_NOTICE([Using 'poll' polling system])
break AC_DEFINE(ZMQ_USE_POLL, 1, [Use 'poll' polling system])
fi poller_found=1
done ])
;; ;;
esac select)
LIBZMQ_CHECK_POLLER_SELECT([
libzmq_cv_poller_flag=`echo "ZMQ_USE_${libzmq_cv_poller}" | tr a-z A-Z` AC_MSG_NOTICE([Using 'select' polling system])
AC_DEFINE(ZMQ_USE_SELECT, 1, [Use 'select' polling system])
AS_IF([test "x${libzmq_cv_poller}" != "x"], poller_found=1
[AC_MSG_RESULT([using $libzmq_cv_poller]) ; $1], [AC_MSG_RESULT(no suitable polling system found) ; $2]) ])
;;
esac
test $poller_found -eq 1 && break
done
if test $poller_found -eq 0; then
AC_MSG_ERROR([None of '$pollers' are valid pollers on this platform])
fi
}]) }])

View File

@ -20,10 +20,14 @@
# Script to generate all required files from fresh git checkout. # Script to generate all required files from fresh git checkout.
command -v libtool >/dev/null 2>&1 # Debian and Ubuntu do not shipt libtool anymore, but OSX does not ship libtoolize.
command -v libtoolize >/dev/null 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "autogen.sh: error: could not find libtool. libtool is required to run autogen.sh." 1>&2 command -v libtool >/dev/null 2>&1
exit 1 if [ $? -ne 0 ]; then
echo "autogen.sh: error: could not find libtool. libtool is required to run autogen.sh." 1>&2
exit 1
fi
fi fi
command -v autoreconf >/dev/null 2>&1 command -v autoreconf >/dev/null 2>&1

26
builds/Makefile.am Normal file
View File

@ -0,0 +1,26 @@
# Specify all build files that have to go into source packages.
# msvc directory does its own stuff.
EXTRA_DIST = \
zos/makelibzmq \
zos/cxxall \
zos/README.md \
zos/makeclean \
zos/platform.hpp \
zos/zc++ \
zos/test_fork.cpp \
zos/maketests \
zos/runtests \
mingw32/Makefile.mingw32 \
mingw32/platform.hpp \
cmake/Modules \
cmake/Modules/FindAsciiDoc.cmake \
cmake/Modules/TestZMQVersion.cmake \
cmake/Modules/ZMQSourceRunChecks.cmake \
cmake/NSIS.template32.in \
cmake/platform.hpp.in \
cmake/NSIS.template64.in \
valgrind/valgrind.supp \
valgrind/vg \
nuget/readme.nuget \
nuget/libzmq.autopkg

View File

@ -6,17 +6,20 @@
# A2X_EXECUTABLE - the full path to a2x # A2X_EXECUTABLE - the full path to a2x
# A2X_FOUND - If false, don't attempt to use a2x. # A2X_FOUND - If false, don't attempt to use a2x.
# CMP0053: Unable to refer to $ENV{PROGRAMFILES(X86)}
set(PROGRAMFILESX86 "PROGRAMFILES(X86)")
find_program(ASCIIDOC_EXECUTABLE asciidoc asciidoc.py find_program(ASCIIDOC_EXECUTABLE asciidoc asciidoc.py
PATHS "$ENV{ASCIIDOC_ROOT}" PATHS "$ENV{ASCIIDOC_ROOT}"
"$ENV{PROGRAMW6432}/asciidoc" "$ENV{PROGRAMW6432}/asciidoc"
"$ENV{PROGRAMFILES}/asciidoc" "$ENV{PROGRAMFILES}/asciidoc"
"$ENV{PROGRAMFILES(X86)}/asciidoc") "$ENV{${PROGRAMFILESX86}}/asciidoc")
find_program(A2X_EXECUTABLE a2x find_program(A2X_EXECUTABLE a2x
PATHS "$ENV{ASCIIDOC_ROOT}" PATHS "$ENV{ASCIIDOC_ROOT}"
"$ENV{PROGRAMW6432}/asciidoc" "$ENV{PROGRAMW6432}/asciidoc"
"$ENV{PROGRAMFILES}/asciidoc" "$ENV{PROGRAMFILES}/asciidoc"
"$ENV{PROGRAMFILES(X86)}/asciidoc") "$ENV{${PROGRAMFILESX86}}/asciidoc")
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View File

@ -7,12 +7,3 @@ set(ZMQ_VERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.${ZMQ_VERSION_PATCH}"
message(STATUS "Detected ZMQ Version - ${ZMQ_VERSION}") message(STATUS "Detected ZMQ Version - ${ZMQ_VERSION}")
if(MSVC_VERSION MATCHES "1700")
set(_zmq_COMPILER "-v110")
elseif(MSVC10)
set(_zmq_COMPILER "-v100")
elseif(MSVC90)
set(_zmq_COMPILER "-v90")
else()
set(_zmq_COMPILER "")
endif()

View File

@ -1,18 +1,27 @@
/* /*
Copyright (c) 2007-2011 iMatix Corporation Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -72,29 +72,29 @@ PERF_DIST = vs2008/local_lat/local_lat.vcproj \
vs2013/inproc_lat/inproc_lat.props \ vs2013/inproc_lat/inproc_lat.props \
vs2013/inproc_thr/inproc_thr.props vs2013/inproc_thr/inproc_thr.props
PROPERTIES_DIST = properties/Common.props PROPERTIES_DIST = properties/Common.props \
properties/DebugDEXE.props properties/DebugDEXE.props \
properties/DebugDLL.props properties/DebugDLL.props \
properties/DebugLEXE.props properties/DebugLEXE.props \
properties/DebugLIB.props properties/DebugLIB.props \
properties/DebugLTCG.props properties/DebugLTCG.props \
properties/Debug.props properties/Debug.props \
properties/DebugSEXE.props properties/DebugSEXE.props \
properties/DLL.props properties/DLL.props \
properties/EXE.props properties/EXE.props \
properties/LIB.props properties/LIB.props \
properties/Link.props properties/Link.props \
properties/LTCG.props properties/LTCG.props \
properties/Messages.props properties/Messages.props \
properties/Output.props properties/Output.props \
properties/ReleaseDEXE.props properties/ReleaseDEXE.props \
properties/ReleaseDLL.props properties/ReleaseDLL.props \
properties/ReleaseLEXE.props properties/ReleaseLEXE.props \
properties/ReleaseLIB.props properties/ReleaseLIB.props \
properties/ReleaseLTCG.props properties/ReleaseLTCG.props \
properties/Release.props properties/Release.props \
properties/ReleaseSEXE.props properties/ReleaseSEXE.props \
properties/Win32.props properties/Win32.props \
properties/x64.props properties/x64.props
PRECOMPILED_DIST = ../../src/precompiled.hpp \ PRECOMPILED_DIST = ../../src/precompiled.hpp \

View File

@ -1,18 +1,27 @@
/* /*
Copyright (c) 2007-2011 iMatix Corporation Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

Binary file not shown.

View File

@ -11,14 +11,36 @@ Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: gcc, make, gcc-c++, libstdc++-devel, asciidoc, xmlto BuildRequires: gcc, make, gcc-c++, libstdc++-devel, asciidoc, xmlto
Requires: libstdc++ Requires: libstdc++
%if %{?rhel}%{!?rhel:0} >= 5 #
BuildRequires: e2fsprogs-devel # Conditional build options
Requires: e2fsprogs # Default values are:
%endif # --without-libgssapi_krb5
# --without-libsodium
# --without-pgm
#
# If neither macro exists, use the default value.
%{!?_with_libgssapi_krb5: %{!?_without_libgssapi_krb5: %define _without_libgssapi_krb5 --without-liblibgssapi_krb5}}
%{!?_with_libsodium: %{!?_without_libsodium: %define _without_libsodium --without-libsodium}}
%{!?_with_pgm: %{!?_without_pgm: %define _without_pgm --without-pgm}}
# It's an error if both --with and --without options are specified
%{?_with_libgssapi_krb5: %{?_without_libgssapi_krb5: %{error: both _with_libgssapi_krb5 and _without_libgssapi_krb5}}}
%{?_with_libsodium: %{?_without_libsodium: %{error: both _with_libsodium and _without_libsodium}}}
%{?_with_pgm: %{?_without_pgm: %{error: both _with_pgm and _without_pgm}}}
%{?_with_libgssapi_krb5:BuildRequires: krb5-devel}
%{?_with_libgssapi_krb5:Requires: krb5-libs}
%{?_with_libsodium:BuildRequires: libsodium-devel}
%{?_with_libsodium:Requires: libsodium}
%{?_with_pgm:BuildRequires: openpgm-devel}
%{?_with_pgm:Requires: openpgm}
# Build pgm only on supported archs
%ifarch pentium3 pentium4 athlon i386 i486 i586 i686 x86_64 %ifarch pentium3 pentium4 athlon i386 i486 i586 i686 x86_64
BuildRequires: python, perl %{!?_with_pic: %{!?_without_pic: %define _with_pic --with-pic}}
%{!?_with_gnu_ld: %{!?_without_gnu_ld: %define _with_gnu_ld --with-gnu_ld}}
%endif %endif
%description %description
@ -50,11 +72,17 @@ This package contains ZeroMQ related development libraries and header files.
%setup -q %setup -q
%build %build
%ifarch pentium3 pentium4 athlon i386 i486 i586 i686 x86_64 %configure \
%configure --with-pgm --with-pic --with-gnu-ld %{?_with_libsodium} \
%else %{?_without_libsodium} \
%configure %{?_with_pgm} \
%endif %{?_without_pgm} \
%{?_with_libgssapi_krb5} \
%{?_without_libgssapi_krb5} \
%{?_with_pic} \
%{?_without_pic} \
%{?_with_gnu_ld} \
%{?_without_gnu_ld}
%{__make} %{?_smp_mflags} %{__make} %{?_smp_mflags}
@ -84,8 +112,7 @@ This package contains ZeroMQ related development libraries and header files.
%{_bindir}/curve_keygen %{_bindir}/curve_keygen
# libraries # libraries
%{_libdir}/libzmq.so.4 %{_libdir}/libzmq.so.*
%{_libdir}/libzmq.so.4.0.0
%{_mandir}/man7/zmq.7.gz %{_mandir}/man7/zmq.7.gz
@ -138,7 +165,6 @@ This package contains ZeroMQ related development libraries and header files.
%{_mandir}/man3/zmq_has.3.gz %{_mandir}/man3/zmq_has.3.gz
%{_mandir}/man3/zmq_msg_gets.3.gz %{_mandir}/man3/zmq_msg_gets.3.gz
%{_mandir}/man3/zmq_proxy_steerable.3.gz %{_mandir}/man3/zmq_proxy_steerable.3.gz
%{_mandir}/man7/zmq_epgm.7.gz
%{_mandir}/man7/zmq_inproc.7.gz %{_mandir}/man7/zmq_inproc.7.gz
%{_mandir}/man7/zmq_ipc.7.gz %{_mandir}/man7/zmq_ipc.7.gz
%{_mandir}/man7/zmq_pgm.7.gz %{_mandir}/man7/zmq_pgm.7.gz
@ -153,6 +179,13 @@ This package contains ZeroMQ related development libraries and header files.
%{_mandir}/man7/zmq_tipc.7.gz %{_mandir}/man7/zmq_tipc.7.gz
%changelog %changelog
* Sat Oct 25 2014 Phillip Mienk <mienkphi@gmail.com>
- Add --with/--without libgssapi_krb5 support following J.T.Conklin's pattern
* Sat Oct 18 2014 J.T. Conklin <jtc@acorntoolworks.com>
- Add --with/--without pgm support
- Add --with/--without libsodium support
* Tue Jun 10 2014 Tristian Celestin <tristian.celestin@outlook.com> 4.0.4 * Tue Jun 10 2014 Tristian Celestin <tristian.celestin@outlook.com> 4.0.4
- Updated packaged files - Updated packaged files

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

20
ci_deploy.sh Normal file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -x
set -e
if [[ $TRAVIS_OS_NAME =~ (linux) ]]; then
# Tell travis to deploy all files in dist
mkdir dist
export ZEROMQ41_DEPLOYMENT=dist/*
# Move archives to dist
mv *.tar.gz dist
mv *.zip dist
# Generate hash sums
cd dist
md5sum *.zip *.tar.gz > MD5SUMS
sha1sum *.zip *.tar.gz > SHA1SUMS
cd -
else
export ZEROMQ4-1_DEPLOYMENT=""
fi

View File

@ -11,7 +11,8 @@ AC_INIT([zeromq],[m4_esyscmd([./version.sh])],[zeromq-dev@lists.zeromq.org])
AC_CONFIG_AUX_DIR(config) AC_CONFIG_AUX_DIR(config)
AC_CONFIG_MACRO_DIR(config) AC_CONFIG_MACRO_DIR(config)
AC_CONFIG_HEADERS([src/platform.hpp]) AC_CONFIG_HEADERS([src/platform.hpp])
AM_INIT_AUTOMAKE(tar-ustar dist-zip foreign) AM_INIT_AUTOMAKE(foreign subdir-objects tar-ustar dist-zip)
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# This lets us use PACKAGE_VERSION in Makefiles # This lets us use PACKAGE_VERSION in Makefiles
@ -30,9 +31,12 @@ AC_SUBST(PACKAGE_VERSION)
# ZeroMQ version 3.0: 2:0:0 (ABI version 2) # ZeroMQ version 3.0: 2:0:0 (ABI version 2)
# ZeroMQ version 3.1: 3:0:0 (ABI version 3) # ZeroMQ version 3.1: 3:0:0 (ABI version 3)
# ZeroMQ version 4.0: 4:0:0 (ABI version 4) # ZeroMQ version 4.0: 4:0:0 (ABI version 4)
# ZeroMQ version 4.1: 5:0:0 (ABI version 5)
# ZeroMQ version 4.1.5: 5:1:0 (ABI version 5)
# ZeroMQ version 4.1.6: 5:2:0 (ABI version 5)
# #
# libzmq -version-info current:revision:age # libzmq -version-info current:revision:age
LTVER="4:0:0" LTVER="5:2:0"
AC_SUBST(LTVER) AC_SUBST(LTVER)
# Take a copy of original flags # Take a copy of original flags
@ -47,6 +51,7 @@ AC_PROG_CXX
AM_PROG_CC_C_O AM_PROG_CC_C_O
AC_PROG_SED AC_PROG_SED
AC_PROG_AWK AC_PROG_AWK
PKG_PROG_PKG_CONFIG
# Libtool configuration for different targets. See acinclude.m4 # Libtool configuration for different targets. See acinclude.m4
AC_ARG_VAR([XMLTO], [Path to xmlto command]) AC_ARG_VAR([XMLTO], [Path to xmlto command])
@ -63,80 +68,48 @@ LIBZMQ_CHECK_ENABLE_DEBUG
# Check wheter to enable code coverage # Check wheter to enable code coverage
LIBZMQ_WITH_GCOV LIBZMQ_WITH_GCOV
AC_MSG_CHECKING([if TIPC is available and supports nonblocking connect]) AC_MSG_CHECKING([if TIPC is available and supports nonblocking connect])
AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdlib.h>
#include <string.h> AC_RUN_IFELSE(
#include <fcntl.h> [AC_LANG_PROGRAM([[
#include <errno.h> #include <stdlib.h>
#include <sys/socket.h> #include <string.h>
#include <linux/tipc.h> #include <fcntl.h>
]],[[ #include <errno.h>
struct sockaddr_tipc topsrv; #include <sys/socket.h>
int sd = socket(AF_TIPC, SOCK_SEQPACKET, 0); #include <linux/tipc.h>
if (sd == -EAFNOSUPPORT) { ]],[[
return 1; struct sockaddr_tipc topsrv;
} int sd = socket(AF_TIPC, SOCK_SEQPACKET, 0);
memset(&topsrv, 0, sizeof(topsrv)); if (sd == -EAFNOSUPPORT) {
topsrv.family = AF_TIPC; return 1;
topsrv.addrtype = TIPC_ADDR_NAME; }
topsrv.addr.name.name.type = TIPC_TOP_SRV; memset(&topsrv, 0, sizeof(topsrv));
topsrv.addr.name.name.instance = TIPC_TOP_SRV; topsrv.family = AF_TIPC;
fcntl(sd, F_SETFL, O_NONBLOCK); topsrv.addrtype = TIPC_ADDR_NAME;
if (connect(sd, (struct sockaddr *)&topsrv, topsrv.addr.name.name.type = TIPC_TOP_SRV;
sizeof(topsrv)) != 0) { topsrv.addr.name.name.instance = TIPC_TOP_SRV;
if (errno != EINPROGRESS) fcntl(sd, F_SETFL, O_NONBLOCK);
return -1; if (connect(sd, (struct sockaddr *)&topsrv, sizeof(topsrv)) != 0) {
}]]) if (errno != EINPROGRESS)
], return -1;
[libzmq_tipc_support=yes], }
[libzmq_tipc_support=no], ]])
[libzmq_tipc_support=no]) ],
[libzmq_tipc_support=yes],
[libzmq_tipc_support=no],
[libzmq_tipc_support=no])
AC_MSG_RESULT([$libzmq_tipc_support]) AC_MSG_RESULT([$libzmq_tipc_support])
# Allow libsodium to be installed in a custom path:
AC_ARG_WITH([libsodium],
[AS_HELP_STRING([--with-libsodium],
[Specify libsodium prefix])],
[zmq_search_libsodium="yes"],
[])
if test "x$zmq_search_libsodium" = "xyes"; then
if test -r "${with_libsodium}/include/sodium.h"; then
CPPFLAGS="-I${with_libsodium}/include ${CPPFLAGS}"
LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}"
fi
fi
AC_ARG_WITH([libsodium-include-dir],
[AS_HELP_STRING([--with-libsodium-include-dir],
[Specify libsodium include prefix])],
[zmq_search_libsodium_include="yes"],
[])
if test "x$zmq_search_libsodium_include" = "xyes"; then
if test -r "${with_libsodium_include_dir}/sodium.h"; then
CPPFLAGS="-I${with_libsodium_include_dir}/include ${CPPFLAGS}"
fi
fi
AC_ARG_WITH([libsodium_lib_dir],
[AS_HELP_STRING([--with-libsodium-lib-dir],
[Specify libsodium library prefix])],
[zmq_search_libsodium_lib="yes"],
[])
if test "x$zmq_search_libsodium_lib" = "xyes"; then
if test -r "${with_libsodium_lib_dir}/libsodium.{a|so|dylib}"; then
LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}"
fi
fi
AC_ARG_WITH([relaxed], AC_ARG_WITH([relaxed],
[AS_HELP_STRING([--with-relaxed], [AS_HELP_STRING([--with-relaxed],
[Switch off pedantic compiler])], [Switch off pedantic compiler])],
[zmq_relaxed="yes"], [zmq_relaxed="yes"],
[]) [])
if test "x$zmq_relaxed" = "xyes"; then if test "x$zmq_relaxed" = "xyes"; then
libzmq_pedantic="no" libzmq_pedantic="no"
@ -145,10 +118,10 @@ else
fi fi
AC_ARG_WITH([militant], AC_ARG_WITH([militant],
[AS_HELP_STRING([--with-militant], [AS_HELP_STRING([--with-militant],
[Enable militant API assertions])], [Enable militant API assertions])],
[zmq_militant="yes"], [zmq_militant="yes"],
[]) [])
if test "x$zmq_militant" = "xyes"; then if test "x$zmq_militant" = "xyes"; then
AC_DEFINE(ZMQ_ACT_MILITANT, 1, [Enable militant API assertions]) AC_DEFINE(ZMQ_ACT_MILITANT, 1, [Enable militant API assertions])
@ -167,7 +140,7 @@ libzmq_on_android="no"
libzmq_on_linux="no" libzmq_on_linux="no"
# Set some default features required by 0MQ code. # Set some default features required by 0MQ code.
CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE $CPPFLAGS" CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE -Wno-long-long $CPPFLAGS"
# For host type checks # For host type checks
AC_CANONICAL_HOST AC_CANONICAL_HOST
@ -211,8 +184,6 @@ case "${host_os}" in
if test "x$solaris_has_atomic" = "xno"; then if test "x$solaris_has_atomic" = "xno"; then
AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes]) AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes])
fi fi
# ssp library is required for libsodium on Solaris-like systems
LDFLAGS="-lssp $LDFLAGS"
CPPFLAGS="$CPPFLAGS -Wno-long-long" CPPFLAGS="$CPPFLAGS -Wno-long-long"
;; ;;
*freebsd*) *freebsd*)
@ -310,13 +281,6 @@ esac
# Checks for libraries # Checks for libraries
AC_CHECK_LIB([pthread], [pthread_create]) AC_CHECK_LIB([pthread], [pthread_create])
AC_CHECK_LIB([rt], [clock_gettime]) AC_CHECK_LIB([rt], [clock_gettime])
if test "x$zmq_search_libsodium" = "xyes"; then
AC_CHECK_LIB([sodium], [sodium_init],,AC_MSG_ERROR(libsodium is not installed. Install it or don't pass --with-libsodium to configure script))
else
AC_CHECK_LIB([sodium], [sodium_init],,AC_MSG_WARN(libsodium is needed for CURVE security))
fi
AC_CHECK_LIB([gssapi_krb5], [gss_init_sec_context],,AC_MSG_WARN(libgssapi_krb5 is needed for GSSAPI security))
# #
# Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec # Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec
@ -329,7 +293,7 @@ fi
# CPU-specific optimizations # CPU-specific optimizations
case "${host_cpu}" in case "${host_cpu}" in
*sparc*) *sparc64*)
AC_LANG_PUSH([C++]) AC_LANG_PUSH([C++])
LIBZMQ_CHECK_LANG_FLAG_PREPEND([-mcpu=v9]) LIBZMQ_CHECK_LANG_FLAG_PREPEND([-mcpu=v9])
AC_LANG_POP([C++]) AC_LANG_POP([C++])
@ -342,13 +306,24 @@ esac
LIBZMQ_CHECK_DOC_BUILD LIBZMQ_CHECK_DOC_BUILD
# Check polling system # Check polling system
LIBZMQ_CHECK_POLLER([CPPFLAGS="${CPPFLAGS} -D${libzmq_cv_poller_flag}"], # Check polling system, set appropriate macro in src/platform.hpp
[AC_MSG_ERROR([Unable to continue without polling system])]) LIBZMQ_CHECK_POLLER
# Checks for header files. # Checks for header files.
AC_HEADER_STDC AC_HEADER_STDC
AC_CHECK_HEADERS(errno.h arpa/inet.h netinet/tcp.h netinet/in.h stddef.h \ AC_CHECK_HEADERS(\
stdlib.h string.h sys/socket.h sys/time.h time.h unistd.h limits.h) errno.h \
time.h \
unistd.h \
limits.h \
stddef.h \
stdlib.h \
string.h \
arpa/inet.h \
netinet/tcp.h \
netinet/in.h \
sys/socket.h \
sys/time.h)
# Check if we have ifaddrs.h header file. # Check if we have ifaddrs.h header file.
AC_CHECK_HEADERS(ifaddrs.h, [AC_DEFINE(ZMQ_HAVE_IFADDRS, 1, [Have ifaddrs.h header.])]) AC_CHECK_HEADERS(ifaddrs.h, [AC_DEFINE(ZMQ_HAVE_IFADDRS, 1, [Have ifaddrs.h header.])])
@ -357,25 +332,36 @@ AC_CHECK_HEADERS(ifaddrs.h, [AC_DEFINE(ZMQ_HAVE_IFADDRS, 1, [Have ifaddrs.h head
AC_CHECK_HEADERS(sys/uio.h, [AC_DEFINE(ZMQ_HAVE_UIO, 1, [Have uio.h header.])]) AC_CHECK_HEADERS(sys/uio.h, [AC_DEFINE(ZMQ_HAVE_UIO, 1, [Have uio.h header.])])
# Force not to use eventfd # Force not to use eventfd
AC_ARG_ENABLE([eventfd], [AS_HELP_STRING([--disable-eventfd], [disable eventfd [default=no]])], AC_ARG_ENABLE([eventfd],
[zmq_disable_eventfd=yes], [zmq_disable_eventfd=no]) [AS_HELP_STRING([--disable-eventfd], [disable eventfd [default=no]])],
[zmq_enable_eventfd=$enableval],
[zmq_enable_eventfd=yes])
if test "x$zmq_disable_eventfd" != "xyes"; then if test "x$zmq_enable_eventfd" = "xyes"; then
# Check if we have eventfd.h header file. # Check if we have eventfd.h header file.
AC_CHECK_HEADERS(sys/eventfd.h, AC_CHECK_HEADERS(sys/eventfd.h,
[AC_DEFINE(ZMQ_HAVE_EVENTFD, 1, [Have eventfd extension.])]) [AC_DEFINE(ZMQ_HAVE_EVENTFD, 1, [Have eventfd extension.])])
fi fi
# Use c++ in subsequent tests # Use c++ in subsequent tests
AC_LANG_PUSH(C++) AC_LANG_PUSH(C++)
AC_CHECK_DECLS([SO_PEERCRED], [AC_DEFINE(ZMQ_HAVE_SO_PEERCRED, 1, [Have SO_PEERCRED socket option])], [], [#include <sys/socket.h>]) AC_CHECK_DECLS([SO_PEERCRED],
AC_CHECK_DECLS([LOCAL_PEERCRED], [AC_DEFINE(ZMQ_HAVE_LOCAL_PEERCRED, 1, [Have LOCAL_PEERCRED socket option])], [], [#include <sys/socket.h>]) [AC_DEFINE(ZMQ_HAVE_SO_PEERCRED, 1, [Have SO_PEERCRED socket option])],
[],
[#include <sys/socket.h>])
AC_CHECK_DECLS([LOCAL_PEERCRED],
[AC_DEFINE(ZMQ_HAVE_LOCAL_PEERCRED, 1, [Have LOCAL_PEERCRED socket option])],
[],
[#include <sys/socket.h>])
AM_CONDITIONAL(HAVE_IPC_PEERCRED, test "x$ac_cv_have_decl_SO_PEERCRED" = "xyes" || test "x$ac_cv_have_decl_LOCAL_PEERCRED" = "xyes") AM_CONDITIONAL(HAVE_IPC_PEERCRED, test "x$ac_cv_have_decl_SO_PEERCRED" = "xyes" || test "x$ac_cv_have_decl_LOCAL_PEERCRED" = "xyes")
AC_HEADER_STDBOOL AC_HEADER_STDBOOL
AC_C_CONST AC_C_CONST
AC_C_INLINE AC_C_INLINE
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
if test "x$libzmq_cv_[]_AC_LANG_ABBREV[]_intel_compiler" = "xyes"; then if test "x$libzmq_cv_[]_AC_LANG_ABBREV[]_intel_compiler" = "xyes"; then
dnl 279: controlling expression is constant dnl 279: controlling expression is constant
@ -386,117 +372,117 @@ else
AC_TYPE_SIZE_T AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T AC_TYPE_SSIZE_T
fi fi
AC_HEADER_TIME AC_HEADER_TIME
AC_TYPE_UINT32_T AC_TYPE_UINT32_T
AC_C_VOLATILE AC_C_VOLATILE
# PGM extension # build using libgssapi_krb5
libzmq_pgm_ext="no" AC_ARG_WITH([libgssapi_krb5], [AS_HELP_STRING([--with-libgssapi_krb5],
[require libzmq build with libgssapi_krb5 [default=no]])],
[require_libgssapi_krb5_ext=$withval],
[require_libgssapi_krb5_ext=no])
pgm_basename="libpgm-5.2.122~dfsg" # conditionally require libgssapi_krb5
if test "x$require_libgssapi_krb5_ext" != "xno"; then
AC_CHECK_LIB([gssapi_krb5], [gss_init_sec_context],,
AC_MSG_ERROR(libgssapi_krb5 is needed for GSSAPI security))
fi
# Select curve encryption library, defaults to tweetnacl
# To use libsodium instead, use --with-libsodium (must be installed)
# To disable curve, use --disable-curve
AC_ARG_WITH([libsodium],
[AS_HELP_STRING([--with-libsodium], [use libsodium instead of built-in tweetnacl [default=no]])])
AS_IF([test "x$with_libsodium" = "xyes"], [
PKG_CHECK_MODULES([sodium], [libsodium], [libsodium_found=yes], [
AC_MSG_ERROR(libsodium is not installed. Install it, then run configure again)
])
])
AC_ARG_ENABLE([curve],
[AS_HELP_STRING([--disable-curve], [disable CURVE security [default=no]])])
if test "x$enable_curve" = "xno"; then
curve_library=""
AC_MSG_NOTICE([CURVE security is disabled])
elif test "x$with_libsodium" = "xyes"; then
AC_MSG_NOTICE([Using libsodium for CURVE security])
AC_DEFINE(ZMQ_HAVE_CURVE, [1], [Using curve encryption])
AC_DEFINE(ZMQ_USE_LIBSODIUM, [1], [Using libsodium for curve encryption])
curve_library="libsodium"
# On Solaris, libsodium depends on libssp
case "${host_os}" in
*solaris*)
LDFLAGS="-lssp $LDFLAGS"
libzmq_pedantic="no"
libzmq_werror="no"
;;
esac
else
AC_MSG_NOTICE([Using tweetnacl for CURVE security])
AC_DEFINE(ZMQ_HAVE_CURVE, [1], [Using curve encryption])
AC_DEFINE(ZMQ_USE_TWEETNACL, [1], [Using tweetnacl for curve encryption])
curve_library="tweetnacl"
fi
AM_CONDITIONAL(ENABLE_CURVE_KEYGEN, test "x$enable_curve" = "xyes")
AM_CONDITIONAL(USE_LIBSODIUM, test "$curve_library" = "libsodium")
AM_CONDITIONAL(USE_TWEETNACL, test "$curve_library" = "tweetnacl")
# build using pgm
have_pgm_library="no"
AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm], AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm],
[build libzmq with PGM extension [default=no]])],
[with_pgm_ext=$withval], [with_pgm_ext=no])
# build using system pgm
AC_ARG_WITH([system-pgm], [AS_HELP_STRING([--with-system-pgm],
[build libzmq with PGM extension. Requires pkg-config [default=no]])], [build libzmq with PGM extension. Requires pkg-config [default=no]])],
[with_system_pgm_ext=yes], [with_system_pgm_ext=no]) [with_pgm_ext=$withval],
[with_pgm_ext=no])
if test "x$with_pgm_ext" != "xno" -a "x$with_system_pgm_ext" != "xno"; then
AC_MSG_ERROR([--with-pgm and --with-system-pgm cannot be specified together])
fi
# conditionally require pgm package
if test "x$with_pgm_ext" != "xno"; then if test "x$with_pgm_ext" != "xno"; then
PKG_CHECK_MODULES([pgm], [openpgm-5.2 >= 5.2], [ have_pgm_library="yes" ],
# This allows placing the tar.gz to foreign/openpgm [PKG_CHECK_MODULES([pgm], [openpgm-5.1 >= 5.1],
# and using ./configure --with-pgm=libpgm-x.y.z [ have_pgm_library="yes" ])])
if test "x$with_pgm_ext" != "xyes"; then
pgm_basename="$with_pgm_ext"
fi
# Unpack libpgm
AC_MSG_NOTICE([Unpacking ${pgm_basename}.tar.gz])
libzmq_pwd=`pwd`
cd foreign/openpgm
if ! (gzip -dc "${pgm_basename}.tar.gz" || echo "failed") | ${am__untar}; then
AC_MSG_ERROR([cannot unpack the foreign/openpgm/${pgm_basename}.tar.gz file])
fi
cd "${libzmq_pwd}"
if test -d foreign/openpgm/build-staging; then
rm -rf foreign/openpgm/build-staging
fi
mv foreign/openpgm/${pgm_basename} foreign/openpgm/build-staging
pgm_srcdir=foreign/openpgm/build-staging/openpgm/pgm
if ! test -d foreign/openpgm/build-staging/openpgm/pgm/config; then
mkdir foreign/openpgm/build-staging/openpgm/pgm/config
fi
# DSO symbol visibility for openpgm
AC_LANG_PUSH([C])
LIBZMQ_CHECK_LANG_VISIBILITY([ac_configure_args="CFLAGS='$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag' ${ac_configure_args}"])
AC_LANG_POP([C])
pgm_subdir=build-staging/openpgm/pgm
AC_SUBST(pgm_subdir)
AC_SUBST(pgm_srcdir)
AC_CONFIG_SUBDIRS([foreign/openpgm/build-staging/openpgm/pgm/])
# Success!
AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension])
libzmq_pgm_ext="yes"
fi fi
# Build with system openpgm if test "x$have_pgm_library" = "xyes"; then
if test "x$with_system_pgm_ext" != "xno"; then AC_DEFINE(ZMQ_HAVE_OPENPGM, [1], [Have OpenPGM extension])
m4_ifdef([PKG_CHECK_MODULES], [
have_pgm_system_library="no"
PKG_CHECK_MODULES([OpenPGM], [openpgm-5.2 >= 5.2],
[ have_pgm_system_library="yes" ],
[PKG_CHECK_MODULES([OpenPGM], [openpgm-5.1 >= 5.1],
[ have_pgm_system_library="yes" ])
]
)
if test "x$have_pgm_system_library" = "xyes"; then
AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension])
LIBZMQ_EXTRA_CXXFLAGS="$OpenPGM_CFLAGS $LIBZMQ_EXTRA_CXXFLAGS"
LIBS="$OpenPGM_LIBS $LIBS"
fi
],
[AC_MSG_ERROR([--with-system-pgm requires a working pkg-config installation])])
fi fi
AC_SUBST(pgm_basename) AM_CONDITIONAL(HAVE_PGM, test "x$have_pgm_library" = "xyes")
# This uses "--with-norm" to point to the "norm" directory # This uses "--with-norm" to point to the "norm" directory
# for "norm/include" and "norm/lib" # for "norm/include" and "norm/lib"
#(if "--with-norm=yes" is given, then assume installed on system) #(if "--with-norm=yes" is given, then assume installed on system)
AC_ARG_WITH([norm], [AS_HELP_STRING([--with-norm], AC_ARG_WITH([norm],
[build libzmq with NORM protocol extension, optionally specifying norm path [default=no]])], [AS_HELP_STRING([--with-norm],
[with_norm_ext=$withval], [with_norm_ext=no]) [build libzmq with NORM protocol extension, optionally specifying norm path [default=no]])],
[with_norm_ext=$withval],
[with_norm_ext=no])
AC_MSG_CHECKING("with_norm_ext = ${with_norm_ext}") AC_MSG_CHECKING("with_norm_ext = ${with_norm_ext}")
if test "x$with_norm_ext" != "xno"; then if test "x$with_norm_ext" != "xno"; then
AC_MSG_RESULT([yes])
AC_DEFINE(ZMQ_HAVE_NORM, 1, [Have NORM protocol extension]) AC_DEFINE(ZMQ_HAVE_NORM, 1, [Have NORM protocol extension])
if test "x$wwith_norm_ext" != "xyes"; then if test "x$wwith_norm_ext" != "xyes"; then
norm_path="${with_norm_ext}" norm_path="${with_norm_ext}"
LIBZMQ_EXTRA_CXXFLAGS="-I${norm_path}/include ${LIBZMQ_EXTRA_CXXFLAGS}" LIBZMQ_EXTRA_CXXFLAGS="-I${norm_path}/include ${LIBZMQ_EXTRA_CXXFLAGS}"
LIBZMQ_EXTRA_LDFLAGS="-I${norm_path}/include ${LIBZMQ_EXTRA_LDFLAGS}" LIBZMQ_EXTRA_LDFLAGS="-I${norm_path}/include ${LIBZMQ_EXTRA_LDFLAGS}"
fi fi
LIBS="-lnorm $LIBS" LIBS="-lnorm $LIBS"
else
AC_MSG_RESULT([no])
fi fi
# Set -Wall, -Werror and -pedantic # Set -Wall, -Werror and -pedantic
AC_LANG_PUSH([C++]) AC_LANG_PUSH([C++])
@ -513,7 +499,6 @@ fi
AC_LANG_POP([C++]) AC_LANG_POP([C++])
AM_CONDITIONAL(BUILD_TIPC, test "x$libzmq_tipc_support" = "xyes") AM_CONDITIONAL(BUILD_TIPC, test "x$libzmq_tipc_support" = "xyes")
AM_CONDITIONAL(BUILD_PGM, test "x$libzmq_pgm_ext" = "xyes")
AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes") AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes")
AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes") AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes")
AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes") AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes")
@ -522,38 +507,43 @@ AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes")
AC_TYPE_SIGNAL AC_TYPE_SIGNAL
AC_CHECK_FUNCS(perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs fork) AC_CHECK_FUNCS(perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs fork)
AC_CHECK_HEADERS([alloca.h]) AC_CHECK_HEADERS([alloca.h])
LIBZMQ_CHECK_SOCK_CLOEXEC([AC_DEFINE(
[ZMQ_HAVE_SOCK_CLOEXEC], LIBZMQ_CHECK_SOCK_CLOEXEC([
[1], AC_DEFINE([ZMQ_HAVE_SOCK_CLOEXEC],
[Whether SOCK_CLOEXEC is defined and functioning.]) [1],
]) [Whether SOCK_CLOEXEC is defined and functioning.])
])
# TCP keep-alives Checks. # TCP keep-alives Checks.
LIBZMQ_CHECK_SO_KEEPALIVE([AC_DEFINE( LIBZMQ_CHECK_SO_KEEPALIVE([
[ZMQ_HAVE_SO_KEEPALIVE], AC_DEFINE([ZMQ_HAVE_SO_KEEPALIVE],
[1], [1],
[Whether SO_KEEPALIVE is supported.]) [Whether SO_KEEPALIVE is supported.])
]) ])
LIBZMQ_CHECK_TCP_KEEPCNT([AC_DEFINE(
[ZMQ_HAVE_TCP_KEEPCNT], LIBZMQ_CHECK_TCP_KEEPCNT([
[1], AC_DEFINE([ZMQ_HAVE_TCP_KEEPCNT],
[Whether TCP_KEEPCNT is supported.]) [1],
]) [Whether TCP_KEEPCNT is supported.])
LIBZMQ_CHECK_TCP_KEEPIDLE([AC_DEFINE( ])
[ZMQ_HAVE_TCP_KEEPIDLE],
[1], LIBZMQ_CHECK_TCP_KEEPIDLE([
[Whether TCP_KEEPIDLE is supported.]) AC_DEFINE([ZMQ_HAVE_TCP_KEEPIDLE],
]) [1],
LIBZMQ_CHECK_TCP_KEEPINTVL([AC_DEFINE( [Whether TCP_KEEPIDLE is supported.])
[ZMQ_HAVE_TCP_KEEPINTVL], ])
[1],
[Whether TCP_KEEPINTVL is supported.]) LIBZMQ_CHECK_TCP_KEEPINTVL([
]) AC_DEFINE([ZMQ_HAVE_TCP_KEEPINTVL],
LIBZMQ_CHECK_TCP_KEEPALIVE([AC_DEFINE( [1],
[ZMQ_HAVE_TCP_KEEPALIVE], [Whether TCP_KEEPINTVL is supported.])
[1], ])
[Whether TCP_KEEPALIVE is supported.])
]) LIBZMQ_CHECK_TCP_KEEPALIVE([
AC_DEFINE([ZMQ_HAVE_TCP_KEEPALIVE],
[1],
[Whether TCP_KEEPALIVE is supported.])
])
AM_CONDITIONAL(HAVE_FORK, test "x$ac_cv_func_fork" = "xyes") AM_CONDITIONAL(HAVE_FORK, test "x$ac_cv_func_fork" = "xyes")
@ -562,14 +552,20 @@ AC_SUBST(LIBZMQ_EXTRA_CFLAGS)
AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS) AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS)
AC_SUBST(LIBZMQ_EXTRA_LDFLAGS) AC_SUBST(LIBZMQ_EXTRA_LDFLAGS)
AC_CONFIG_FILES([Makefile \ # set pkgconfigdir, allow override
src/Makefile \ AC_ARG_WITH([pkgconfigdir],
AS_HELP_STRING([--with-pkgconfigdir=PATH],
[Path to the pkgconfig directory [[LIBDIR/pkgconfig]]]),
[pkgconfigdir="$withval"],
[pkgconfigdir='${libdir}/pkgconfig'])
AC_SUBST([pkgconfigdir])
AC_CONFIG_FILES([ \
Makefile \
src/libzmq.pc \ src/libzmq.pc \
doc/Makefile \ doc/Makefile \
perf/Makefile \ builds/Makefile \
tests/Makefile \
tools/Makefile \
builds/msvc/Makefile \ builds/msvc/Makefile \
foreign/openpgm/Makefile \
builds/redhat/zeromq.spec]) builds/redhat/zeromq.spec])
AC_OUTPUT AC_OUTPUT

View File

@ -1,3 +1,6 @@
#
# documentation
#
MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \ MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \
zmq_ctx_new.3 zmq_ctx_term.3 zmq_ctx_get.3 zmq_ctx_set.3 zmq_ctx_shutdown.3 \ zmq_ctx_new.3 zmq_ctx_term.3 zmq_ctx_get.3 zmq_ctx_set.3 zmq_ctx_shutdown.3 \
zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \ zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \
@ -12,29 +15,30 @@ MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \
zmq_proxy.3 zmq_proxy_steerable.3 \ zmq_proxy.3 zmq_proxy_steerable.3 \
zmq_z85_encode.3 zmq_z85_decode.3 zmq_curve_keypair.3 zmq_has.3 zmq_z85_encode.3 zmq_z85_decode.3 zmq_curve_keypair.3 zmq_has.3
MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7 \ MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_inproc.7 zmq_ipc.7 \
zmq_null.7 zmq_plain.7 zmq_curve.7 zmq_tipc.7 zmq_null.7 zmq_plain.7 zmq_curve.7 zmq_tipc.7
MAN_DOC = $(MAN1) $(MAN3) $(MAN7) MAN_DOC =
MAN_TXT = $(MAN3:%.3=%.txt) MAN_TXT = $(MAN3:%.3=%.txt)
MAN_TXT += $(MAN7:%.7=%.txt) MAN_TXT += $(MAN7:%.7=%.txt)
MAN_HTML = $(MAN_TXT:%.txt=%.html) MAN_HTML =
if INSTALL_MAN MAINTAINERCLEANFILES =
dist_man_MANS = $(MAN_DOC)
endif
EXTRA_DIST = asciidoc.conf $(MAN_TXT) EXTRA_DIST = asciidoc.conf $(MAN_TXT)
if BUILD_DOC
EXTRA_DIST += $(MAN_HTML) if INSTALL_MAN
MAN_DOC += $(MAN1) $(MAN3) $(MAN7)
dist_man_MANS = $(MAN_DOC)
MAINTAINERCLEANFILES += $(MAN_DOC)
endif endif
MAINTAINERCLEANFILES = $(MAN_DOC) $(MAN_HTML)
dist-hook : $(MAN_DOC) $(MAN_HTML)
if BUILD_DOC if BUILD_DOC
MAN_HTML += $(MAN_TXT:%.txt=%.html)
EXTRA_DIST += $(MAN_HTML)
MAINTAINERCLEANFILES += $(MAN_HTML)
SUFFIXES=.html .txt .xml .3 .7 SUFFIXES=.html .txt .xml .3 .7
.txt.html: .txt.html:
@ -49,6 +53,6 @@ SUFFIXES=.html .txt .xml .3 .7
xmlto man $< xmlto man $<
.xml.7: .xml.7:
xmlto man $< xmlto man $<
zmq_epgm.7: zmq_pgm.7
cp $< $@
endif endif
dist-hook : $(MAN_DOC) $(MAN_HTML)

View File

@ -32,6 +32,28 @@ context.
[horizontal] [horizontal]
Default value:: 1 Default value:: 1
ZMQ_THREAD_SCHED_POLICY: Set scheduling policy for I/O threads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_THREAD_SCHED_POLICY' argument sets the scheduling policy for
internal context's thread pool. This option is not available on windows.
Supported values for this option can be found in sched.h file,
or at http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html.
This option only applies before creating any sockets on the context.
[horizontal]
Default value:: -1
ZMQ_THREAD_PRIORITY: Set scheduling priority for I/O threads
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_THREAD_PRIORITY' argument sets scheduling priority for
internal context's thread pool. This option is not available on windows.
Supported values for this option depend on chosen scheduling policy.
Details can be found in sched.h file, or at http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html.
This option only applies before creating any sockets on the context.
[horizontal]
Default value:: -1
ZMQ_MAX_SOCKETS: Set maximum number of sockets ZMQ_MAX_SOCKETS: Set maximum number of sockets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_MAX_SOCKETS' argument sets the maximum number of sockets allowed The 'ZMQ_MAX_SOCKETS' argument sets the maximum number of sockets allowed

View File

@ -23,8 +23,8 @@ Context termination is performed in the following steps:
exception of _zmq_close()_, any further operations on sockets open within exception of _zmq_close()_, any further operations on sockets open within
'context' shall fail with an error code of ETERM. 'context' shall fail with an error code of ETERM.
2. After interrupting all blocking calls, _zmq_ctx_term()_ shall _block_ until the 2. After interrupting all blocking calls, _zmq_ctx_term()_ shall _block_ until
following conditions are satisfied: the following conditions are satisfied:
* All sockets open within 'context' have been closed with _zmq_close()_. * All sockets open within 'context' have been closed with _zmq_close()_.
@ -39,6 +39,15 @@ option in linkzmq:zmq_setsockopt[3].
This function replaces the deprecated function linkzmq:zmq_term[3]. This function replaces the deprecated function linkzmq:zmq_term[3].
WARNING
-------
As _ZMQ_LINGER_ defaults to "infinite", by default this function will block
indefinitely if there are any pending connects or sends. We strongly
recommend to (a) set _ZMQ_LINGER_ to zero on all sockets and (b) close all
sockets, before calling this function.
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_ctx_term()_ function shall return zero if successful. Otherwise The _zmq_ctx_term()_ function shall return zero if successful. Otherwise

View File

@ -1 +0,0 @@
zmq_pgm.txt

View File

@ -676,23 +676,6 @@ Option value unit:: N/A
Default value:: not set Default value:: not set
Applicable socket types:: all, when using TCP transport Applicable socket types:: all, when using TCP transport
ZMQ_IDENTITY_FD: Retrieve FD associated with igven identity
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_IDENTITY_FD' option shall retrieve the FD associated with given identity.
call _zmq_getsockopt()_ with _option_value_ / _option_len_ pointing to memory
holding the identity string. On return the start of _option_value_ buffer will be
filled with file descriptor of the pipe with given identity if found. If the identity
is not found ENOTSOCK is returned as _zmq_getsockopt()_ result. When the pipe is not
using FD as lower transport you might get -1 as FD. NB: _option_value_ must be always
big enough to hold sizeof(fd_t) bytes no matter how small the identity length is.
[horizontal]
Option value type:: character string/fd_t
Option value unit:: N/A
Default value:: not set
Applicable socket types:: ROUTER
RETURN VALUE RETURN VALUE
------------ ------------

View File

@ -57,6 +57,12 @@ NOTE: IPC pathnames have a maximum size that depends on the operating system.
On Linux, the maximum is 113 characters including the "ipc://" prefix (107 On Linux, the maximum is 113 characters including the "ipc://" prefix (107
characters for the real path name). characters for the real path name).
Unbinding wild-card address from a socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When wild-card `*` 'endpoint' was used in _zmq_bind()_, the caller should use
real 'endpoind' obtained from the ZMQ_LAST_ENDPOINT socket option to unbind
this 'endpoint' from a socket using _zmq_unbind()_.
Connecting a socket Connecting a socket
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
When connecting a 'socket' to a peer address using _zmq_connect()_ with the When connecting a 'socket' to a peer address using _zmq_connect()_ with the

View File

@ -19,8 +19,22 @@ property specified by the 'property' argument for the message pointed to by
the 'message' argument. Both the 'property' argument and the 'value' the 'message' argument. Both the 'property' argument and the 'value'
shall be NULL-terminated UTF8-encoded strings. shall be NULL-terminated UTF8-encoded strings.
The following properties can be retrieved with the _zmq_msg_gets()_ function: Metadata is defined on a per-connection basis during the ZeroMQ connection
handshake as specified in <rfc.zeromq.org/spec:37>.
The following ZMTP properties can be retrieved with the _zmq_msg_gets()_
function:
Socket-Type
Identity
Resource
Additionally, when available for the underlying transport, the *Peer-Address*
property will return the IP address of the remote endpoint as returned by
getnameinfo(2).
Other properties may be defined based on the underlying security mechanism,
see ZAP authenticated connection sample below.
RETURN VALUE RETURN VALUE
------------ ------------

View File

@ -28,8 +28,7 @@ _zmq_msg_init_size()_ are mutually exclusive. Never initialize the same
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_msg_init()_ function shall return zero if successful. Otherwise it The _zmq_msg_init()_ function always returns zero.
shall return `-1` and set 'errno' to one of the values defined below.
ERRORS ERRORS

View File

@ -283,77 +283,6 @@ Default value:: 0 (false)
Applicable socket types:: all, only for connection-oriented transports. Applicable socket types:: all, only for connection-oriented transports.
ZMQ_IPC_FILTER_GID: Assign group ID filters to allow new IPC connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new IPC
transport connection on a listening socket. If no IPC filters are applied, then
the IPC transport allows connections from any process. If at least one UID,
GID, or PID filter is applied then new connection credentials should be
matched. To clear all GID filters call zmq_setsockopt(socket,
ZMQ_IPC_FILTER_GID, NULL, 0).
NOTE: GID filters are only available on platforms supporting SO_PEERCRED or
LOCAL_PEERCRED socket options (currently only Linux and later versions of
OS X).
[horizontal]
Option value type:: gid_t
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using IPC transports.
ZMQ_IPC_FILTER_PID: Assign process ID filters to allow new IPC connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new IPC
transport connection on a listening socket. If no IPC filters are applied, then
the IPC transport allows connections from any process. If at least one UID,
GID, or PID filter is applied then new connection credentials should be
matched. To clear all PID filters call zmq_setsockopt(socket,
ZMQ_IPC_FILTER_PID, NULL, 0).
NOTE: PID filters are only available on platforms supporting the SO_PEERCRED
socket option (currently only Linux).
[horizontal]
Option value type:: pid_t
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using IPC transports.
ZMQ_IPC_FILTER_UID: Assign user ID filters to allow new IPC connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new IPC
transport connection on a listening socket. If no IPC filters are applied, then
the IPC transport allows connections from any process. If at least one UID,
GID, or PID filter is applied then new connection credentials should be
matched. To clear all UID filters call zmq_setsockopt(socket,
ZMQ_IPC_FILTER_UID, NULL, 0).
NOTE: UID filters are only available on platforms supporting SO_PEERCRED or
LOCAL_PEERCRED socket options (currently only Linux and later versions of
OS X).
[horizontal]
Option value type:: uid_t
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using IPC transports.
ZMQ_IPV4ONLY: Use IPv4-only on socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set the IPv4-only option for the socket. This option is deprecated.
Please use the ZMQ_IPV6 option.
[horizontal]
Option value type:: int
Option value unit:: boolean
Default value:: 1 (true)
Applicable socket types:: all, when using TCP transports.
ZMQ_IPV6: Enable IPv6 on socket ZMQ_IPV6: Enable IPv6 on socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set the IPv6 option for the socket. A value of `1` means IPv6 is Set the IPv6 option for the socket. A value of `1` means IPv6 is
@ -604,7 +533,7 @@ ZMQ_REQ_CORRELATE: match replies with requests
The default behavior of REQ sockets is to rely on the ordering of messages to The default behavior of REQ sockets is to rely on the ordering of messages to
match requests and responses and that is usually sufficient. When this option match requests and responses and that is usually sufficient. When this option
is set to 1, the REQ socket will prefix outgoing messages with an extra frame is set to 1, the REQ socket will prefix outgoing messages with an extra frame
containing a request id. That means the full message is (request id, 0, containing a request id. That means the full message is (request id, identity, 0,
user frames...). The REQ socket will discard all incoming messages that don't user frames...). The REQ socket will discard all incoming messages that don't
begin with these two frames. begin with these two frames.
@ -760,25 +689,6 @@ Default value:: N/A
Applicable socket types:: ZMQ_SUB Applicable socket types:: ZMQ_SUB
ZMQ_TCP_ACCEPT_FILTER: Assign filters to allow new TCP connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new TCP
transport connection on a listening socket. If no filters are applied, then
the TCP transport allows connections from any IP address. If at least one
filter is applied then new connection source ip should be matched. To clear
all filters call zmq_setsockopt(socket, ZMQ_TCP_ACCEPT_FILTER, NULL, 0).
Filter is a null-terminated string with ipv6 or ipv4 CIDR.
NOTE: This option is deprecated, please use authentication via the ZAP API
and IP address whitelisting / blacklisting.
[horizontal]
Option value type:: binary data
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using TCP transports.
ZMQ_TCP_KEEPALIVE: Override SO_KEEPALIVE socket option ZMQ_TCP_KEEPALIVE: Override SO_KEEPALIVE socket option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Override 'SO_KEEPALIVE' socket option (where supported by OS). Override 'SO_KEEPALIVE' socket option (where supported by OS).
@ -886,6 +796,104 @@ Default value:: not set
Applicable socket types:: all, when using TCP transport Applicable socket types:: all, when using TCP transport
ZMQ_TCP_ACCEPT_FILTER: Assign filters to allow new TCP connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new TCP
transport connection on a listening socket. If no filters are applied, then
the TCP transport allows connections from any IP address. If at least one
filter is applied then new connection source ip should be matched. To clear
all filters call zmq_setsockopt(socket, ZMQ_TCP_ACCEPT_FILTER, NULL, 0).
Filter is a null-terminated string with ipv6 or ipv4 CIDR.
NOTE: This option is deprecated, please use authentication via the ZAP API
and IP address whitelisting / blacklisting.
[horizontal]
Option value type:: binary data
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using TCP transports.
ZMQ_IPC_FILTER_GID: Assign group ID filters to allow new IPC connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new IPC
transport connection on a listening socket. If no IPC filters are applied, then
the IPC transport allows connections from any process. If at least one UID,
GID, or PID filter is applied then new connection credentials should be
matched. To clear all GID filters call zmq_setsockopt(socket,
ZMQ_IPC_FILTER_GID, NULL, 0).
NOTE: GID filters are only available on platforms supporting SO_PEERCRED or
LOCAL_PEERCRED socket options (currently only Linux and later versions of
OS X).
NOTE: This option is deprecated, please use authentication via the ZAP API
and IPC whitelisting / blacklisting.
[horizontal]
Option value type:: gid_t
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using IPC transports.
ZMQ_IPC_FILTER_PID: Assign process ID filters to allow new IPC connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new IPC
transport connection on a listening socket. If no IPC filters are applied, then
the IPC transport allows connections from any process. If at least one UID,
GID, or PID filter is applied then new connection credentials should be
matched. To clear all PID filters call zmq_setsockopt(socket,
ZMQ_IPC_FILTER_PID, NULL, 0).
NOTE: PID filters are only available on platforms supporting the SO_PEERCRED
socket option (currently only Linux).
NOTE: This option is deprecated, please use authentication via the ZAP API
and IPC whitelisting / blacklisting.
[horizontal]
Option value type:: pid_t
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using IPC transports.
ZMQ_IPC_FILTER_UID: Assign user ID filters to allow new IPC connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assign an arbitrary number of filters that will be applied for each new IPC
transport connection on a listening socket. If no IPC filters are applied, then
the IPC transport allows connections from any process. If at least one UID,
GID, or PID filter is applied then new connection credentials should be
matched. To clear all UID filters call zmq_setsockopt(socket,
ZMQ_IPC_FILTER_UID, NULL, 0).
NOTE: UID filters are only available on platforms supporting SO_PEERCRED or
LOCAL_PEERCRED socket options (currently only Linux and later versions of
OS X).
NOTE: This option is deprecated, please use authentication via the ZAP API
and IPC whitelisting / blacklisting.
[horizontal]
Option value type:: uid_t
Option value unit:: N/A
Default value:: no filters (allow from all)
Applicable socket types:: all listening sockets, when using IPC transports.
ZMQ_IPV4ONLY: Use IPv4-only on socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Set the IPv4-only option for the socket. This option is deprecated.
Please use the ZMQ_IPV6 option.
[horizontal]
Option value type:: int
Option value unit:: boolean
Default value:: 1 (true)
Applicable socket types:: all, when using TCP transports.
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_setsockopt()_ function shall return zero if successful. Otherwise it The _zmq_setsockopt()_ function shall return zero if successful. Otherwise it

View File

@ -145,7 +145,8 @@ socket option is set to '1'.
When a 'ZMQ_ROUTER' socket enters the 'mute' state due to having reached the When a 'ZMQ_ROUTER' socket enters the 'mute' state due to having reached the
high water mark for all peers, then any messages sent to the socket shall be dropped high water mark for all peers, then any messages sent to the socket shall be dropped
until the mute state ends. Likewise, any messages routed to a peer for which until the mute state ends. Likewise, any messages routed to a peer for which
the individual high water mark has been reached shall also be dropped. the individual high water mark has been reached shall also be dropped,
unless 'ZMQ_ROUTER_MANDATORY' socket option is set.
When a 'ZMQ_REQ' socket is connected to a 'ZMQ_ROUTER' socket, in addition to the When a 'ZMQ_REQ' socket is connected to a 'ZMQ_ROUTER' socket, in addition to the
_identity_ of the originating peer each message received shall contain an empty _identity_ of the originating peer each message received shall contain an empty
@ -161,7 +162,7 @@ Direction:: Bidirectional
Send/receive pattern:: Unrestricted Send/receive pattern:: Unrestricted
Outgoing routing strategy:: See text Outgoing routing strategy:: See text
Incoming routing strategy:: Fair-queued Incoming routing strategy:: Fair-queued
Action in mute state:: Drop Action in mute state:: Drop (see text)
Publish-subscribe pattern Publish-subscribe pattern

View File

@ -46,6 +46,11 @@ When using ephemeral ports, the caller should retrieve the actual assigned
port using the ZMQ_LAST_ENDPOINT socket option. See linkzmq:zmq_getsockopt[3] port using the ZMQ_LAST_ENDPOINT socket option. See linkzmq:zmq_getsockopt[3]
for details. for details.
Unbinding wild-card addres from a socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When wild-card `*` 'endpoint' was used in _zmq_bind()_, the caller should use
real 'endpoind' obtained from the ZMQ_LAST_ENDPOINT socket option to unbind
this 'endpoint' from a socket using _zmq_unbind()_.
Connecting a socket Connecting a socket
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~

View File

@ -20,6 +20,12 @@ argument.
The 'endpoint' argument is as described in linkzmq:zmq_bind[3] The 'endpoint' argument is as described in linkzmq:zmq_bind[3]
Unbinding wild-card addres from a socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When wild-card `*` 'endpoint' (described in linkzmq:zmq_tcp[7] and
linkzmq:zmq_ipc[7]) was used in _zmq_bind()_, the caller should use
real 'endpoind' obtained from the ZMQ_LAST_ENDPOINT socket option
to unbind this 'endpoint' from a socket.
RETURN VALUE RETURN VALUE
------------ ------------
@ -36,8 +42,8 @@ The 0MQ 'context' associated with the specified 'socket' was terminated.
The provided 'socket' was invalid. The provided 'socket' was invalid.
EXAMPLE EXAMPLES
------- --------
.Unbind a subscriber socket from a TCP transport .Unbind a subscriber socket from a TCP transport
---- ----
/* Create a ZMQ_SUB socket */ /* Create a ZMQ_SUB socket */
@ -51,6 +57,23 @@ rc = zmq_unbind (socket, "tcp://127.0.0.1:5555");
assert (rc == 0); assert (rc == 0);
---- ----
.Unbind wild-card `*` binded socket
----
/* Create a ZMQ_SUB socket */
void *socket = zmq_socket (context, ZMQ_SUB);
assert (socket);
/* Bind it to the system-assigned ephemeral port using a TCP transport */
rc = zmq_bind (socket, "tcp://127.0.0.1:*");
assert (rc == 0);
/* Obtain real endpoint */
const size_t buf_size = 32;
char buf[buf_size];
rc = zmq_getsockopt (socket, ZMQ_LAST_ENDPOINT, buf, (size_t *)&buf_size);
assert (rc == 0);
/* Unbind socket by real endpoint */
rc = zmq_unbind (socket, buf);
assert (rc == 0);
----
SEE ALSO SEE ALSO
-------- --------

View File

@ -1,8 +0,0 @@
SUBDIRS = $(pgm_subdir)
DIST_SUBDIRS =
# Override Automake's installation targets with the command ":" that does nothing.
install:; @:
install-exec:; @:
install-data:; @:
uninstall:; @:
dist:; @;

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of 0MQ.
@ -31,7 +31,7 @@
/* Version macros for compile-time API version detection */ /* Version macros for compile-time API version detection */
#define ZMQ_VERSION_MAJOR 4 #define ZMQ_VERSION_MAJOR 4
#define ZMQ_VERSION_MINOR 1 #define ZMQ_VERSION_MINOR 1
#define ZMQ_VERSION_PATCH 0 #define ZMQ_VERSION_PATCH 6
#define ZMQ_MAKE_VERSION(major, minor, patch) \ #define ZMQ_MAKE_VERSION(major, minor, patch) \
((major) * 10000 + (minor) * 100 + (patch)) ((major) * 10000 + (minor) * 100 + (patch))
@ -71,17 +71,18 @@ extern "C" {
#endif #endif
/* Define integer types needed for event interface */ /* Define integer types needed for event interface */
#define ZMQ_DEFINED_STDINT 1
#if defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_OPENVMS #if defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_OPENVMS
# include <inttypes.h> # include <inttypes.h>
#elif defined _MSC_VER && _MSC_VER < 1600 #elif defined _MSC_VER && _MSC_VER < 1600
# ifndef int32_t # ifndef int32_t
typedef __int32 int32_t; typedef __int32 int32_t;
# endif # endif
# ifndef uint16_t # ifndef uint16_t
typedef unsigned __int16 uint16_t; typedef unsigned __int16 uint16_t;
# endif # endif
# ifndef uint8_t # ifndef uint8_t
typedef unsigned __int8 uint8_t; typedef unsigned __int8 uint8_t;
# endif # endif
#else #else
# include <stdint.h> # include <stdint.h>
@ -204,7 +205,23 @@ ZMQ_EXPORT int zmq_ctx_destroy (void *context);
/* 0MQ message definition. */ /* 0MQ message definition. */
/******************************************************************************/ /******************************************************************************/
typedef struct zmq_msg_t {unsigned char _ [48];} zmq_msg_t; /* Some architectures, like sparc64 and some variants of aarch64, enforce pointer
* alignment and raise sigbus on violations. Make sure applications allocate
* zmq_msg_t on addresses aligned on a pointer-size boundary to avoid this issue.
*/
typedef struct zmq_msg_t {
#if defined (__GNUC__) || defined ( __INTEL_COMPILER) || \
(defined (__SUNPRO_C) && __SUNPRO_C >= 0x590) || \
(defined (__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
unsigned char _ [64] __attribute__ ((aligned (sizeof (void *))));
#elif defined (_MSC_VER) && (defined (_M_X64) || defined (_M_ARM64))
__declspec (align (8)) unsigned char _ [64];
#elif defined (_MSC_VER) && (defined (_M_IX86) || defined (_M_ARM_ARMV7VE))
__declspec (align (4)) unsigned char _ [64];
#else
unsigned char _ [64];
#endif
} zmq_msg_t;
typedef void (zmq_free_fn) (void *data, void *hint); typedef void (zmq_free_fn) (void *data, void *hint);
@ -276,7 +293,6 @@ ZMQ_EXPORT const char *zmq_msg_gets (zmq_msg_t *msg, const char *property);
#define ZMQ_TCP_KEEPALIVE_CNT 35 #define ZMQ_TCP_KEEPALIVE_CNT 35
#define ZMQ_TCP_KEEPALIVE_IDLE 36 #define ZMQ_TCP_KEEPALIVE_IDLE 36
#define ZMQ_TCP_KEEPALIVE_INTVL 37 #define ZMQ_TCP_KEEPALIVE_INTVL 37
#define ZMQ_TCP_ACCEPT_FILTER 38
#define ZMQ_IMMEDIATE 39 #define ZMQ_IMMEDIATE 39
#define ZMQ_XPUB_VERBOSE 40 #define ZMQ_XPUB_VERBOSE 40
#define ZMQ_ROUTER_RAW 41 #define ZMQ_ROUTER_RAW 41
@ -296,16 +312,12 @@ ZMQ_EXPORT const char *zmq_msg_gets (zmq_msg_t *msg, const char *property);
#define ZMQ_ZAP_DOMAIN 55 #define ZMQ_ZAP_DOMAIN 55
#define ZMQ_ROUTER_HANDOVER 56 #define ZMQ_ROUTER_HANDOVER 56
#define ZMQ_TOS 57 #define ZMQ_TOS 57
#define ZMQ_IPC_FILTER_PID 58
#define ZMQ_IPC_FILTER_UID 59
#define ZMQ_IPC_FILTER_GID 60
#define ZMQ_CONNECT_RID 61 #define ZMQ_CONNECT_RID 61
#define ZMQ_GSSAPI_SERVER 62 #define ZMQ_GSSAPI_SERVER 62
#define ZMQ_GSSAPI_PRINCIPAL 63 #define ZMQ_GSSAPI_PRINCIPAL 63
#define ZMQ_GSSAPI_SERVICE_PRINCIPAL 64 #define ZMQ_GSSAPI_SERVICE_PRINCIPAL 64
#define ZMQ_GSSAPI_PLAINTEXT 65 #define ZMQ_GSSAPI_PLAINTEXT 65
#define ZMQ_HANDSHAKE_IVL 66 #define ZMQ_HANDSHAKE_IVL 66
#define ZMQ_IDENTITY_FD 67
#define ZMQ_SOCKS_PROXY 68 #define ZMQ_SOCKS_PROXY 68
#define ZMQ_XPUB_NODROP 69 #define ZMQ_XPUB_NODROP 69
@ -325,6 +337,10 @@ ZMQ_EXPORT const char *zmq_msg_gets (zmq_msg_t *msg, const char *property);
#define ZMQ_GSSAPI 3 #define ZMQ_GSSAPI 3
/* Deprecated options and aliases */ /* Deprecated options and aliases */
#define ZMQ_TCP_ACCEPT_FILTER 38
#define ZMQ_IPC_FILTER_PID 58
#define ZMQ_IPC_FILTER_UID 59
#define ZMQ_IPC_FILTER_GID 60
#define ZMQ_IPV4ONLY 31 #define ZMQ_IPV4ONLY 31
#define ZMQ_DELAY_ATTACH_ON_CONNECT ZMQ_IMMEDIATE #define ZMQ_DELAY_ATTACH_ON_CONNECT ZMQ_IMMEDIATE
#define ZMQ_NOBLOCK ZMQ_DONTWAIT #define ZMQ_NOBLOCK ZMQ_DONTWAIT

View File

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of 0MQ.

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- These values are populated into the package.gsl templates by package.bat. --> <!-- These values are populated into the package.gsl templates by package.bat. -->
<!-- The target attribute controls path and file name only, id controls package naming. --> <!-- The target attribute controls path and file name only, id controls package naming. -->
<package id="libzmq_vc120" target="libzmq" version = "4.1.0.7" pathversion="4_1_0_7" platformtoolset="v120"> <package id="libzmq_vc120" target="libzmq" version = "4.1.5.0" pathversion="4_1_5_0" platformtoolset="v120">
<dependency id="libsodium_vc120" version="0.5.0.0" /> <dependency id="libsodium_vc120" version="0.5.0.0" />
</package> </package>

View File

@ -1,22 +0,0 @@
AM_CPPFLAGS = -I$(top_builddir)/include \
-I$(top_srcdir)/include
noinst_PROGRAMS = local_lat remote_lat local_thr remote_thr inproc_lat inproc_thr
local_lat_LDADD = $(top_builddir)/src/libzmq.la
local_lat_SOURCES = local_lat.cpp
remote_lat_LDADD = $(top_builddir)/src/libzmq.la
remote_lat_SOURCES = remote_lat.cpp
local_thr_LDADD = $(top_builddir)/src/libzmq.la
local_thr_SOURCES = local_thr.cpp
remote_thr_LDADD = $(top_builddir)/src/libzmq.la
remote_thr_SOURCES = remote_thr.cpp
inproc_lat_LDADD = $(top_builddir)/src/libzmq.la
inproc_lat_SOURCES = inproc_lat.cpp
inproc_thr_LDADD = $(top_builddir)/src/libzmq.la
inproc_thr_SOURCES = inproc_thr.cpp

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -3,17 +3,27 @@
Copyright (c) 2009-2011 250bpm s.r.o. Copyright (c) 2009-2011 250bpm s.r.o.
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,219 +0,0 @@
lib_LTLIBRARIES = libzmq.la
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libzmq.pc
include_HEADERS = ../include/zmq.h ../include/zmq_utils.h
libzmq_la_SOURCES = \
address.hpp \
array.hpp \
atomic_counter.hpp \
atomic_ptr.hpp \
blob.hpp \
clock.hpp \
command.hpp \
config.hpp \
ctx.hpp \
curve_client.hpp \
curve_server.hpp \
decoder.hpp \
devpoll.hpp \
dist.hpp \
encoder.hpp \
epoll.hpp \
err.hpp \
fd.hpp \
fq.hpp \
gssapi_mechanism_base.hpp \
gssapi_client.hpp \
gssapi_server.hpp \
i_encoder.hpp \
i_decoder.hpp \
i_engine.hpp \
i_poll_events.hpp \
io_object.hpp \
io_thread.hpp \
ip.hpp \
ipc_address.hpp \
ipc_connecter.hpp \
ipc_listener.hpp \
i_engine.hpp \
i_poll_events.hpp \
kqueue.hpp \
lb.hpp \
likely.hpp \
mailbox.hpp \
mechanism.hpp \
metadata.hpp \
msg.hpp \
mtrie.hpp \
mutex.hpp \
norm_engine.hpp \
null_mechanism.hpp \
object.hpp \
options.hpp \
own.hpp \
pgm_receiver.hpp \
pgm_sender.hpp \
pgm_socket.hpp \
pipe.hpp \
plain_client.hpp \
plain_server.hpp \
platform.hpp \
poll.hpp \
poller.hpp \
poller_base.hpp \
pair.hpp \
proxy.hpp \
pub.hpp \
pull.hpp \
push.hpp \
random.hpp \
reaper.hpp \
rep.hpp \
req.hpp \
select.hpp \
session_base.hpp \
signaler.hpp \
socket_base.hpp \
socks.hpp \
socks_connecter.hpp \
stdint.hpp \
stream.hpp \
stream_engine.hpp \
sub.hpp \
tcp.hpp \
tcp_address.hpp \
tcp_connecter.hpp \
tcp_listener.hpp \
thread.hpp \
trie.hpp \
windows.hpp \
wire.hpp \
xpub.hpp \
router.hpp \
dealer.hpp \
xsub.hpp \
ypipe.hpp \
ypipe_base.hpp \
yqueue.hpp \
address.cpp \
clock.cpp \
ctx.cpp \
curve_client.cpp \
curve_server.cpp \
devpoll.cpp \
dist.cpp \
epoll.cpp \
err.cpp \
fq.cpp \
gssapi_mechanism_base.cpp \
gssapi_client.cpp \
gssapi_server.cpp \
io_object.cpp \
io_thread.cpp \
ip.cpp \
ipc_address.cpp \
ipc_connecter.cpp \
ipc_listener.cpp \
kqueue.cpp \
lb.cpp \
mailbox.cpp \
mechanism.cpp \
metadata.cpp \
msg.cpp \
mtrie.cpp \
norm_engine.cpp \
null_mechanism.cpp \
object.cpp \
options.cpp \
own.cpp \
pair.cpp \
pgm_receiver.cpp \
pgm_sender.cpp \
pgm_socket.cpp \
pipe.cpp \
plain_client.cpp \
plain_server.cpp \
poll.cpp \
poller_base.cpp \
pull.cpp \
push.cpp \
proxy.cpp \
reaper.cpp \
pub.cpp \
random.cpp \
rep.cpp \
req.cpp \
select.cpp \
session_base.cpp \
signaler.cpp \
socket_base.cpp \
socks.cpp \
socks_connecter.cpp \
stream.cpp \
stream_engine.cpp \
sub.cpp \
tcp.cpp \
tcp_address.cpp \
tcp_connecter.cpp \
tcp_listener.cpp \
thread.cpp \
trie.cpp \
xpub.cpp \
router.cpp \
dealer.cpp \
v1_decoder.cpp \
v1_encoder.cpp \
v1_decoder.hpp \
v1_encoder.hpp \
v2_decoder.cpp \
v2_decoder.hpp \
v2_encoder.cpp \
v2_encoder.hpp \
v2_protocol.hpp \
xsub.cpp \
zmq.cpp \
zmq_utils.cpp \
raw_decoder.hpp \
raw_decoder.cpp \
raw_encoder.hpp \
raw_encoder.cpp \
ypipe_conflate.hpp \
dbuffer.hpp \
tipc_address.cpp \
tipc_address.hpp \
tipc_listener.cpp \
tipc_listener.hpp \
tipc_connecter.cpp \
tipc_connecter.hpp
if ON_MINGW
libzmq_la_LDFLAGS = -no-undefined -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
else
if ON_ANDROID
libzmq_la_LDFLAGS = -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
else
if ON_LINUX
libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl,--version-script=$(srcdir)/libzmq.vers
else
libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl
endif
endif
endif
libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@
if BUILD_PGM
libzmq_la_CPPFLAGS = -I$(top_srcdir)/@pgm_srcdir@/include/
libzmq_la_LIBADD = $(top_srcdir)/@pgm_srcdir@/libpgm_noinst.la
endif
dist-hook:
-rm $(distdir)/platform.hpp
EXTRA_DIST = \
libzmq.pc.cmake.in \
libzmq.vers

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -79,7 +89,11 @@ namespace zmq
// On some OSes the signaler has to be emulated using a TCP // On some OSes the signaler has to be emulated using a TCP
// connection. In such cases following port is used. // connection. In such cases following port is used.
signaler_port = 5905 // If 0, it lets the OS choose a free port without requiring use of a
// global mutex. The original implementation of a Windows signaler
// socket used port 5905 instead of letting the OS choose a free port.
// https://github.com/zeromq/libzmq/issues/1542
signaler_port = 0
}; };
} }

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -36,12 +46,10 @@
#include "err.hpp" #include "err.hpp"
#include "msg.hpp" #include "msg.hpp"
#ifdef HAVE_LIBSODIUM #if defined (ZMQ_USE_TWEETNACL)
#ifdef HAVE_TWEETNACL # include "randombytes.h"
#include "randombytes.h" #elif defined (ZMQ_USE_LIBSODIUM)
#else # include "sodium.h"
#include "sodium.h"
#endif
#endif #endif
#define ZMQ_CTX_TAG_VALUE_GOOD 0xabadcafe #define ZMQ_CTX_TAG_VALUE_GOOD 0xabadcafe
@ -103,7 +111,7 @@ zmq::ctx_t::~ctx_t ()
// If we've done any Curve encryption, we may have a file handle // If we've done any Curve encryption, we may have a file handle
// to /dev/urandom open that needs to be cleaned up. // to /dev/urandom open that needs to be cleaned up.
#ifdef HAVE_LIBSODIUM #if defined (ZMQ_USE_TWEETNACL)
randombytes_close(); randombytes_close();
#endif #endif
@ -539,7 +547,13 @@ void zmq::ctx_t::connect_inproc_sockets (zmq::socket_base_t *bind_socket_,
else else
pending_connection_.connect_pipe->send_bind (bind_socket_, pending_connection_.bind_pipe, false); pending_connection_.connect_pipe->send_bind (bind_socket_, pending_connection_.bind_pipe, false);
if (pending_connection_.endpoint.options.recv_identity) { // When a ctx is terminated all pending inproc connection will be
// connected, but the socket will already be closed and the pipe will be
// in waiting_for_delimiter state, which means no more writes can be done
// and the identity write fails and causes an assert. Check if the socket
// is open before sending.
if (pending_connection_.endpoint.options.recv_identity &&
pending_connection_.endpoint.socket->check_tag ()) {
msg_t id; msg_t id;
int rc = id.init_size (bind_options.identity_size); int rc = id.init_size (bind_options.identity_size);
errno_assert (rc == 0); errno_assert (rc == 0);

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -19,7 +29,7 @@
#include "platform.hpp" #include "platform.hpp"
#ifdef HAVE_LIBSODIUM #ifdef ZMQ_HAVE_CURVE
#ifdef ZMQ_HAVE_WINDOWS #ifdef ZMQ_HAVE_WINDOWS
#include "windows.hpp" #include "windows.hpp"
@ -38,21 +48,22 @@ zmq::curve_client_t::curve_client_t (const options_t &options_) :
cn_peer_nonce(1), cn_peer_nonce(1),
sync() sync()
{ {
int rc;
memcpy (public_key, options_.curve_public_key, crypto_box_PUBLICKEYBYTES); memcpy (public_key, options_.curve_public_key, crypto_box_PUBLICKEYBYTES);
memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES); memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES);
memcpy (server_key, options_.curve_server_key, crypto_box_PUBLICKEYBYTES); memcpy (server_key, options_.curve_server_key, crypto_box_PUBLICKEYBYTES);
scoped_lock_t lock (sync); scoped_lock_t lock (sync);
#if defined(HAVE_TWEETNACL) #if defined (ZMQ_USE_TWEETNACL)
// allow opening of /dev/urandom // allow opening of /dev/urandom
unsigned char tmpbytes[4]; unsigned char tmpbytes[4];
randombytes(tmpbytes, 4); randombytes(tmpbytes, 4);
#else #else
// todo check return code rc = sodium_init ();
sodium_init(); zmq_assert (rc != -1);
#endif #endif
// Generate short-term key pair // Generate short-term key pair
const int rc = crypto_box_keypair (cn_public, cn_secret); rc = crypto_box_keypair (cn_public, cn_secret);
zmq_assert (rc == 0); zmq_assert (rc == 0);
} }
@ -187,7 +198,6 @@ int zmq::curve_client_t::decode (msg_t *msg_)
} }
cn_peer_nonce = nonce; cn_peer_nonce = nonce;
const size_t clen = crypto_box_BOXZEROBYTES + (msg_->size () - 16); const size_t clen = crypto_box_BOXZEROBYTES + (msg_->size () - 16);
uint8_t *message_plaintext = static_cast <uint8_t *> (malloc (clen)); uint8_t *message_plaintext = static_cast <uint8_t *> (malloc (clen));
@ -253,7 +263,8 @@ int zmq::curve_client_t::produce_hello (msg_t *msg_)
int rc = crypto_box (hello_box, hello_plaintext, int rc = crypto_box (hello_box, hello_plaintext,
sizeof hello_plaintext, sizeof hello_plaintext,
hello_nonce, server_key, cn_secret); hello_nonce, server_key, cn_secret);
zmq_assert (rc == 0); if (rc == -1)
return -1;
rc = msg_->init_size (200); rc = msg_->init_size (200);
errno_assert (rc == 0); errno_assert (rc == 0);
@ -332,7 +343,8 @@ int zmq::curve_client_t::produce_initiate (msg_t *msg_)
int rc = crypto_box (vouch_box, vouch_plaintext, int rc = crypto_box (vouch_box, vouch_plaintext,
sizeof vouch_plaintext, sizeof vouch_plaintext,
vouch_nonce, cn_server, secret_key); vouch_nonce, cn_server, secret_key);
zmq_assert (rc == 0); if (rc == -1)
return -1;
// Assume here that metadata is limited to 256 bytes // Assume here that metadata is limited to 256 bytes
uint8_t initiate_nonce [crypto_box_NONCEBYTES]; uint8_t initiate_nonce [crypto_box_NONCEBYTES];
@ -368,7 +380,8 @@ int zmq::curve_client_t::produce_initiate (msg_t *msg_)
rc = crypto_box (initiate_box, initiate_plaintext, rc = crypto_box (initiate_box, initiate_plaintext,
mlen, initiate_nonce, cn_server, cn_secret); mlen, initiate_nonce, cn_server, cn_secret);
zmq_assert (rc == 0); if (rc == -1)
return -1;
rc = msg_->init_size (113 + mlen - crypto_box_BOXZEROBYTES); rc = msg_->init_size (113 + mlen - crypto_box_BOXZEROBYTES);
errno_assert (rc == 0); errno_assert (rc == 0);

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -20,15 +30,16 @@
#ifndef __ZMQ_CURVE_CLIENT_HPP_INCLUDED__ #ifndef __ZMQ_CURVE_CLIENT_HPP_INCLUDED__
#define __ZMQ_CURVE_CLIENT_HPP_INCLUDED__ #define __ZMQ_CURVE_CLIENT_HPP_INCLUDED__
#ifdef ZMQ_HAVE_CURVE
#include "platform.hpp" #include "platform.hpp"
#include "mutex.hpp" #include "mutex.hpp"
#ifdef HAVE_LIBSODIUM #if defined (ZMQ_USE_TWEETNACL)
#ifdef HAVE_TWEETNACL # include "tweetnacl_base.h"
#include "tweetnacl_base.h" # include "randombytes.h"
#include "randombytes.h" #elif defined (ZMQ_USE_LIBSODIUM)
#else # include "sodium.h"
#include "sodium.h"
#endif #endif
#if crypto_box_NONCEBYTES != 24 \ #if crypto_box_NONCEBYTES != 24 \
@ -36,7 +47,7 @@
|| crypto_box_SECRETKEYBYTES != 32 \ || crypto_box_SECRETKEYBYTES != 32 \
|| crypto_box_ZEROBYTES != 32 \ || crypto_box_ZEROBYTES != 32 \
|| crypto_box_BOXZEROBYTES != 16 || crypto_box_BOXZEROBYTES != 16
#error "libsodium not built properly" # error "CURVE library not built properly"
#endif #endif
#include "mechanism.hpp" #include "mechanism.hpp"
@ -111,7 +122,6 @@ namespace zmq
int process_error (const uint8_t *cmd_data, size_t data_size); int process_error (const uint8_t *cmd_data, size_t data_size);
mutex_t sync; mutex_t sync;
}; };
} }
#endif #endif

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -19,7 +29,7 @@
#include "platform.hpp" #include "platform.hpp"
#ifdef HAVE_LIBSODIUM #ifdef ZMQ_HAVE_CURVE
#ifdef ZMQ_HAVE_WINDOWS #ifdef ZMQ_HAVE_WINDOWS
#include "windows.hpp" #include "windows.hpp"
@ -42,20 +52,21 @@ zmq::curve_server_t::curve_server_t (session_base_t *session_,
cn_peer_nonce(1), cn_peer_nonce(1),
sync() sync()
{ {
int rc;
// Fetch our secret key from socket options // Fetch our secret key from socket options
memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES); memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES);
scoped_lock_t lock (sync); scoped_lock_t lock (sync);
#if defined(HAVE_TWEETNACL) #if defined (ZMQ_USE_TWEETNACL)
// allow opening of /dev/urandom // allow opening of /dev/urandom
unsigned char tmpbytes[4]; unsigned char tmpbytes[4];
randombytes(tmpbytes, 4); randombytes(tmpbytes, 4);
#else #else
// todo check return code rc = sodium_init ();
sodium_init(); zmq_assert (rc != -1);
#endif #endif
// Generate short-term key pair // Generate short-term key pair
const int rc = crypto_box_keypair (cn_public, cn_secret); rc = crypto_box_keypair (cn_public, cn_secret);
zmq_assert (rc == 0); zmq_assert (rc == 0);
} }
@ -365,7 +376,8 @@ int zmq::curve_server_t::produce_welcome (msg_t *msg_)
rc = crypto_box (welcome_ciphertext, welcome_plaintext, rc = crypto_box (welcome_ciphertext, welcome_plaintext,
sizeof welcome_plaintext, sizeof welcome_plaintext,
welcome_nonce, cn_client, secret_key); welcome_nonce, cn_client, secret_key);
zmq_assert (rc == 0); if (rc == -1)
return -1;
rc = msg_->init_size (168); rc = msg_->init_size (168);
errno_assert (rc == 0); errno_assert (rc == 0);

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -20,15 +30,17 @@
#ifndef __ZMQ_CURVE_SERVER_HPP_INCLUDED__ #ifndef __ZMQ_CURVE_SERVER_HPP_INCLUDED__
#define __ZMQ_CURVE_SERVER_HPP_INCLUDED__ #define __ZMQ_CURVE_SERVER_HPP_INCLUDED__
#ifdef ZMQ_HAVE_CURVE
#include "platform.hpp" #include "platform.hpp"
#ifdef HAVE_LIBSODIUM #if defined (ZMQ_USE_TWEETNACL)
#ifdef HAVE_TWEETNACL # include "tweetnacl_base.h"
#include "tweetnacl_base.h" # include "randombytes.h"
#include "randombytes.h" #elif defined (ZMQ_USE_LIBSODIUM)
#else # include "sodium.h"
#include "sodium.h"
#endif #endif
#if crypto_box_NONCEBYTES != 24 \ #if crypto_box_NONCEBYTES != 24 \
|| crypto_box_PUBLICKEYBYTES != 32 \ || crypto_box_PUBLICKEYBYTES != 32 \
|| crypto_box_SECRETKEYBYTES != 32 \ || crypto_box_SECRETKEYBYTES != 32 \
@ -37,7 +49,7 @@
|| crypto_secretbox_NONCEBYTES != 24 \ || crypto_secretbox_NONCEBYTES != 24 \
|| crypto_secretbox_ZEROBYTES != 32 \ || crypto_secretbox_ZEROBYTES != 32 \
|| crypto_secretbox_BOXZEROBYTES != 16 || crypto_secretbox_BOXZEROBYTES != 16
#error "libsodium not built properly" # error "CURVE library not built properly"
#endif #endif
#include "mechanism.hpp" #include "mechanism.hpp"

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

28
src/dist.cpp Executable file → Normal file
View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,24 +1,33 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "err.hpp" #include "err.hpp"
#include "platform.hpp"
const char *zmq::errno_to_string (int errno_) const char *zmq::errno_to_string (int errno_)
{ {

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -31,10 +41,6 @@
#include <stdio.h> #include <stdio.h>
#include "platform.hpp" #include "platform.hpp"
#include "likely.hpp"
// 0MQ-specific error codes are defined in zmq.h
#include "../include/zmq.h"
#ifdef ZMQ_HAVE_WINDOWS #ifdef ZMQ_HAVE_WINDOWS
#include "windows.hpp" #include "windows.hpp"
@ -42,6 +48,11 @@
#include <netdb.h> #include <netdb.h>
#endif #endif
#include "likely.hpp"
// 0MQ-specific error codes are defined in zmq.h
#include "../include/zmq.h"
// EPROTO is not used by OpenBSD and maybe other platforms. // EPROTO is not used by OpenBSD and maybe other platforms.
#ifndef EPROTO #ifndef EPROTO
#define EPROTO 0 #define EPROTO 0

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
@ -20,8 +30,6 @@
#ifndef __ZMQ_I_ENGINE_HPP_INCLUDED__ #ifndef __ZMQ_I_ENGINE_HPP_INCLUDED__
#define __ZMQ_I_ENGINE_HPP_INCLUDED__ #define __ZMQ_I_ENGINE_HPP_INCLUDED__
#include "fd.hpp"
namespace zmq namespace zmq
{ {
@ -50,9 +58,6 @@ namespace zmq
virtual void restart_output () = 0; virtual void restart_output () = 0;
virtual void zap_msg_available () = 0; virtual void zap_msg_available () = 0;
// provide a way to link from engine to file descriptor
virtual fd_t get_assoc_fd () { return retired_fd;};
}; };
} }

View File

@ -1,20 +1,30 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef __ZMQ_I_POLL_EVENTS_HPP_INCLUDED__ #ifndef __ZMQ_I_POLL_EVENTS_HPP_INCLUDED__

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,17 +1,27 @@
/* /*
Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file Copyright (c) 2007-2015 Contributors as noted in the AUTHORS file
This file is part of 0MQ. This file is part of libzmq, the ZeroMQ core engine in C++.
0MQ is free software; you can redistribute it and/or modify it under libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the terms of the GNU Lesser General Public License (LGPL) as published
the Free Software Foundation; either version 3 of the License, or by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
0MQ is distributed in the hope that it will be useful, As a special exception, the Contributors give you permission to link
but WITHOUT ANY WARRANTY; without even the implied warranty of this library with independent modules to produce an executable,
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the regardless of the license terms of these independent modules, and to
GNU Lesser General Public License for more details. copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.

Some files were not shown because too many files have changed in this diff Show More