Compare commits

..

5004 Commits

Author SHA1 Message Date
Markus Gärtner
aaf88cdfd8 Update vmci_listener.cpp
make vmci_listener compile on windows again
2025-08-08 21:03:52 +01:00
Mattias Ellert
3e5ce5c1cd The tests/test_radio_dish test implements is_multicast_available() to
verify that multicast is working on the system before running tests
that relies on this, or skipping those test otherwise.

In some circumstances this check itself hangs due to the recvfrom()
call being blocking waiting for data. The test is eventually killed
with a SIGALARM signal.

./config/test-driver: line 112: 1227308 Alarm clock             "$@" >> "$log_file" 2>&1
FAIL: tests/test_radio_dish

FAIL: tests/test_radio_dish
===========================

FAIL tests/test_radio_dish (exit status: 142)

$ tests/test_radio_dish
tests/test_radio_dish.cpp:511:test_leave_unjoined_fails:PASS
tests/test_radio_dish.cpp:512:test_join_too_long_fails:PASS
tests/test_radio_dish.cpp:513:test_long_group:PASS
tests/test_radio_dish.cpp:514:test_join_twice_fails:PASS
tests/test_radio_dish.cpp:515:test_radio_bind_fails_ipv4:PASS
tests/test_radio_dish.cpp:516:test_radio_bind_fails_ipv6:PASS
tests/test_radio_dish.cpp:517:test_dish_connect_fails_ipv4:PASS
tests/test_radio_dish.cpp:518:test_dish_connect_fails_ipv6:PASS
tests/test_radio_dish.cpp:519:test_radio_dish_tcp_poll_ipv4:PASS
tests/test_radio_dish.cpp:520:test_radio_dish_tcp_poll_ipv6:PASS
tests/test_radio_dish.cpp:521:test_radio_dish_udp_ipv4:PASS
tests/test_radio_dish.cpp:522:test_radio_dish_udp_ipv6:PASS
Alarm clock

With this commit, making the recvfrom() call non-blocking. The test
does noy hang, and the non-available multicast is detected and the
tests needing it are skipped:

PASS: tests/test_radio_dish

$ tests/test_radio_dish
tests/test_radio_dish.cpp:510:test_leave_unjoined_fails:PASS
tests/test_radio_dish.cpp:511:test_join_too_long_fails:PASS
tests/test_radio_dish.cpp:512:test_long_group:PASS
tests/test_radio_dish.cpp:513:test_join_twice_fails:PASS
tests/test_radio_dish.cpp:514:test_radio_bind_fails_ipv4:PASS
tests/test_radio_dish.cpp:515:test_radio_bind_fails_ipv6:PASS
tests/test_radio_dish.cpp:516:test_dish_connect_fails_ipv4:PASS
tests/test_radio_dish.cpp:517:test_dish_connect_fails_ipv6:PASS
tests/test_radio_dish.cpp:518:test_radio_dish_tcp_poll_ipv4:PASS
tests/test_radio_dish.cpp:519:test_radio_dish_tcp_poll_ipv6:PASS
tests/test_radio_dish.cpp:520:test_radio_dish_udp_ipv4:PASS
tests/test_radio_dish.cpp:521:test_radio_dish_udp_ipv6:PASS
tests/test_radio_dish.cpp:431:test_radio_dish_mcast_ipv4:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_no_loop_ipv4:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_mcast_ipv6:IGNORE: No multicast available
tests/test_radio_dish.cpp:431:test_radio_dish_no_loop_ipv6:IGNORE: No multicast available

-----------------------
16 Tests 0 Failures 4 Ignored
OK
2025-06-26 15:20:34 +01:00
Luca Boccassi
dd7369b0a9 Problem: code coverage build fails
Solution: add -fprofile-update=atomic and --ignore-errors unused as indicated by log message

geninfo: ERROR: Unexpected negative count '-1' for /usr/include/c++/13/bits/stl_tree.h:2466.
	Perhaps you need to compile with '-fprofile-update=atomic

LCOV   --remove /tmp/*
lcov: ERROR: 'exclude' pattern '/tmp/*' is unused.
	(use "lcov --ignore-errors unused ..." to bypass this error)
2025-06-25 20:15:31 +01:00
Dimitri John Ledkov
f4329c5ec6 cmake: add curve_keygen binary
When sodium is enabled, also build curve_keygen binary. This is to
bring cmake builds to parity with autoconf.

Fixes: https://github.com/zeromq/libzmq/issues/4675
2025-06-25 20:04:58 +01:00
Chris Cunningham
dbbd240177
Problem: clang-format CI job fails
Solution: update to clang-format-18 and apply diff

Co-authored-by: chris cunningham <crcunningham@users.noreply.github.com>
2025-06-25 19:53:00 +01:00
Min RK
b91a620130 set upper bound in cmake_minimum_required
setting an upper bound improves forward-compatibility as legacy version support is dropped

- 3.5 compat is deprecated in 3.27 (2023), removed in 4.0 (2025)
- 3.10 compat is deprecated in 3.31 (2024)
2025-06-24 23:40:59 +01:00
Pim Borman
798a689df1 rename removesection macro to avoid duplicate conflict with nsis3 2025-06-15 12:44:59 +01:00
Stephan Guilloux
c2f7f8ae12 ANDROID: Support NDK r27x.
This fix has to be reported in LIBZMQ as well and will fix https://github.com/zeromq/libzmq/issues/4744.
2025-06-06 11:56:12 +01:00
rp42
34f7fa2202 cmake_minimum_required() before project()
* Without this CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded (MT) Windows builds still produced incompatible MultiThreadedDLL (MD) output.

 * Resolves following warning:

CMake Warning (dev) at CMakeLists.txt:2 (project):
  cmake_minimum_required() should be called prior to this top-level project()
  call.

 * Use ${CMAKE_HOST_SYSTEM_NAME} as ${CMAKE_SYSTEM_NAME} not set before project().
2024-12-30 17:49:16 +00:00
BtbN
a23330dbe2 Fix compilation with modern compilers
Fixes error: jump to label 'try_tcpip' crosses initialization of 'const SOCKET listener'
2024-11-24 23:08:15 +00:00
githejie
60899603a4 Fix example issue of zmq_timers.adoc 2024-11-22 10:28:16 +00:00
Hennadii Stepanov
90b4f410a0 cmake: Refer to prefix variable in generated libzmq.pc
This change:
1. Makes the `libzmq.pc` files generated by Autotools and CMake more
aligned.
2. Allows the `prefix` variable to be redefined if the package is
relocated.
2024-09-24 22:50:30 +02:00
githejie
64db7d28fe Fix format issue of zmq_socket.adoc 2024-09-06 09:29:24 +02:00
Min RK
1f4dd54f94
Problem: ipc connect can fail on Windows, even after bind (#4734)
* ipc connect can fail, even after bind
2024-08-26 14:57:23 +01:00
Min RK
0ed7a08cd9 Problem: create_ipc_wildcard_address can fail
check and handle failure
2024-08-23 21:54:12 +01:00
Hennadii Stepanov
5f408ba371 Fix CMake-generated libzmq.pc file
This change mirrors the Autotools-based build system behavior for
cross-compiling for Windows with static linking.
2024-08-21 14:38:23 +02:00
githejie
4c6cff6391 Problem: CI build android on ubuntu-latest failed
Solution: Fixed the NDK version to android-ndk-r25 to
avoid using unsupported NDK version on ubuntu-latest.
2024-08-16 11:08:03 +02:00
BtbN
b71434140e Fix reading cycle count on non-msvc win-on-aarch64 2024-08-11 11:54:21 +02:00
Luca Boccassi
6aaafe0135
Merge pull request #4721 from githejie/reconnect_options
Fix issue with ZMQ_RECONNECT_STOP_AFTER_DISCONNECT option
2024-08-11 11:51:07 +02:00
githejie
ce17349f8b Problem: tests reconnect_stop_after_disconnect failed
Solution: this test failed because "_disconnected" is not initialized
in constructor, and the behavior of reconnect will not be as designed
when "_disconnected" is randomly assigned to true.
So we specify it as false in initialize list to solve this problem.
2024-08-10 00:10:31 +08:00
githejie
aa77c03a37 Add tests for sockopt ZMQ_RECONNECT_STOP_AFTER_DISCONNECT 2024-08-10 00:10:25 +08:00
githejie
b95d94935e Problem: macos-latest with libsodium compilation failed
Solution: Add libsodium dependencies to Makefile.am file.
2024-08-02 11:43:23 +02:00
Alexander Stefanov
59c91227b4 use proper STREQUAL instead of EQUAL to compare strings 2024-07-27 10:08:24 +01:00
fanquake
ee29bcd64a problem: trying to link against librt on macOS
Solution: don't use rt if not `RT_LIBRARY`

This currently causes the check to fail on macOS:
```bash
     /Library/Developer/CommandLineTools/usr/bin/c++  -std=c++11 -Wno-tautological-constant-compare  -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_8466b.dir/CheckSymbolExists.cxx.o -o cmTC_8466b  -lrt
        ld: library 'rt' not found
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
even though `clock_gettime` is available.

Move the `clock_gettime` check up with the other librt related checks,
and don't set `CMAKE_REQUIRED_LIBRARIES` if not `RT_LIBRARY`.
2024-07-08 22:35:49 +02:00
fanquake
d203ad2b7a problem: using -errwarn on non-Sun systems
solution: only use `-errwarn` on SunPro systems

For example, using Clang on Alpine, this just results in build spam, and
the option is incorrectly passed through to ld, which trys to use use it
(`-e`) as an entrypoint, i.e:
```bash
[ 28%] Building CXX object CMakeFiles/local_lat.dir/perf/local_lat.cpp.o
clang++: warning: -e rrwarn=%all: 'linker' input unused [-Wunused-command-line-argument]
[ 29%] Linking CXX executable bin/local_lat
/usr/bin/ld: warning: cannot find entry symbol rrwarn=%all; defaulting to 0000000000000cf0
[ 29%] Built target local_lat
```
2024-07-08 18:00:20 +02:00
fanquake
de290e91e3 Problem: macos-latest CIs both failing
Solution: Install `libtool`. This seems to be the issue, given the CI
output of a recent run, i.e:
```bash
 configure.ac:1023: the top level
configure.ac:80: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:81: error: possibly undefined macro: AC_PROG_LIBTOOL
configure:7350: error: possibly undefined macro: AC_DISABLE_STATIC
configure:7354: error: possibly undefined macro: AC_ENABLE_STATIC
autoreconf: error: /opt/homebrew/Cellar/autoconf/2.72/bin/autoconf failed with exit status: 1
autogen.sh: error: autoreconf exited with status 1
+ exit 1
```
https://github.com/zeromq/libzmq/actions/runs/9841129190/job/27167025854?pr=4699#step:12:200
2024-07-08 16:58:24 +02:00
C-sir
c2fae81460 Problem: my name is not in the AUTHORS file
Solution: add myself to the list
2024-05-10 15:45:28 +02:00
Isuru Fernando
0a1aa1e4a7 Fix typos in gssapi cmake support PR 2024-05-08 21:22:25 +02:00
Isuru Fernando
43a8b3c6c8 Add gssapi support to cmake 2024-05-08 10:06:39 +02:00
Stephan Lachnit
aa885c5a15 Do not use _MSC_VER if windows
This fixes several instances where _MSC_VER was used to determine whether to use afunix.h or not. For example, MinGW requires the use of afunix.h but does not define _MSC_VER. The correct behavior is checking ZMQ_HAVE_WINDOWS.

Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2024-04-23 21:00:20 +02:00
fanquake
2a75ef07be cmake: don't use builtin sha1 if not using ws
The builtin SHA1 (ZMQ_USE_BUILTIN_SHA1) is only used in the websocket
engine (ws_engine.cpp), so if websockets are disabled, i.e
-DENABLE_DRAFTS=OFF, don't add sha1.c to the sources list.
2024-03-25 18:51:39 +00:00
fanquake
4a5ece54b8 build: fix mkdtemp check on macOS
On macOS, mkdtemp is in unistd.h. Fix the CMake check so that is works.
This was discovered when comparing the output of the Autotools an CMake
build systems.
2024-03-25 13:24:30 +00:00
Hennadii Stepanov
45b2924a0a Fix Autotools-generated libzmq.pc file
This change fixes cross-compiling for Windows with static linking.
2024-03-21 12:22:43 +00:00
Min RK
481cc3fa2c halt build if CURVE requested but not found
ENABLE_CURVE is currently redundant with WITH_LIBSODIUM, as the only existing provider

now builds where requested configuration is not found fail rather than proceeding without requested features
2024-02-28 15:35:57 +00:00
Min RK
ff231d2673 Problem: cmake search for kqueue missing headers
Solution: include sys/types.h and sys/time.h as documented by kqueue
and used in autotools

fixes kqueue detection on openbsd
2024-02-23 14:25:17 +00:00
Eli Schwartz
3b264019a2 configure: fix basic syntax errors in the shell script programming language
There is no such thing as `+=` unless you happen to be using the Bash
programming language, i.e. your script shebang is /bin/bash.

However, configure scripts are run via /bin/sh instead, which may or may
not be be bash, usually depending on whether the system in question
preferred to have one less package installed (in which case it is bash)
vs. have a faster /bin/sh installed (in which case it is probably the
dash shell).
2024-01-24 23:01:24 +00:00
Thomas
959a133520
Fixing SEGV #4524. Pipe should only send to peer when active. (#4647)
* Fixing SEGV #4524. Pipe should only send to peer when active.
2023-12-19 15:21:46 +00:00
Denis Zibarev
86a42e1e43 Problem: Using non-ascii characters in unix domain socket path doesn't work on Windows
Solution: Convert utf-8 socket paths to utf-16 file names when using
filesystem calls to delete files and directories as Windows doesn't
have any filesystem calls that take utf-8 path.

rmdir_utf8() and unlink_utf8() static functions were created which
substitute rmdir() and unlink() when building on Windows.
2023-12-11 10:12:12 +00:00
Florian Weimer
665d1d4657 Build with -D_DEFAULT_SOURCE along with -std=c11
On its own, -std=c11 hides POSIX and other extensions from C headers
such as <stdlib.h> when building against glibc.  This causes the
posix_memalign probe to fail incorrectly with compilers that do not
accept implicit function declarations.  _DEFAULT_SOURCE is ignored by
most non-GNU/Linux systems or not relevant in this context, so there
is no separate check for adding it.
2023-11-29 13:58:35 +00:00
f18m
2622e618f0 Replace old website contribution page link with the page of the new website 2023-11-22 22:35:29 +00:00
Nehal Patel
b268effd88 Fix 4629 compile warning in endpoint.hpp 2023-11-19 11:35:09 +00:00
Francesco Montorsi
814dab58a4
Documentation: fix the HTMLZIP name to restore the download-documentation functionality (#4628) 2023-11-13 14:47:38 +00:00
f18m
61050beca6 Documentation: improve the look of landing page
* Link the new CSS stylesheet also when building docs at RTD
2023-11-10 12:05:52 +00:00
Francesco Montorsi
481d536713
Documentation: improve the look of landing page (#4625)
* Documentation: improve the look of landing page by showing a more-compact list
2023-11-10 11:42:46 +00:00
Francesco Montorsi
3e08ecc012
Feature: improve docs (#4620)
* Feature: improve see-also doc section
2023-11-03 10:36:47 +00:00
Francesco Montorsi
267e856494
Feature: master: integrate with ReadTheDocs (#4614)
* Feature: integrate libzmq with ReadTheDocs

* add readthedocs configuration file to convert Asciidoc files into HTML and HTMLZIP formats using Asciidoctor.js tool (the only Asciidoctor variant available on readthedocs so far)
2023-11-02 20:44:34 +00:00
Francesco Montorsi
aa9a2c8429
docs: add index page (#4615) 2023-11-01 09:49:25 +00:00
Stephan Lachnit
05c2025412 poller.hpp: fix incorrect ZMQ_IOTHREAD_POLLER_* usage
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-11-01 00:53:40 +00:00
Luca Boccassi
f0c471aaab
Merge pull request #4607 from f18m/feature/asciidoctor
Feature: modernize API documentation
2023-10-25 23:10:25 +01:00
Francesco Montorsi
b6ca9b2983 Feature: modernize API documentation
* migrate from the old, unmaintained "asciidoc-py" tool to the new "asciidoctor" generator
* migrate from asciidoc-py syntax to the modern Asciidoc syntax (especially page titles and section titles)
* remove the need of "xmlto" utility to create the manpage output; use asciidoctor for that
* add HTML output support to the doc/Makefile by using asciidoctor
* change API documentation files extension from .txt to .adoc to make it more explicit that they are Asciidoc-encoded (as a bonus several IDE plugins will autodetect the .adoc format as Asciidoc)
* remove asciidoc.conf: asciidoctor does not support that; this also required replacing the macro linkzmq into all documentation pages
* add a new Github action CI do deploy to Github Pages the static HTMLs produced by Asciidoctors
* removed references to the "xmlto" and "a2x" tools from the build and packaging systems: Asciidoctor can convert the documentation directly to e.g. pdf (via extended converters) and anyway there was no code/target for using "xmlto" and "a2x" tools anyway
2023-10-25 23:59:38 +02:00
Luca Boccassi
cd991c72c8 Revert "Add forgotten test_pubsub. Currently only tests NORM if built."
The test always fails.

This reverts commit a6039d8716612ca3002858a85b2119f970e0fc41.
2023-10-25 11:49:29 +01:00
Michael Hudson-Doyle
aa3e097996 initialize error in test_security_gssapi.c:test_null_creds
Under some circumstances (which probably no longer apply in master) gcc inlined get_monitor_event into test_null_creds and then emitted a "maybe uninitialized" warning on the use of error. This would only be a problem if the tested code was misbehaving but I guess that's the point of a test!
2023-10-25 09:51:25 +01:00
Axel Rietschin
a6039d8716 Add forgotten test_pubsub. Currently only tests NORM if built. 2023-10-24 10:47:19 +01:00
Yueshan
95caddb9a1 Update msg.cpp
allow the max_vsm_size of data can init as vsm type msg

the init message of vsm size should be <= max_vsm_size include equal size.
2023-10-22 11:47:21 +01:00
Luca Boccassi
b30a19ebde
Merge pull request #4602 from nnog/flaky-test
test_proxy_steerable: reduce cpu and thread count
2023-10-13 15:21:28 +01:00
George Cockshull
77303a1926 test_proxy_steerable: reduce cpu and thread count
Problem: flakiness on slow CI VMs

Solution: fewer worker threads, poll rather than thrash,
consistent timings. user cpu ~300% -> 15%.
2023-10-13 08:19:38 -04:00
Luca Boccassi
6b80df14f4
Merge pull request #4600 from nnog/fix-proxy-steerable
Fix zmq_proxy_steerable
2023-10-12 21:53:48 +01:00
George Cockshull
058ad60b9a zmq_proxy_steerable: support non-REP socket types
Problem: reimplemented zmq_proxy_steerable control socket type is not
backwards compatible - replies are always sent.

In the past, zmq_proxy_steerable never sent a reply for
commands that weren't STATISTICS, so only really worked with PAIR and didn't
work at all with REP. Now it only supports REP and PAIR semantics changed. This
breaks compatibility with PAIR in a subtle and slightly annoying way if
HWMs are hit without reading the replies.

Solution: Add a check to send the empty reply only for
REP control sockets. This restores backwards compatibility, and supports
REP, PAIR, and SUB (for non-reply commands).

I had no knowledge of the pre-MPL-2.0 implementation. This fix is based
on docs and prior API usage. I contribute this under MPL-2.0.
2023-10-12 15:22:44 -04:00
George Cockshull
f8b3cc8108 Fix zmq_proxy_steerable PAUSE/RESUME
Problem: the new reimplementation of zmq_proxy_steerable had PAUSE/RESUME
that didn't follow expected behaviour. Possibly mixed up. Test didn't properly
cover the issue.

Solution: improve test coverage, fix the proxy command parsing.

I had no knowledge of the pre-MPL-2.0 implementation. This fix is based
on documented semantics and prior API usage. I contribute this
under MPL-2.0.
2023-10-12 15:22:44 -04:00
James Harvey
9d31965548
Handle tcp self connection issues (#4599) 2023-10-10 14:46:48 +01:00
Luca Boccassi
dbb7e3dc01 Problem: 4.3.5 is out, need new version
Solution: bump to 4.3.6
2023-10-09 12:21:03 +01:00
Luca Boccassi
622fc6dde9 Update NEWS for 4.3.5 2023-10-09 11:47:05 +01:00
Luca Boccassi
5cf39bf0ce
Merge pull request #4598 from brettviren/reimplement-proxy-steerable
A clean room re-implementation of zmq_proxy_steerable()
2023-10-09 10:36:47 +01:00
Brett Viren
5712ad5138 A clean-room implementation of zmq_proxy_steerable().
It is contriubted under the MPL-2.0.

I had no knowledge of the previous implementation of zmq_proxy_steerable().

This version was developed based on expectations set in the old man page with one exception.  This version uses a REP/REQ for the proxy control protocol sockets.  The old man page example used PUB/SUB which is nonsensical given the STATISTICS command requires two way communication.
2023-10-08 19:56:03 -04:00
Nehal Patel
8cdc4ed71a
Problem: unused variables warnings
Solution: fix them
2023-10-04 09:51:43 +01:00
Hennadii Stepanov
de5ee18203 Replace egrep with grep -E
For the GNU Grep package version >= 3.8, the `egrep` command emits:
```
egrep: warning: egrep is obsolescent; using grep -E
```
which makes the `./autogen.sh` script very noisy.
2023-08-26 22:19:35 +01:00
Jeffery Weston
ec013f3a17 fix assert error on late-joining subscriber after publisher has filled NORM buffer 2023-07-21 19:46:44 +01:00
Cornelius
ecc63d0d3b
Problem: long flag isn't set for subscriptions if topic has between 246 and 255 characters (#4564)
* Problem: long flag isn't set for subscriptions if topic has between 246 and 255 characters

Solution: fix V3.1 encoder to calculate long flag after evaluating the subscribe and cancel commands
2023-06-20 15:17:26 +01:00
Luca Boccassi
7af09a0e3b obs: trigger build on merge 2023-06-18 15:40:05 +01:00
Luca Boccassi
61fd887d11 spec: do not attempt to install curve_keygen if curve is disabled 2023-06-18 13:06:57 +01:00
Luca Boccassi
7fef478481 spec: remove duplicated macros 2023-06-18 12:51:43 +01:00
Guillaume DELACOURT
5657b4586f Always allow DNS when resolving TCP and UDP adresses. DNS resolution is done after interface resolution, so it can always be enabled to have a fallback mecanism on hostname resolution. 2023-06-12 20:28:32 +01:00
Guillaume DELACOURT
e0296d9cdd Checks for pthread setname and setaffinity API are compilation checks, not execution checks. 2023-06-12 00:12:26 +01:00
Guillaume DELACOURT
797c7f09f8 When setting thread priority, always set the value to zero when the policy is not compatible. Also, only call nice when the priority is set to a strictly positive value. 2023-06-12 00:11:21 +01:00
Luca Boccassi
5bf04ee2ff Problem: docs for ZMQ_RECONNECT_IVL_MAX are stubs
Solution: write them now that the option is back
2023-06-06 18:09:12 +01:00
Luca Boccassi
346907065f Problem: trailing whitespace
Solution: remove it
2023-06-06 18:00:08 +01:00
Luca Boccassi
7175f0acb5
Merge pull request #4556 from stvales/master
Problem: relicensing forced to remove support for ZMQ_RECONNECT_IVL_MAX option
2023-06-06 16:40:57 +01:00
Stéphane Valès
de1bd5c8e7 Problem: relicensing forced to remove support for ZMQ_RECONNECT_IVL_MAX option
Solution: reimplement support for ZMQ_RECONNECT_IVL_MAX without knowledge of the previous code.
2023-06-06 15:15:22 +02:00
Luca Boccassi
1a921db728
Merge pull request #4555 from bluca/relicense
Relicense from LGPL3 + exceptions to Mozilla Public License version 2.0
2023-06-06 13:50:00 +01:00
Luca Boccassi
3e5e405f33 Remove RELICENSE/ directory
Grants archived at:

https://github.com/rlenferink/libzmq-relicense/blob/master/RELICENSE

No longer necessary to keep them here, as the relicensing is complete.
2023-06-05 20:31:47 +01:00
Luca Boccassi
da31917f4f Relicense from LGPL3 + exceptions to Mozilla Public License version 2.0
Relicense permission collected from all relevant authors as tallied at:
https://github.com/rlenferink/libzmq-relicense/blob/master/checklist.md
The relicense grants are collected under RELICENSE/ and will be moved
to the above repository in a later commit.

Fixes https://github.com/zeromq/libzmq/issues/2376
2023-06-05 20:31:47 +01:00
Luca Boccassi
87bb4db114
Merge pull request #4554 from bluca/relicense
Problem: cannot relicense due to missing agreement from 3 authors
2023-06-05 20:00:28 +01:00
Luca Boccassi
7bbd49726b Problem: no permission to relicense ZMQ_RECONNECT_IVL_MAX
Solution: remove the implementation. Thijs Terlouw <thijsterlouw@gmail.com>,
the author, did not respond to requests to allow relicensing to MPL2,
so we have to remove his copyrighted work.
Remove the implementation and make get/set return -EOPNOTSUPP.
2023-06-05 00:22:20 +01:00
Luca Boccassi
ff47aeb791 Problem: no permission to relicense tweetnacl integration
Solution: remove implementation. Frank Hartmann <soundart@gmx.net>,
the author, rejected our request to relicense under MPL2, so we
have to remove his copyrighted work.
Tweetnacl is not security-supported and could not be used in
production environments anyway, the supported backend is libsodium.
2023-06-04 23:54:31 +01:00
Luca Boccassi
13bc1de421 Problem: no permission to relicense zmq_proxy_steerable
Solution: remove implementation. Laurent Alebarde <l.alebarde@free.fr>,
the author, did not respond to requests to allow relicensing to MPL2,
so we have to remove his copyrighted work.
Make the API into an empty stub that returns -EOPNOTSUPP.
2023-06-04 23:54:31 +01:00
Jeff Weston
eaaea73bf1
Change NORM to set TTL using MULTICAST_HOPS sockopt (#4552)
* Change NORM to set TTL using MULTICAST_HOPS instead of hard-coding.  Changes default TTL from 255 to 1.
2023-05-19 20:53:20 +01:00
Nicolas Benes
4d1dccaebd Fix pkg_config_defines in CMakeFile
PR #4545 sets `pkg_config_defines` too late, i.e. after the pkg-config
file is already generated. It must be set before `configure_file`.
2023-05-16 17:47:51 +01:00
Luca Boccassi
cc12997a17
Merge pull request #4545 from panicgh/pc-file-fix
Add missing pkg_config_defines when built with CMake
2023-05-12 10:16:57 +01:00
Nicolas Benes
2da2bd8f6d RELICENSE: add statement
Signed-off-by: Nicolas Benes <nbenes.gh@xandea.de>
2023-05-12 06:29:44 +02:00
Luca Boccassi
077dd92616
Merge pull request #4546 from cdepillabout/link-openpgm-cmake-fresh
Link to openpgm when building with cmake
2023-05-11 13:59:13 +01:00
Dennis Gosnell
a6c2f6ba72 Problem: no relicense agreement by cdepillabout
Solution: added relicense agreement
2023-05-11 20:22:42 +09:00
Dennis Gosnell
5381be6c71 Problem: don't link to openpgm when building with cmake
Solution: Add `target_link_libraries()` to `libzmq` for openpgm when
openpgm has been enabled.
2023-05-11 20:22:42 +09:00
Nicolas Benes
c079ca5cc4 Add missing pkg_config_defines when built with CMake
The pkg_config_defines variable was only set in configure.ac, but not in
CMake. This lead to the `-DZMQ_BUILD_DRAFT_API=1` flag to be omitted
from the generated pkg-config file.

Signed-off-by: Nicolas Benes <nbenes.gh@xandea.de>
2023-05-09 23:15:46 +02:00
Luca Boccassi
532b61275e
Merge pull request #4542 from bjornstromberg/libzmq-patch-pr-4432
Problem: merged pr-4432 broke FindSodium on linux
2023-04-22 11:59:25 +01:00
Björn Strömberg
f56a44d35d
Problem: no relicense agreement by bjornstromberg
Solution: added relicense agreement
2023-04-22 09:13:22 +02:00
bjornstromberg
47b2aec813
Problem: merged pr-4432 broke FindSodium on linux
Solution: rename the FindSodium to Findsodium so it matches what the build script actually looks for. tested on ubuntu-20.04lts with cmake 3.16.
2023-04-22 08:58:55 +02:00
Jeff Weston
2d30020691
Add NORM Transport configuration sockopts (#4541)
* added NORM transport configuration socket options, and enabled NORM use of existing sockopts ZMQ_RATE for NORM fixed-rate operation, and ZMQ_TOS
2023-04-20 18:55:40 +01:00
Luca Boccassi
be8af6f128
Merge pull request #4540 from keith-dev/master
Support clang-16 on Termux
2023-04-19 11:57:08 +01:00
Keith Williams
bf3d37b7d0 Add RELICENSE for Keith Williams 2023-04-19 01:16:05 +01:00
Keith Williams
abf2444f09 remove c99 extention from c++11 code 2023-04-18 22:27:06 +01:00
Keith Williams
27dda213fe extend tipc check to support Android under Termux 2023-04-18 22:25:00 +01:00
Constantin Rack
5a5f90e07e
Merge pull request #4537 from chachoi/master
Add support for QNX 7.1 build
2023-04-11 22:22:54 +02:00
James Choi
c19d4c9bf0 Add RELICENSE for James Choi
Signed-off-by: James Choi <chachoi@blackberry.com>
2023-04-11 15:48:27 -04:00
James Choi
10e5847fa8 Add support for QNX 7.1 build
Signed-off-by: James Choi <chachoi@blackberry.com>
2023-04-11 15:48:07 -04:00
Luca Boccassi
1b52e19b2b
Merge pull request #4533 from autoantwort/gnutls-include-dir
Don't assume that GnuTLS is on the search path
2023-03-27 22:34:39 +01:00
Leander Schulten
08a6f8f84d license 2023-03-27 17:47:30 +02:00
Leander Schulten
f508394909 Don't assume that GnuTLS is on the search path 2023-03-27 16:06:23 +02:00
Luca Boccassi
94bf58e43c
Merge pull request #4522 from stephanlachnit/p-cmake-fix-devpoll
CMake: fix devpoll detection not working properly
2023-03-05 17:49:19 +00:00
Luca Boccassi
3f5d915b56
Merge pull request #4523 from stephanlachnit/p-fix-cmake-pgm-vmci
CMake: properly set ZMQ_HAVE_OPENPGM and ZMQ_HAVE_VMCI
2023-03-05 17:49:02 +00:00
Luca Boccassi
e6130935c7
Merge pull request #4521 from stephanlachnit/p-fix-pollset
CMake: fix not defining pollset in platform.hpp
2023-03-05 17:48:31 +00:00
Stephan Lachnit
6147de01da
RELICENSE: add statement
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-05 13:32:42 +01:00
Stephan Lachnit
87065068ca
CMake: properly set ZMQ_HAVE_OPENPGM and ZMQ_HAVE_VMCI
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-03 11:11:41 +01:00
Stephan Lachnit
6fc2a61d16
CMake: fix devpoll detection not working properly
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-03 11:01:47 +01:00
Stephan Lachnit
08d60dfdfa
CMake: fix not defining pollset in platform.hpp
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-03 10:56:26 +01:00
Luca Boccassi
8c725093ac
Merge pull request #4509 from sphaero/udploop
Problem: infinite loop binding a dgram socket if it fails
2023-02-06 15:23:35 +00:00
Arnaud Loonstra
b261f9a678 treat bind errors as a protocol_error instead of connection_error preventing an infinite loop of trying to create the udp socket as through the protocol_error the creation of the socket fails 2023-02-03 16:33:18 +01:00
Luca Boccassi
6e2d632b18
Merge pull request #4502 from casaroli/fix-for-nuttx
Fixes for memory allocation and zero size
2023-02-03 09:16:26 +00:00
Marco Casaroli
52333da0e2 Add RELICENSE for Marco Casaroli 2023-02-03 09:35:35 +01:00
Marco Casaroli
d16db180d3 Do not break if malloc size is zero
I get a scenario where `size_` is `0` so there is nothing to `malloc()`.

According to `malloc(3)`:

If size is 0, then malloc() returns either NULL, or a unique pointer value thatcan later be
success‐fully passed to free().

According to `free(3)`:

If ptr is NULL, no operation is performed.

So, if `size_` is null and `_data` also, there is no OOM error.

We can adjust the assert to not fail on this scenario.
2023-02-03 09:35:35 +01:00
Luca Boccassi
a666cb1b40
Merge pull request #4507 from daira/zmq_snprintf
#4494 added calls to snprintf, but did not take into account that snprintf can truncate
2023-02-01 21:44:27 +00:00
Daira Hopwood
6dc559c072 #4494 added calls to snprintf, but did not take into account that snprintf
can truncate, and then return the number of characters that would have been
written without truncation.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2023-02-01 19:15:46 +00:00
Luca Boccassi
333c88e9ff
Merge pull request #4505 from barracuda156/darwin
tests: use NOT APPLE instead of NOT MATCHES Clang
2023-02-01 00:30:26 +00:00
Sergey Fedorov
2438952f75 Add relicense statement 2023-02-01 08:02:53 +08:00
Sergey Fedorov
74af53fdfa tests: use NOT APPLE instead of NOT MATCHES Clang 2023-02-01 05:37:59 +08:00
Marco Casaroli
f049edbf12 Use parenthesis for alloc_assert macro 2023-01-31 14:46:46 +01:00
Luca Boccassi
ce6d48c578
Merge pull request #4500 from bluca/ci
CI fixes
2023-01-31 10:48:44 +00:00
Luca Boccassi
bd0a34899a Problem: test_filter_ipc is flacky
Solution: expect send failure and use random endpoint
2023-01-31 01:16:24 +00:00
Luca Boccassi
ccdc2f7583 Problem: VMCI tests are not skipped outside VMs
Solution: check CID and skip if unavailable
2023-01-31 00:28:38 +00:00
Luca Boccassi
acfdf67127
Merge pull request #4497 from MartinDelille/badge
Add conan badge
2023-01-27 01:32:42 +00:00
Martin Delille
8850ccc450
Add relicense statement 2023-01-27 02:26:12 +01:00
Martin Delille
75e9a950d9
Add conan badge 2023-01-27 00:29:47 +01:00
Luca Boccassi
abb0ada5f7
Merge pull request #4494 from sphaero/depr_sprintf
deprecate sprint and replace with snprintf
2023-01-24 23:36:00 +00:00
Arnaud Loonstra
f7df6c8599 deprecate sprint and replace with snprintf 2023-01-24 22:45:48 +01:00
Luca Boccassi
b674ce68d0
Merge pull request #4490 from bluca/ci
Problem: various CI issues
2023-01-16 10:28:05 +00:00
Luca Boccassi
a820627f55 Problem: test_zmq_ppoll_signals does not cleanup context
Solution: do it, to avoid false positive in valgrind
2023-01-16 00:52:30 +00:00
Luca Boccassi
7e0fdd82de Problem: test_zmq_ppol_signals uses fixed TCP port
Solution: use random one to avoid random failures
2023-01-16 00:52:30 +00:00
Luca Boccassi
117cbe690c Problem: buffer overflow in new test case
Solution: fix it
2023-01-15 23:44:12 +00:00
Luca Boccassi
ee9c0919e2 Problem: address sanitizer complains about uninitialised func pointer
Solution: just call the function directly
2023-01-15 23:44:00 +00:00
Luca Boccassi
3cafc0c260
Merge pull request #4489 from bluca/ci
Problem: various CI issues
2023-01-12 09:49:59 +00:00
Luca Boccassi
78777fb9f5 Problem: shipping binaries is a responsibility that requires time
Solution: stop shipping binary releases for Windows. These days there's vcspkg, conda and more
that provide pre-built binaries for Windows.
Being a software supplier requires a lot of time and effort, and we have no bandwidth.
2023-01-12 01:07:06 +00:00
Luca Boccassi
961206abd5 Problem: libsodium doesn't build anymore in VS2010
Solution: disable it in appveyor, not our problem to solve
2023-01-12 01:07:06 +00:00
Luca Boccassi
7781dd1bbd Problem: formatting errors with clang-format-11
Solution: apply update
2023-01-12 01:07:06 +00:00
Luca Boccassi
47d0ecf639 Problem: missing VMCI can also return EPROTONOSUPPORT and the tests fail
Solution: ignore that too
2023-01-12 01:07:06 +00:00
Luca Boccassi
634cf9eea7 Problem: windows-2016 build no longer runs in CI
Solution: remove it
2023-01-12 01:07:06 +00:00
Luca Boccassi
3919956535 Problem: build fails with PGM + CXX98 + clang++
Solution: redefine 'restrict' which is used as an attribute in PGM headers,
but that is not available when using clang and CXX98
2023-01-11 23:43:13 +00:00
Luca Boccassi
049f79f72e
Merge pull request #4488 from ilkondr/ilkondr/poll_eintr
Problem: message can't be received due to signal
2023-01-10 18:55:45 +00:00
Ilya Kondrashkin
04720b6b91 Problem: message can't be received due to signal
Issue caught in Golang runtime, which widely uses signal SIGURG for
scheduling. Sometimes messages cannot be received. Technically
socket_base_t::process_commands() returns failure even if some commands were
processed, but next message from mailbox could not be received during interrupt.

Solution: retry receiving from mailbox with zero timeout after EINTR.

Signed-off-by: Ilya Kondrashkin <ikondrashkin@nfware.com>
2023-01-10 16:04:56 +00:00
Luca Boccassi
8d0f6f359e
Merge pull request #4486 from Rabenda/fix/qemu-user-build
fix: fix build on qemu-user
2023-01-09 17:25:29 +00:00
Han Gao
48960c2293 fix: fix build on qemu-user
In qemu-user, CACHELINE_SIZE probe is undefined

Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-01-10 01:12:20 +08:00
Luca Boccassi
bdd471fa17
Merge pull request #4480 from trofi/gcc-13-rebind-fix
src/secure_allocator.hpp: define missing 'rebind' type
2022-12-22 11:51:15 +01:00
Sergei Trofimovich
438d5d8839 src/secure_allocator.hpp: define missing 'rebind' type
`gcc-13` added an assert to standard headers to make sure custom
allocators have intended implementation of rebind type instead
of inherited rebind. gcc change:
    https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=64c986b49558a7

Without the fix build fails on this week's `gcc-13` as:

    [ 92%] Building CXX object tests/CMakeFiles/test_security_curve.dir/test_security_curve.cpp.o
    In file included from /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/ext/alloc_traits.h:34,
                     from /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/stl_uninitialized.h:64,
                     from /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/memory:69,
                     from tests/../src/secure_allocator.hpp:42,
                     from tests/../src/curve_client_tools.hpp:49,
                     from tests/test_security_curve.cpp:53:
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h: In instantiation of 'struct std::__allocator_traits_base::__rebind<zmq::secure_allocator_t<unsigned char>, unsigned char, void>':
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:94:11:   required by substitution of 'template<class _Alloc, class _Up> using std::__alloc_rebind = typename std::__allocator_traits_base::__rebind<_Alloc, _Up>::type [with _Alloc = zmq::secure_allocator_t<unsigned char>; _Up = unsigned char]'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:228:8:   required by substitution of 'template<class _Alloc> template<class _Tp> using std::allocator_traits< <template-parameter-1-1> >::rebind_alloc = std::__alloc_rebind<_Alloc, _Tp> [with _Tp = unsigned char; _Alloc = zmq::secure_allocator_t<unsigned char>]'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/ext/alloc_traits.h:126:65:   required from 'struct __gnu_cxx::__alloc_traits<zmq::secure_allocator_t<unsigned char>, unsigned char>::rebind<unsigned char>'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/stl_vector.h:88:21:   required from 'struct std::_Vector_base<unsigned char, zmq::secure_allocator_t<unsigned char> >'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/stl_vector.h:423:11:   required from 'class std::vector<unsigned char, zmq::secure_allocator_t<unsigned char> >'
    tests/../src/curve_client_tools.hpp:64:76:   required from here
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:70:31: error: static assertion failed: allocator_traits<A>::rebind_alloc<A::value_type> must be A
       70 |                         _Tp>::value,
          |                               ^~~~~

The change adds trivial `rebind` definition with expected return type
and satisfies conversion requirements.
2022-12-20 23:00:53 +00:00
Luca Boccassi
dfbfc59c3f
Merge pull request #4432 from Teebonne/patch-1
sodium, not Sodium
2022-12-06 14:39:21 +01:00
Teebonne
da74015b85
Create Teebonne.md 2022-12-06 10:37:55 +00:00
Francesco Montorsi
c59104a01d
Add ZMQ_TOPICS_COUNT socket option (#4459) 2022-11-29 12:00:11 +00:00
Luca Boccassi
20de92ac0a
Merge pull request #4466 from td-krzysiek/fix-missing-sodium-link-directory
fix missing sodium link_directories
2022-11-24 10:51:11 +01:00
Krzysztof Rosiński
2eb9d59cb7 add relicense note 2022-11-24 10:39:02 +01:00
Krzysztof Rosiński
80e5bfeade fix missing sodium link_directories 2022-11-24 06:40:06 +01:00
Luca Boccassi
037dd199af
Merge pull request #4462 from stephan57160/master
Problem: Android build scripts need more enhancements.
2022-11-21 13:11:48 +01:00
Stephan Guilloux (cos)
684ebb2616 Problem: Main documentation refers to Android NDK 24, when 25 is currently in use.
Solution: Fix invalid NDK reference.
2022-11-21 12:15:59 +01:00
Stephan Guilloux (cos)
fcd519ba66 Android specific documentation update. 2022-11-21 12:15:38 +01:00
Stephan Guilloux (cos)
117ddabd02 Android minor fix in documentation. 2022-11-21 11:41:33 +01:00
Stephan Guilloux (home)
9f47e064a1 Documentation update. 2022-11-21 00:21:30 +01:00
Stephan Guilloux (home)
ebe0edaaa9 More enhancements and configuration variables to Android CI build scripts.
init_dependency_root(): Moved to android_build_helper.sh

ANDROID_DEPENDENCIES_DIR: added to specify a storage for dependencies
when downloaded automatically.

ANDROID_BUILD_DIR: Changed the default in ci_build.sh.

ci_build.sh configures these 2 variables to no more use /tmp by default (
except for Android NDK), but a local clone subfolder.

This helps to find downloaded dependencies and generated binaries.

This avoid to have user permission conflicts, or conflicts with 2
different clones of LIBZMQ (for instance).
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
40620f9b7b Android helpers minor fixes. 2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
30e950abfd Problem: Android dependencies are downloaded in an hard-coded /tmp/tmp-deps.
Solution: Added variable ANDROID_DEPENDENCIES_DIR, and initialize to
/tmp/tmp-deps, to avoid clash with existing code.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
91bc18ee16 Enriched Android helpers
2 more functions are added:
- android_clone_library():

  Similar to android_clone_library(), but fetch a tarball and uncompress it.

  So far, only .tar.gz and .tgz archives are supported, but could be enhanced
  easily, if needed.

- android_init_dependency_root():

  Initialize or check XXX_ROOT, when XXX is a dependency name.

  Enhanced version of init_android_root() in build.sh (to be dropped, then).
  This version is now also applicable in CZMQ & ZYRE CI builds scripts for Android.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
3aeadbd1c2 Problem: android_build_library can be more robust & generic
With these changes, this function is now able to build LIBZMQ but also
(almost) CZMQ, ZYRE (and their dependencies) in native or cross compilation
modes.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
f91e3e41fa Problem: android_clone_library() review
Basically, only local vars renamed.
New coming functions will use the same local vars naming.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
308c94e9d8 Problem: android_download_ndk can be more 'autonomous'. 2022-11-21 00:21:30 +01:00
Francesco Montorsi
7fad9599ab
Fix typo in zmq_socket_monitor_versioned docs (#4458)
* Fix typo in zmq_socket_monitor_versioned docs
2022-11-15 22:18:11 +00:00
Luca Boccassi
3ff3c6cdf3
Merge pull request #4456 from djolemanojlovic/fix_4106
Problem: Handshake timeout error with ZMTP_2_0
2022-11-11 15:14:39 +01:00
Đorđije Manojlović
aeea10c068 Add RELICENSE statement 2022-11-11 12:26:44 +01:00
Đorđije Manojlović
6cc694d8c2 Problem: Handshake timeout error with ZMTP_2_0
When two parties are trying to establish ZMTP connection and do a
handshake, in which one partie selects hanshake version 2 or lower
has been selected, handshake timer fires always (by default after 30s)
as the timer never gets cancelled.

Solution: Cancel handshake timer after handhake has been done.
2022-11-11 12:26:44 +01:00
Luca Boccassi
8d4f4efef0
Merge pull request #4452 from stephan57160/master
Problem: Android helpers have duplicate init code.
2022-10-27 16:09:27 +02:00
Guilloux Stephan (Ubuntu)
6d9c0b8366 Problem: Android helpers have duplicate init code.
Last PRs introduced a duplicate code in Android helper file.
Duplicate "Initialisation" sequence can be observed after the helper functions:

    ########################################################################
    # Initialization

...

    # (Empty string indicates no failure)
    ANDROID_BUILD_FAIL=()

Seen when trying to report last LIBZMQ Android PRs to CZMQ & ZYRE.

Solution: Remove the duplicate code.
2022-10-27 15:46:16 +02:00
Luca Boccassi
1d3ad106ac
Merge pull request #4451 from stephan57160/master
Problem: Android build documentation is outdated.
2022-10-24 23:10:30 +02:00
Luca Boccassi
c1bcb53b12
Merge pull request #4450 from stephan57160/master
Problem: Android docker image is outdated.
2022-10-24 21:32:35 +02:00
Stephan Guilloux (cos)
8742763c04 Problem: Android build documentation to be updated.
Solution: Update Android build documentation.
2022-10-24 21:04:30 +02:00
Stephan Guilloux (cos)
0e887a4037 Problem: Android docker image is outdated.
Solution: Update image.

Added references to tested versions (Ubuntu, debian) and tested NDK.
Carefull though. Android have changed there NDK naming, between 22 and 23.
2022-10-24 20:56:52 +02:00
Luca Boccassi
bfd506094a
Merge pull request #4449 from stephan57160/master
Problem: Android helpers must provide build/clone functions.
2022-10-24 19:58:49 +02:00
Stephan Guilloux (cos)
6fb3a58ca8 Problem: Android helpers must provide build/clone functions.
Reason: Code factorisation & code sharing.

Solution: Create more functions in helper file:
- android_clone_library   # Clone a library source tree.
- android_build_library   # Build a library in its source tree.
2022-10-24 19:32:01 +02:00
Luca Boccassi
3dd2a6964a
Merge pull request #4448 from stephan57160/master
Problem: Android helpers should export more compilation chain related variables
2022-10-24 18:16:28 +02:00
Stephan Guilloux (cos)
69c237efed Problem: Android helpers should export more compilation chain related variables
Among them, CC, LD, CFLAGS, ... could be useful for other tools.

Reason: Many are calculated as "local" to a particular function, which makes
them unavailable outside this helper function.

Solution: Export more variables (CC, LD, CFLAGS, ...).

New exported variables are prefixed with ANDROID_BUILD_xxx.
This naming is expected to avoid any conflicts/problem with other tools:
- ANDROID_BUILD_CC
- ANDROID_BUILD_LD
- ANDROID_BUILD_CFLAGS
- ...
2022-10-24 17:05:20 +02:00
Luca Boccassi
7ff35715ef
Merge pull request #4446 from stephan57160/master
Problem: Android CI build tools does not support LIBSODIUM_ROOT
2022-10-24 14:32:51 +02:00
Stephan Guilloux (cos)
7c3a420be4 Problem: Android CI build tools does not support LIBSODIUM_ROOT
Solution: Implement the current same kind of mechanism as CZMQ & ZYRE, with enhancement.

Enhancement: When required and if LIBSODIUM is not set, the build tool checks
for an already existing clone, close to LIBZMQ. This mechanism is close
to what is done by LIBZMQ/CZMQ/ZYRE for their dependencies.

Additionnaly: Do not copy current source tree to any 'cache' folder. Use
current folder, but make sure all is cleaned before compilation is launched.
This is a lot safer, when building different clones in parrallel...

Enhancement to be reported to CZMQ/ZYRE via ZProject.
2022-10-24 14:10:04 +02:00
Luca Boccassi
34ae0626d4
Merge pull request #4445 from stephan57160/master
Problem: Android CI build helper has no trace function.
2022-10-24 12:08:42 +02:00
Guilloux Stephan (Ubuntu)
e1078f2e7c Problem: Android CI build helper has no trace function.
Solution: Add a trace function.

Requires to move the CI build helper code/check/init/... at the end of
helper file.

This new function is available for (and also used by) build.sh.
Output is like:

    LIBZMQ (x86_64) - Blah ...

To be reported to CZMQ/ZYRE via ZProject.
2022-10-24 10:59:13 +02:00
Stephan Guilloux
2b2fb9c708
Problem: Android NDK 22 download broken since support of NDK 23. (#4444)
* Problem: Android NDK 22 download broken since support of NDK 23.

Due to the PR to support NDK 23.

With NDK 23, the archive file name has changed.
This change is handled by the PR to support NDK23, but now, only 23 and after
are supported.

Also, NDK 23 support introduced a 2nd occurence of the variable
HOST_PLATFORM, with another value. One occurence being exported,
this may confuse next developpers (and it actually confused me).

Solution: Code review

1st occurence is simply dropped, and the algorithm around is changed so that
there is no need of a 'host_platform' kind of stuff.

2nd occurrence is renamed to ANDROID_BUILD_PLATFORM.

Note that 'HOST' is replaced by 'BUILD', as this is the common naming
when talking about the build/compilation machine, when cross compiling.

A dedicated function is created in the helpers, to actually download
the NDK. As this function is made 'public', more checks are performed.

Note:

    To be reported in CZMQ & ZYRE, via ZPROJECT, where NDK is downloaded
    in 2 different files.
2022-10-21 17:36:38 +01:00
Stephan Guilloux
2a7c9efe81
Problem: Android build environment variables need clarifications. (#4443)
* Problem: Android build environment variables need clarifications.

Reason: All are spread and initialized throughout the code.

Solution: Declare, initialize and document environment variables on top of build.sh.

Side effect: This participates to documentation.
2022-10-21 10:55:33 +01:00
Stephan Guilloux
e6e76096bf
Problem: Android APP fails to load ZMQ (ARM64 only) (#4442)
* Problem: Android APP fails to load ZMQ (ARM64 only)

Seen with physical Android devices running ARM64.
Not seen with ARM, X86 or X86_64.

Any Android APP loading ZMQ fails with:
```
[FATAL] Couldn't load library library zmq from jar. Dependency is required!
```

Unpack zyre-android-2.0.1.jar, find libzmq.so for ARM64 and look for missing
symbols:
```
prompt> unzip zyre-android-2.0.1.jar
prompt> cd lib/arm64-v8a
prompt> nm --undefined-only ./libzmq.so | head
                 U __aarch64_ldadd4_acq
                 U __aarch64_ldadd4_acq_rel
                 U __aarch64_ldadd4_rel
                 U __aarch64_ldadd4_relax
                 U __aarch64_ldadd8_acq_rel
                 U __aarch64_ldadd8_relax
                 U __aarch64_swp8_acq
                 U __aarch64_swp8_acq_rel
                 U __aarch64_swp8_rel
                 U __aarch64_swp8_relax
prompt>
```
Some more symbols are missing, but those are relevant for this issue.

OK.
These symbols are present in libc++_shared, but not exported ...:
```
prompt> nm libc++_shared.so | grep aarch64
00000000000ee6d0 t __aarch64_cas1_acq_rel
00000000000ee7a0 t __aarch64_cas8_acq_rel
00000000001028f0 b __aarch64_have_lse_atomics
00000000000ee840 t __aarch64_ldadd4_acq_rel
00000000000ee810 t __aarch64_ldadd4_rel
00000000000ee8a0 t __aarch64_ldadd8_acq_rel
00000000000ee870 t __aarch64_ldadd8_relax
00000000000ee7e0 t __aarch64_swp8_acq_rel
prompt>
```

Issue seen also on the WEB, with GCC & CLANG:
- https://bugzilla.redhat.com/show_bug.cgi?id=1830472
- cea175b838
- ...

Solution: Add `-mno-outline-atomics` to CXXFLAGS (FLUTTER fix).

Additionaly, had to introduce NDK_NUMBER.
This variable is calculated in `android_build_helper.sh`.
It represents the numeric form of NDK_VERSION:
```
  NDK_VERSION          --> NDK_NUMBER
  android-ndk-r25      --> 2500
  android-ndk-r23c     --> 2303
  android-ndk-r22      --> 2200
  android-ndk-r21e     --> 2105
  ... and so on
```

This will help a few other things (NDK download ?).
2022-10-18 10:19:15 +01:00
Luca Boccassi
ec1953e614
Merge pull request #4441 from stephan57160/master
Added RELICENSE statement
2022-10-13 21:36:25 +02:00
Stephan Guilloux (home)
3c50bd6596 Added RELICENSE statement 2022-10-13 21:29:07 +02:00
Luca Boccassi
a3f95107db
Merge pull request #4439 from stephan57160/master
Regression: Android build fails with libsodium.
2022-10-12 10:27:37 +02:00
Stephan Guilloux (cos)
3022e7e099 Regression: Android build fails with libsodium.
Scenario:
```
export CURL=libsodium
cd zyre/builds/android
./ci_build.sh
```

Result:
```
Android (arm) build failed for the following reasons:
  Found no library named libzmq.so libsodium.so
    /home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/lib/libzmq.so libsodium.so
```

Caused by PR #4437, where the 2nd commit was to fix Sonatype findings.

Lesson learnt: Not always a good idea to add double quotes around variables ...

Solution: Make VERIFY an array, so that Sonatype won't complain.
2022-10-12 02:43:10 +02:00
Luca Boccassi
c19f83027d
Merge pull request #4438 from stephan57160/master
Problem: Android CI build scripts need minor enhancements (traces & cleanup)
2022-10-11 23:32:51 +02:00
Stephan Guilloux (cos)
863b329ccd Problem: Android CI build scripts need minor enhancements (traces & cleanup).
Seen when someone has to relaunch `ci_build.sh` manually, for troubleshooting,
or experiment(s), ci_build.sh stops as libraries are already built.

Solution: Clean more temporary/build folders before build.

Note:

  To be reported in ZYRE/CZMQ via ZProject.

When called from ZYRE/CZMQ, it's difficult to identify which build script is
being executed

Solution: Modify each `echo` trace to show the project name and Android architecture in progress.

Note:

  To be reported in ZYRE/CZMQ via ZProject.
2022-10-11 23:08:08 +02:00
Stephan Guilloux
65b33ebefa
Problem: Android APP fails to load ZMQ since NDK r25.x (#4437)
* Problem: Android APP fails to load ZMQ since NDK r25.x

With the help of the dump of ./configure options (former PR):
```
LIBZMQ (arm) - ./configure options to build 'LIBZMQ':
  > --quiet
  > TOOLCHAIN=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64
  > CC=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang
  > CXX=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++
  > LD=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/ld
  > AS=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as
  > AR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  > RANLIB=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  > STRIP=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
  > CFLAGS= -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE
  > CPPFLAGS= -I/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/include
  > CXXFLAGS=
  > LDFLAGS=-L/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/lib -L/tmp/android-ndk-r25/sour\
ces/cxx-stl/llvm-libc++/libs/armeabi-v7a
  > LIBS=-lc -ldl -lm -llog -lc++_shared
  > PKG_CONFIG_LIBDIR=/tmp/android-ndk-r25/prebuilt/linux-x86_64/lib/pkgconfig
  > PKG_CONFIG_PATH=/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/lib/pkgconfig
  > PKG_CONFIG_SYSROOT_DIR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > PKG_CONFIG_DIR=
  > --with-sysroot=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > --host=arm-linux-androideabi
  > --prefix=/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm
  > --disable-curve
  > --without-docs
```

We can observe that LDFLAGS has invalid `-L<path_to_libc++_shared.so>`:
```
-L/tmp/android-ndk-r25/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a

```
This path is no more valid, since NDK r25, where one should use LLVM path.

Ok, once this is fixed, ./configure requires also the path to libc.so.
I don't understand why libc.so is now required, actually, but without this, ./configure fails
to build its conftest.

Solution: Fix invalid LDFLAGS.

Notes:

- To be reported to CZMQ/ZYRE via ZPROJECT.

- Tested successfully with Android Emulator (x86 & x86_64).

- Still need some more work, as execution still fails with physical devices (observed on arm64).

- Introduced `ANDROID_STL`, `ANDROID_STL_ROOT` & `ANDROID_LIBC_ROOT`. All are initialized in `android_build_helper.sh`.

- New mechanism **MUST** be compatible with former NDK versions.
2022-10-11 21:40:13 +01:00
Luca Boccassi
1c92300933
Merge pull request #4435 from stephan57160/master
Problem: Android build system needs some debug (./configure options)
2022-10-06 18:34:04 +02:00
Guilloux Stephan (Ubuntu)
426985cb2c TAB -> SPACE 2022-10-06 11:32:57 +02:00
Guilloux Stephan (Ubuntu)
a20527da7f Problem: Android build system needs some debug (./configure options)
Proposal is to dump ./configure options to have an output like below:

```
LIBZMQ (x86_64) - ./configure options to build 'LIBZMQ':
  > --quiet
  > TOOLCHAIN=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64
  > CC=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang
  > CXX=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang++
  > LD=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/ld
  > AS=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as
  > AR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  > RANLIB=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  > STRIP=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
  > CFLAGS= -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE
  > CPPFLAGS= -I/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64/include
  > CXXFLAGS=
  > LDFLAGS=-L/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64/lib -L/tmp/android-ndk-r25/sources/cxx-stl/llvm-libc++/libs/x86_64
  > LIBS=-lc -ldl -lm -llog -lc++_shared
  > PKG_CONFIG_LIBDIR=/tmp/android-ndk-r25/prebuilt/linux-x86_64/lib/pkgconfig
  > PKG_CONFIG_PATH=/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64/lib/pkgconfig
  > PKG_CONFIG_SYSROOT_DIR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > PKG_CONFIG_DIR=
  > --with-sysroot=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > --host=x86_64-linux-android
  > --prefix=/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64
  > --disable-curve
  > --without-docs
```

Note:

  This mechanism is currently in use to identify/fix a bug in a recent PR for NDK update.

This mechanism is added before every call of `./configure`.

To be reported to CZMQ/ZYRE (via ZPROJECT).
2022-10-06 11:08:06 +02:00
Luca Boccassi
875c2b15c3
Merge pull request #4433 from stephan57160/master
Problem: Android build script may fail silently
2022-10-02 10:21:53 +01:00
Stephan Guilloux (cos)
0d49eddf16 Problem: Android build script may fail silently
Solution: Use `set -e`

Note:
To be reported in ZPROJECT, when generating the same for CZMQ & ZYRE.

Note:
`make clean` may fail when Makefile is not yet generated
(case of 1st call of build.sh after git clone).

Additionnaly, cleaned the dependency folder
(report of ZPROJECT generated scripts).
2022-10-02 02:27:12 +02:00
Teebonne
8061a33e13
sodium, not Sodium
sodium, not Sodium
2022-10-01 15:29:42 +01:00
Luca Boccassi
a782d79d45
Merge pull request #4431 from stephan57160/master
Problem: Android helpers no not validate dependent libraries.
2022-10-01 11:56:10 +01:00
Stephan Guilloux (cos)
8b8fb6d80e Problem: Android helpers no not validate dependent libraries.
Seen in the code:
```
function android_build_verify_so {
...
    for dep_soname do
        if [[ $elfoutput != *"library: [${dep_soname}]"* ]]; then
            ANDROID_BUILD_FAIL+=("Library ${soname} was expected to be linked to library with soname:")
            ANDROID_BUILD_FAIL+=("  ${dep_soname}")
        fi
    done
```

The `for xxx` syntax is wrong, most probably a typo somewhere.

Solution: Fix & complete the `for xxx` loop.

Tested with & without LIBSODIUM (only available dependent library for LIBZMQ).

Note: The same has to be done in ZPROJECT, for CZMQ & ZYRE.
2022-10-01 03:59:23 +02:00
Luca Boccassi
e15fb044ef
Merge pull request #4430 from nyfix/test_spec_req_tmo
avoid intermittent timeouts in test (esp. when run w/ASAN etc.)
2022-09-30 21:45:04 +01:00
Bill Torpey
25b3e7af02 avoid intermittent timeouts in test (esp. when run w/ASAN etc.) 2022-09-30 11:45:19 -04:00
Luca Boccassi
c73447b9e7
Merge pull request #4429 from benjdero/master
Problem: Default Android NDK version is not aligned with zproject
2022-09-26 14:15:03 +01:00
Benjamin Deroche
1f1e8145d0 Problem: Default Android NDK version is not aligned with zproject
Solution: Set NDK r25 as the default. No compatiblity changes required.
2022-09-26 14:47:05 +02:00
Luca Boccassi
ec6f3b1dba
Merge pull request #4427 from stephan57160/master
Problem: builds/android/build.sh fails with CURVE=libsodium
2022-09-22 11:35:00 +01:00
Stephan Guilloux (cos)
d4dd8a5417 Changed more git:gihub.com to https://github.com 2022-09-22 02:47:22 +02:00
Stephan Guilloux (cos)
a7774e38e6 Problem: builds/android/build.sh fails with CURVE=libsodium
How to reproduce:
```
prompt> git clone libzmq
prompt> cd libzmq/builds/android
prompt> export CURVE=libsodium
prompt> ./ci_build.sh
Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.4]: errno=Connection timed out

Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.3]: errno=Connection timed out

Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.3]: errno=Connection timed out

Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.4]: errno=Connection timed out

prompt>
```

Reason: Invalid URL to download libsodium:
```
prompt> grep -s 'git clone' libzmq/builds/android/*.sh
libzmq/builds/android/build.sh:70:        (cd "${cache}" && git clone -b stable --depth 1 git://github.com/jedisct1/libsod
                                                                                          ^^^^^^^^^^^^^^^^^
```

URL should be either:
- `git@github.com:`
- `https://github.com/` same given in [zproject](https://github.com/zeromq/zproject/blob/master/zproject_known_projects.xml#L108-L111).

Solution: Change URL to `https://`.

Result:
```
prompt> export CURVE=libsodium
prompt> ./ci_build.sh
Cloning into 'libsodium'...
remote: Enumerating objects: 659, done.
remote: Counting objects: 100% (659/659), done.
remote: Compressing objects: 100% (586/586), done.
remote: Total 659 (delta 159), reused 220 (delta 34), pack-reused 0
Receiving objects: 100% (659/659), 1.97 MiB | 4.00 MiB/s, done.
Resolving deltas: 100% (159/159), done.
autoconf scripts already exist.
...
libtool: install: /bin/install -c tools/.libs/curve_keygen /home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/bin/curve_keygen
 /bin/mkdir -p '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/include'
 /bin/install -c -m 644 include/zmq.h include/zmq_utils.h '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/include'
 /bin/mkdir -p '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/lib/pkgconfig'
 /bin/install -c -m 644 src/libzmq.pc '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/lib/pkgconfig'
make[2]: Leaving directory `/tmp/android_build/x86_64/libzmq'
make[1]: Leaving directory `/tmp/android_build/x86_64/libzmq'
libzmq android build succeeded
prompt>
```
2022-09-22 00:43:57 +02:00
Jack·Boos·Yu
9d4685d90c
[document] add vcpkg instruction (#4425)
* [document] Add vcpkg instruction step
2022-09-16 11:24:11 +01:00
Luca Boccassi
0ec2178edf
Merge pull request #4422 from minrk/bind-can-fail
Problem: bind can fail after open_socket succeeds on Windows without AF_UNIX
2022-09-08 16:17:39 +01:00
Min RK
bf906ee346
AF_UNIX support may fail on bind 2022-09-08 15:10:04 +02:00
Min RK
b2921d7183
check rc in make_fdpair
since it can fail, e.g. Windows + AF_UNIX
2022-09-08 11:17:51 +02:00
Abael He
4e193f36fc Problem: some tools misdetect null access or broken libsodium implementation
Build all projects

** BUILD SUCCEEDED **

bash-3.2# cd  bin/Debug/
bash-3.2# for x in ./* ; do ./$x 1> /dev/null 2>/dev/null  || echo $x ; done
./test_bind_curve_fuzzer
./test_bind_fuzzer
./test_bind_null_fuzzer
./test_connect_curve_fuzzer
./test_connect_fuzzer
./test_connect_null_fuzzer
Segmentation fault: 11
./test_security_curve
./test_z85_decode_fuzzer
bash-3.2# ./test_bind_curve_fuzzer
bash-3.2# ./test_bind_curve_fuzzer
bash-3.2# ./test_bind_fuzzer
bash-3.2# ./test_bind_null_fuzzer
bash-3.2# ./test_connect_curve_fuzzer
bash-3.2# ./test_connect_fuzzer
bash-3.2# ./test_security_curve
Segmentation fault: 11
bash-3.2# lldb ./test_security_curve
(lldb) target create "./test_security_curve"
Current executable set to '/Users/abaelhe/Downloads/libzmq-master/build/bin/Debug/test_security_curve' (x86_64).
(lldb) r
Process 39009 launched: '/Users/abaelhe/Downloads/libzmq-master/build/bin/Debug/test_security_curve' (x86_64)
Process 39009 stopped
* thread #3, name = 'ZMQbg/IO/0', stop reason = signal SIGSEGV
    frame #0: 0x00007ff80f64f192 libsystem_kernel.dylib`__pthread_sigmask + 10
libsystem_kernel.dylib`__pthread_sigmask:
->  0x7ff80f64f192 <+10>: jae    0x7ff80f64f19c            ; <+20>
    0x7ff80f64f194 <+12>: movq   %rax, %rdi
    0x7ff80f64f197 <+15>: jmp    0x7ff80f64a1c5            ; cerror_nocancel
    0x7ff80f64f19c <+20>: retq
Target 0: (test_security_curve) stopped.
(lldb) bt
warning: could not find Objective-C class data in the process. This may reduce the quality of type information available.
* thread #3, name = 'ZMQbg/IO/0', stop reason = signal SIGSEGV
  * frame #0: 0x00007ff80f64f192 libsystem_kernel.dylib`__pthread_sigmask + 10
    frame #1: 0x00007ff80f685acb libsystem_pthread.dylib`pthread_sigmask + 9
    frame #2: 0x00007ff80f5d1d19 libsystem_c.dylib`abort + 112
    frame #3: 0x0000000100333551 libsodium.23.dylib`_out_of_bounds.cold.1 + 17
    frame #4: 0x0000000100316229 libsodium.23.dylib`_out_of_bounds + 9
    frame #5: 0x0000000100316218 libsodium.23.dylib`sodium_free + 408
    frame #6: 0x00000001005a6d0d libzmq.5.dylib`zmq::secure_allocator_t<unsigned char>::deallocate(this=0x00007000014c6ce0, p="", (null)=96) at secure_allocator.hpp:63:56
    frame #7: 0x00000001005a6c25 libzmq.5.dylib`std::__1::allocator_traits<zmq::secure_allocator_t<unsigned char> >::deallocate(__a=0x00007000014c6ce0, __p="", __n=96) at allocator_traits.h:282:13
    frame #8: 0x00000001005a6484 libzmq.5.dylib`std::__1::__vector_base<unsigned char, zmq::secure_allocator_t<unsigned char> >::~__vector_base(this=0x00007000014c6cd0) at vector:488:9
    frame #9: 0x00000001005acae2 libzmq.5.dylib`std::__1::vector<unsigned char, zmq::secure_allocator_t<unsigned char> >::~vector(this=0x00007000014c6cd0 size=0) at vector:579:5
    frame #10: 0x00000001005ac165 libzmq.5.dylib`std::__1::vector<unsigned char, zmq::secure_allocator_t<unsigned char> >::~vector(this=0x00007000014c6cd0 size=0) at vector:574:5
    frame #11: 0x00000001005ab2e7 libzmq.5.dylib`zmq::curve_server_t::process_hello(this=0x000000010182c600, msg_=0x00006000037001e8) at curve_server.cpp:208:1
    frame #12: 0x00000001005aad30 libzmq.5.dylib`zmq::curve_server_t::process_handshake_command(this=0x000000010182c600, msg_=0x00006000037001e8) at curve_server.cpp:104:18
    frame #13: 0x000000010062ccd7 libzmq.5.dylib`zmq::stream_engine_base_t::process_handshake_command(this=0x000000010182d400, msg_=0x00006000037001e8) at stream_engine_base.cpp:491:32
    frame #14: 0x000000010062ba21 libzmq.5.dylib`zmq::stream_engine_base_t::in_event_internal(this=0x000000010182d400) at stream_engine_base.cpp:309:14
    frame #15: 0x000000010062b665 libzmq.5.dylib`zmq::stream_engine_base_t::in_event(this=0x000000010182d400) at stream_engine_base.cpp:243:22
    frame #16: 0x00000001005c0889 libzmq.5.dylib`zmq::kqueue_t::loop(this=0x00006000037000c0) at kqueue.cpp:218:30
    frame #17: 0x00000001005eefa9 libzmq.5.dylib`zmq::worker_poller_base_t::worker_routine(arg_=0x00006000037000c0) at poller_base.cpp:146:51
    frame #18: 0x0000000100637e66 libzmq.5.dylib`thread_routine(arg_=0x0000600003700100) at thread.cpp:256:5
    frame #19: 0x00007ff80f6864e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #20: 0x00007ff80f681f6b libsystem_pthread.dylib`thread_start + 15
(lldb)
2022-08-10 22:21:00 +01:00
Luca Boccassi
05701e4a56
Merge pull request #4412 from caicaiking/master
Problem: get_opt function read the options value not thread safe
2022-08-10 22:15:08 +01:00
Abama.cai
65eee9354a
Update tongsong-cai.md 2022-08-11 03:02:56 +08:00
Abama cai
6d131718f3 Add RELICENSE statement 2022-08-11 02:46:31 +08:00
Abama cai
717d1980ee Problem: get_opt function read the options value maybe not thread safe
Solution: use scoped lock to prevent them from being modified during reading
2022-08-10 22:35:14 +08:00
Luca Boccassi
0251be4d77
Merge pull request #4409 from nevalsar/master
Problem: Incorrect formatting of documentation in zmq_udp.txt
2022-08-03 16:19:01 +01:00
Nevin Valsaraj
5a9523227a
Add relicense for nevalsar
Add relicense statement for nevalsar.
2022-08-03 08:09:26 -07:00
Nevin Valsaraj
ea1962b825
Problem: Incorrect formatting of documentation in zmq_udp.txt
Solution: Replace incorrect underline pattern in zmq_udp.txt that
makes part of the text show up as pre-formatted code block with
regular underline pattern.
2022-07-22 09:19:13 -07:00
Luca Boccassi
8fd1ec0592
Merge pull request #4406 from abaelhe/patch-2
Permission to Relicense under relevant approved license
2022-07-17 16:10:58 +01:00
Abael He
ceaccd7f9d
Permission to Relicense under relevant approved license
Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
By Abael He<abaelhe@icloud.com>
2022-07-17 23:08:08 +08:00
Luca Boccassi
37224c93de
Merge pull request #4383 from benjdero/master
Revert "Problem: Libs crash at runtime on Android when built with NDK 23+
2022-05-12 09:55:35 +01:00
Benjamin Deroche
5f6f708f29 Revert "Problem: Libs crash at runtime on Android when built with NDK 23+"
This reverts commit 9c6f09cbe551e08782b67fae367b56dc69f656f7.
2022-05-11 17:25:46 +02:00
Luca Boccassi
2d805026bb
Merge pull request #4382 from benjdero/master
Problem: Libs crash at runtime on Android when built with NDK 23+
2022-05-10 18:02:17 +01:00
Benjamin Deroche
9c6f09cbe5 Problem: Libs crash at runtime on Android when built with NDK 23+
Solution: Fix the recently updated scripts
2022-05-10 15:21:06 +02:00
Luca Boccassi
f7d4910017
Merge pull request #4381 from benjdero/master
Problem: Accidentaly deleted a comment when updating Android build sc…
2022-05-09 15:25:18 +01:00
Benjamin Deroche
a49a4d0997 Problem: Accidentaly deleted a comment when updating Android build scripts
Solution: Restore it
2022-05-09 16:18:02 +02:00
Luca Boccassi
ecfa5eccfb
Merge pull request #4380 from benjdero/master
Problem: Android build scripts does not work with latest NDK versions
2022-05-09 13:47:26 +01:00
Benjamin Deroche
d1ee71a634 Problem: Android build scripts does not work with latest NDK versions
Solution: Update the build scripts to work with NDK versions r23 and r24
2022-05-09 12:15:49 +02:00
Bill Torpey
edfbb1ced6
default to not building tests if cmake version can't handle skipped tests (#4376)
* default to not building tests if cmake version can't handle skipped tests (see https://github.com/zeromq/libzmq/issues/4375)
2022-05-03 22:18:44 +01:00
Luca Boccassi
572eb008f1
Merge pull request #4365 from bluca/obs
Problem: cannot use obs_scm which is faster than tar_scm
2022-04-09 01:16:41 +01:00
Luca Boccassi
c5d1bbf6f0 Problem: cannot use obs_scm which is faster than tar_scm
Solution: rename dsc file so that it matches expected format
2022-04-08 01:41:50 +01:00
Luca Boccassi
2ab472e735 Problem: manual release OBS trigger is flaky
Solution: use workflow instead
2022-04-08 01:23:51 +01:00
Luca Boccassi
e9e01faa73
Merge pull request #4360 from darkdragon-001/fix-pkgconfig
Fix pkgconfig
2022-03-15 13:43:25 +00:00
Darkdragon-001
58c2ac15b4 Add RELICENSE. 2022-03-15 12:44:01 +01:00
Darkdragon-001
ff2987d24a Fix pkgconfig
Use CMake install variables instead of hardcoded values.
2022-03-15 12:12:21 +01:00
Luca Boccassi
f13f891c91
Merge pull request #4357 from ferdnyc/doc-spec-ref
Problem: Docs reference outdated spec
2022-03-03 10:34:50 +00:00
FeRD (Frank Dana)
159bf0f3ad Problem: Docs reference outdated spec
Solution: Update with URL to current stable spec
2022-03-03 02:20:39 -05:00
Luca Boccassi
81a8211eeb
Merge pull request #4348 from rex4539/typos
Fix typos
2022-02-10 23:35:37 +00:00
Dimitris Apostolou
538fdb6e4c
Add relicense statement 2022-02-11 01:31:14 +02:00
Dimitris Apostolou
6b8dd84a63
Fix typos 2022-02-11 00:45:06 +02:00
Luca Boccassi
ca6dc86178
Merge pull request #4346 from Jasper-Bekkers/patch-2
Fix minor casing issue in include files
2022-02-08 20:52:21 +00:00
Jasper Bekkers
d01f244cf6
Add relicense 2022-02-08 16:17:29 +01:00
Jasper Bekkers
aea0665eec
Fix minor casing issue in include files
This fails when compiling x86_64-pc-windows-msvc targets on a case sensitive file system.
2022-02-06 22:12:19 +01:00
Luca Boccassi
a01d259db3
Merge pull request #4334 from bluca/gcc_fix
Problem: build fails with gcc 12
2022-01-18 20:17:32 +00:00
Luca Boccassi
176d72cc9b Problem: build fails with gcc 12
Solution: change test_monitor and example
2022-01-18 16:15:07 +00:00
Wojciech Kula
f03391640b Add relicense statement for Cziken 2022-01-13 09:08:23 +00:00
Luca Boccassi
612170a570 Add relicense grant from hitstergtd
Received via email, message-id:

<CAMiF1Pqf9c=KPAC9SMinKdPLVdfwB0D1B-ZbJAEMzyZmSyqQQg@mail.gmail.com>
2022-01-08 14:26:09 +00:00
Luca Boccassi
36f3d50c59
Merge pull request #4328 from tranthamp/master
Add license file for tranthamp
2022-01-07 19:06:54 +00:00
Patrick Trantham
e38a7f84d8 Add license file for tranthamp 2022-01-07 12:55:45 -06:00
fanquake
6473bf4166 problem: kevent udata is now void* on NetBSD Current (10)
solution: check for the intptr_t variant in configure.
2022-01-03 18:03:14 +00:00
Luca Boccassi
8e98b79f23
Merge pull request #4325 from fanquake/fix_builtin_typo
problem: typo in configure.ac output
2022-01-03 12:56:35 +00:00
fanquake
25d0a280e0
problem: typo in configure.ac output
solution: fix the typo
2022-01-03 19:44:07 +08:00
Luca Boccassi
ee09926cbd
Merge pull request #4323 from boscosiu/cmake-export-use-draft-api
Problem: ZMQ_BUILD_DRAFT_API define is not propagated to dependent CMake projects
2021-12-29 12:46:47 +00:00
boscosiu
4d0f4ebd69 Problem: ZMQ_BUILD_DRAFT_API define is not propagated to dependent CMake projects
Solution: Add the definition to the relevant CMake targets in public scope.  Fixes #4194
2021-12-28 18:23:05 -08:00
Luca Boccassi
7755c8442e
Merge pull request #4317 from tarmo/router-metadata-prefetch
Problem: ROUTER loses first frame metadata on message prefetch
2021-12-16 12:20:31 +00:00
Tarmo Tänav
74529d97b2 Problem: ROUTER loses first frame metadata on message prefetch
Solution: copy metadata on prefetch to the first frame
2021-12-16 10:17:44 +02:00
Luca Boccassi
ab9c7add58
Merge pull request #4314 from ThalesGroup/issue-4312-epoll-invalid-null-pointer
Issue 4312 : Fix epoll invalid event data pointer
2021-12-03 18:31:51 +00:00
patrick-volante
f6eb59c269 issue-4312 Add relicnce file. 2021-12-03 16:21:51 +01:00
patrick-volante
2c415b6f68 Problem: inside the event array, epoll return an event with invalid data pointer which create a segmentation fault
Tests to prevent segmentation fault due to null pointer are added.
2021-12-03 11:58:20 +01:00
Luca Boccassi
1d3633742a
Merge pull request #4311 from myd7349/fix-sockaddr_un-redefinition
Problem: struct sockaddr_un redefinition
2021-11-25 12:07:00 +00:00
myd7349
471ea68caf Problem: struct sockaddr_un redefinition
The definition of sockaddr_un should be protected by the include guard.
2021-11-25 08:35:58 +08:00
myd7349
5eb0b00c87
Problem: In rare cases, afunix.h doesn't contain a definition for struct sockaddr_un (#4310)
* Problem: In rare cases, afunix.h doesn't contain a definition for struct sockaddr_un

According to https://github.com/microsoft/vcpkg/issues/21623,
struct sockaddr_un might be unavailable on some machines even afunix.h exists.

For example, on some machines, the content of afunix.h looks like this:
typedef struct _SOCKADDR_UN
{
     ADDRESS_FAMILY Family;
     wchar_t Path[63];
} SOCKADDR_UN, *PSOCKADDR_UN;

but on other machines, it may looks like this:
#define UNIX_PATH_MAX 108

typedef struct sockaddr_un
{
    ADDRESS_FAMILY sun_family;
    char sun_path[UNIX_PATH_MAX];
} SOCKADDR_UN, *PSOCKADDR_UN;

Fixes #3949

References:
- [Enable Unix-domain sockets support on Windows](8f3ec75de4)
- [AF_UNIX equivalent for Windows](https://stackoverflow.com/questions/9029174/af-unix-equivalent-for-windows)
- https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
2021-11-24 14:55:45 +00:00
Luca Boccassi
5a9c174dab
Merge pull request #4309 from dgloe-hpe/3313-fork-detection
Problem: Fix fork detection on gcc 7
2021-11-23 19:17:26 +00:00
David Gloe
72b5359049 Problem: Missing relicense statement for dgloe-hpe
Solution: Add new author to the existing HPE relicense statement.
2021-11-23 16:27:52 +00:00
David Gloe
240e36af4e Problem: Fix fork detection on gcc 7
Solution: When compiling with gcc 7 and newer, the program produced by
AC_CHECK_FUNCS(fork) produces a warning, which results in configure
incorrectly disabling fork support. Fix the issue by using an
AC_COMPILE_IFELSE which correctly detects fork availability.
Tested by running configure and make check on a system with gcc 7
installed, and verifying that HAVE_FORK was defined correctly.

See issue #3313.
2021-11-23 15:47:57 +00:00
Niyas Sait
4b48007927 add win/arm64 to supported platform list 2021-11-15 14:33:20 +00:00
Luca Boccassi
2375ca8b26
Merge pull request #4299 from nsait-linaro/enable_woa64
Get cycle count from ARM64 PMCCNTR_EL0 register
2021-11-15 12:56:22 +00:00
Niyas Sait
0d86aa517f Fix linting error reported by clang-format 2021-11-15 10:31:21 +00:00
Niyas Sait
c3b3ea7ec2 add relicense for niyas sait 2021-11-15 09:42:28 +00:00
Niyas Sait
e9f86fee61 Get cycle count from ARM64 PMCCNTR_EL0 register 2021-11-15 09:12:11 +00:00
Luca Boccassi
329824cafe
Merge pull request #4294 from thielepaul/master
Problem: if ZMQ_XPUB_VERBOSER is used with proxies unsubscribe messages are lost
2021-11-05 17:44:34 +00:00
Paul Thiele
add81132c5 Problem: no relicense agreement by thielepaul
Solution: added relicense agreement
2021-11-05 15:15:19 +01:00
Paul Thiele
6737d50933 Problem: if ZMQ_XPUB_VERBOSER is used with proxies unsubscribe messages are lost
Solution: add socket option ZMQ_XSUB_VERBOSE_UNSUBSCRIBE to forward all unsubscribe messages
2021-11-05 15:12:31 +01:00
Luca Boccassi
d62fd1ac7a Problem: formatting broken
Solution: run make clang-format-diff
2021-11-03 19:39:50 +00:00
Qqzk
bb7a1cc018 Update decoder_allocators.cpp
zmq::shared_message_memory_allocator::deallocate () need to descontruct the object created by new operator.
2021-11-03 19:37:41 +00:00
Qqzk
8f238ae0b4 Create qzkLicense 2021-11-03 15:30:31 +00:00
Luca Boccassi
bddd0bc690
Merge pull request #4290 from thxkiwi/PR_issue_4287
Problem: (Windows) /GL /LTCG breaks builds when the compiler/linker o…
2021-10-29 00:30:24 +01:00
Michael Ngarimu
a6ed5b7a3f Adding missing RELICENSE file
Resolves zeromq/libzmq#4287
2021-10-28 11:28:19 -07:00
Michael Ngarimu
7c625afcc0 Problem: (Windows) /GL /LTCG breaks builds when the compiler/linker of static library differs from compiler/linker of executable
Solution: Enable /GL and /LTCG if and only if building as a Release (i.e. non-DEBUG) DLL.

Resolves zeromq/libzmq#4287
2021-10-27 22:17:21 -07:00
mjvankampen
36d6b5d923
Problem: polling_util.hpp missing sys/select.h include (#4283)
* Problem: polling_util.hpp missing sys/select.h include

Solution: include sys/select.h
2021-10-21 20:56:32 +01:00
Luca Boccassi
b2ab09bf79
Merge pull request #4285 from mjvankampen/fix/cmake_cxx_standard
Problem: newer cmake versions set CMAKE_C(XX)_FLAGS at a later stage …
2021-10-21 14:51:14 +01:00
Mark Jan van Kampen
c036d66286
Problem: newer cmake versions set CMAKE_C(XX)_FLAGS at a later stage not allowing a user to override the standard
Solution: check for C(XX)_STANDARD/CMAKE_C(XX)_STANDARD as well
Fixes #4284
2021-10-21 12:24:12 +02:00
Benjamin Deroche
519e2bf129
Problem: Android build script isn't compatible with latest NDK version (#4278)
* Problem: Android build script isn't compatible with latest NDK version

Solution: Update to Android NDK r22b
2021-10-18 10:05:10 +01:00
Gudmundur Adalsteinsson
7c2df78b49 Problem: Invalid and inconsistent poller docs
Solution: Fix it and make example code more complete
2021-10-10 11:55:56 +01:00
Luca Boccassi
e39a93e652 Problem: OBS CI config needs update following breaking change
https://openbuildservice.org/2021/09/28/support-for-push-events/
2021-10-07 11:45:59 +01:00
E. G. Patrick Bos
9fbfa40bab Problem: when linking to libzmq in my project, I want zmq symbols to remain invisible to users of my library. There is no way to control this, since visibility is set automatically through ZMQ_EXPORT based on OS and compiler.
Solution: add a preprocessor variable ZMQ_NO_EXPORT that, when set, bypasses the automatic ZMQ_EXPORT determination block and just sets ZMQ_EXPORT to empty.

By combining this solution at configuration time with manually passing -fvisibility=hidden to CXXFLAGS, I solved my visibility problem. Just passing -fvisibility=hidden is not enough, because __attribute__ ((visibility ("default"))) has higher priority.
2021-10-07 10:48:58 +01:00
Luca Boccassi
5d8d857540
Merge pull request #4264 from analogist/master
mingw-w64 10.3 build fix - winsock socket() return unsigned
2021-09-25 11:31:27 +01:00
James Wu
228edc92a9 fix test comparison between -1 and unsigned winsock2.h socket return 2021-09-24 13:13:19 -07:00
Luca Boccassi
de0b3e72dd
Merge pull request #4255 from egpbos/zmq_ppoll
add zmq_ppoll
2021-09-24 12:56:27 +01:00
E. G. Patrick Bos
36e4c9b474
add zmq_ppoll
zmq_ppoll mostly mimics zmq_poll behavior, except for the added feature of being able to specify a signal mask. Signals in this mask will be blocked during execution of zmq_ppoll. Switching of the process' active signal mask happens atomically with the actual poll call, so that no race conditions can occur. This behavior is useful when one wants to gracefully handle POSIX signals without race conditions. See e.g. the discussion below https://250bpm.com/blog:12/ for an explanation.

Also includes two new tests:
1. test_zmq_ppoll_fd does the same thing as test_zmq_poll_fd, demonstrating backwards compatibility with zmq_poll when used with a default signal mask.
2. test_zmq_ppoll_signals demonstrates the use of zmq_ppoll with a signal mask, blocking out SIGTERM everywhere except in zmq_ppoll, allowing to handle the signal in one place without having to worry about race conditions.
2021-09-24 11:04:20 +02:00
Luca Boccassi
f730e03835
Merge pull request #4259 from bluca/ci
Problem: Travis is no longer free for FLOSS projects
2021-09-22 21:13:27 +01:00
Luca Boccassi
cf8afcc411 Problem: Travis is no longer free for FLOSS projects
Solution: switch to Github Actions

Travis recently started enforcing credits for OSS projects without
any funding. While it is possible to get free credits, it is a manual
step that involves contacting customer support via email and asking to
add them, every week. While this does not require money, it requires
something far scarcer: volunteers time.

Drop Travis and migrate to Github Actions.
2021-09-22 16:42:09 +01:00
Luca Boccassi
6f200814cd Problem: some tests occasionally fail on OBS
Solution: ignore them
2021-09-22 16:42:09 +01:00
Luca Boccassi
2a954b301e Problem: test_security_curve always fails when run by CMake under Github Actions
Solution: skip it
2021-09-22 16:42:09 +01:00
Luca Boccassi
276bab8d3b Problem: test_socks and test_proxy hang under valgrind in Github Actions
Solution: skip them
2021-09-22 16:40:17 +01:00
Luca Boccassi
e3d37a82e1 Problem: some tests time out in CI under Valgrind
Solution: triple the timeouts
2021-09-22 16:40:17 +01:00
Luca Boccassi
0f706bdd97 Problem: formatting errors
Solution: run make clang-format-diff
2021-09-22 16:40:17 +01:00
Luca Boccassi
11f0802912 Problem: VMCI might not be supported by CI
Solution: skip tests if zmq_bind fails with EAFNOSUPPORT
2021-09-22 16:40:17 +01:00
Luca Boccassi
37c548d62b Problem: test_pair_tcp_cap_net_admin requires privileges and might fail
Solution: skip it if EOPNOTSUPP is returned instead of failing
2021-09-22 16:40:17 +01:00
Luca Boccassi
0eefa8b582 Problem: README.md does not mention Libera.chat
Solution: fix it

Closes #4261
2021-09-22 15:56:26 +01:00
Tim Blechmann
2bfef9aff3 epoll: add missing override statement 2021-09-22 10:11:03 +01:00
Luca Boccassi
ade334faa4
Merge pull request #4258 from timblechmann/feature/add-missing-override-statements
add missing override statements
2021-09-21 15:24:51 +01:00
Tim Blechmann
51e97c5480 add missing override statements 2021-09-21 20:13:41 +08:00
Tim Blechmann
5d04e20a01 relicense: add relicense statement for tim blechmann 2021-09-21 20:13:41 +08:00
Gudmundur Adalsteinsson
056f37f352 Problem: fast vector resize bug
Solution: init correct vector size and copy previous data into it
2021-09-01 09:58:34 +01:00
Luca Boccassi
80fef55955
Merge pull request #4246 from YunYe-Pu/yunye-patch-wss
Problem: WSS broken under high load
2021-08-31 18:31:52 +01:00
Yunye Pu
c8dfa36935 Add relicense statement for Yunye Pu 2021-08-31 13:47:33 +08:00
Yunye Pu
0e3073f402 Problem: WSS broken under contention
Solution: Make wss_engine_t's read and write consistent with stream_engine_base_t
2021-08-31 13:29:41 +08:00
Min RK
bcb659e00e
Problem: calling randombytes_close with libsodium can crash Contexts in other threads (#4242)
* add opt-out for randombytes_close

Problem: randombytes_close is either a no-op or unsafe when a Context is running.

Unfortunately, there does not appear to be a single always correct choice,
so let builders pick between two not-great options.

Opting out can leak an FD on /dev/urandom which may need to be closed explicitly.
However, with the default behavior,
using multiple contexts with CURVE can crash with no application-level workaround available.

randombytes_close is not threadsafe and calling it while still in use by a Context can cause a crash.

For implementations using /dev/[u]random, this can leave up to one leftover FD per process.

The libsodium docs suggest that this function rarely needs to be called explicitly.
2021-08-13 15:11:29 +01:00
Luca Boccassi
f6e99e72ec
Merge pull request #4236 from ChrisThrasher/enable-drafts-messages
Correct messages about whether or not the draft API is being built
2021-08-03 09:39:17 +01:00
Chris Thrasher
4756c04da0 Correct messages about whether or not the draft API is being built
If you cloned and built this repo or built it from a submodule, it
would always report "Build and install draft classes and methods"
which first might be wrong if ENABLE_DRAFTS is OFF but also didn't
match the tense of other similar messages about build options.
2021-08-02 21:13:14 -06:00
Luca Boccassi
c45750a29f Problem: formatting broken
Solution: run make clang-format-diff
2021-07-30 14:40:47 +01:00
Luca Boccassi
1caef95b48
Merge pull request #4235 from saschavv/fix_widechar_path_crash
Fix crash in context with wide characters in path
2021-07-30 14:39:44 +01:00
Sascha van Vliet
efd62e3e38 Add missing relicense agreement
To add code to the repository a relicense agreement is needed.
2021-07-30 13:28:11 +02:00
Sascha van Vliet
720ad05529 Fix crash in context with wide characters in path
The create_ipc_wildcard_address doesn't takes wide characters
into account while building a string from a temporary path.
The tmpnam_s can return a path in the user temp folder which
can contain special characters.
The string that is returned from the create_ipc_wildcard_address
will be used in the bind routine which will return an error code.
2021-07-30 10:47:08 +02:00
Luca Boccassi
a2d21f63cf
Merge pull request #4234 from sabotagebeats/fix/issues/4231
fix: building libzmq fails with error src/clock.cpp
2021-07-24 11:48:25 +01:00
sabotagebeats
430ffe61b7 fix: relicense 2021-07-24 01:36:58 -07:00
sabotagebeats
06aba27b04 fix: building libzmq fails with error src/clock.cpp:131:16: error: unused variable 'nsecs_per_usec' 2021-07-22 21:53:19 -07:00
Arnaud Loonstra
72b03aa281
Merge pull request #4230 from bluca/ci
Problem: some CI jobs always fail
2021-07-04 22:46:43 +02:00
Luca Boccassi
ddfddf8f01 Problem: appveyor has broken libsodium cache
Solution: fetch and reset instead of pulling
2021-07-04 18:35:14 +01:00
Luca Boccassi
0e795be8a8 Problem: OSX Travis builds using homebrew are timing out
Solution: use the Travis addon instead of installing manually
2021-07-04 16:15:32 +01:00
Luca Boccassi
6f76026541 Problem: Appveyor build fails to clone libsodium
Solution: set git user/email, otherwise git clone fails
2021-07-04 16:15:32 +01:00
Luca Boccassi
5cc6755174
Merge pull request #4227 from ChrisThrasher/remove_language_extensions
Use standard C and C++
2021-07-01 19:21:20 +01:00
Chris Thrasher
ef110f92c3 Add RELICENSE statement 2021-07-01 09:38:04 -06:00
Chris Thrasher
4fc83178aa Use standard C11 and C++11
Retain GNU extensions for C99 and C++98 since testing old compilers
is especially difficult and these compilation modes exist to maintain
compatability.
2021-07-01 09:37:02 -06:00
Doron Somech
1d2e972876
Merge pull request #4228 from bluca/update_wepoll
Problem: wepoll is out of date, known issues on Windows
2021-07-01 01:43:53 -04:00
Luca Boccassi
c7edbea971 Problem: wepoll is out of date, known issues on Windows
Solution: update to latest version, v1.5.8
2021-06-30 20:44:27 +01:00
Bill Torpey
ca8e30ed48
fixes for UBSAN warnings (#4223)
Problem: UBSAN shows warnings

Solution: fix alignment issues and signed to unsigned conversion
2021-06-29 13:02:35 +01:00
Luca Boccassi
fb9fb00eda Problem: formatting is broken
Solution: run clang-format-diff
2021-06-15 19:22:19 +01:00
Luca Boccassi
9b2e1fa26c
Merge pull request #4211 from egpbos/patch-1
fix unused parameter warning when POLL_BASED_ON_SELECT
2021-06-15 19:21:01 +01:00
E. G. Patrick Bos
535bc2abb8
add relicense statement for egpbos
Copyright of the Netherlands eScience Center.
2021-06-15 17:39:02 +02:00
Luca Boccassi
3b9ef60f2b
Merge pull request #4215 from bluca/test_inproc_connect
Problem: test_inproc_connect occasionally fails on slow archs
2021-06-15 14:05:07 +01:00
Luca Boccassi
de03c9a6ab Problem: test_inproc_connect occasionally fails on slow archs
Solution: actually send a message rather than just opening/closing
the sockets, as connecting is asynchronous.

tests/test_inproc_connect.cpp:341:test_bind_before_connect:PASS
tests/test_inproc_connect.cpp:342:test_connect_before_bind:PASS
tests/test_inproc_connect.cpp:343:test_connect_before_bind_pub_sub:PASS
tests/test_inproc_connect.cpp:344:test_connect_before_bind_ctx_term:PASS
tests/test_inproc_connect.cpp:345:test_multiple_connects:PASS
tests/test_inproc_connect.cpp:346:test_multiple_threads:PASS
Assertion failed: _state == active || _state == waiting_for_delimiter (src/pipe.cpp:504)
0  0xffffa015d3e4 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::zmq_abort(char const*)+0xc)
1  0xffffa017b208 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::pipe_t::process_delimiter()+0xb0)
2  0xffffa017b420 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::pipe_t::read(zmq::msg_t*)+0xd8)
3  0xffffa01a4b28 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::xpub_t::xread_activated(zmq::pipe_t*)+0x110)
4  0xffffa01a3758 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::xpub_t::xattach_pipe(zmq::pipe_t*, bool, bool)+0x68)
5  0xffffa018dc3c in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::socket_base_t::attach_pipe(zmq::pipe_t*, bool, bool)+0x94)
6  0xffffa016f288 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::object_t::process_command(zmq::command_t const&)+0x148)
7  0xffffa014ee3c in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::ctx_t::connect_inproc_sockets(zmq::socket_base_t*, zmq::options_t const&, zmq::ctx_t::pending_connection_t const&, zmq::ctx_t::side)+0xdc)
8  0xffffa0150bec in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::ctx_t::connect_pending(char const*, zmq::socket_base_t*)+0x1fc)
9  0xffffa0190034 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::socket_base_t::bind(char const*)+0x3e4)
10  0xaaaae50475d8 in /usr/src/packages/BUILD/tests/.libs/test_inproc_connect (simult_bind(void*)+0x28)
11  0xffffa019bfb8 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (thread_routine+0x70)
12  0xffffa00e07e4 in /lib/aarch64-linux-gnu/libpthread.so.0 (start_thread+0x18c)
13  0xffff9fdcab2c in /lib/aarch64-linux-gnu/libc.so.6 (clone+0x5c)
2021-06-14 11:43:06 +01:00
Luca Boccassi
d3d685bbc1
Merge pull request #4214 from bluca/obs_pr
Problem: build/test breakages on various distros are discovered only after merge
2021-06-14 11:42:36 +01:00
Luca Boccassi
6fc817a18e Problem: build/test breakages on various distros are discovered only after merge
Solution: try the new Open Build Service PR integration workflow
2021-06-14 10:48:24 +01:00
Doron Somech
416b7aea47
Merge pull request #4213 from bluca/build
Problem: build with curve fails on GCC 11
2021-06-13 20:03:39 +03:00
Luca Boccassi
92b2c38a2c Problem: build with curve fails on GCC 11
Solution: ignore false positives due to compiler bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578

Fixes https://github.com/zeromq/libzmq/issues/4206
2021-06-13 16:21:55 +01:00
Patrick Bos
ece244dd3c
fix unused parameter warning when POLL_BASED_ON_SELECT
When the build is performed with cmake option `-DPOLLER=select`, the following warning is triggered from 4 locations that import `polling_util.hpp`:

```
[...]/src/polling_util.hpp:115:50: warning: unused parameter 'pollset_' [-Wunused-parameter]
inline size_t valid_pollset_bytes (const fd_set &pollset_)
                                                 ^
1 warning generated.
```

This is fixed here.
2021-06-10 12:23:22 +02:00
Luca Boccassi
b40a793142
Merge pull request #4207 from benjdero/master
Problem: Outdated Android build tools
2021-06-07 11:19:49 +01:00
Benjamin Deroche
2af72796a7 Problem: Outdated Android build tools
Solution: Update Android NDK version
2021-06-07 11:34:13 +02:00
Luca Boccassi
e86237da58
Merge pull request #4205 from somdoron/master
problem: no way to know when connection is temporarly dropped
2021-06-06 16:21:24 +01:00
Doron Somech
1c6c5514ed problem: no way to know when connection is temporarly dropped
This is important in order to send the login sequence of a client to the server.

Solution: add ZMQ_HICCUP_MSG to a socket, socket would send that message whenever a connection get temporarly disconnected
2021-06-06 17:14:22 +03:00
Luca Boccassi
d7e439d336 Problem: travis badge points to old travis-ci.org
Solution: Change badge to point to travis-ci.com
2021-05-27 10:05:06 +01:00
Tobias Schlüter
2ac9755ee9 Remove Windows-specific defines from zmq.h.
These are redundant with the ones in windows.hpp
and aren't needed for the public interface.
2021-05-26 16:04:24 +01:00
Simon Giesecke
78ea4ee787
Merge pull request #4193 from somdoron/master
problem: outpipe can be null when sending disconnect msg
2021-05-19 14:14:35 +02:00
Doron Somech
30a0c590d8 problem: outpipe can be null when sending disconnect msg 2021-05-19 14:41:27 +03:00
Luca Boccassi
e3c4ec241a
Merge pull request #4192 from minrk/appveyor-gh-release
[appveyor] upload windows artifacts to GitHub releases
2021-05-19 09:22:52 +01:00
Min RK
60bf76a4fd [appveyor] upload artifacts to GitHub releases 2021-05-18 22:50:11 +02:00
Luca Boccassi
0c5da25dcb
Merge pull request #4190 from yitzchak/fix-poll-docs
Update fd slot type to zmq_fd_t
2021-05-16 23:52:19 +01:00
Tarn W. Burton
59040f8dfe Add RELICENSE for yitzchak 2021-05-16 16:10:54 -04:00
Tarn W. Burton
d6e7ea44f7 Update fd slot type to zmq_fd_t 2021-05-16 08:50:06 -04:00
Chengye Ke
04c37982b1
Support so_busy_poll (#4188)
* Support so_busy_poll.
2021-05-14 23:05:56 +01:00
Luca Boccassi
ceb5fa39fe
Merge pull request #4181 from neheb/patch-1
fix unused variables under windows
2021-05-03 09:07:21 +01:00
Rosen Penev
a02cbd0646
fix unused variables under windows
Fixes compilation as -Werror is passed.
2021-05-02 16:49:27 -07:00
Luca Boccassi
497bcacb0e
Merge pull request #4176 from nyfix/reconn-options
ZMQ_RECONNECT_STOP options are intended to be inclusive
2021-04-29 19:26:55 +01:00
Bill Torpey
6bf7728e6e ZMQ_RECONNECT_STOP options are intended to be inclusive (i.e., can be OR'ed together), and so values must be powers of two 2021-04-28 10:30:35 -04:00
Luca Boccassi
2e932bb536
Merge pull request #4175 from mceSystems/master
Fix iOS build failure for x86_64
2021-04-28 11:11:01 +01:00
Koby Boyango
00d1000538 Fix iOS build failure for x86_64 2021-04-28 11:41:36 +03:00
Luca Boccassi
b4f758da35
Merge pull request #4174 from jlsantiago0/build-fix-bsd
Fix Build BSD
2021-04-15 23:16:33 +01:00
Luca Boccassi
895e976f51
Merge pull request #4173 from jlsantiago0/mingw-build-fix2
Fix MINGW with pthread cv
2021-04-15 23:15:50 +01:00
Luca Boccassi
43cb2600ca
Merge pull request #4172 from jlsantiago0/mingw-build-fix1
MINGW Build Fix.
2021-04-15 21:48:24 +01:00
Jose Santiago
7d8b149681 Fix Build BSD
This fixes build under BSD. Tested with OpenBSD-6.4 and FreeBSD-11.3.
2021-04-15 14:04:27 -05:00
Jose Santiago
e6e683731d Fix MINGW with pthread cv
ZeroMQ works and MINGW and pthread conditional variables if pthread
mutexes are used. POSIX conditional variables require POSIX mutexes, but
ZeroMQ unconditionally uses WIN32 critital sections even when configured
with pthread conditional variables. This of course does not work. This
patch fixes the build so that MINGW builds do not use WIN32 critical
sections and instead use POSIX mutexes when configured with pthread
conditional variables.

Tested with:

```
 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ ../libzmq/configure --host=x86_64-w64-mingw32 --prefix=`pwd`/stage --enable-debug --disable-Werror --enable-libunwind=no   --with-cv-impl=pthread --enable-libbsd=no
```

```
x86_64-w64-mingw32-gcc --version

   x86_64-w64-mingw32-gcc (GCC) 10.2.0.....
```
2021-04-15 13:43:55 -05:00
Jose Santiago
235654697f MINGW Build Fix.
There is a macro that redefines claose to closesocket, but then close is
later defined in unistd.h which is included in testutil_unity.cpp which
then causes the regular close() prototype to be defined with the new
function name closesocket which does not match the signature of the
original closesocket in winsock2.h from the toolchain.

We can work around this issue, by making sure that unistd.h is included
before the macro is defined. HMM> Yes macro substitution is the root of
evil.
2021-04-15 12:53:02 -05:00
Luca Boccassi
3070a4b246
Merge pull request #4163 from bluca/gcc11
Problem: build broken on Fedora Rawhide and SUSE Leap
2021-03-22 18:41:04 +00:00
Luca Boccassi
b82777bfb6 Problem: compiler error with GCC 11
Solution: downcast size to uint32_t to match vector size
range
2021-03-20 19:22:46 +00:00
Luca Boccassi
02be28e86b rpm: fix license shortname 2021-03-20 15:49:48 +00:00
Luca Boccassi
5a139a556a rpm: fix Group metadata 2021-03-20 15:45:27 +00:00
Luca Boccassi
347555f4f6 rpm: run make check in %check area 2021-03-20 15:44:34 +00:00
Luca Boccassi
4e8f02a8da
Merge pull request #4156 from nyfix/clangtidy-new
add more suppressions
2021-03-04 09:48:57 +00:00
Luca Boccassi
229fbeee1a
Merge pull request #4155 from nyfix/clangtidy-format
fix formatting problems in .clang-tidy options
2021-03-03 19:36:25 +00:00
Bill Torpey
251a155833 add suppressions for clang-tidy-10 on ubuntu:
-hicpp-avoid-goto: duplicate of -cppcoreguidelines-avoid-goto
-readability-magic-numbers: duplicate of -cppcoreguidelines-avoid-magic-numbers
-readability-identifier-naming: avoid complaints about variables like i, n
2021-03-03 14:26:17 -05:00
Bill Torpey
dc2ee409cb - fix formatting problems in .clang-tidy options 2021-03-03 11:14:49 -05:00
Luca Boccassi
bd5f5a1093
Merge pull request #4148 from bluca/vmci
Problem: VMCI build broken
2021-02-23 11:57:18 +00:00
Luca Boccassi
4bb9a4ccff Problem: no CI coverage for VMCI transport
Solution: add a build test
2021-02-21 11:50:38 +00:00
Luca Boccassi
8fe5b54b8a Problem: VMCI build broken
Solution: refactor it
2021-02-21 11:50:38 +00:00
Luca Boccassi
4ecb0454fb
Merge pull request #4149 from gummif/gfa/strtok
Problem: strtok is not thread safe
2021-02-21 10:30:54 +00:00
Luca Boccassi
38bb82b0c8 Problem: vmci tests built in repo root
Solution: move them with the rest
2021-02-20 21:38:02 +00:00
Gudmundur Adalsteinsson
c325ed127e Problem: strtok is not thread safe
Solution: use strtok_r
2021-02-20 20:29:17 +00:00
Luca Boccassi
c515671bc8
Merge pull request #4145 from gummif/gfa/malloc-vec
Problem: C style malloc and free
2021-02-19 14:06:20 +00:00
Luca Boccassi
31ebe35144
Merge pull request #4146 from gummif/gfa/unused-vars
Problem: Unused member variables _last_in
2021-02-19 14:05:44 +00:00
Luca Boccassi
fc6255ffec
Merge pull request #4143 from jlsantiago0/master
Fix Fedora33 s390x build.
2021-02-19 14:05:27 +00:00
Gudmundur Adalsteinsson
10078a9225 Problem: Unused member variables _last_in
Solution: Remove them
2021-02-18 20:38:42 +00:00
Gudmundur Adalsteinsson
4b61c67ef0 Problem: C style malloc and free
Solution: use new and delete
2021-02-18 20:31:55 +00:00
Jose Santiago
ce74e39ae3 Add Relicense statement. 2021-02-18 11:47:32 -06:00
Jose Santiago
72c8cc3912 Fix Fedora33 s390x build. 2021-02-18 11:05:29 -06:00
Luca Boccassi
54c7f7969b Problem: formatting errors
Solution: run make clang-format-diff
2021-02-08 11:39:09 +00:00
Luca Boccassi
8432cc37f8
Merge pull request #4137 from tarmo/xpub-manual-subscription-race
Problem: XPUB socket allows manual subscription on terminated pipe
2021-02-08 09:57:15 +00:00
Tarmo Tänav
2df7ab6aee Problem: XPUB socket allows manual subscription on terminated pipe
Solution: Avoid setting pipe as _last_pipe if it has been terminated
2021-02-08 06:02:10 +02:00
Doron Somech
b3722cf983
Merge pull request #4132 from sab24/master
Fixes Firefox WebSocket upgrade request in WebSocket engine
2021-01-30 23:09:52 +02:00
sab24
bdcc4cf06c Adds RELICENSE 2021-01-30 20:05:15 +01:00
sab24
133f0d00b6 Fixes indentation 2021-01-30 16:40:26 +01:00
sab24
15408f5609 Fixes Firefox WebSocket upgrade request in WebSocket engine 2021-01-30 16:23:48 +01:00
Luca Boccassi
92282785ed Add relicense grant by eponsko
Received via email, message-id:

CAGOEPvVonw=NicjcBKQcdcxGm43fOMgZfiga-4FoAQ=Efau8GQ@mail.gmail.com
2021-01-28 11:08:27 +00:00
Lingqiao Zhao
cc65a9ec93
Problem: exception thrown when debugging cl.exe x64 build with LLDB (#4129)
* Problem: exception thrown when debugging
cl.exe x64 build with LLDB

Solution: Use __try __except with cl.exe and
use pthread_setname_np with MinGW.
Remove usage of pushing exception handler
to TIB->ExceptionList.
2021-01-27 10:39:48 +00:00
Luca Boccassi
16af1bd622 Problem: test_pubsub broken everywhere
Solution: disable it
2021-01-18 09:42:33 +00:00
mjvankampen
2dd24d6d80
Problem: norm fails to compile under windows (#4123)
* Makes norm useable (but maybe slow) on windows
2021-01-18 08:42:14 +00:00
Simon Giesecke
53104ec1b9
Merge pull request #4126 from bluca/news
Problem: 4.3.4 is out, need new version
2021-01-17 16:57:48 +01:00
Luca Boccassi
c7e0342a0a Problem: wrong year in NEWS for 4.3.4
Solution: fix it
2021-01-17 13:24:32 +00:00
Luca Boccassi
cef3225370 Problem: 4.3.4 is out, need new version
Solution: bump to 4.3.5
2021-01-17 12:10:01 +00:00
Luca Boccassi
4097855dda Finalize changelog for 4.3.4 2021-01-17 12:01:58 +00:00
Luca Boccassi
90deed866b
Merge pull request #4124 from bluca/news
Update NEWS and fix build on GNU/Hurd
2021-01-17 11:32:32 +00:00
Luca Boccassi
a9357db1d3 Problem: NEWS out of date with latest changes
Solution: update it
2021-01-16 17:48:29 +00:00
Luca Boccassi
2347a76413 Problem: build broken on debian/hurd
Solution: fix it
2021-01-16 17:48:29 +00:00
Luca Boccassi
e58f047791 Problem: typos in zmq_setsockopt.txt
Solution: fix them
2021-01-16 15:41:58 +00:00
Luca Boccassi
f3eb6916d0
Merge pull request #4120 from martin-g/master
Build and test on ARM64 CPU architecture (#1)
2021-01-11 13:28:46 +00:00
Martin Grigorov
89ff13b54f
Allow failures on ARM64
test_monitor fails on TravisCI
I wasn't able to reproduce the problem on my aarch64 VM and with Docker+QEMU
2021-01-11 14:03:48 +02:00
Martin Tzvetanov Grigorov
98e4f9eb4b
Sign the ICLA 2021-01-11 09:20:32 +02:00
Luca Boccassi
e2a8e7cd08
Merge pull request #4121 from bluca/kfreebsd
Problem: build still broken on kFreeBSD
2021-01-09 14:09:35 +00:00
Luca Boccassi
0742d432e7 Problem: build still broken on kFreeBSD
Solution: fix refactor mistake introduced by:

    091df743a81f3899bd70166060c2082ea0cbd57c

    Fixes https://github.com/zeromq/libzmq/issues/4113
2021-01-08 20:41:51 +00:00
Martin Grigorov
b08a03ac87
Build and test on ARM64 CPU architecture (#1)
* Build and test on ARM64 CPU architecture

Add an extra TravisCI job that runs `ci_build.sh` on arm64/aarch64 CPU architecture
2021-01-08 14:53:29 +02:00
Luca Boccassi
2bf998f7e0 Problem: build broken on kFreeBSD
Solution: fix refactor mistake introduced by:

091df743a81f3899bd70166060c2082ea0cbd57c

Fixes https://github.com/zeromq/libzmq/issues/4113
2021-01-06 22:23:09 +00:00
Andy Heroff
2998ff34aa
Problem: No direct support for setting socket priority (#4118)
* Problem: No direct support for setting socket priority

Solution: Add ZMQ_PRIORITY socket option, which sets the
SO_PRIORITY socket option on the underlying socket. This
socket option is not supported under Windows. Check option
and set socket option on creation of underlying socket.
2021-01-06 22:22:41 +00:00
Luca Boccassi
9936ce8bb9
Merge pull request #4116 from zedalaye/remove_pair_socket_fd
Cleanup socket FD after pair is established. Fix #4086
2021-01-04 18:55:25 +00:00
Pierre Yager
e8f265d136 Added RELICENSE statement 2021-01-04 17:00:59 +01:00
Pierre Yager
dcb6a24ed0 Cleanup socket FD after pair is established. Fix #4086
Avoid filling Temp directory with temporary files.
2021-01-04 17:00:58 +01:00
Constantin Rack
b600eb76d0
Merge pull request #4115 from skaes/relicense-skaes-commits
PROBLEM: missing permission to relicense commits by GH handle skaes
2021-01-04 07:12:20 +00:00
Stefan Kaes
32d30f6937 PROBLEM: missing permission to relicense commits by GH handle skaes
SOLUTION: add file containing permission statement
2021-01-04 08:03:04 +01:00
Luca Boccassi
8b27f11ad1
Merge pull request #4110 from bluca/fixes
Problem: PUB+WS broken, git blame hard to use
2021-01-02 11:41:55 +00:00
Luca Boccassi
26a2e83069
Merge pull request #4107 from bluca/relicense
Problem: typo in RELICENSE/mrvn.md
2020-12-26 23:33:10 +00:00
Luca Boccassi
a6f1000964 Problem: git blame became more difficult with clang-format change
Solution: let git ignore that commit when blame is ran.

Requires to set a git config:

git config blame.ignoreRevsFile .git-blame-ignore-revs

Or to pass --ignore-revs-file .git-blame-ignore-revs to git blame.
2020-12-23 17:44:07 +00:00
Luca Boccassi
41c4ce1817 Problem: ZMQ_PUB broken on ZMQ_WS
Solution: encode subscribe/cancel messages until there are appropriate
opcodes.
Regression introduced by 253e9dd27b3d7c0d736d4fa3802e87d00bd915c9

Fixes https://github.com/zeromq/libzmq/issues/4101
2020-12-23 17:44:07 +00:00
Luca Boccassi
a49aa0d294
Merge pull request #4109 from stanpl/if_nametoindex_fix
Solution: if_nametoindex function is now used when available
2020-12-23 14:12:07 +00:00
Stanisław Maciaś
bac5f69685 Added missing relicense file 2020-12-23 15:04:08 +01:00
Stanisław Maciaś
26cbd4f43f if_nametoindex function is now used when available 2020-12-23 12:32:16 +01:00
Luca Boccassi
f8b84cf86a Problem: typo in RELICENSE/mrvn.md
Solution: fix it
2020-12-22 21:28:32 +00:00
Luca Boccassi
10140050c7
Merge pull request #4105 from bluca/relicense
Add relicense statement from sradomski and mrvn
2020-12-21 17:36:11 +00:00
Luca Boccassi
e389ee53bd Add relicense statement from mrvn
Received via email, message id:

trinity-91a2dd41-0e1c-4976-9811-f32cad78566e-1608482688602@3c-app-webde-bap48
2020-12-20 17:00:00 +00:00
Luca Boccassi
2643470ff0 Add relicense statement from sradomski
As indicated by author's comment on Github:

https://github.com/zeromq/libzmq/pull/810#issuecomment-748587654
2020-12-20 10:57:55 +00:00
Luca Boccassi
76849aa3d5
Merge pull request #4104 from gummif/patch-1
Problem: Build error on MSVC with C++20 in ip.cpp
2020-12-18 12:59:09 +00:00
Gudmundur Adalsteinsson
83032a4d33
Problem: Build error on MSVC with C++20 in ip.cpp
Solution: Move initialization of variables before gotos.
2020-12-18 10:32:59 +00:00
Luca Boccassi
828d6eacba
Merge pull request #4098 from agnosy/problem/android-build-failure
Problem: Android build fails.
2020-12-05 11:10:46 +00:00
Sailaja Nagireddy
89a536dd1d Problem: Android build fails.
Solution: Update the android build helper to locate readelf binary
          included in android ndk.
2020-12-04 20:56:50 +05:30
Luca Boccassi
1533bc3620
Merge pull request #4095 from boxkey/boxkey-patch-2
add relicense.md file
2020-11-29 17:31:03 +00:00
boxkey
0344937e79
add relicense.md file
add relicense.md file boxkey.md
2020-11-30 01:15:34 +08:00
Luca Boccassi
17c5fca9ea
Merge pull request #4075 from nyfix/ndebug
The _DEBUG preprocessor definition is typically only set on Windows. …
2020-11-26 09:07:18 +00:00
Luca Boccassi
33a51f9e8b
Merge pull request #4088 from bluca/test_spec_req_eagain
Problem: tests fails to receive with EAGAIN on slow architectures
2020-11-23 13:32:59 +00:00
Luca Boccassi
bb15d9dd77 Problem: add-path no longer supported in Github Action
Solution: update setup-bsbuild action version

https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
2020-11-18 13:49:50 +00:00
Luca Boccassi
d77c60a0db Problem: tests fails to receive with EAGAIN on slow architectures
Solution: remove arbitrary timeouts, as they are testing reliable pipes
with no contention, so if it can connect eventually it has to
work. The overall test timeout covers cases where it doesn't.

If tests want to use receive timeouts, they need to handle EAGAIN
properly.
2020-11-18 13:29:33 +00:00
Luca Boccassi
dae894157c
Merge pull request #4083 from ambitslix/patch-1
Create ambitslix.md
2020-11-12 09:43:26 +00:00
Attila M. Szilagyi
b54ad2b373
Create ambitslix.md 2020-11-11 22:07:36 -08:00
Luca Boccassi
1d6b232920
Merge pull request #4082 from zoedberg/fix_autogen
autogen.sh: fix autoreconf exit code log
2020-11-10 19:19:53 +00:00
Zoe Faltibà
b4c7954910
RELICENSE: add zoedberg grant 2020-11-10 20:08:38 +01:00
Zoe Faltibà
51bffc05f5
autogen.sh: fix autoreconf exit code log 2020-11-10 17:31:22 +01:00
Luca Boccassi
6f46375440
Merge pull request #4080 from ardrabczyk/docs-fixes
Fix a typo and wrong order of assert() in the examples
2020-11-10 09:38:33 +00:00
Arkadiusz Drabczyk
f0add07303 Problem: no relicense agreement by Arkadiusz Drabczyk
Solution: add a relicense agreement

Signed-off-by: Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
2020-11-10 10:35:21 +01:00
Luca Boccassi
c642d0f4ee
Merge pull request #4079 from ardrabczyk/errno-fixes
Problem: not all possible errno values were documented (#4078)
2020-11-10 09:16:59 +00:00
Arkadiusz Drabczyk
ce7c1cec87 Problem: assert() was used on undefined variables in the examples
Solution: use assert() on defined variables

Signed-off-by: Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
2020-11-09 22:52:12 +01:00
Arkadiusz Drabczyk
d3f59e68ea Problem: there is a typo: 'threda names'
Solution: fix a typo: threda names -> thread names

Signed-off-by: Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
2020-11-09 22:36:17 +01:00
Arkadiusz Drabczyk
d43ae07456 Problem: not all possible errno values were documented (#4078)
Solution: document more possible errno values

Signed-off-by: Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
2020-11-09 22:23:43 +01:00
Bill Torpey
57e9551744 The _DEBUG preprocessor definition is typically only set on Windows. (e.g., see https://stackoverflow.com/questions/2290509/debug-vs-ndebug/29253284#29253284) 2020-11-02 16:58:14 -05:00
Luca Boccassi
b2a0842063
Merge pull request #4074 from ffontaine/master
src/compat.hpp: fix build with libbsd and strlcpy
2020-11-02 09:18:30 +00:00
Fabrice Fontaine
8cb5708829 src/compat.hpp: fix build with libbsd and strlcpy
Don't include bsd/string.h if strlcpy is also defined in string.h to
avoid the following build failure on uclibc:

In file included from src/compat.hpp:41:0,
                 from src/ipc_address.cpp:31:
/tmp/instance-0/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/bsd/string.h:44:54: error: declaration of 'size_t strlcpy(char*, const char*, size_t)' has a different exception specifier
 size_t strlcpy(char *dst, const char *src, size_t siz);
                                                      ^
In file included from src/compat.hpp:34:0,
                 from src/ipc_address.cpp:31:
/tmp/instance-0/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/string.h:424:15: error: from previous declaration 'size_t strlcpy(char*, const char*, size_t) throw ()'
 extern size_t strlcpy(char *__restrict dst, const char *__restrict src,
               ^

Fixes:
 - http://autobuild.buildroot.org/results/51220b1b82774e8f6f6ed8593c58d2e3c31a1531

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2020-11-02 07:58:01 +01:00
Luca Boccassi
97b5f8560d Problem: formatting errors
Solution: run make clang-format-diff
2020-10-09 20:08:05 +01:00
Luca Boccassi
f578b26790
Merge pull request #4060 from martin-ksti/fix-stack-overflow-on-windows-x64
fix stack overflow on windows x64
2020-10-09 19:01:44 +01:00
Luca Boccassi
4f6d94de42
Merge pull request #4061 from martin-ksti/patch-1
Create martin-ksti.md
2020-10-09 17:15:56 +01:00
martin-ksti
4e5a328998
Create martin-ksti.md 2020-10-09 18:07:47 +02:00
Martin Labsch
3156764265 fix stack overflow on windows x64 2020-10-09 15:17:46 +02:00
Luca Boccassi
22d218a182 Problem: CI fails with formatting errors
Solution: run make clang-format-diff
2020-09-28 10:30:20 +01:00
C-sir
d4f03edd47
stop reconnect after called zmq_disconnect() (#4053) 2020-09-28 09:59:57 +01:00
Davit Kalantaryan
dfc85af4d0
using '_M_ARM' macros for Windows ARM comilation (#4051)
[why]
This is a standard microsoft compiler macros https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=vs-2019
This macros is defined for example for Windows 10 core Iot (for example paspberry pi windows compilation)

Co-authored-by: Davit Kalantaryan <davit.kalantar@desy.de>
2020-09-26 18:39:28 +01:00
Stéphane Valès
1495ccad58
Problem: warnings with xcode (#4043)
* remove override instructions to avoid a chain reaction with other overridden functions missing it

Co-authored-by: Stéphane Valès <stephane@vales.fr@users.noreply.github.com>
Co-authored-by: stephane vales <vales@ingenuity.io>
2020-09-17 15:12:36 +01:00
Stéphane Valès
86bf83bce8
Problem: cmake generates faulty xcode projects also for dynamic lib (#4042)
* apply the use of sources for xcode project also to dynamic library

Co-authored-by: Stéphane Valès <stephane@vales.fr@users.noreply.github.com>
Co-authored-by: stephane vales <vales@ingenuity.io>
2020-09-16 15:52:18 +01:00
Stéphane Valès
c098fa3c18
Problem: using targets in CMakeLists.txt creates a corrupted xcode project with cmake (#4041)
* use sources instead of objects only when generating an xcode project

Co-authored-by: Stéphane Valès <stephane@vales.fr@users.noreply.github.com>
Co-authored-by: stephane vales <vales@ingenuity.io>
2020-09-16 14:25:46 +01:00
Doron Somech
e915449184
Merge pull request #4038 from bluca/api_breakage
Problem: zmq_ctx_get API broken
2020-09-11 09:54:50 +03:00
Luca Boccassi
792ffe4d7a Problem: zmq_ctx_get API broken
Solution: restore EINVAL as errno on unknown option.
Broken by https://github.com/zeromq/libzmq/pull/3642 which started to
return EFAULT instead
2020-09-10 22:37:01 +01:00
Doron Somech
44786232f7
Merge pull request #4034 from bluca/news
Problem: 4.3.3 is out, need new version
2020-09-07 20:42:00 +03:00
Luca Boccassi
04f5bbedee Finalize changelog for 4.3.3 2020-09-07 11:12:14 +01:00
Luca Boccassi
f2e364777e Problem: 4.3.3 is out, need new version
Solution: bump to 4.3.4
2020-09-07 11:12:14 +01:00
Luca Boccassi
b97ce25c26 Problem: NEWS does not mention security advisories
Solution: add them
2020-09-07 11:12:14 +01:00
Simon Giesecke
fd094fe2fc
Merge pull request #4032 from bluca/fuzzers
Problem: no fuzzing coverage for ZMQ_STREAM
2020-09-06 19:21:15 +02:00
Luca Boccassi
e708623c12 Problem: no fuzzing coverage for ZMQ_STREAM
Solution: add tests
2020-09-06 11:05:15 +01:00
Doron Somech
cbce0cbffe
Merge pull request #4031 from sigiesec/test-coverage-3
Some more test coverage for invalid IPC addresses
2020-09-05 15:03:07 +03:00
Simon Giesecke
2741e93361 Problem: no test for (invalid) too long ipc endpoint name
Solution: add test
2020-09-05 13:17:13 +02:00
Simon Giesecke
90d5cf29d8 Problem: no test for (invalid) empty abstract ipc endpoint name
Solution: add test
2020-09-05 13:17:13 +02:00
Luca Boccassi
04ac547c20
Merge pull request #4030 from sigiesec/test-coverage-3
Problem: code duplicated between handshake and out_event
2020-09-04 16:24:28 +01:00
Luca Boccassi
446d61a13b
Merge pull request #4029 from sigiesec/test-coverage-2
Add test covering tcp_address_mask_t and remove unused code
2020-09-04 15:51:33 +01:00
Simon Giesecke
6a45737073 Problem: code duplicated between handshake and out_event
Solution: extract do_handshake member function
2020-09-04 16:39:16 +02:00
Simon Giesecke
af7df64ae7 Problem: mask and to_string member functions of tcp_address_mask_t are not referenced
Solution: remove them
2020-09-04 15:51:43 +02:00
Simon Giesecke
c6301206dc Problem: no tests for ZMQ_TCP_ACCEPT_FILTER
Solution: add some tests
2020-09-04 15:51:33 +02:00
Luca Boccassi
e7974c3b72
Merge pull request #4028 from sigiesec/test-coverage
Some improvements to the test coverage job
2020-09-04 11:07:16 +01:00
Simon Giesecke
3033b1ef18 Problem: coverage build is using old distro
Solution: update to default distro
2020-09-04 11:10:37 +02:00
Simon Giesecke
eb7b7db05d Problem: assert used instead of zmq_assert
Solution: replace by zmq_assert
2020-09-04 10:58:16 +02:00
Simon Giesecke
bafd626dff Problem: coverage build script doesn't recognize several config options
Solution: extrace and reuse regular config option setting
2020-09-04 10:58:16 +02:00
Simon Giesecke
74543a921c Problem: coverage report includes irrelevant files
Solution: properly set file filter to only include files in src except tweetnacl
2020-09-04 10:58:16 +02:00
Simon Giesecke
1d62d7c94a Problem: coverage is not measured with all features
Solution: enable all features on coverage build
2020-09-04 10:58:16 +02:00
Luca Boccassi
9c1801554f
Merge pull request #4027 from ffontaine/master
configure.ac: fix build with openpgm-5-3-128
2020-09-02 10:33:40 +01:00
Fabrice Fontaine
883d432c29 configure.ac: fix build with openpgm-5-3-128
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2020-09-02 07:54:36 +02:00
Doron Somech
9fe56b175d
Merge pull request #4023 from bluca/fuzzers
Problem: setsockopt of CURVE key ignores parameter length
2020-08-23 16:21:27 +03:00
Luca Boccassi
97f8274129 Problem: setsockopt of CURVE key ignores parameter length
Solution: create std::string using length to avoid overflow
2020-08-23 13:47:17 +01:00
Luca Boccassi
8cc56d9f0f
Merge pull request #4022 from bluca/fuzzers
Problem: test_socket_options_fuzzer does not work
2020-08-22 21:54:46 +01:00
Luca Boccassi
5b0956c381 Problem: test_socket_options_fuzzer does not work
Solution: fix it
2020-08-22 17:01:10 +01:00
Luca Boccassi
2fb04c1018 Problem: ZMQ_METADATA setsockopt ignores length and assumes nUL-terminated string
Solution: use length too
2020-08-22 17:01:10 +01:00
Doron Somech
241240b79f
Merge pull request #4020 from bluca/fuzz_options
Problem: test_socket_options_fuzzer can pass non-NUL terminated data …
2020-08-21 18:38:54 +03:00
Luca Boccassi
6386bc13d3 Problem: test_socket_options_fuzzer can pass non-NUL terminated data buffers
Solution: ensure they are valid strings
2020-08-21 16:23:24 +01:00
Doron Somech
36dc251ed0
Merge pull request #4019 from bluca/fuzz_options
Problem: zmq_z85_decode doesn't check its input length
2020-08-21 18:08:43 +03:00
Luca Boccassi
b84e164698 Problem: zmq_z85_decode doesn't check its input length
Solution: do it
2020-08-21 16:03:57 +01:00
Doron Somech
f447169e82
Merge pull request #4018 from bluca/fuzz_options
Problem: no fuzz testing for options
2020-08-21 18:01:24 +03:00
Luca Boccassi
f43013a7d1 Problem: no fuzz testing for options
Solution: add it
2020-08-21 15:25:55 +01:00
Doron Somech
eecd796106
Merge pull request #4017 from bluca/news
Problems: build broken on Solaris, NEWS out of date
2020-08-21 16:41:40 +03:00
Luca Boccassi
64a575eede Problem: test_bind_ws_fuzzer needs DRAFT sockets
Solution: use ZMQ_DEALER instead
2020-08-21 14:39:08 +01:00
Luca Boccassi
a4dbdb614e Problem: some platforms do not have strnlen
Solution: move compat redefinition to compat.hpp header so that
it can be used from msg.cpp
2020-08-21 14:39:08 +01:00
Luca Boccassi
d40c79cef4 Problem: missing items in NEWS
Solution: add them
2020-08-21 14:22:28 +01:00
Doron Somech
700fd13cad
Merge pull request #4016 from bluca/news
Problem: NEWS out of date
2020-08-21 14:51:51 +03:00
Luca Boccassi
7f1e219d09 Problem: NEWS out of date
Solution: add latest entries
2020-08-21 12:05:39 +01:00
Doron Somech
29f5ede684
Merge pull request #4013 from bluca/fuzzers
Problem: ws_engine leaks memory if Sec-WebSocket-Protocol header pass…
2020-08-17 06:53:52 +03:00
Luca Boccassi
b02bdd566a Problem: ws_engine leaks memory if Sec-WebSocket-Protocol header passed multiple times
Solution: ensure it's passed only once
2020-08-16 22:35:42 +01:00
Doron Somech
d280c44fe0
Merge pull request #4011 from bluca/fuzzers
Problem: use-after-free in WS
2020-08-15 17:06:58 +03:00
Luca Boccassi
c733067d6d Problem: use-after-free in WS
Solution: bail out of the stream engine out_event if ws_engine raises
an error
2020-08-15 14:31:09 +01:00
Doron Somech
1412078db6
Merge pull request #4010 from bluca/fuzzers
Problem: WS might use handshake buffer for data
2020-08-15 14:59:30 +03:00
Luca Boccassi
110551d5df Problem: formatting errors
Solution: apply clang-format-diff
2020-08-15 12:26:14 +01:00
Luca Boccassi
1668432894 Problem: WS might use handshake buffer for data
Solution: check for it before reusing it to avoid overflows
2020-08-15 12:25:52 +01:00
Luca Boccassi
87ee106438
Merge pull request #4009 from benjdero/master
Problem: libzmq use outdated Android NDK version
2020-08-14 16:57:23 +01:00
Benjamin Deroche
83667099bb Problem: libzmq use outdated Android NDK version
Solution: Update Android NDK version
2020-08-14 16:49:14 +02:00
Stéphane Valès
3da6fde592
Problem : if socket is invalid for any reason, as_socket_base_t() will return NULL and 'as_socket_base_t (items_[i].socket)->is_thread_safe ()' will crash (#4004)
* Problem : if socket is invalid for any reason, as_socket_base_t() will return NULL and 'as_socket_base_t (items_[i].socket)->is_thread_safe ()' will crash

Solution: expand the code to test the returned value from as_socket_base_t() before calling is_thread_safe() and make zmq_poll() return -1 if as_socket_base_t() returned NULL.

NB: this occurred on the destruction of a SUB socket while running a zloop and without previously calling zloop_reader_set_tolerant and zloop_reader_end. When entering zmq_poll, the PUB socket was already destroyed but still registered in the poll items.

NB: making zmq_poll return -1 is OK as it is what happens anyway, and errno is properly set to ENOTSOCK by as_socket_base_t() when it returns NULL.

Co-authored-by: Stéphane Valès <stephane@vales.fr@users.noreply.github.com>
2020-08-07 09:13:52 +01:00
Luca Boccassi
5d77cd8118
Merge pull request #4005 from stvales/patch-1
Create StephaneVales.md
2020-08-07 09:13:23 +01:00
Stéphane Valès
a246b255d3
Create StephaneVales.md 2020-08-07 09:53:40 +02:00
Davit Kalantaryan
0a424486a0
Modifications to compile code for WINDOWS ARM and ARM64 (#4003)
* Modifications to compile code for WINDOWS ARM and ARM64

[why]
In order to compile ZMQ related software on WINDOWS ARM

[how]
Replaced code in the file clock.cpp around the line 240.
Added intrinsics for ARM to replace '__rdtsc'

[todo]
Find proper tick counter query for ARM64 (see file:clock.cpp,line:~250)

* RELICENSEing

[why]
To make usage of changed code properly usable by libzmq project team

[how]
Added file /RELICENSE/kalantar.md with necessary information
2020-08-06 17:41:15 +01:00
Luca Boccassi
22e37933b3
Merge pull request #3997 from kaczmarj/enh/dockerfile
make Docker image smaller + use `debian:buster-slim` base
2020-07-30 00:18:02 +01:00
Jakub Kaczmarzyk
131716c897 add relicense statement for @kaczmarj 2020-07-29 19:11:14 -04:00
Jakub Kaczmarzyk
ddbef32103 make Docker image smaller + use debian:buster-slim base
This commit updates the Dockerfile to use multiple stages. In the first stage, compile-time dependencies are installed, and libzmq is compiled and tested. The second stage starts with a fresh, slim Docker image, and the compiled outputs of the first stage are copied over. Runtime dependencies, like libsodium and kerberos, are installed as well.
2020-07-29 15:39:07 -04:00
Luca Boccassi
7deb8ded43
Merge pull request #3996 from tarmo/xpub-unmatch
Problem: XPUB keeps matched pipes between failed non-blocking sends
2020-07-29 17:35:18 +01:00
Tarmo Tänav
27bf9bf7d0 Problem: XPUB keeps matched pipes between failed non-blocking sends
Solution: always unmatch all pipes before matching for an initial
message part.
2020-07-29 16:35:43 +03:00
Tarmo Tänav
75669de3c7 RELICENSE: Tarmo Tänav 2020-07-29 16:29:48 +03:00
Luca Boccassi
49f4c1898b
Merge pull request #3994 from fanquake/no_werror_macos
build: compile with -Werror by default on Darwin
2020-07-21 11:15:38 +01:00
fanquake
3a7b77d5f6
build: compile with -Werror by default on Darwin
Using -Werror has been disabled for Darwin since very early on in the
codebase. However at this point, I can't see an obvious reason why it
should still be disabled compared to when building for the other
operating systems.

I've tested compiling on macOS using Apple Clang 11.0.3, LLVM Clang
10.0.0 and GCC 10.1.
2020-07-21 16:08:21 +08:00
mileschet
571045d129
Ios135 (#3991)
* build_ios.sh now build for different archs

* change typo on build_ios.sh

Co-authored-by: Roberto Santacroce Martins <roberto.martins@transferoswiss.ch>
2020-07-11 13:11:59 +01:00
Luca Boccassi
d2d9719b4e
Merge pull request #3987 from fanquake/gethrtime_not_gethrtimei
build: fix gethrtime() function check in CMake
2020-07-07 21:36:35 +01:00
fanquake
c14817075c
build: fix gethrtime() function check in CMake
This looks like a typo introduced by
2d8ef84760b673d90db331e077fac369665cdbbd.
2020-07-07 21:45:08 +08:00
Luca Boccassi
1529ffbf42
Merge pull request #3986 from fanquake/ipc_mingw_cross_compile
build: disable IPC when cross-compiling with mingw
2020-07-07 09:11:42 +01:00
Luca Boccassi
4b4e19f915
Merge pull request #3985 from fanquake/test_flag_before_turning_off_warnings
build: test for warning options before enabling -Wno-* variant
2020-07-07 09:10:52 +01:00
Luca Boccassi
42a0977988
Merge pull request #3984 from fanquake/darwin_no_wno_uninitialized
build: don't compile with -Wno-uninitialized on darwin
2020-07-07 09:10:07 +01:00
fanquake
a396b780fd
build: disable IPC when cross-compiling with mingw
Master doesn't currently compile when crossing compiling using
autotools and mingw-w64. i.e:

```bash
x86_64-w64-mingw32-g++ (GCC) 9.3.0

./autogen.sh
./configure --host=x86_64-w64-mingw32
make src/libzmq.la
....
  CXX      src/libzmq_la-curve_server.lo
In file included from src/address.cpp:37:
src/ipc_address.hpp:40:10: fatal error: sys/socket.h: No such file or directory
   40 | #include <sys/socket.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
```

I assume this hasn't been caught because appveyor is using CMake.

Mingw also does not have an afunix.h header. There is a thread upstream,
but there doesn't seem to have been any discussion:
https://sourceforge.net/p/mingw-w64/discussion/723797/thread/4c8ecdbe0d/.
2020-07-07 13:25:21 +08:00
fanquake
fc5239e880
build: test for warning options before enabling -Wno-* variant
Some compilers, like GCC, will only warn about unknown -Wno-* options
when other warnings are being thrown, i.e:
```bash
  CXX      src/libzmq_la-address.lo
src/address.cpp: In function 'zmq::zmq_socklen_t zmq::get_socket_address(zmq::fd_t, zmq::socket_end_t, sockaddr_storage*)':
src/address.cpp:137:9: warning: unused variable 'unused' [-Wunused-variable]
  137 |     int unused;
      |         ^~~~~~~
At global scope:
cc1plus: note: unrecognized command-line option '-Wno-tautological-constant-compare' may have been intended to silence earlier diagnostics
cc1plus: note: unrecognized command-line option '-Wno-atomic-alignment' may have been intended to silence earlier diagnostics
  CXX      src/libzmq_la-channel.lo
```

They will also seem to accept the -Wno-* variant when it's tested for
using AX_CHECK_COMPILE_FLAG. So, rather than test for -Wno-* variants
that the compiler may pretend to understand, test for the actual option,
and only enable the -Wno-* case when it is available.
2020-07-07 11:06:44 +08:00
fanquake
f26b1ad8bb
build: don't compile with -Wno-uninitialized on darwin
This flag has been enabled for Darwin targets since the initial commit
in 4ed70a930202b103e7e80b8dc925e0aaa4622595. However, aside from the
fact that we likely no longer want to suppress uninitialized warnings,
this flag wont suppress them anyways, as it's included in the
CXX flags before -Wall (which enables -Wuninitialized). i.e:

```bash
g++ -std=gnu++11 ... -Wno-uninitialized ... -Wall <rest of flags>
```
2020-07-07 09:48:11 +08:00
Luca Boccassi
fc99911d90
Merge pull request #3983 from mileschet/ios135
added script to compile the lib to iphone sdk >= 13.5
2020-07-06 21:13:37 +01:00
Roberto Santacroce Martins
95e343caf3 added script to compile the lib to iphone sdk >= 13.5 2020-07-06 15:34:10 +02:00
Doron Somech
47ba2b1ef5
Merge pull request #3981 from bluca/fuzzers
Problem: no fuzz testing for websockets
2020-07-06 07:21:18 +03:00
Luca Boccassi
eb9118f0c9 Problem: no fuzz testing for websockets
Solution: add tests for plain WS
2020-07-05 23:43:58 +01:00
Luca Boccassi
2352e0a896 Problem: Github Action for fuzzer has a syntax error
Solution: fix it
2020-07-04 19:06:27 +01:00
Doron Somech
3396e95179
Merge pull request #3980 from bluca/fuzzers
Problems: fuzzer corpus file can be quite large, fuzzers not run in PRs
2020-07-04 21:01:58 +03:00
Luca Boccassi
877978adf7 Problem: fuzzers not run in PRs
Solution: do it
2020-07-04 17:50:35 +01:00
Luca Boccassi
e95e57d385 Problem: fuzzer corpus file can be quite large
Solution: move all corpora to the zeromq/libzmq-fuzz-corpora repository
for easier handling, and to avoid inflating the size of zeromq/libzmq.
Clone it for the CI on the fly.
2020-07-04 17:50:35 +01:00
Doron Somech
61c7ae0610
Merge pull request #3976 from bluca/fuzzers
Problem: we have to send a PR to oss-fuzz on every build change on the fuzzers
2020-06-30 20:34:30 +03:00
Luca Boccassi
734d6e4870 Problem: we have to send a PR to oss-fuzz on every build change on the fuzzers
Solution: move the script to our repo, and simply call it from oss-fuzz's script
2020-06-30 16:03:04 +01:00
Luca Boccassi
4dd504abeb
Merge pull request #3973 from bluca/fuzzers
Problem: test_security_zap occasionally segfaults
2020-06-30 16:02:04 +01:00
Bill Torpey
1cfd41c064 update sanitizer support
- enable undefined behavior sanitizer
- force release mode for sanitizer builds
2020-06-29 15:40:20 +01:00
Luca Boccassi
c8e3dfca90
Merge pull request #3974 from somdoron/pthread_cond_timedwait
problem: pthread_cond_timedwait sometimes fail with EINVAL
2020-06-28 17:36:26 +01:00
Doron Somech
fb852fd3e7 problem: pthread_cond_timedwait sometimes fail with EINVAL
Solution: fix rounding error and assert if the clock_gettime fails
2020-06-28 17:02:38 +03:00
Luca Boccassi
350b4b34f4 Problem: test_security_zap occasionally segfaults
Solution: check if a session's _pipe has been allocated before using
it, since as a consequence of creating the pipes after the handshake
it's no longer guaranteed to be there.

Fixes #3971
2020-06-28 13:37:07 +01:00
Doron Somech
d78ecb8dc8
Merge pull request #3968 from bluca/fuzzers
Problem: test_req_relaxed occasionally fails
2020-06-28 08:40:48 +03:00
Luca Boccassi
218655e4f7
Merge pull request #3969 from serg06/patch-3
Fix zmq_poller.txt
2020-06-27 23:26:58 +01:00
serg06
f03b67a50b
Fix zmq_poller.txt
Fixed three things:
1. Moved asterisks by variable names into the single quotes (to match [zmq_poll](https://github.com/zeromq/libzmq/edit/master/doc/zmq_init.txt) and other pages.)
2. Fixed variable name in example.
3. Fixed extra & in example.
2020-06-27 17:58:16 -04:00
Luca Boccassi
5c5e279108 Problem: test_req_relaxed occasionally fails
Solution: instead of relying on timing to get the order
of connected rep sockets just right, wait for each connection
2020-06-27 21:57:29 +01:00
Doron Somech
ff9efa106e
Merge pull request #3967 from bluca/fuzzers
Problems: OBS build on sid fails, test_req_relaxed occasionally fails
2020-06-27 22:13:53 +03:00
Luca Boccassi
859f39b302 Problem: OBS build on sid fails
Solution: change the version format to non-native as a hack, to match
OBS' debstransform usage of 1.0 format
2020-06-27 18:27:47 +01:00
Luca Boccassi
1ddfeb56ec Problem: formatting errors
Solution: run make clang-format-diff
2020-06-26 23:45:39 +01:00
Bill Torpey
c04f6581e0
rebase reconnect-redux on master (#3960)
* add option to stop reconnecting on failed handshake
2020-06-26 23:41:44 +01:00
Bill Torpey
c7aef56048 - resolve FPE when ZMQ_RECONNECT_IVL == 0 2020-06-26 16:16:31 +01:00
Luca Boccassi
d0d23446f5
Merge pull request #3962 from sigiesec/fix-clang-tidy-analyze
Problem: clang-tidy job is failing because package dependencies are o…
2020-06-19 17:31:20 +01:00
Simon Giesecke
3135f6b503 Problem: clang-tidy job is failing because package dependencies are outdated
Solution: update to llvm-toolchain-10
2020-06-19 17:58:26 +02:00
Doron Somech
522abc7376
Merge pull request #3959 from bluca/fuzzers
Problem: mtrie use of non-tail recursion leads to stack overflow
2020-06-17 14:35:26 +03:00
Luca Boccassi
ab301ebf79 Problem: mtrie use of non-tail recursion leads to stack overflow
Solution: convert add and rm functions to iterative algorithms
2020-06-16 21:10:59 +01:00
Luca Boccassi
e0e3ce081e Problem: XPUB treats non-sub/cancel as sub/cancel
Solution: only process for sub/cancel if the messages are actually sub/cancel.
Regression introduced by cf9ccbb which tried to skip non-sub/cancel processing
for PUB.
2020-06-16 21:05:26 +01:00
Luca Boccassi
b4aa912467
Merge pull request #3958 from bluca/fix_tests
Problems: formatting error in ip.cpp and test_bind_fuzzer doesn't build on OSX
2020-06-16 21:05:04 +01:00
Luca Boccassi
3856027da9 Problem: test_bind_fuzzer does not build on OSX
Solution: use POSIX API instead of GNU extension
2020-06-15 23:47:35 +01:00
Luca Boccassi
1d2af8d388 Problem: formatting error in ip.cpp
Solution: fix it
2020-06-15 23:47:35 +01:00
Luca Boccassi
c8b141d964
Merge pull request #3955 from bluca/thread_doc
Problem: thread safety documentation is misleading
2020-06-11 19:07:56 +01:00
Luca Boccassi
7f83eeb1b7 Problem: thread safety documentation is misleading
Solution: change it to categorically state that non-thread-safe
sockets are not thread safe, ever
2020-06-09 10:25:18 +01:00
Doron Somech
7c3eaf864c
Merge pull request #3954 from bluca/blocklist
Problem: documentation uses unfriendly language
2020-06-08 21:45:22 +03:00
Luca Boccassi
4341f14f41 Problem: documentation uses unfriendly language
Solution: use more descriptive, accurate and welcoming terms like allowing
and blocking
2020-06-08 19:32:45 +01:00
Doron Somech
3f2529f3c7
Merge pull request #3952 from bluca/fuzzers
Problem: test_bind_fuzzer clobbers working directory with random socket files
2020-06-07 14:38:18 +03:00
Luca Boccassi
1ffc21d378 Problem: test_bind_fuzzer clobbers working directory with random socket files
Solution: move to /tmp before running the test
2020-06-07 12:09:17 +01:00
mjvk
b6bb3ef925
Adds NORM support to cmake (#3951) 2020-06-07 10:39:02 +01:00
Luca Boccassi
3a2b3bc625
Merge pull request #3943 from bjovke/small_fix
Problem: The code is wrong, socket option is never set.
2020-05-30 21:16:52 +01:00
Jovan Bunjevacki
c32462cde0 Small fix. 2020-05-30 20:30:23 +02:00
serg06
c89390f0f5 Make including Clang optional
I include libzmq in my cmake project, and I don't want clang-related targets popping up in Visual Studio's solution explorer.
2020-05-25 18:34:17 +01:00
serg06
efaeec33fc RELICENSE grant 2020-05-25 18:33:52 +01:00
serg06
2e87390656 Initialize some CMake variables as empty before build
This prevents a bug that occurs when a parent has a `sources` variable when doing `add_subdirectory("libzmq")`.
2020-05-25 18:33:52 +01:00
Doron Somech
c95f7d0933
Merge pull request #3935 from bluca/fuzzers
Problem: small memory leaks in PUB/XPUB
2020-05-25 19:45:54 +03:00
Luca Boccassi
cf9ccbbd37 Problem: metadata is stored for PUB sockets and never processed
Solution: do not store user messages when the socket type is PUB, they
will never be processed
2020-05-25 15:49:32 +01:00
Luca Boccassi
821ab88f96 Problem: XPUB leaks unprocessed metadata on close
Solution: dereference and delete any metadata object left in memory
2020-05-25 15:49:32 +01:00
Doron Somech
b5a8825542
Merge pull request #3930 from bluca/fuzzers
Problem: MSAN fuzzers cannot run
2020-05-24 17:23:59 +03:00
Luca Boccassi
38349198a6 Problem: MSAN complains about uninitialised buffers in CURVE greetings
Solution: memset some of the CURVE greetings buffers. Most likely false
positives, but easier to fix here than convince Clang of being wrong.
2020-05-24 14:26:14 +01:00
Luca Boccassi
35c4c22c81 Problem: z85 decode test might not always get valid input and pass
Solution: do not fail the test in that case, what's important is checking
for undefined behaviour
2020-05-24 14:26:14 +01:00
Luca Boccassi
85e198c5b4 Problem: wrong testcase name in z85_decode_fuzzer
Solution: fix it
2020-05-21 11:31:24 +01:00
Luca Boccassi
1ac753979a Problem: z85_decode fuzzer does not run regression tests with corpora
Solution: do it to avoid regressions
2020-05-21 10:49:55 +01:00
Luca Boccassi
51c90a6cd5 Problem: z85_decode fuzzer fails if fewer than 5 bytes are passed
Solution: check immediately the size of the input
2020-05-21 10:49:55 +01:00
Bill Torpey
c1d195641d
provide minimal support for TSAN (#3929)
* provide minimal support for thread sanitizer
2020-05-20 20:01:29 +01:00
Simon Giesecke
6e62fb19b4
Merge pull request #3925 from bjovke/timers_issue
Problem: Usage of invalidated iterator of _timers container in zmq::p…
2020-05-20 16:57:24 +02:00
Jovan Bunjevacki
2887c0fbb1 Problem: Usage of invalidated iterator of _timers container in zmq::poller_base_t::execute_timers ().
Solution: Safe iteration through _timers container, valid only for std::multimap (currently it is).
2020-05-20 15:03:10 +02:00
Doron Somech
907ec22475
Merge pull request #3922 from bluca/fuzzers
Problem: build fails with Clang 10
2020-05-17 18:02:34 +03:00
Luca Boccassi
55dfa239ff Problem: build fails with Clang 10
Solution: wrap generic_mtrie_t in zmq namespace
2020-05-17 15:01:51 +01:00
Doron Somech
8df0d99cd8
Merge pull request #3921 from bluca/fuzzers
Problem: invalid address results in out-of-range string access
2020-05-16 17:23:16 +03:00
Luca Boccassi
2d23b599f2 Problem: test_bind_fuzzer does not use corpus for regression tests
Solution: do it
2020-05-16 15:01:15 +01:00
Luca Boccassi
dccf1723cc Problem: invalid address results in out-of-range string access
Solution: check for zone string length before using it in ip_resolver
It turns out std::string::at does not check for string length before
dereferencing
2020-05-16 13:40:55 +01:00
Doron Somech
3033112645
Merge pull request #3918 from bluca/fuzzers
Problem: unfinished message can be leaked by client pipe
2020-05-15 22:15:02 +03:00
Luca Boccassi
6815138501 Problem: unfinished message can be leaked by client pipe
When a pipe processes a delimiter and is already not in active state but still
has an unfinished message, the message is leaked.

Solution: issue a rollback before losing the reference to the pipe.
2020-05-15 18:19:38 +01:00
Luca Boccassi
6439d32254 Problem: fuzz tests do not check that legitimate clients work
Solution: add normal client sockets and bounce at the same time as
the mock client
2020-05-15 18:19:38 +01:00
Luca Boccassi
afacdbeccf
Merge pull request #3913 from somdoron/delay_bind
problem: zeromq connects peer before handshake is complete
2020-05-14 08:30:50 +01:00
Doron Somech
ad3b36ab95 problem: test_xpub_manual is flapping
The test assumed the subscriptions are arrived in some order, but occasionally the order is not as expected

Solution: fix it
2020-05-14 00:01:06 +03:00
Doron Somech
e7f0090b16 problem: zeromq connects peer before handshake is completed
Solution: delay connecting the peer pipe until the handshake is completed
2020-05-13 19:36:13 +03:00
Doron Somech
18cacf2ec1
Merge pull request #3910 from bluca/obs_release
Problem: removing latest_branch breaks ABI CI job
2020-05-12 12:29:31 +03:00
Luca Boccassi
364ae768fe Problem: removing latest_branch breaks ABI CI job
Solution: clone latest tag instead
2020-05-12 09:13:06 +01:00
Luca Boccassi
4a863e334a
Merge pull request #3909 from nyfix/std
allow C/C++ standard to be specified at build time, default to C++11 if supported
2020-05-12 00:05:43 +01:00
Bill Torpey
f474b226b6 allow C/C++ standard to be specified at build time, default to C++11 if supported 2020-05-11 16:47:02 -04:00
Doron Somech
820efb31bd
Merge pull request #3908 from bluca/obs_release
Problem: release script for OBS build fails often
2020-05-11 21:56:49 +03:00
Luca Boccassi
e1d07b61ca Problem: release script for OBS build fails often
Solution: now that tar_scm supports @PARENT_TAG@ as a revision to
automatically fetch the most recent tag on the default branch, use
it to simplify everything

https://github.com/openSUSE/obs-service-tar_scm/pull/359
2020-05-11 19:31:23 +01:00
Doron Somech
0244d809a2
Merge pull request #3905 from bluca/fuzzers
Problems: potential memory leak in test_connect_curve_fuzzer, SECURITY.md could use some updates
2020-05-09 15:27:52 +03:00
Luca Boccassi
fb9d055578 Problem: test_bind_curve_fuzzer might get stuck on some input
Solution: receive with MSG_DONTWAIT on the raw TCP socket
2020-05-09 13:17:36 +01:00
Luca Boccassi
c33da0ea5b Problem: we lack an (internal) definition of severity for security issues
Solution: attempt to define a reasonable one
2020-05-09 13:03:02 +01:00
Luca Boccassi
675a007d74 Problem: SECURITY.md does not mention 4.3.x series
Solution: add it
2020-05-09 12:57:32 +01:00
Luca Boccassi
abb315a6da Problem: potential memory leak in test_connect_curve_fuzzer
Solution: properly initialize zmq_msg before receive
2020-05-09 12:31:36 +01:00
Luca Boccassi
be77a8d932
Merge pull request #3903 from bjovke/msvc_cplusplus
Problem: MSVC always reports __cplusplus macro value as 199711L. Some…
2020-05-09 10:50:43 +01:00
Luca Boccassi
a1d82598bb
Merge pull request #3904 from somdoron/CHANNEL
problem: no thread-safe alternative for ZMQ_PAIR
2020-05-09 10:49:35 +01:00
Doron Somech
3da84c6d06 problem: no thread-safe alternative for ZMQ_PAIR
Solution: create ZMQ_CHANNEL, the thread safe alternative
2020-05-09 08:49:01 +03:00
Jovan Bunjevacki
804d528114 Problem: MSVC always reports __cplusplus macro value as 199711L. Some newer features are switched off even with latest Visual studio version.
Solution: Add check for MSVC version along with __cplusplus check.
2020-05-09 01:20:47 +02:00
Doron Somech
28cb820f4f
Merge pull request #3902 from bluca/fuzzers
Problems: ZMTP v1 static allocator is needlessly resized, ZMQ_DISABLE_TEST_TIMEOUT does not work anymore
2020-05-08 21:25:37 +03:00
Luca Boccassi
98efa79f54 Problem: ZMQ_DISABLE_TEST_TIMEOUT does not work anymore
Solution: restore it so that it can be set via CPPFLAGS, to avoid
tests timing out when running in GDB
2020-05-08 18:18:34 +01:00
Luca Boccassi
397ac80850 Problem: ZMTP v1 static allocator is needlessly resized
Solution: don't do it, resizing the shared allocator makes sense
as it can take the message buff for zero copy, but the static allocator
is fixed
2020-05-08 18:18:34 +01:00
Doron Somech
061ce6cea1
Merge pull request #3901 from bluca/fuzzers
Problem: test_connect_null_fuzzer doesn't correctly initialise messages
2020-05-07 13:34:26 +03:00
Luca Boccassi
5fd0711196 Problem: memory leak in test_connect_null_fuzzer
Solution: initialize message before re-using it so that
receive doesn't fail and messages can be deallocated
2020-05-06 22:26:03 +01:00
Luca Boccassi
243503c29e Problem: set infinite timeouts on some tests by mistake
Solution: remove it
2020-05-06 20:56:36 +01:00
Doron Somech
f7b215c639
Merge pull request #3900 from bluca/fuzzers
Use fixed keys in fussers curve tests, run fuzzers github action only on PRs, attempt to fix uninitialised error in test helper
2020-05-06 15:12:03 +03:00
Luca Boccassi
fd3e5daaeb Problem: fuzzing Github action ran on pushes on forks and fails
Solution: run in on PRs only as oss-fuzz uses Docker so the repository is
hard-coded
2020-05-06 12:39:45 +01:00
Luca Boccassi
346f8b8b20 Problem: uninitialised error in testutil helper
Solution: memset struct addrinfo to be sure
2020-05-06 11:51:55 +01:00
Luca Boccassi
5819867cd3 Problem: fuzzer curve tests use random keys
Solution: use fixed keys to reduce variability and increase the chance
that random data derived from it can break something
2020-05-06 11:47:15 +01:00
Doron Somech
d7e58fc880
Merge pull request #3899 from bluca/fuzzers
Problems: address sanitizer not enabled, oss-fuzz images not build-tested
2020-05-06 09:51:11 +03:00
Luca Boccassi
9f94aa866f Problem: oss-fuzz images not tested on PRs
Solution: integrate oss-fuzz build via Github actions
2020-05-06 00:36:29 +01:00
Luca Boccassi
5b7f67a822 Problem: memory sanitizer not enabled in CI
Solution: add -fsanitize=leak to the sanitizers flag, and disable
test_many_sockets as it currently fails due to:
https://github.com/zeromq/libzmq/issues/3898
2020-05-06 00:14:02 +01:00
Luca Boccassi
c2ffe2e6d2
Merge pull request #3897 from bluca/fuzzers
Problem: test_hello_msg binds to hard-coded port and fails when it's in use
2020-05-05 20:36:26 +01:00
Luca Boccassi
2ac5ee7307 Problem: test_hello_msg binds to hard-coded port and fails when it's in use
Solution: use the common wildcard bind pattern instead
2020-05-05 14:13:38 +01:00
Doron Somech
04ecff399b
Merge pull request #3896 from bluca/fuzzers
Problems: memory sanitizer fails due to uninitialised global, want to run more tests with sanitizer
2020-05-05 15:51:00 +03:00
Luca Boccassi
3770937de3 Problem: we want to check for undefined behaviour in the CI
Solution: enable GCC's UBSAN in the sanitizer job
2020-05-05 12:58:39 +01:00
Luca Boccassi
0c5396849b Problem: syntax errors in ci_build.sh
Solution: fix them
2020-05-05 12:16:19 +01:00
Luca Boccassi
cdd9e9d1f4 Problem: Travis uses old-old-old-stable Ubuntu by default
Solution: set default to bionic, and leave a few jobs that manually
set Trusty/Xenial to have more coverage
This is especially useful to get newer gcc for address sanitizer support
2020-05-05 11:48:55 +01:00
Luca Boccassi
96d3cb39e4 Problem: fuzz input which causes extra-large message allocation not stored
Solution: add it
2020-05-05 11:48:11 +01:00
Luca Boccassi
9ab3fbeee2 Problem: we want to have multiple seed corpora per fuzzer binary
Solution: store them each as a single line in the text file and convert them
at install time
2020-05-05 11:48:11 +01:00
Luca Boccassi
c4fd6dfea7 Problem: sanitizer tests cannot allocate much memory
Solution: restrict maximum message size to 64MB in tests
2020-05-05 11:42:06 +01:00
Luca Boccassi
7df845fb82 Problem: memory sanitizer detects uninitialised global variable usage
Solution: revert "Problem: complexity of start_connecting"

https://travis-ci.org/github/google/oss-fuzz/jobs/680325364

This reverts commit c590873ff7a81a3c373884eab37cbe2068fbfe4a.

Conflicts:
	src/session_base.cpp
	src/session_base.hpp
2020-05-04 22:02:04 +01:00
Doron Somech
309d1f1cb7
Merge pull request #3894 from bluca/fuzzers
Problems: sub/cancel broken with CURVE, fuzzers need corpora and better unit testing
2020-05-04 14:43:47 +03:00
Luca Boccassi
6b259224ee Problem: fuzzer regression tests do very little
Solution: run them with the seed corpora
2020-05-04 11:42:22 +01:00
Luca Boccassi
c8e62cb2e0 Problem: no dictionaries and seed corpora for fuzzers
Solution: add them and install them where oss-fuzz expects them
2020-05-04 02:11:15 +01:00
Luca Boccassi
60ccf54fa6 Problem: sub/cancel broken with CURVE
Solution: handle downgrading sub/cancel messages in CURVE engine
2020-05-03 17:42:53 +01:00
Luca Boccassi
534580c31d
Merge pull request #3893 from gummif/gfa/blob-ref
Problem: extra blob copy
2020-05-02 14:26:06 +01:00
Luca Boccassi
103e39bd6f
Merge pull request #3892 from gummif/gfa/poller-event
Problem: unnecessary event struct and UB
2020-05-01 23:42:32 +01:00
Gudmundur Adalsteinsson
47a080aac0 Problem: extra blob copy
Solution: use reference tag
2020-05-01 22:27:44 +00:00
Gudmundur Adalsteinsson
284d90a436 Problem: unnecessary event struct and UB
Solution: simply use zmq_poller_event_t
2020-05-01 22:12:30 +00:00
Constantin Rack
e05fe370fe
Merge pull request #3890 from gummif/gfa/retfd
Problem: -1 used for invalid socket
2020-04-29 17:23:10 +00:00
Gudmundur Adalsteinsson
e18772f942 Problem: -1 used for invalid socket
Solution: use retired_fd instead
2020-04-29 17:12:08 +00:00
Luca Boccassi
aa29f7caff
Merge pull request #3889 from bluca/fuzzers
Problem: testutil build broken with gcc 4.4 on CentOS 6
2020-04-28 13:33:03 +01:00
Luca Boccassi
1443c0e787
Merge pull request #3887 from gummif/gfa/unify-fd
Problem: Multiple fd_t definitions
2020-04-28 13:32:52 +01:00
Luca Boccassi
5867d7cf5f
Merge pull request #3888 from gummif/gfa/poller-fd
Problem: Poller event fd unspecified
2020-04-28 11:26:58 +01:00
Gudmundur Adalsteinsson
d426f2ab0c Problem: Multiple fd_t definitions
Solution: Unify definition
2020-04-28 08:50:18 +00:00
Luca Boccassi
a909e7296d Problem: testutil build broken with gcc 4.4 on CentOS 6
Solution: do not alias sockaddr_un, but take a copy

tests/testutil.cpp: In function 'fd_t bind_socket_resolve_port(const char*, const char*, char*, int, int)':
tests/testutil.cpp:468: error: dereferencing pointer 'un_addr' does break strict-aliasing rules
2020-04-28 00:49:37 +01:00
Luca Boccassi
882cb6fdfb Problem: static analysis shows dead store in testutil
Solution: remove it and rework the ifdefs to be safe against uninitialised use
2020-04-28 00:49:37 +01:00
Luca Boccassi
12a2f81717
Merge pull request #3885 from bluca/fuzzers
Problem: no fuzz testing
2020-04-27 23:21:50 +01:00
Gudmundur Adalsteinsson
bf22a9f3e9 Problem: Poller event fd unspecified
Solution: Specify an invalid file descriptor for socket events
2020-04-27 21:00:45 +00:00
Luca Boccassi
96787c35f8 Problem: no fuzz testing for API with variable input
Solution: add tests for zmq_bind, zmq_connect and zmq_z85_decode
2020-04-27 01:18:45 +01:00
Luca Boccassi
57df836381 Problem: no fuzz testing for CURVE
Solution: add simple, initial tests for client and server
2020-04-27 01:18:31 +01:00
Luca Boccassi
8e774f3cd6 Problem: no integration with fuzz testing
Solution: port the 2 new tests from oss-fuzz, and wire them up to
be ran manually with a static input in normal builds.
Add a specific configure option to use the external fuzzing engine
from oss-fuzz.
2020-04-27 01:18:08 +01:00
Luca Boccassi
c6d3bc68c8 Problem: ZMTP mocks duplicated across tests
Solution: define buffers in common header
2020-04-26 21:04:53 +01:00
Luca Boccassi
4f35d1af1a Problem: using BSD sockets in test is duplicated across many tests
Solution: refactor in testutil.lib, so that they can be used for fuzzers too
2020-04-26 17:59:26 +01:00
Luca Boccassi
c81a973cd8 Problem: assert macros not detecting errors from syscall that do not return -1 on failure
Solution: add a new TEST_ASSERT_SUCCESS_RAW_ZERO_ERRNO macro so that
it can check explicitly for non-zero values. This will be used
for getaddrinfo().
2020-04-26 17:59:26 +01:00
Luca Boccassi
727637082f Problem: test_shutdown_stress_tipc fails sometimes
Solution: create socket in the same thread where it is used
2020-04-26 15:08:04 +01:00
Luca Boccassi
b56195e995
Merge pull request #3882 from laplaceyang/relicense
RELICENSE: Grant from laplaceyang.
2020-04-22 10:16:42 +01:00
laplaceyang
491defdf12 RELICENSE: Grant from laplaceyang. 2020-04-22 17:11:58 +08:00
Luca Boccassi
9984d43143
Merge pull request #3879 from somdoron/master
problem: appveyor is very slow
2020-04-20 21:20:21 +01:00
Doron Somech
81056a7237 problem: appveyor is very slow
Solution: move to github actions
2020-04-20 22:55:28 +03:00
Luca Boccassi
a525323757
Merge pull request #3878 from Eelis/master
Problem: out-of-bounds array access in socket_poller::check_events.
2020-04-20 12:50:41 +01:00
Luca Boccassi
f00f464566
Merge pull request #3866 from gummif/gfa/poller-refactoring
Problem: poller item lookup can be simplified
2020-04-20 09:34:57 +01:00
Eelis van der Weegen
063f14a940 Problem: out-of-bounds array access in socket_poller::check_events. 2020-04-20 03:22:31 +02:00
Gudmundur Adalsteinsson
0b32fb3629 Problem: poller item lookup can be simplified
Solution: Extract generic find function
2020-04-19 20:53:56 +00:00
Luca Boccassi
d882e807dd
Merge pull request #3876 from somdoron/HELLO_MSG
problem: checking the wrong socket when sending hello msg
2020-04-18 23:32:31 +01:00
Luca Boccassi
08d94d0e16
Merge pull request #3877 from gummif/gfa/spinlock-fix
Problem: Spinning on atomics can cause hangs
2020-04-18 22:21:47 +01:00
Doron Somech
6ca07a30e3 problem: checking the wrong socket when sending hello msg 2020-04-18 22:45:49 +03:00
Doron Somech
2745ac31d7
Merge pull request #3875 from bluca/test
Fix coverage job and appveyor job
2020-04-18 20:25:17 +03:00
Gudmundur Adalsteinsson
ff80089939 Problem: Spinning on atomics can cause hangs
Solution: Add a sleep in the loop. Some versions of
valgrind may hang when spinning on atomic variables.
2020-04-18 12:44:59 +00:00
Luca Boccassi
5a78bad2a8 Problem: coverage CI job fails
Solution: bump OS to Xenial for newer python libraries
2020-04-18 11:06:58 +01:00
Luca Boccassi
7cac73401a Problem: test_many_sockets always fails on Windows
Solution: don't run it
2020-04-18 11:03:15 +01:00
Luca Boccassi
ada6f0c058
Merge pull request #3871 from somdoron/DISCONNECT_MSG
problem: router doesn't know when peer disconnected
2020-04-18 10:49:50 +01:00
Luca Boccassi
7ce7b8b888
Merge pull request #3874 from shgalym/patch-1
typo fix root README
2020-04-18 10:48:07 +01:00
Galymzhàn Sh
d0b5713709
typo fix root README 2020-04-18 15:24:14 +06:00
Luca Boccassi
97a52af242
Merge pull request #3872 from gummif/gfa/poller-size
Problem: No support to query poller size
2020-04-17 22:50:34 +01:00
Gudmundur Adalsteinsson
9c6738bb45 Problem: No support to query poller size
Solution: Add zmq_poller_size that queries the number
of objects registered, allowing safer usages of poller
to avoid livelock situations.
2020-04-17 18:37:01 +00:00
Doron Somech
81444136d5 problem: router doesn't know when peer disconnected
ZMQ_ROUTER_NOTIFY doesn't have a context and doesn't play nice with protocols. with ZMQ_DISCONNECT_MSG we can set it to a protocol message, like DISCONNECT in majordomo. Router will send it when a peer is disconnected. Another advantage of ZMQ_DISCONNECT_MSG is that it also works on inproc.

Together with ZMQ_HEARTBEAT it allows to build very reliable protocols, and much simpler as well.
2020-04-17 18:04:28 +03:00
Luca Boccassi
4c1d720a47
Merge pull request #3870 from somdoron/HELLO_MSG
problem: ZMQ_HEARTBEAT is not useful without sending an hello message
2020-04-17 15:24:38 +01:00
Doron Somech
93da6763b0 problem: ZMQ_HEARTBEAT is not useful without sending an hello message
When using ZMQ_HEARTBEAT one still needs to implement application-level heartbeat in order to know when to send a hello message.
For example, with the majordomo protocol, the worker needs to send a READY message when connecting to a broker. If the connection to the broker drops, and the heartbeat recognizes it the worker won't know about it and won't send the READY msg.
To solve that, the majordomo worker still has to implement heartbeat. With this new option, whenever the connection drops and reconnects the hello message will be sent, greatly simplify the majordomo protocol, as now READY and HEARTBEAT can be handled by zeromq.
2020-04-17 14:54:58 +03:00
grmt
718ad8ab96
add wss transport and fix tipc tests when building using cmake on linux (#3857)
* Allow CMAKE to generate ws and wss transports
I guess there is little use of just ws transport, so by default
GnuTLS (and libsodium) are enabled

* cmake libzmq including wss transport (ubuntu 19.10 and ubuntu 19.10 + wsl 1.0)
test_security_fails (libsodium assert !?)

* updated relicense

* make external libs gnutls nss sodium optional

* #ifdef WSS classes and functions, build test*ws* only if correct libs are included, warning if libs not present

* make libsodium optional

* cmake fix tests TIPC transport

* clang-format pointed out a wrongly placed #ifdef

* GnuTLS before 3.6.7 is not safe

* msvc doesn't agree with strlen in array declaration, test_socks now at least compiles on windows

* windows: libsodium build fails, missing include dirs set by env var

* ws transport test only works when GnuTLS is found

* Fixed condition to use NSS / built in SHA1, so that test_ws_transport should now pass, also when GnuTLS is not found
2020-04-13 23:03:19 +01:00
Luca Boccassi
7276b6809a
Merge pull request #3868 from gummif/gfa/poller-sleep
Problem: poller sleeps forever if no events
2020-04-13 22:52:46 +01:00
Luca Boccassi
ef4bb9aa5e
Merge pull request #3865 from gummif/gfa/poller-fd-init
Problem: poller item fd uninitialized
2020-04-13 22:51:35 +01:00
Gudmundur Adalsteinsson
458d805eb6 Problem: poller sleeps forever if no events
Solution: Fail with error if no events are active and timeout is infinite
2020-04-13 21:18:12 +00:00
Gudmundur Adalsteinsson
a468ac782a Problem: poller item fd uninitialized
Solution: Set to zero for socket events
2020-04-13 20:08:08 +00:00
Gudmundur Adalsteinsson
7b1fef28f9
Problem: boilerplate when init msg from data copy (#3860)
* Problem: boilerplate when init msg from data copy

Solution: Add zmq_msg_init_buffer to construct
a message by copying memory from buffer.
2020-04-09 23:59:43 +01:00
Luca Boccassi
347ff07c94
Merge pull request #3862 from gummif/gfa/poller-formatting
Problem: Strange zmq_poller doc formatting
2020-04-09 16:23:02 +01:00
Gudmundur Adalsteinsson
fa2af05d47 Problem: Strange zmq_poller doc formatting
Solution: Add newlines and extra asterisks
2020-04-09 14:18:34 +00:00
Luca Boccassi
ae45ac4e1f
Merge pull request #3861 from gummif/gfa/send-doc
Problem: zmq_send doc does not match declaration
2020-04-09 15:02:03 +01:00
Gudmundur Adalsteinsson
cbdf075658 Problem: zmq_send doc does not match declaration
Solution: add const to pointer type
2020-04-09 13:55:42 +00:00
Luca Boccassi
3c13e9222d
Merge pull request #3851 from gummif/gfa/ts-int
Problem: ZMQ_THREAD_SAFE is not bool
2020-03-23 21:11:29 +00:00
Gudmundur Adalsteinsson
e1fc84141d
Problem: ZMQ_THREAD_SAFE is not bool
Solution: Change documentation value type to int
2020-03-23 20:49:39 +00:00
Luca Boccassi
323420c5ea
Merge pull request #3850 from JSYoo5B/git-ignore-fix-track
Fix gitignore tracking file list
2020-03-18 08:42:22 +00:00
JaeSang Yoo
eceaaf360b Problem: executable sources are not tracked
Solution: Fix .gitignore's exceptions for sources in tools/
2020-03-18 12:51:47 +09:00
Luca Boccassi
876d4bfead
Merge pull request #3849 from ferdnyc/zeromq-config-install
Install CMake config to LIBDIR by default, to correctly support multiarch
2020-03-17 08:16:07 +00:00
FeRD (Frank Dana)
a97158aa2a Add relicensing statement for ferdnyc
Signed-off-by: FeRD (Frank Dana) <ferdnyc@gmail.com>
2020-03-16 20:23:12 -04:00
FeRD (Frank Dana)
31569c78d9 Problem: CMake config doesn't support multiarch
Solution: Install CMake config in arch-dependent LIBDIR/cmake

Using "share/cmake/${PROJECT_NAME}" as DESTINATION for installing
ZeroMQConfig.cmake et al works for arch-independent configs, but
is wrong for multiarch. The configs for each version of the
library should be stored below the arch-dependent LIBDIR, using
the GNUInstallDirs ${CMAKE_INSTALL_LIBDIR} variable.

Signed-off-by: FeRD (Frank Dana) <ferdnyc@gmail.com>
2020-03-16 20:22:52 -04:00
Luca Boccassi
bb9135da4f
Merge pull request #3847 from JSYoo5B/protocol-literals-refactor
Refactor protocol literals into constants
2020-03-14 13:54:17 +00:00
JaeSang Yoo
38fd1fdc8e Problem: some cond. compile may cause problem
Some ifdefs in condition checking may cause problem in some compiler or
static analyzers. When PGM and NORM both are disabled, some condition
will be derived as false || false.

Solution: Splitted condition checking for every ifdef conditions
2020-03-14 22:20:54 +09:00
JaeSang Yoo
4f436ce00f Problem: some conditional compile was not applied
Conditinoal compile for OPENPGM and NORM is mixed.
Also found few codes which needs conditional compile but not applied.

Solution: Apply conditional compile preprocessors
2020-03-14 19:55:54 +09:00
JaeSang Yoo
ebd22ecf85 Problem: literals protocol names still remains
Solution: replace into named constants
2020-03-14 19:55:54 +09:00
Luca Boccassi
0c7ee438a8
Merge pull request #3848 from JSYoo5B/optimize-gitignore
Optimizing gitignore files
2020-03-14 09:45:10 +00:00
JaeSang Yoo
2478887d4a Problem: gitignore is messed up
Solution: optimize gitigore using patterns
 *  Categorize ignoring lists
 *  Use pattern to remove similar lists
 *  Marked source files to be tracked
2020-03-14 17:57:56 +09:00
Simon Giesecke
656205b5f9
Merge pull request #3844 from bluca/format
Problem: msg_t functions do not respect coding style
2020-03-07 14:58:48 +01:00
Luca Boccassi
f9417dab4d Problem: msg_t functions do not respect coding style
Solution: fix them
2020-03-07 13:25:18 +00:00
Luca Boccassi
07d3687621
Merge pull request #3843 from JSYoo5B/man-udp-not-mentioned
Add UDP transport to related docs
2020-03-07 11:45:46 +00:00
JaeSang Yoo
ded0d83e47 Problem: wildcard address with udp not mentioned
* UDP is mentioned as available transport, and it also supports
  wildcard addresses, but not mentioned
* zmq_unbind(7) also mentions about wild-card endpoint in zmq_bind(3)

Solution: add udp in wildcard address related docs
2020-03-07 14:55:01 +09:00
JaeSang Yoo
296beecd24 Problem: UDP is not mentioned in bind and connect
zmq_bind(3) and zmq_connect(3) does not mention UDP as available
transport types.

Solution: add udp mentioning line for related docs
2020-03-07 14:35:06 +09:00
Luca Boccassi
f915971653
Merge pull request #3838 from JSYoo5B/osx-build-doc-issue
Problem: building on OS X may failed
2020-02-29 13:50:19 +00:00
JaeSang Yoo
87f9e377dd Problem: building on OS X may failed
Solution: Add troubleshooting guidelines to resolve

(Relicensing statement added)
2020-02-29 22:44:59 +09:00
Rickard Hallerbäck
2206cb37e0
ip_resolver_t: Silencing C++-warning -Wnon-virtual-dtor (#3837)
* ip_resolver_t: adding virtual descructor to silence C++-warning -Wnon-virtual-dtor

* adding my relicense
2020-02-28 16:49:12 +00:00
Mark Jan van Kampen
de0102e927 Fixes old Simon being in there 2020-02-24 09:05:39 +00:00
Mark Jan van Kampen
99cf1c2e96 Fixes tabs 2020-02-24 09:05:39 +00:00
Mark Jan van Kampen
c0abfae0d4 Add relicense 2020-02-24 09:05:39 +00:00
Mark Jan van Kampen
0d42929193 Adds QNX as possible to compile on 2020-02-24 09:05:39 +00:00
Doron Somech
e765143b42
Merge pull request #3833 from bluca/news
News out of date, formatting not clean
2020-02-23 22:33:22 +02:00
Luca Boccassi
4f45ac135a Problem: formatting not up to date
Solution: run make clang-format-diff
2020-02-23 18:25:20 +00:00
Luca Boccassi
09476b3d7f Problem: NEWS out of date with latest changes
Solution: update it
2020-02-23 17:37:56 +00:00
Luca Boccassi
e2de3b7986 Problem: no NEWS entry for ZMQ_RECONNECT_STOP
Solution: add it
2020-02-23 17:30:25 +00:00
Bill Torpey
debbe08fb8
add option to stop trying to reconnect on ECONNREFUSED (#3831)
* add option to stop trying to reconnect on ECONNREFUSED
2020-02-23 17:17:22 +00:00
Luca Boccassi
66ee3ee46c
Merge pull request #3832 from stac47/fix_unused_variable
Fix unused-variable warning in perf/proxy_thr.cpp
2020-02-21 09:08:30 +00:00
Laurent Stacul
f0b0e80da0 Fix unused-variable warning in perf/proxy_thr.cpp 2020-02-21 08:27:38 +00:00
Luca Boccassi
c7e99cdc4c
Merge pull request #3829 from gcsideal/master
Add relicense grant by Laszlo Boszormenyi (GCS)
2020-02-13 22:37:27 +00:00
Laszlo Boszormenyi (GCS)
76969bf51c Add relicense grant by Laszlo Boszormenyi (GCS) 2020-02-13 22:29:29 +00:00
Luca Boccassi
98e82ddff3
Merge pull request #3828 from sappo/master
Android build helper improvement + fix for prefix dir
2020-02-12 22:05:11 +00:00
Kevin Sapper
67e6a8c233 Problem: Usage of ANDROID_BUILD_DIR not documented
Solution: Add usage and default value to README
2020-02-12 21:49:25 +01:00
Kevin Sapper
e293b0b9b3 Problem: Setting TOOLCHAIN env vars should be done by helper
Solution: Migrate the properties and the selection for the correct env
and abi to the helper. There's no need for the user to specify them.
2020-02-12 21:36:41 +01:00
Kevin Sapper
511d39c179 Problem: Unable to overwrite the ANDROID_BUILD_DIR
Solution: Use pwd only a default value
2020-02-12 16:20:27 +01:00
Luca Boccassi
917921095e
Merge pull request #3827 from sappo/master
Improve android build handling
2020-02-12 12:27:45 +00:00
Kevin Sapper
1fc4f513f4 Problem: Tables in README are difficult to read
Solution: Re-factor them to look like usual tables
2020-02-12 12:25:19 +01:00
Kevin Sapper
341f56ccac Problem: Android build is hard to understand
Solution: Modify the build scripts so the user can specify the platform
for which to build, e.g. `./build.sh arm`. This approach originally
significantly reduces the parameters which have to be set before running
the script.

Further the build process is documented in a README now.
2020-02-12 12:22:27 +01:00
Doron Somech
d5bd1642d1
Merge pull request #3825 from bluca/relicense
Add grant by ninoles
2020-02-11 22:18:13 +02:00
Luca Boccassi
b4bfd0f058 Add grant by ninoles
Received via email, message-id:

ed4de883-640b-bf7e-ac56-911e117b649e@tzone.org
2020-02-11 20:16:11 +00:00
Luca Boccassi
52044b38f7
Merge pull request #3823 from somdoron/ZMQ_PEER
problem: zeromq doesn't has a thread-safe peer to peer socket
2020-02-09 21:53:18 +00:00
Doron Somech
70bc7dd925 problem: zeromq doesn't has a thread-safe peer to peer socket
Solution: a new socket type, called PEER. Very similar to SERVER, but can only connect to other PEERs. Also a new zmq_connect_peer method, that connect and return a routing-id in thread-safe and atomic operation
2020-02-09 23:20:14 +02:00
Luca Boccassi
821685f249
Merge pull request #3822 from somdoron/GROUPMAXLENGTH
problem: maximum size of group doesn't match the RFC maximum size
2020-02-09 13:10:47 +00:00
Doron Somech
05194eb549 problem: maximum size of group doesn't match the RFC maximum size 2020-02-09 14:46:23 +02:00
Simon Giesecke
f17a794d59
Merge pull request #3814 from bluca/sub_cancel_decoder
Implement ZMTP 3.1 subscribe/cancel via commands
2020-02-07 09:26:21 +01:00
Luca Boccassi
a7bb41ef77
Merge pull request #3820 from somdoron/WSENCODING
websocket problems
2020-02-06 16:39:38 +00:00
Doron Somech
652834296b problem: ws_transport is missing the path the endpoint name 2020-02-06 17:22:28 +02:00
Doron Somech
071ec1a9bb problem:Fallback to localhost in ws_address has no effect
Solution: return after the fallback

fixes #3809
2020-02-06 17:22:11 +02:00
Constantin Rack
6b75209f0e
Merge pull request #3821 from bluca/relicense
Grant from KLNikita
2020-02-06 15:26:49 +01:00
Luca Boccassi
8c618e0247 Grant from KLNikita
Received via email, message-id:
81ce91c8-df40-13c2-7abf-6f648d0b123f@elyzion.net
2020-02-06 10:29:32 +00:00
Doron Somech
7bfd9512e6 problem: ws_encoder allocate a new msg for masking
solution: if msg is not shared or constant, mask the message in place
2020-02-06 09:34:22 +02:00
Simon Giesecke
dca59c940e
Merge pull request #3819 from bluca/relicense
Grant by asafkahlon
2020-02-05 20:30:47 +01:00
Luca Boccassi
b7c1d932fb Grant by asafkahlon
Received via email, message-id:

CALFsTFVZLgujRE3V_30G9V9b35kE566K5cWi0vKbNkZGSHrszA@mail.gmail.com
2020-02-05 17:06:27 +00:00
Luca Boccassi
38b6888c3e Problem: libzmq does not advertise ZMTP 3.1
Solution: bump minor version number in the engine as all 3.1 features
are now implemented
2020-02-05 17:03:39 +00:00
Luca Boccassi
253e9dd27b Problem: libzmq does not send ZMTP 3.1 sub/cancel commands
Solution: if all peers of a socket are >= 3.1 use sub/cancel commands
instead of the old 0/1 messages.
For backward compatibility, move the handling of 0/1 or sub/cancel
command strings to the encoders, so that the right thing can be done
depending on the protocol version.
Do not set the command flag until the encoder, so that we can handle
the inproc case (which skips the encoder).
2020-02-05 17:03:39 +00:00
Luca Boccassi
d4af92cd15
Merge pull request #3818 from SCOREC/xlClang
support compiling with IBM XL 16.1 w/ clang front end
2020-02-05 16:59:24 +00:00
Cameron Smith
f4dff8eed6 relicense stmt 2020-02-05 11:46:08 -05:00
Cameron Smith
49ecde8d80 support compiling with IBM XL 16.1 w/ clang front end 2020-02-05 11:00:34 -05:00
Luca Boccassi
0d073e0b67
Merge pull request #3816 from somdoron/SCATTER-GATHER-DOC
problem: no docs for scatter-gather
2020-02-05 08:29:37 +01:00
Doron Somech
40de45396f problem: no docs for scatter-gather 2020-02-05 02:33:38 +02:00
Luca Boccassi
27f2f5e745
Merge pull request #3815 from gummif/gfa/doc-typo
Problem: Documentation for option name mismatch
2020-02-04 21:44:21 +01:00
Gudmundur Adalsteinsson
ee32b833a7 Add relicence agreement 2020-02-04 20:07:35 +00:00
Gudmundur Adalsteinsson
f80830c4a8 Problem: Documentation for option name mismatch
Solution: Fix typo
2020-02-04 20:00:07 +00:00
Luca Boccassi
e7f802d1ac
Merge pull request #3813 from sigiesec/code-style
Improve code style, remove duplications in test code
2020-02-04 19:05:01 +01:00
Simon Giesecke
21b8d5cff7 Problem: duplicated code in tests related to monitoring
Solution: extract new receive_monitor_address function
2020-02-04 18:36:03 +01:00
Simon Giesecke
495fb00b7e Problem: pointee types are unnecessarily non-const
Solution: add const where possible
2020-02-04 18:34:19 +01:00
Simon Giesecke
db8f4fba21 Problem: redundant inline/ZMQ_FINAL declarations
Solution: remove them
2020-02-04 18:34:13 +01:00
Luca Boccassi
21d80e42a8
Merge pull request #3812 from pavel-pimenov/RELICENSE-pavel-pimenov
RELICENSE pavel-pimenov
2020-02-04 16:40:36 +01:00
Pavel Pimenov
c9845bfbf4 RELICENSE pavel-pimenov 2020-02-04 18:36:19 +03:00
Luca Boccassi
84ec65482f
Merge pull request #3808 from sigiesec/fix-test-monitor-to-be-checked
Fix intermittent test_monitor and test_security_zap timeouts/deadlocks for now
2020-02-04 15:23:58 +01:00
Luca Boccassi
d8851c5ca8
Merge pull request #3807 from sigiesec/fix-test-heartbeats
Problem: intermittent timeouts on test_heartbeats
2020-02-04 14:42:16 +01:00
Simon Giesecke
66094678d1 Problem: intermittent deadlocks/timeouts in test_monitor and test_security_zap
Solution: wait for monitor to stop resp. unregister monitor before
closing monitored socket.
2020-02-04 14:34:36 +01:00
Doron Somech
0a1fc44ed7
Merge pull request #3811 from sigiesec/fix-libsodium-1-0-0
Problem: curve_encoding_t build fails with old libsodium versions
2020-02-04 10:34:27 +01:00
Simon Giesecke
dfcca75d0b Problem: curve_encoding_t build fails with old libsodium versions
Solution: add version check and fall back to old implementation for old versions
2020-02-04 10:04:40 +01:00
Simon Giesecke
58b636675a Problem: on POSIX systems, all tests have a timeout of 60 seconds; disabling it via ZMQ_DISABLE_TEST_TIMEOUT doesn't work anymore
Solution: remove ZMQ_DISABLE_TEST_TIMEOUT guard but add default parameter to setup_test_environment
2020-02-04 09:48:55 +01:00
Simon Giesecke
577d64c007 Problem: intermittent timeouts on test_heartbeats
Solution: increase number of retries when reading monitor event,
and increase timeout
2020-02-04 09:48:55 +01:00
Luca Boccassi
06bdebfe8d
Merge pull request #3805 from sigiesec/curve-zerocopy
CURVE: Reduce number of memory allocations and message copies
2020-02-04 08:58:31 +01:00
Luca Boccassi
f1513f96d8
Merge pull request #3806 from sigiesec/increase-reconnect-ivl-timeout
Problem: intermittent timeouts of test_reconnect_ivl
2020-02-04 08:54:32 +01:00
Simon Giesecke
e7043c815d Problem: intermittent timeouts of test_reconnect_ivl
Solution: increase timeout to 15 seconds
2020-02-03 23:19:45 +01:00
Simon Giesecke
4177bf7445 Problem: curve_encoding_t involves unnecesary heap allocations and copying of message data
Solution: use crypto_box_easy_afternm and crypto_box_open_easy_afternm
in-place
2020-02-03 22:33:15 +01:00
Simon Giesecke
2fa8185340 Problem: cannot use static libsodium library on Windows
Solution: add CMake option WITH_LIBSODIUM_STATIC
2020-02-03 22:24:16 +01:00
Simon Giesecke
b01685ea0a Problem: no unittests for curve_encoding_t
Solution: add initial tests
2020-02-03 22:24:16 +01:00
Luca Boccassi
48aed8df11
Merge pull request #3803 from bluca/relicense
Grant by jimenezrick, xantares
2020-02-03 19:10:32 +01:00
Telford Berkey
499624927a
Submitting permission to relicense under MPLv2 statement. (#3804)
* Adding permission to relicense for tberkey.

Co-authored-by: bzimmerman-qb <bzimmerman@4qbase.com>
2020-02-03 17:34:52 +01:00
Simon Giesecke
78b94a4fcf Problem: testutil.hpp pulls in min/max macro definitions on Windows
Solution: define NOMINMAX
2020-02-03 17:07:15 +01:00
Simon Giesecke
4ad239acbc Problem: curve encoding and decoding are not easily testable
Solution: extract into separate class curve_encoding_t
2020-02-03 17:07:15 +01:00
Luca Boccassi
a7b328a79a Revert "Problem: nuget internal metadata not maintained, no relicense"
Relicense grant received.

This reverts commit d2a8be8da72f893d23a611bff0ba09e3ee9872e1.
2020-02-03 16:23:38 +01:00
Luca Boccassi
7cceedda2d Grant by phreed
Received via email, message-id:

BYAPR08MB506237D85857D053D749888C91000@BYAPR08MB5062.namprd08.prod.outlook.com
2020-02-03 16:22:20 +01:00
Luca Boccassi
f6de0dcafa Grant by xantares
Set via github comment:

https://github.com/zeromq/libzmq/pull/1366#issuecomment-581451018
2020-02-03 15:56:11 +01:00
Luca Boccassi
687241e93f Grant by jimenezrick 2020-02-03 14:19:36 +01:00
Kevin Sapper
af5ac60631
Merge pull request #3801 from bluca/relicense
Add relicense from zoobab, acsearle
2020-02-03 14:13:23 +01:00
Luca Boccassi
d69f4dc855 Problem: commented out code in CMakeLists.txt
Solution: remove it, never used
2020-02-03 13:40:42 +01:00
Luca Boccassi
d2a8be8da7 Problem: nuget internal metadata not maintained, no relicense
Solution: remove it for now
2020-02-03 13:40:42 +01:00
Luca Boccassi
a2b4cca266
Merge pull request #3802 from FredTreg/patch-1
Adding relicensing grant from FredTreg
2020-02-03 13:29:37 +01:00
Frederic Tregon
0b66262bda
Adding relicensing grant from FredTreg 2020-02-03 13:08:45 +01:00
Luca Boccassi
2a6cc306da Grant by acsearle 2020-02-03 11:56:11 +01:00
Simon Giesecke
3e394fddb4 Problem: naming convention violated by curve_mechanism_base
Solution: change to conform with naming convention
2020-02-03 11:44:10 +01:00
Luca Boccassi
fc8eec6d39 Add relicense from zoobab 2020-02-03 10:26:35 +01:00
Luca Boccassi
75dfbae0d1
Merge pull request #3798 from std-any-emplace/msvc-cmake-clang-buildfix
Add an extra space after "/Z7" in CMakeLists.txt.
2020-01-28 22:34:58 +00:00
Simon Giesecke
e73789620d
Merge pull request #3797 from std-any-emplace/msvc-cmake
Both libzmq and libzmq-static are trying to work in precompiled.pch. …
2020-01-28 22:14:10 +01:00
std-any-emplace
e29495373e Add an extra space after "/Z7". Else the flag gets joined with the flag following this and clang-cl does not like that. 2020-01-28 21:30:56 +01:00
std-any-emplace
9b66fe2fba Both libzmq and libzmq-static are trying to work in precompiled.pch. Solution: enforce order.
Fixes https://github.com/zeromq/libzmq/issues/3776.
2020-01-28 20:57:53 +01:00
Luca Boccassi
fde2a7a65d
Merge pull request #3795 from sigiesec/final-override-analyze
Code style improvements
2020-01-27 11:42:57 +00:00
Simon Giesecke
406c423c9a Problem: C-style casts used
Solution: use static_cast instead
2020-01-27 10:38:00 +01:00
Simon Giesecke
78961eeab7 Problem: non-modifying member functions not marked as const/static
Solution: add const/static
2020-01-27 10:38:00 +01:00
Simon Giesecke
41e3f14d6a Problem: ptr/ref parameters and local variables are non-const but never modified
Solution: add const
2020-01-27 10:38:00 +01:00
Simon Giesecke
759fed8e7e Problem: meaningless inline specified on function declarations
Solution: remove them
2020-01-27 10:38:00 +01:00
Simon Giesecke
f8f7913737 Problem: irregular loop conditions
Solution: use standard loop constructs and optimize some loops
2020-01-27 10:38:00 +01:00
Simon Giesecke
628adf1cb7 Problem: inconsistent polymorphic inheritance
Solution: consistently use virtual, override and final
2020-01-27 08:46:55 +01:00
Luca Boccassi
6d69898240
Merge pull request #3794 from sigiesec/fix-ctx-shutdown
Problem: sockets can be created after calling zmq_ctx_shutdown
2020-01-26 18:09:47 +00:00
std-any-emplace
fbf85448c3 Clarify used C++-standard for compilation. (#3793)
* Clarify used C++-standard for compilation.

* More than a conforming compiler may be necessary to compile the library. Just refer to the list of known "good" platforms below.
2020-01-26 18:50:17 +01:00
Simon Giesecke
36a8df2f8c Problem: sockets can be created after calling zmq_ctx_shutdown
Solution: fix handling of _starting and _terminate flags

Add tests for this situation.

Clarify documentation of zmq_ctx_shutdown and zmq_socket.

Fixes #3792
2020-01-26 18:06:14 +01:00
Simon Giesecke
ebc9314339
Merge pull request #3790 from std-any-emplace/master
EAGAIN: Refer to ZMQ_RCVTIMEO when receiving in blocking-mode
2020-01-25 21:46:35 +01:00
std-any-emplace
337ec270a4 EAGAIN: Refer to ZMQ_RCVTIMEO when receiving in blocking-mode 2020-01-25 20:04:59 +01:00
Luca Boccassi
349e3e21db
Merge pull request #3789 from std-any-emplace/master
Some minor documentation fixes
2020-01-23 19:29:54 +00:00
std-any-emplace
feb4f3d424 Fix minor typo 2020-01-23 20:09:08 +01:00
std-any-emplace
81d522bb66 Refer to zmq_socket because there are more thread-safe sockets than just client/server 2020-01-23 20:08:38 +01:00
Luca Boccassi
72865e1b61
Merge pull request #3788 from colletted/feature
Replace strtok with strtok_r
2020-01-23 09:34:12 +00:00
Denis Collette
64fc106123 Problem: preious commit contains tabs
Solution: replace tabs with spaces
2020-01-22 20:15:50 -04:00
Denis Collette
851ae90319 Problem: No relicense agreement by Denis Collette
Solution: added relicence agreement
2020-01-22 19:59:51 -04:00
Denis Collette
1450681fb4 Problem: Issue #3766 states that strtok is not thread safe and should be replaced
Solution: Replaced calls to strtok with strtok_r (strtok_s for windows)
in ws_engine.cpp
2020-01-22 19:40:26 -04:00
Simon Giesecke
b7dd31db5a
Merge pull request #3785 from bluca/wss_option
Problem: WS build option is independent of DRAFT
2020-01-20 14:13:36 +01:00
Luca Boccassi
1f00a5bf59 Problem: WS build option is independent of DRAFT
Solution: make the default depend on the value of the DRAFT build flag
2020-01-19 16:36:29 +00:00
Luca Boccassi
ddae567f16 Problem: ZMQ_WSS socket options not defined in src/zmq_draft.h
Solution: add them
2020-01-19 14:39:29 +00:00
Doron Somech
07052ad309
Merge pull request #3784 from bluca/news
Problem: NEWS out of date with latest changes
2020-01-19 16:13:19 +02:00
Luca Boccassi
68e6d8c07f Problem: NEWS out of date with latest changes
Solution: update it
2020-01-19 13:52:35 +00:00
Doron Somech
d47b7fa065
Merge pull request #3783 from std-any-emplace/master
Documentation fix regarding thread-safety of zmq_poll/zmq_poller.txt.
2020-01-19 11:48:12 +02:00
std-any-emplace
c09b794ac6 Add a relicense-file. 2020-01-19 10:45:18 +01:00
std-any-emplace
8004c10f39 Documentation fix regarding thread-safety of zmq_poll/zmq_poller.txt.
See https://github.com/zeromq/libzmq/issues/3778.
2020-01-19 09:54:11 +01:00
Doron Somech
1b8a352480
Merge pull request #3782 from mloy/fix_websocket_without_path_with_test
Fix websocket without path with test
2020-01-19 07:38:31 +02:00
Matthias Loy
65ce499bef Added relicense file mloy 2020-01-18 23:20:15 +01:00
Matthias Loy
67adc458df Roundtrip test for websocket url without a path 2020-01-18 23:19:31 +01:00
Matthias Loy
c357c378d8 fix: websocket url without path
websocket urls without a path caused crash!
2020-01-18 23:04:16 +01:00
Luca Boccassi
7ea72e5692
Merge pull request #3780 from somdoron/WSPINGPONG
problem: ws_engine don't support WS RFC ping-pong and close
2020-01-18 19:31:00 +00:00
Doron Somech
60ef14f80b problem: ws_engine don't support WS RFC close control msg
Solution: when peer send a close msg, close the connection
2020-01-18 19:30:23 +02:00
Doron Somech
b120ec33a9 problem: ws_engine don't support WS RFC ping-pong
Solution: implement both PONG response and producing pings
2020-01-18 18:28:00 +02:00
Constantin Rack
b9b901e89d
Merge pull request #3775 from ffontaine/master
acinclude.m4: add -latomic to PKGCFG_LIBS_PRIVATE
2020-01-12 12:10:08 +00:00
Fabrice Fontaine
d59dcbcaeb acinclude.m4: add -latomic to PKGCFG_LIBS_PRIVATE
Add -latomic to PKGCFG_LIBS_PRIVATE so applications linking statically
with libzmq (such czmq) will know that they have to link with -latomic
and the following build failure will be avoided:

  CCLD     src/czmq_selftest
/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/sparc-buildroot-linux-uclibc/sysroot/usr/lib/libzmq.a(src_libzmq_la-ctx.o): in function `zmq::ctx_t::create_socket(int)':
ctx.cpp:(.text+0x1710): undefined reference to `__atomic_fetch_add_4'

Fixes:
 - http://autobuild.buildroot.org/results/4a12f1ede260cd956a0b5ccb4eec6ca8b44cb04f

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2020-01-12 10:18:23 +01:00
Luca Boccassi
a9cca0d568
Merge pull request #3772 from kanonet/mingw-lib
mingw: add missing namespace
2020-01-09 20:53:29 +00:00
Christoph Kahl
c5dab4f48f mingw: add missing namespace 2020-01-09 21:44:53 +01:00
Simon Giesecke
73eb1eac05
Merge pull request #3767 from bluca/libbsd
Problems: reimplementation of strlcpy, CMake does not use pkg-config for NSS, wrong pc generated by autoconf with GNUTLS
2020-01-06 11:46:38 +01:00
xqcool
382c6d7186 Update array.hpp (#3769)
* Update array.hpp

Problem:Calling back on an empty container causes undefined behavior.
Solution:Check with the function empty()

* Create xqcool.mq

Adds relicensing grant
2020-01-01 10:37:51 +01:00
Luca Boccassi
c560a41473 Problem: mingw build broken
Solution: check correct preprocessor define in test_reconnect_ivl to match the
test invocation
2019-12-28 21:17:09 +01:00
Luca Boccassi
3832bd6b11 Problem: UWP build fails
Solution: initialize local variable in all cases to false positive
compiler warning
2019-12-28 21:17:09 +01:00
Luca Boccassi
21f763c872 Problem: libbsd not used on Travis
Solution: add it to one build to exercise all the code paths
2019-12-28 21:17:09 +01:00
Luca Boccassi
9d2899af87 Problem: libzmq.pc does not include gnutls dependency for static linking
Solution: add it to the Requires.private list
2019-12-28 21:17:09 +01:00
Luca Boccassi
2c2ff01e85 Problem: CMake does not look for NSS using pkg-config
Solution: use pkg-config by default and FindPackage only as a
fallback
2019-12-28 21:17:09 +01:00
Luca Boccassi
068385c951 Problem: internal reimplementation of strlcpy used by default on Linux
Solution: use libbsd by default when available, and the internal implementation
only as a fallback, to take advantage of Linux distros maintenance of the
string libraries.
2019-12-28 16:21:06 +01:00
Luca Boccassi
246cc77efc
Merge pull request #3763 from sigiesec/replace-strcpy
Avoid possible buffers overruns in ws_engine
2019-12-25 16:13:13 +01:00
Luca Boccassi
59095f9d06
Merge pull request #3765 from sigiesec/various-improvements
Various improvements
2019-12-25 15:07:10 +01:00
Simon Giesecke
3dbbc28bb8 Problem: use of unsafe strcpy
Solution: use memcpy with known size instead
2019-12-25 13:56:26 +01:00
Simon Giesecke
334e837b88 Problem: ws_engine uses unsafe strcpy
Solution: use strcpy_s instead (define custom if not available)
2019-12-25 13:56:26 +01:00
Simon Giesecke
14ab794671 Problem: local functions not declared static
Solution: add static
2019-12-25 13:52:21 +01:00
Simon Giesecke
fa804c7783 Problem: pseudo-loops which had exactly one iteration
Solution: removed them
2019-12-25 13:52:21 +01:00
Simon Giesecke
579aa5b440 Problem: non-loop-variables initialized via loop initializer
Solution: move initialization to declaration
2019-12-25 13:52:21 +01:00
Simon Giesecke
d4cc592387 Problem: loop variable modified in loop step and body
Solution: modify it in loop body only
2019-12-25 13:52:21 +01:00
Simon Giesecke
a64c3e6c7d Problem: redundant consecutive return statements
Solution: remove the redundant one
2019-12-24 10:17:10 +01:00
Simon Giesecke
ddbf45cf8d Problem: redundant break after return
Solution: remove them
2019-12-24 10:17:10 +01:00
Simon Giesecke
2256bd5b0b Problem: unnecessary copying of string literals
Solution: just copy the address
2019-12-23 14:12:07 +01:00
Simon Giesecke
4c3f115469 Problem: raw malloc used unnecessarily
Solution: use std::string instead
2019-12-23 14:12:07 +01:00
Simon Giesecke
30e2398e67 Problem: WSS-specific members and options are compiled without ZMQ_HAVE_WSS
Solution: properly guard members and options
2019-12-23 11:58:07 +01:00
Simon Giesecke
9e548bd591 Problem: insecure and inefficient strcpy used
Solution: use memcpy with known length
2019-12-23 11:58:07 +01:00
Simon Giesecke
3e7995f7f7
Merge pull request #3758 from sonoware/fix-set-cpu-affinity
Fix set cpu affinity
2019-12-13 15:03:06 +01:00
Stephan Senkbeil
8089529148 Problem: ZMQ_HAVE_PTHREAD_SET_AFFINITY not set correctly
Solution: Set correct define in CMake check and add the cmakedefine
2019-12-13 14:42:45 +01:00
Stephan Senkbeil
3a3192e983 Adds RELICENSE for sonoware 2019-12-13 14:40:42 +01:00
Luca Boccassi
eb54966cb9
Merge pull request #3757 from sigiesec/fix-windows-signaler-regression
Fix windows signaler regression
2019-12-10 18:41:35 +00:00
Simon Giesecke
9f16513ebe Problem: loop sending signaler event is obscure
Solution: add comments and remove continue/break
2019-12-10 16:19:25 +01:00
Simon Giesecke
3ace237988 Revert "Removed unreachable code paths"
This reverts commit 4f77cfa3274fcddf9687fc713b8a331ee018cf87.
2019-12-10 16:08:52 +01:00
Doron Somech
9b67fe8a98
Merge pull request #3755 from sigiesec/more-improvements-analyze
Make use of = default and = delete if available
2019-12-09 12:06:49 +02:00
Simon Giesecke
b88b12c77c Problem: sonar has no access to git history
Solution: unshallow clone in analysis job
2019-12-09 09:48:21 +01:00
Simon Giesecke
f60f909899 Problem: missing use of C++11 = delete and = default
Solution: introduce macros ZMQ_DEFAULT and ZMQ_NON_COPYABLE_NOR_MOVABLE
2019-12-09 09:48:21 +01:00
Simon Giesecke
86d7de38ca Problem: redundant empty destructor
Solution: Remove definition
2019-12-08 19:43:31 +01:00
Constantin Rack
400107d765
Merge pull request #3754 from sigiesec/code-improvements-analyze
Improvements to static analysis & resolve some issues identified by static analysis
2019-12-08 17:31:02 +00:00
Simon Giesecke
76460c5e17 Problem: clang-format outdated
Solution: update to clang-format 8
2019-12-08 16:08:16 +01:00
Simon Giesecke
f8adf9ea55 Problem: unnecessary value parameters
Solution: change to const references
2019-12-08 15:24:48 +01:00
Simon Giesecke
cb2b377d9f Problem: redundant else after return
Solution: remove else
2019-12-08 15:24:48 +01:00
Simon Giesecke
1d9c6bcf09 Problem: unittest_udp_address not properly formatted
Solution: run clang-format
2019-12-08 15:24:48 +01:00
Simon Giesecke
fdabd73da6 Problem: parameters not const where const possible
Solution: add const
2019-12-08 15:24:48 +01:00
Simon Giesecke
84267e734b Problem: inconsistent parameter names on definition/declaration
Solution: align them
2019-12-08 15:24:48 +01:00
Simon Giesecke
cd954e207d Problem: use of C-style casts
Solution: use static_cast/reinterpret_cast instead
2019-12-08 15:24:48 +01:00
Simon Giesecke
a83c57d0bb Problem: identifiers not conformant with naming convention
Solution: fix identifier names
2019-12-08 15:24:48 +01:00
Simon Giesecke
18edd28955 Problem: clang version used for analysis is outdated
Solution: update to clang 8
2019-12-08 15:24:48 +01:00
Simon Giesecke
de3e03c147 Problem: new clang-tidy contains checks that do not apply to libzmq
Solution: disable inapplicable checks
2019-12-08 15:24:48 +01:00
Luca Boccassi
b9ddf62261
Merge pull request #3752 from sigiesec/update-sonar-scanner-analyze
Problem: sonar-scanner binary is outdated and no longer available
2019-12-07 10:48:46 +00:00
Simon Giesecke
d2fbfa7bd8 Problem: sonar-scanner binary is outdated and no longer available
Solution: Update to version 4.2.0.1873
2019-12-07 10:38:22 +01:00
Luca Boccassi
df993d113c
Merge pull request #3751 from sigiesec/windows-domain-sockets-signaler
Use Unix domain sockets for listener when available on Windows
2019-12-07 00:25:21 +00:00
Simon Giesecke
cf7e0fb066 Problem: test_capabilities fails on Windows when IPC support is available
Solution: Fix ifdef for expectation of IPC support
2019-12-06 20:24:41 +01:00
Simon Giesecke
76b7478290 Problem: there is no VS2019/IPC build job
Solution: add VS2019 build job
2019-12-06 19:31:41 +01:00
Simon Giesecke
ca552d563f Problem: listener socket uses TCP loopback connections which sometimes go awry
Solution: Use domain sockets instead if available
2019-12-06 19:11:50 +01:00
Simon Giesecke
bd4c2d60ba Problem: zmq::listener_t::create_wildcard_address not reusable in ip.cpp
Solution: move to ip.hpp as zmq::create_ipc_wildcard_address
2019-12-06 19:11:50 +01:00
Simon Giesecke
3bcaea535c Problem: zmq_fdpair function is very long
Solution: Extract TCP/IP loopback variant into zmq_fdpair_tcpip
2019-12-06 17:51:13 +01:00
liedtkeInTUM
65d2f1f498 Problem: if IPC enabled libzmq does not compile when in uwp build (#3747)
* Problem: if IPC enabled libzmq does not compile when in uwp build

* Problem 10.0.##### can be valid windows target versions

* Problem: No builds are triggered on uwp platform

* Problem: epoll is set before UWP platform is checked

* Problem: used wrong CMAKE_SYSTEM_NAME specifier

* Problem: build tests fails during cmake configure

* Use Win32 build step for Win32-uwp platform

* Disable compile options that produce warnings that leads to a ci fail

* winnt version is set by cmake, no need for redefinition in windows.hpp

* Eliminate all warning according Incremental and opt:icf are specified

* Prefer to disable opt flags in debug config rather than incremental linking

* CMAKE_GENERATOR should not include uwp definition

* Add release build with uwp configuration

* Problem: pointer potentially uninitialized
2019-12-06 13:27:24 +00:00
Luca Boccassi
51bf2aff35
Merge pull request #3746 from drolevar/master
Change XSUB -> XPUB message processing.
2019-12-04 16:08:15 +00:00
Andrij Abyzov
5a854780f2 Problem: cannot send arbitrary data from XSUB to XPUB.
Solution: now if the first frame in a multipart message is not subscribe/unsubscribe,
the rest of the parts are also considered to be not subscribe/unsubscribe.
2019-12-04 16:25:08 +01:00
Doron Somech
85df75584e
Merge pull request #3743 from bluca/test_ws_bindport
Fix ZMQ_LAST_ENDPOINT with WS[S] and use it in tests
2019-11-28 17:24:35 +02:00
Luca Boccassi
00a448b1f0 Problem: WS tests bind to hard-coded TCP port and fail when ran in parallel
Solution: bind to wildcard and use ZMQ_LAST_ENDPOINT
2019-11-28 12:37:53 +00:00
Luca Boccassi
a61db18eee Problem: WSS LAST_ENDPOINT returns WS transport
Solution: add wss_address_t subclass of ws_address_t to override the
to_string method
2019-11-28 12:37:53 +00:00
Luca Boccassi
c711941e9a Problem: wildcard port binding does not work with WS sockets
Solution: remove the path from the address when resolving
2019-11-28 09:27:05 +00:00
Luca Boccassi
79d75f017c Problem: WS sockets return TCP protocol strings with ZMQ_LAST_ENDPOINT
Solution: use the correct address class when resolving
2019-11-28 09:27:05 +00:00
Luca Boccassi
75d9d84100
Merge pull request #3744 from liedtkeInTUM/fix_output_name
Problem: static libs are generated without given basename
2019-11-27 09:33:28 +00:00
Sven Liedtke
0cca4b2ce9 Add relicense statement 2019-11-27 10:24:20 +01:00
Sven Liedtke
d9d4dbbbd4 Problem: static libs are generated without given basename 2019-11-27 08:28:07 +01:00
Luca Boccassi
0f9dd85e89
Merge pull request #3741 from drolevar/master
Change XSUB -> XPUB multipart message processing.
2019-11-20 09:01:32 +00:00
Andrij Abyzov
04761133bf Fix zmq::select_t::loop formatting 2019-11-20 09:29:59 +01:00
Andrij Abyzov
d5198693e8 Add relicense grant for Andrij Abyzov 2019-11-19 18:22:15 +01:00
Andrij Abyzov
108977c838 Change XSUB -> XPUB multipart message processing.
Now only the first part in a multipart message will be treated as subscribe/unsubscribe.
The rest will be considered user messages regardless of the first byte.
2019-11-19 18:22:12 +01:00
Luca Boccassi
e0d9e21374
Merge pull request #3738 from eldruin/external-output-name
Allow library output name to be changed externally
2019-11-13 12:40:55 +00:00
Diego Barrios Romero
0605d06f1e Add license grant 2019-11-13 13:23:42 +01:00
Diego Barrios Romero
0bd8f70264 Allow renaming library from the outside 2019-11-13 12:00:47 +01:00
Luca Boccassi
97df2dac3a
Merge pull request #3735 from viciious/no-libsodium-spec
Remove the superfluous build requirement of libsodium-devel
2019-11-12 17:15:56 +00:00
Victor Luchits
e2e0f5c5f0 Add the relicense statement 2019-11-12 20:14:13 +03:00
Victor Luchits
39c63994f9 Remove the superfluous build requirement of libsodium-devel 2019-11-12 18:24:21 +03:00
Luca Boccassi
b788270bda
Merge pull request #3734 from somdoron/tls_key_expired
problem: test_wss_transport keys expired
2019-11-10 10:17:35 +00:00
Doron Somech
a1aeae92cd problem: test_wss_transport expired
Solution: generate new keys that last for 100 years
2019-11-10 10:34:43 +02:00
Luca Boccassi
af86d93d5f
Merge pull request #3726 from bluca/capsh_option
Problem: test_pair_tcp_cap_net_admin requires sudo but is enabled by …
2019-11-02 08:24:34 +00:00
Constantin Rack
c57b2a5cc4
Merge pull request #3729 from bluca/fd_oob
Problem: WSAEventSelect checks for FD_OOB, but select does not
2019-11-01 10:06:18 +00:00
Luca Boccassi
9ced36e407 Problem: WSAEventSelect checks for FD_OOB, but select does not
WSAEventSelect is used on Windows (when select is the polling method)
only if waiting for more than one socket family, excluding IPv4/6.
It is then passed FD_OOB, which means it can be woken by OOB messages,
but select later on never checks for it.
Remove FD_OOB as it's not actually used for anything.
2019-11-01 09:34:03 +00:00
Doron Somech
854354bbd6
Merge pull request #3728 from njsmith/patch-1
Fix typo in email address
2019-10-31 23:30:17 +02:00
Nathaniel J. Smith
4f188fe1ab
Fix typo in email address 2019-10-31 14:02:10 -07:00
Luca Boccassi
30e966fe1b
Merge pull request #3727 from Botje/fix-poller-example
Problem: Poller example has wrong argument order
2019-10-31 18:55:25 +00:00
Dries Harnie
9e4f55d741 RELICENSE: Add grant for Dries Harnie 2019-10-31 19:44:50 +01:00
Dries Harnie
ba6695c59a Problem: zmq_poller example is wrong
Solution: flipped arguments in example
2019-10-31 18:54:07 +01:00
Luca Boccassi
bfa8cf3089 Problem: test_pair_tcp_cap_net_admin requires sudo but is enabled by default in CMake
Solution: add an option to enable it, and default to false. Enable it in
the CI so we don't lose coverage, as it works on Travis.

Fixes #3725
2019-10-31 09:37:22 +00:00
Luca Boccassi
805564b996
Merge pull request #3717 from sigiesec/add-win-ipc-support
Problem: ipc transport not supported under Windows
2019-10-29 23:02:42 +00:00
Simon Giesecke
302436515c Problem: windows socket error number cleared before saved to saved_errno
Solution: call tune_socket only if connect was successful
2019-10-29 23:04:54 +01:00
Simon Giesecke
66d0f3511f Problem: ipc transport not supported under Windows
Solution: implement support
2019-10-29 23:04:54 +01:00
Luca Boccassi
a33f1101dc
Merge pull request #3724 from benjdero/qol-improvements
Add a few quality of life improvements to the Android build scripts
2019-10-28 16:34:33 +00:00
Benjamin Deroche
c1168b2374 Rename my license agreement 2019-10-28 16:48:54 +01:00
Benjamin Deroche
c995032595 Fix android build fail check when using a different locale than english 2019-10-28 16:48:54 +01:00
Benjamin Deroche
0d0899bc0d Download the NDK only the first time 2019-10-28 16:48:54 +01:00
Benjamin Deroche
7ee36a177a Make sure the new file erase the old one and don't get a different name 2019-10-28 16:03:22 +01:00
Benjamin Deroche
947893e79f Keep the unzip quiet but make sure it doesn't fail silently 2019-10-28 16:02:57 +01:00
Doron Somech
11d49d4f47
Merge pull request #3721 from bluca/gnutls_pkg
Problem: libzmq-dev not installable with libczmq-dev on Ubuntu 16.04
2019-10-26 16:21:42 +03:00
Luca Boccassi
44b13a3aa4 Problem: libzmq-dev not installable with libczmq-dev on Ubuntu 16.04
Solution: add alternative dependency as libgnutls-dev | libgnutls28-dev,
so that the resolver can break the tie, as libcurl4-nss-dev depends on
libgnutls-dev which conflicts with libgnutls28-dev
2019-10-26 12:37:18 +01:00
Luca Boccassi
86722502e9
Merge pull request #3720 from BenjaminDeroche/master
Problem: Android build script is severely outdated
2019-10-26 00:04:36 +01:00
Benjamin Deroche
a67f7b09a4 Add the relicense statement 2019-10-26 00:46:49 +02:00
Benjamin Deroche
d2099b7593 Problem: Android build script is severely outdated
Solution: Migrate build scripts from Android NDK r11c to r20.
- Standalone toolchain
- Migration from GCC to Clang
- Migration from libgnustl to libc++
- Dropped support for API level below 16 (Android 4.1), previously it was API level 9 (Android 2.3)
- Dropped support for mips architecture
- The build script now start the build of all 4 Android architectures (arm, arm64, x86, x86_64)
2019-10-25 23:07:04 +02:00
Doron Somech
58deca3fb3
Merge pull request #3716 from sigiesec/fix-winxp-support
Problem: build targeting Windows XP is broken
2019-10-19 09:31:47 -04:00
Simon Giesecke
7f43e7ff75 Problem: build targeting Windows XP is broken
Solution: fix build issues
2019-10-19 14:04:55 +02:00
Luca Boccassi
92e3226869
Merge pull request #3714 from mdionisio/remove_libm
Revert "Problem: pkg-config file cannot be used for static linking on…
2019-10-14 20:44:23 +01:00
Michele Dionisio
9f65720dc0 Revert "Problem: pkg-config file cannot be used for static linking on CentOS 7"
This reverts commit 765c24740d6d2a1e3256ee90dc126d05917ca15d.
2019-10-14 20:43:33 +02:00
Luca Boccassi
683bf1d732
Merge pull request #3713 from mdionisio/useless_ceil
avoid to use std::ceil
2019-10-14 15:53:39 +01:00
Michele Dionisio
f07f47b1e3 avoid to use ceil function
ceil function is usually in math library that can be avoided as dependency
2019-10-14 16:18:27 +02:00
Michele Dionisio
f370cc0070 Add RELICENSE grant for mdionisio
Signed-off-by: Michele Dionisio <michele.dionisio@gmail.com>
2019-10-14 15:21:14 +02:00
Luca Boccassi
c1ff4c2b52
Merge pull request #3711 from yan12125/centos7-static-linking
Fix linking to libzmq.a statically on CentOS 7
2019-10-12 15:46:47 +01:00
Chih-Hsuan Yen
ca30ee78f6
Add relicense note for @yan12125
Based on RELICENSE/templates/relicense-template-mplv2.txt. MPLv2 is
definitely fine, but I'm not sure if I'm OK with other licenses.
2019-10-12 22:37:05 +08:00
Chih-Hsuan Yen
765c24740d
Problem: pkg-config file cannot be used for static linking on CentOS 7
Solution: add -lm to Libs.private of libzmq.pc so that the std::ceil
usage in src/decoder_allocators.cpp is satisfied during static linking
on CentOS 7.

See https://github.com/zeromq/libzmq/issues/3710 for a reproducer.
2019-10-12 22:36:31 +08:00
Doron Somech
96bc59a6ce
Merge pull request #3708 from bluca/gnutls_pkg
Problem: test_wss_transport doesn't compile without DRAFT
2019-10-07 12:54:51 +03:00
Luca Boccassi
5bcb7dc5fe Problem: test_wss_transport doesn't compile without DRAFT
Solution: skip it
2019-10-07 10:50:51 +01:00
Luca Boccassi
688213dbe4
Merge pull request #3706 from somdoron/master
WIP: problem: appveyor is failing
2019-10-07 10:39:52 +01:00
Doron Somech
efb9c5698e
Merge pull request #3707 from bluca/gnutls_pkg
Problem: packages not build with TLS support
2019-10-07 12:26:47 +03:00
Luca Boccassi
be83fe27e2 Problem: RPM builds do not print test failures logs
Solution: add VERBOSE=1
2019-10-07 09:55:42 +01:00
Luca Boccassi
5bfb13032e Problem: packages not build with TLS support
Solution: add dependency to gnutls
2019-10-07 09:55:32 +01:00
Luca Boccassi
de845bd021
Merge pull request #3705 from somdoron/ws_mechanism
problem: zero-sized messages cause assertion when glibc assertion are on
2019-10-07 08:37:32 +01:00
somdoron
cad10d9580 problem: some files are missing in git ignore
solution: add new entries to gitignore
2019-10-07 09:54:53 +03:00
somdoron
55c9e5037f problem: mingw and cygwin builds fail because of line error
Solution: ignore the line error and continue the build
2019-10-07 09:46:43 +03:00
somdoron
2d6a66a81d problem: test_xpub_nodrop fails frequently
Solution: fix the test
2019-10-07 09:46:43 +03:00
somdoron
9b15658eb1 problem: zero-sized messages cause assertion when glibc assertion are on
Solution: when a zero-sized message is encoded or decoded avoid mem copy
2019-10-07 09:11:44 +03:00
Luca Boccassi
539718f35a
Merge pull request #3704 from somdoron/ws_mechanism
problem: GNUTLS handshake is getting blocked because of timeout on some versions
2019-10-06 09:42:56 +01:00
somdoron
618227f63c problem: GNUTLS handshake is getting blocked because of timeout on some versions
Solution: disable handshake timeout
2019-10-06 11:05:56 +03:00
Luca Boccassi
810d3b43d1
Merge pull request #3703 from somdoron/ws_mechanism
problem: wss transport return incorrect return code for error
2019-10-04 19:46:56 +01:00
somdoron
a9bb526403 problem: wss transport return incorrect return code for error
Solution: return -1 for errors
2019-10-04 20:46:00 +03:00
Luca Boccassi
8d9acb72c1
Merge pull request #3702 from somdoron/ws_mechanism
problem: WS transport doesn't support mechanism
2019-10-04 15:38:49 +01:00
somdoron
2018be643a problem: valgrind complain about uninitialized value
Solution: initialize the value
2019-10-04 17:13:48 +03:00
somdoron
977f137a83 problem: cannot check WS and WSS capability
Solution: add capability check to zmq_has
2019-10-04 16:27:36 +03:00
somdoron
41b9af2c79 problem: WS transport doesn't support mechanism
Solution: add support to mechanism
2019-10-04 16:24:48 +03:00
Luca Boccassi
95797422aa
Merge pull request #3701 from JonDyte/master
RELICENSE: add Jon Dyte license grant.
2019-10-03 22:23:32 +01:00
Jon Dyte
9e60dbe780 RELICENSE: add Jon Dyte license grant. 2019-10-03 22:19:20 +01:00
Doron Somech
28f5c9545a
Merge pull request #3700 from bluca/relicense
Add grant by nixman
2019-10-03 15:10:21 +03:00
Luca Boccassi
42408dd9aa Add grant by nixman
Submitted as Github comment:

https://github.com/zeromq/libzmq/pull/242#issuecomment-537903446
2019-10-03 12:36:54 +01:00
Luca Boccassi
1c7ed2484b
Merge pull request #3698 from ThePrez/ibmi
Add IBM i build support
2019-10-03 08:51:04 +01:00
ThePrez
94f92b64ed
Add IBM i to platform list 2019-10-02 17:40:34 -05:00
ThePrez
fb2db30b19
Add relicense notice 2019-10-02 17:28:54 -05:00
ThePrez
25320a3c7b
Add IBM i build support via 'os400' clause 2019-10-02 15:21:28 -05:00
Luca Boccassi
9bb6b21423
Merge pull request #3695 from somdoron/tls
problem: unsecured websocket is rarely used in production
2019-10-02 09:04:38 +01:00
somdoron
7296fb5b15 problem: unsecured websocket is rarely used in production
Solution: support websocket with tls (wss)
2019-10-02 08:58:26 +03:00
Doron Somech
2e9b2f8843
Merge pull request #3696 from bluca/relicense
Add grant by MongoDB, Inc.
2019-10-01 21:47:04 +03:00
Luca Boccassi
a43f03316e Add grant by MongoDB, Inc.
Received by Github comment:
https://github.com/zeromq/libzmq/pull/1451#issuecomment-537169373
2019-10-01 19:39:08 +01:00
Luca Boccassi
8fe620901f
Merge pull request #3690 from ipechorin/master
Add relicense grant
2019-09-24 22:52:22 +01:00
Ivan Pechorin
598d9babf6 Add relicense grant 2019-09-25 09:39:22 +12:00
Luca Boccassi
4ebe92333e
Merge pull request #3687 from trya/fix_conflate
Fix behavior of ZMQ_CONFLATE on PUB sockets
2019-09-24 11:45:15 +01:00
trya
2fe9dd9101 Problem: ZMQ_CONFLATE on PUB sockets delivers to only one subscriber at most
Solution: Fix behavior of dbuffer on writes. Message passed in argument
of dbuffer::write can be assigned directly to the back buffer without
leaking, since the message has already the right reference count (see
dist::distribute and msg_t::add_refs). Secondly, in order to prevent the
message pending in the front buffer from leaking if it hasn't been
closed yet (for example because the peer is not reachable anymore), move
back buffer to front buffer using msg_t::move instead of swapping the
buffers, thus allowing release of the message in the front buffer.
2019-09-24 02:57:24 +02:00
Luca Boccassi
38b485dd75
Merge pull request #3685 from trya/relicensing
Add relicense grant
2019-09-23 20:50:53 +01:00
Luca Boccassi
f24c019ec1
Merge pull request #3686 from trya/doc_sock_block
Fix documentation about sockets blocking on send operations
2019-09-23 20:50:44 +01:00
trya
45e1fc059b Add relicense grant 2019-09-23 02:17:03 +02:00
trya
4378d71247 Problem: Documentation about socket blocking on send operations is incorrect
Solution: Reflect real behavior of sockets blocking on send operations
Sockets that block in mute state only block when no peer is available if
the transport is connection-oriented and the ZMQ_IMMEDIATE socket option
is set.
2019-09-23 02:13:04 +02:00
Luca Boccassi
8d34332ff2
Merge pull request #3683 from dimpase/patch-1
Allow "configure --disable-maintainer-mode"
2019-09-19 07:56:45 +02:00
Dima Pasechnik
3290faa8e6 relicense by dimpase 2019-09-18 23:09:01 +01:00
Dima Pasechnik
a25e3168bb
Allow "configure --disable-maintainer-mode"
Allow "configure --disable-maintainer-mode" to disable timestamp checking.
This is useful for one-off builds, in particular on e.g. clusters, where slightly skew clocks force aclocal and friends to kick in for no good reason.
2019-09-18 16:20:22 +01:00
Simon Giesecke
d76664017c
Merge pull request #3681 from TobiSchluter/bugfix/dont_include_winsock2
Bugfix/dont include winsock2
2019-09-13 09:34:16 +02:00
Tobias Schlüter
38d144731d Add relicensing file 2019-09-13 14:18:38 +09:00
Tobias Schlüter
cb211e4f1e Problem: inclusion of winsock2.h leads to ordering issues in user code.
Solution: don't include winsock2.h, replace its only use (reference to SOCKET) by explicitly naming underlying type.
2019-09-13 14:15:37 +09:00
Doron Somech
3ecaf9fe6e
Merge pull request #3680 from bluca/nss_pkg
Problem: nss package has different name on SUSE
2019-09-12 13:45:26 +03:00
Luca Boccassi
bd5220c505 Problem: nss package has different name on SUSE
Solution: fix it in the spec file
2019-09-12 11:16:46 +01:00
Doron Somech
9b4deeffdb
Merge pull request #3679 from bluca/nss_pkg
Problems: packages not building with nss, build fails on SUSE Tumbleweed, too many Travis builds
2019-09-12 12:08:34 +03:00
Luca Boccassi
3e4c90bbf4 Problem: package build fails on SUSE Tumbleweed
Solution: add -ffat-lto-objects if the compiler supports it
2019-09-11 16:02:10 +01:00
Luca Boccassi
79535f39ca Problem: there are already many Travis builds
Solution: do not add one specifically for nss, but use the existing
catch-all build
2019-09-11 15:46:00 +01:00
Luca Boccassi
5dd433501f Problem: packages are not build with nss
Solution: add relevant dependencies
2019-09-11 15:45:37 +01:00
Luca Boccassi
9acdafb001 Problem: spec file includes libsodium-devel twice
Solution: only do it once if the macro is enabled
2019-09-11 15:44:35 +01:00
Luca Boccassi
adf348b667
Merge pull request #3677 from somdoron/sha1_conflict
problem: sha external file conflict with czmq
2019-09-11 15:36:17 +01:00
somdoron
2fb9e93cfa problem: ci doesn't build with nss
Solution: add an nss build to CI
2019-09-11 15:01:28 +03:00
somdoron
9be8334938 problem: sha1 external module conflict with czmq
Solution: allow to use external library (nss) for sha1 to avoid the conflict
2019-09-11 15:01:28 +03:00
Luca Boccassi
e756743a12
Merge pull request #3674 from herbrechtsmeier/relicense
RELICENSE: add grant from Stefan Herbrechtsmeier
2019-09-09 19:46:34 +01:00
Stefan Herbrechtsmeier
f505e02988 RELICENSE: add grant from Stefan Herbrechtsmeier 2019-09-09 20:42:32 +02:00
Luca Boccassi
be0f52fe57
Merge pull request #3673 from jcfr/relicense-jcfr
Relicense: Jean-Christophe Fillion-Robin
2019-09-09 15:00:27 +01:00
Doron Somech
0858038367
Merge pull request #3672 from bluca/relicense
Relicense granby by RPGillespie6
2019-09-07 09:08:59 +03:00
Luca Boccassi
a643e58902 Relicense granby by RPGillespie6
Received by Github comment:
https://github.com/zeromq/libzmq/pull/2536#issuecomment-528961084
2019-09-07 00:23:21 +01:00
Luca Boccassi
064d5438e6
Merge pull request #3671 from somdoron/ws_protocol
problem: ws_engine doesn't check Sec-WebSocket-Protocol
2019-09-05 22:55:06 +01:00
somdoron
52e0d965b3 problem: ws_engine doesn't check Sec-WebSocket-Protocol
Solution: Validate Sec-WebSocket-Protocol and make sure ZWS2.0 is one of the protocols
2019-09-05 23:11:29 +03:00
Luca Boccassi
df1bec03c0
Merge pull request #3670 from somdoron/ws_host_path
problem: ws_engine doesn't send correct host and path
2019-09-05 20:57:33 +01:00
somdoron
a48fdd6a7f problem: ws_engine doesn't send correct host and path
Solution: extract path and host from the address
2019-09-05 17:33:38 +03:00
Luca Boccassi
3413e05bd0
Merge pull request #3668 from UniStuttgart-VISUS/master
Safer regex replace, keeping options like "/Zc:twoPhase-" intact
2019-09-04 21:55:29 +01:00
Alexander Straub
00cf36e933 Added relicense 2019-09-04 20:40:12 +02:00
Alexander Straub
2ec56d25b6 Safer regex replace, keeping options like "/Zc:twoPhase-" intact 2019-09-04 19:41:34 +02:00
Luca Boccassi
a084deb0b2
Merge pull request #3666 from diorcety/license
Relicense: diorcety
2019-09-04 14:24:10 +01:00
Yann Diorcet
0bbe531861 Relicense: diorcety 2019-09-04 15:21:44 +02:00
Luca Boccassi
4256e5413c
Merge pull request #3664 from cbusbey/relicense
grant relicense
2019-09-03 18:07:52 +01:00
chris busbey
ccabb48265 grant relicense 2019-09-03 11:52:27 -05:00
Jean-Christophe Fillion-Robin
3d656e1ff1 Relicense: Jean-Christophe Fillion-Robin 2019-09-03 09:18:18 -04:00
Simon Giesecke
e33eedc663
Merge pull request #3661 from bluca/autoconf_static_only
Problem: static-only test run fails
2019-09-03 09:43:26 +02:00
Simon Giesecke
223e9266e0
Merge pull request #3662 from bluca/relicense
Grant by psl-felipefarinon
2019-09-02 19:11:51 +02:00
Luca Boccassi
9785e37875 Grant by psl-felipefarinon
Received via Github message:

https://github.com/zeromq/libzmq/pull/751#issuecomment-527205167
2019-09-02 18:02:33 +01:00
Luca Boccassi
2fe2ce1e37 Problem: static-only test run fails
Solution: add libtestutil.a before libzmq.a in LDADD listings, as the
linker will complain about undefined symbols otherwise

Fixes https://github.com/zeromq/libzmq/issues/3646
2019-09-02 12:11:25 +01:00
Doron Somech
21bfa58dad
Merge pull request #3660 from bluca/relicense
Grant by kreuzberger
2019-09-02 13:53:01 +03:00
Luca Boccassi
10aea5c65d Grant by kreuzberger
Received via Github comment:
https://github.com/zeromq/libzmq/pull/1374#issuecomment-527100078
2019-09-02 11:45:54 +01:00
Doron Somech
826e7db7be
Merge pull request #3659 from bluca/xpub_user_msg
Problem: can no longer send user data from XSUB to XPUB
2019-09-02 13:36:30 +03:00
Luca Boccassi
6fb8ef0711 Problem: can no longer send user data from XSUB to XPUB
Solution: fix regression introduced by:
https://github.com/zeromq/libzmq/pull/3168

Correctly fall back to user message if the first byte is neither 0 nor
1, and add a simple unit test

Fixes https://github.com/zeromq/libzmq/issues/3656
2019-09-02 11:33:19 +01:00
Doron Somech
c737e5720f
Merge pull request #3654 from bluca/relicense
Grant by skaller
2019-09-01 07:39:47 +03:00
Luca Boccassi
1925bdccb1 Grant by skaller
Received via email, message-id:
B7B30120-05AF-4A53-8023-D9C092DE0873@internode.on.net
2019-08-31 23:54:49 +01:00
Doron Somech
62fe9bf147
Merge pull request #3653 from rcxdude/master
Add relicense permission
2019-09-01 00:35:05 +03:00
Douglas Young
ecc2eb42ce Add relicense permission 2019-08-31 22:29:41 +01:00
Constantin Rack
017e7d3605
Merge pull request #3652 from mvilim/relicense
Relicense permission
2019-08-31 21:32:31 +02:00
Michael Vilim
a55f2a52e3 Relicense permission 2019-08-31 14:04:26 -05:00
Luca Boccassi
3e3c3d7ba5
Merge pull request #3651 from brian-peloton/master
Add relicense grant
2019-08-31 19:37:45 +01:00
Doron Somech
41a58da49c
Merge pull request #3650 from bluca/relicense
Grant by dmeehan1968
2019-08-31 20:41:49 +03:00
Luca Boccassi
8a3140064f Grant by dmeehan1968
Received via Github comment:
https://github.com/zeromq/libzmq/pull/1082#issuecomment-526840485
2019-08-31 16:46:52 +01:00
Doron Somech
db8447d3b1
Merge pull request #3649 from bluca/relicense
Grants by paddor and mbarbisan
2019-08-31 17:27:35 +03:00
Luca Boccassi
757ae967cf Grant by paddor
Received by Github message:
https://github.com/zeromq/libzmq/pull/2121#issuecomment-526833407
2019-08-31 15:19:36 +01:00
Luca Boccassi
1a0d52db05 Grant by mbarbisan
Received via email, message-id:

CAL4jiWydU5KjXEf1LKKObMgOEfQJVV36zgBY8U5JaXx3mP8c5A@mail.gmail.com
2019-08-31 15:19:18 +01:00
Simon Giesecke
e30186cb00
Merge pull request #3648 from bluca/relicense
Grants by jbreams and DaiyuHurst
2019-08-31 16:03:01 +02:00
Luca Boccassi
b566e2cc77 Grant by jbreams
Received as Github comment:
https://github.com/zeromq/libzmq/pull/1451#issuecomment-526832003
2019-08-31 14:57:53 +01:00
Luca Boccassi
48c6290888 Grant by DaiyuHurst
Received as Github comment:
https://github.com/zeromq/libzmq/pull/1283#issuecomment-526831846
2019-08-31 14:57:43 +01:00
Doron Somech
a76233b727
Merge pull request #3647 from msune/msune_licensing
RELICENSE: add relicense agreement from msune
2019-08-31 12:34:08 +03:00
Marc Sune
ea9d948cde RELICENSE: add relicense agreement from msune
Add RELICENSE document for msune contributions, both for:

* marcdevel at gmail dot com
* marc at voltanet io
2019-08-31 11:27:55 +02:00
Francesco Montorsi
b3582da8fb Introduce extended set/get methods for ZMQ contexts (#3642)
* Introduce DRAFT zmq_ctx_set_ext() and zmq_ctx_get_ext() methods. Change
ZMQ_THREAD_NAME_PREFIX to allow for non-numeric thread name prefixes.
2019-08-27 23:41:23 +01:00
Andrei Tomashpolskiy
2aa87c94cc UDP engine aborts on networking-related errors from socket syscalls (2) #2862 (#3640)
* UDP engine aborts on networking-related errors from socket syscalls #2862
2019-08-25 15:55:42 +01:00
Doron Somech
7559d2daaf
Merge pull request #3639 from sigiesec/fix-win-binaries
Problem: appveyor binary archives do not contain import libraries
2019-08-23 11:57:26 +02:00
Simon Giesecke
c1377ff168 Problem: appveyor binary archives do not contain import libraries
Solution: include all *.lib files
2019-08-23 11:29:10 +02:00
Andrei Tomashpolskiy
f48c86d077 UDP engine aborts on networking-related errors from socket syscalls #2862 (#3638)
* UDP engine aborts on networking-related errors from socket syscalls #2862

* Add relicense statement
2019-08-22 18:52:31 +01:00
Luca Boccassi
e492dea80e
Merge pull request #3637 from spotify/relicense
Add relicense agreement from Spotify AB
2019-08-21 19:04:44 +01:00
Nick Platt
74e7ee0e66
Add relicense agreement from Spotify AB 2019-08-21 13:52:15 -04:00
Luca Boccassi
56ace6d03f
Merge pull request #3636 from schulzch/cmake-precompiled
[CMake] Add ENABLE_PRECOMPILED option
2019-08-21 13:32:15 +01:00
Christoph Schulz
878f1d51f5 Add ENABLE_PRECOMPILED option.
You might want to disable this flag when building with Ninja.
2019-08-21 14:02:31 +02:00
Luca Boccassi
9bb197e030
Merge pull request #3613 from TomzBench/mingw-fix
no void pointer to store function pointer
2019-08-19 11:15:29 +01:00
Simon Giesecke
1d21d2f4e4
Merge pull request #3634 from bluca/relicense
RELICENSE: add grant by Daniel Krikun
2019-08-19 11:20:29 +02:00
Luca Boccassi
205c52009d RELICENSE: add grant by Daniel Krikun
Received via email, message-id:
CAMohcw2mZMPku8OV0Ge0-8+D3a6ayLR=6ivWjVmT0UU_ejZxiA@mail.gmail.com
2019-08-19 09:17:38 +01:00
Simon Giesecke
e9b67001dd
Problem: invalid syntax for calling convention on function pointer
Solution: fix syntax and formatting, remove C-ism for defining struct
2019-08-19 10:13:11 +02:00
Luca Boccassi
19f2d9e529
Merge pull request #3633 from Neopallium/master
Re-license Robert G. Jakabosky (Neopallium)
2019-08-17 10:37:30 +01:00
Robert Gabriel Jakabosky
d63a00b98f
Re-license Robert G. Jakabosky (Neopallium) 2019-08-17 16:06:22 +08:00
Brian Silverman
f4cbe4ba45 Add relicense grant 2019-08-14 13:20:42 -07:00
Luca Boccassi
5de89531f2
Merge pull request #3632 from Suudy/master
RELICENSE:  Add relicensing grant
2019-08-14 16:48:49 +01:00
Pete LaDow
65e67b32bf RELICENSE: Add relicensing grant 2019-08-14 08:33:19 -07:00
Luca Boccassi
ab51e0a81f
Merge pull request #3626 from bluca/relicense
RELICENSE: chymanfx
2019-08-13 14:48:01 +01:00
Luca Boccassi
48ea043311
Merge pull request #3630 from hnwyllmm/patch-1
Adds relicensing grant
2019-08-13 08:31:49 +01:00
Laughing
5650bbab1d
Adds relicensing grant
Adds relicensing grant
2019-08-13 14:56:30 +08:00
Luca Boccassi
66a228ef46
Merge pull request #3628 from murphybytes/murphybytes-relicense
RELICENSE: John Murphy
2019-08-12 15:06:22 +01:00
John Murphy
9d53203ccf relicensing 2019-08-12 08:38:24 -05:00
Luca Boccassi
e8e13c17ad
Merge pull request #3627 from f18m/master
Scripts for graphing benchmark results
2019-08-12 10:24:55 +01:00
Luca Boccassi
e979988d66 RELICENSE: chymanfx
Grant received by PR comment:
https://github.com/zeromq/libzmq/pull/3195#issuecomment-520338586
2019-08-12 10:03:59 +01:00
Luca Boccassi
78c435044d
Merge pull request #3625 from jlauenercern/master
RELICENSE: Joel Lauener
2019-08-12 09:58:14 +01:00
Joel Lauener
95176a53a4 RELICENSE: Joel Lauener 2019-08-12 10:41:11 +02:00
dhammika
a979a99523 Add relicense grant (#3624)
* Add relicense grant

Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2019-08-12 09:13:50 +01:00
Simon Giesecke
057331e3f9
Merge pull request #3623 from miniway/relicense
Relicense permission
2019-08-12 08:29:36 +02:00
Min(Dongmin Yu)
b00494226c Relicense permission 2019-08-12 13:23:37 +09:00
Luca Boccassi
c87215380a
Merge pull request #3622 from jens-auer/master
Add relicense statement
2019-08-11 21:49:52 +01:00
Jens Auer
cc83fed11a Add relicense statement 2019-08-11 22:06:28 +02:00
Doron Somech
8443313e0b
Merge pull request #3621 from bluca/relicense
RELICENSE: Aleksander Melnikov
2019-08-11 18:38:05 +03:00
Luca Boccassi
3c951f7d1c
Merge pull request #3620 from bebopagogo/master
Add relicense agreement from Brian Adamson
2019-08-11 16:34:18 +01:00
Luca Boccassi
3bb2a0d487 RELICENSE: Aleksander Melnikov
Grant received via Github PR comment:

https://github.com/zeromq/libzmq/pull/1413#issuecomment-520233278
2019-08-11 16:32:45 +01:00
bebopagogo
becf469865 Add relicense agreement from Brian Adamson 2019-08-11 11:30:36 -04:00
Doron Somech
e161907db9
Merge pull request #3619 from bluca/relicense
Fix formatting and add relicense for mesegura
2019-08-11 16:22:31 +03:00
Luca Boccassi
87988bf4c8 Problem: formatting error
Solution: run make clang-format-diff to fix it
2019-08-11 12:00:13 +01:00
Luca Boccassi
6b71823ad0
Merge pull request #3618 from AxelNennker/master
relicense
2019-08-11 11:41:47 +01:00
Axel Nennker
3c8f4a431e relicense
Signed-off-by: Axel Nennker <axel.nennker@telekom.de>
2019-08-11 12:38:19 +02:00
Luca Boccassi
edc266b3ab RELICENSE: Manuel Segura
Received via email on 10/08/2019, message-id:

CALdfLGZ1N4EkK+kB735_3apOg1QKU5fUz5BWtFmj6BjYv7fN+g@mail.gmail.com
2019-08-11 11:29:27 +01:00
Luca Boccassi
c0db5c3ae3
Merge pull request #3617 from claws/relicense_permission
Relicense permission
2019-08-11 10:37:30 +01:00
Chris Laws
cd4fac3a0c relicense permission 2019-08-11 18:17:08 +09:30
Simon Giesecke
db82835995
Merge pull request #3616 from dennisklein/relicense_permission
RELICENSE permission
2019-08-11 08:16:51 +02:00
Dennis Klein
c44be4aa60
RELICENSE permission 2019-08-11 03:51:59 +02:00
Luca Boccassi
1ef3a68629
Merge pull request #3615 from drbobbeaty/master
Added my relicense doc
2019-08-10 22:27:46 +01:00
Simon Giesecke
4e7a58b983
Merge pull request #3614 from garlick/relicense_garlick
Add relicense agreement from Jim Garlick
2019-08-10 22:12:36 +02:00
Bob Beaty
7d8c86241c Added my relicense doc
Just following the instructions in the email to add my agreement.
2019-08-10 14:28:05 -05:00
Jim Garlick
304843373c Add relicense agreement from Jim Garlick 2019-08-10 11:01:53 -07:00
thomas
64d58c432c relicense add 2019-08-10 11:15:26 -04:00
Luca Boccassi
ec0aa6cef6
Merge pull request #3612 from fanquake/travis_sudo_deprecated
problem: sudo:false has been deprecated by Travis CI
2019-08-10 15:57:21 +01:00
thomas
87b81926aa no void pointer to store function pointer 2019-08-10 10:43:28 -04:00
fanquake
114b1f9516
problem: no relicensing agreement for fanquake
solution: add relicensing agreement for fanquake
2019-08-10 19:56:30 +08:00
fanquake
abe26f0dc3
problem: sudo:false has been deprecated by Travis CI
solution: remove sudo:false usage from travis.yml

Travis has deprecated the usage of sudo:false in travis.yml.
See this blog post for more details: https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration
Also: https://docs.travis-ci.com/user/reference/trusty/#container-based-infrastructure
2019-08-10 19:54:41 +08:00
fmontorsi
5f95e53e0f Allow to graph results from TCP links at 100Gbps nicely. 2019-08-08 11:40:33 +02:00
fmontorsi
9cdef8aa0c Better script for performance tests 2019-08-08 11:18:05 +02:00
Luca Boccassi
b66b2857ad
Merge pull request #3610 from hxw/master
Re-license grant + suggested readme update
2019-08-07 08:18:44 +01:00
Christopher Hall
4cd39feb68 Add re-license grant file
Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2019-08-07 11:46:49 +08:00
Christopher Hall
62d8346447 add DragonFly BSD to platforms list
Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2019-08-07 11:36:00 +08:00
Simon Giesecke
c3eab89e53
Merge pull request #3608 from hxw/master
[DragonFlyBSD] fix for IPv4 mapping not supported
2019-08-06 08:07:52 +02:00
Christopher Hall
72854e6342 problem: DragonFly BSD does not allow mapping global IPv4 addresses when IPv6 is used
solution: Handle as for OpenBSD by not attemption to set this option on the socket

Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2019-08-06 12:11:06 +08:00
Christopher Hall
ba679bcce8 problem: configure for DragonFly need FreeBSD also defined
solution: on DragonFly also define ZMQ_HAVE_FREEBSD
          in addition to ZMQ_HAVe_DRAGONFLY

Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2019-08-06 12:11:00 +08:00
Luca Boccassi
6b6043600e
Merge pull request #3607 from f18m/master
Add scripts to ease performance graph generation
2019-08-04 19:38:13 +01:00
Francesco Montorsi
877c32dc3d Add scripts to ease performance graph generation 2019-08-04 01:48:03 +02:00
Simon Giesecke
21a0815f2f
Merge pull request #3605 from bl0x/master
Fix build on SL6.9. Fix #3603.
2019-08-01 08:46:05 +02:00
bl
5a519e1686 Add RELICENSING statement for bl0x. 2019-08-01 05:51:13 +02:00
bl
45243cd009 Fix build on SL6.9. Fix #3603. 2019-08-01 05:43:55 +02:00
Simon Giesecke
a8d19057b1
Merge pull request #3602 from bluca/formatting
Problem: formatting errors introduced by #3601
2019-07-30 18:11:02 +02:00
Luca Boccassi
4d5e97adac Problem: formatting errors introduced by #3601
Solution: fix them with make clang-format-diff
2019-07-30 13:43:48 +01:00
Luca Boccassi
9dcbdd1b09
Merge pull request #3601 from jacquesg/win32threadname
mingw thread name fix
2019-07-30 13:42:18 +01:00
Jacques Germishuys
b3123a2fd1 Problem: __try and __except isn't universally supported on windows
Solution: Manually push/pop an exception registration record.
Only set the thread name with a debugger present
2019-07-30 11:31:22 +01:00
Luca Boccassi
47fc979b2a
Merge pull request #3600 from drbitboy/master
Problem:  include/zmq.h is not so much broken as inconsistent in
2019-07-27 11:38:57 +01:00
Brian Carcich
853aa9801e Problem: include/zmq.h is not so much broken as inconsistent in
how it declares the file descriptor (fd) of a socket
          in struct zmq_pollitem_t vs. struct zmq_poller_event_t

Solution:  Make include/zmq.h consistent in this matter
2019-07-26 20:31:44 -04:00
Luca Boccassi
20a4e4d1be
Merge pull request #3598 from ssbl/contributing
Problem: PR template is mostly about contributing guidelines
2019-07-26 22:47:10 +01:00
Shubham Lagwankar
475a029514 Problem: PR template is mostly about contributing guidelines
Solution: rename it to CONTRIBUTING.md so that it is shown when
creating a pull request or issue
2019-07-26 13:11:52 -04:00
Luca Boccassi
ed4317b0e9
Merge pull request #3597 from ssbl/redundant-check
Problem: redundant check in condition
2019-07-26 17:57:57 +01:00
Shubham Lagwankar
f07d88be09 Problem: redundant check in condition
Solution: remove it
2019-07-26 11:43:57 -04:00
Luca Boccassi
49f4ef1759
Merge pull request #3595 from aixxe/master
Problem: Usage of 'if_nametoindex' not supported in Windows XP.
2019-07-25 23:40:00 +01:00
aixxe
63409579e7
Problem: Usage of 'if_nametoindex' not supported in Windows XP.
Solution: Add ZMQ_HAVE_WINDOWS_TARGET_XP check to src/udp_address.cpp.
2019-07-25 20:38:54 +01:00
Luca Boccassi
69e451c1fa
Merge pull request #3594 from mancasg/master
Problem: stream_engine use after free
2019-07-24 15:53:10 +01:00
Mancaș George
1bbbd77ac4 RELICENSE: Mancaș George grant 2019-07-24 13:11:11 +00:00
Mancaș George
13387c5cdc Problem: stream_engine use after free
Solution: Don't allow concurrent heartbeat timers
2019-07-24 13:04:32 +00:00
Luca Boccassi
60cca513a1
Merge pull request #3593 from jean-airoldie/doc_poller
Problem: behavior of closing a socket registered...
2019-07-24 11:03:14 +01:00
jean-airoldie
1bd94a979d Problem: behavior of closing a socket registered...
...in a poller is not documented.
Solution: Document it.
2019-07-24 05:59:29 -04:00
Luca Boccassi
c83fa74767
Merge pull request #3591 from jean-airoldie/max_sockets
Problem: incorrect ZMQ_MAX_SOCKETS default value in doc
2019-07-23 09:07:51 +01:00
jean-airoldie
7675995fe8 Problem: incorrect ZMQ_MAX_SOCKETS default value in doc
Solution: update the doc with the correct default value
2019-07-22 20:37:00 -04:00
Luca Boccassi
49636f4c88
Merge pull request #3588 from inuik/master
CMake: Install debug libraries for debug msvc builds
2019-07-22 22:13:28 +01:00
Rishi Theivendran
afa11b0dfd Copy debug libraries for debug builds 2019-07-18 10:09:25 -04:00
Luca Boccassi
a56d36b8e5
Merge pull request #3587 from somdoron/stream_engine_base
problem: ws_engine duplicate code from stream_engine
2019-07-18 11:57:27 +01:00
somdoron
157b2a2ee0 problem: ws_engine duplicate code from stream_engine
Solution: New class called stream_engine_base which is inherited by ws_engine, zmtp_engine and raw_engine.
2019-07-18 11:28:08 +03:00
Doron Somech
184e7a55e5
Merge pull request #3585 from bluca/fixes
Problem: build on centos6/ubuntu12 still broken
2019-07-16 21:51:33 +03:00
Luca Boccassi
7262701876 Problem: build on centos6/ubuntu12 still broken
Solution: move the definition of __STDC_LIMIT_MACROS somewhere the test actually uses
2019-07-16 18:15:47 +01:00
Doron Somech
efd7188760
Merge pull request #3584 from bluca/fixes
Problems: build broken on centos6/ubuntu12, missing licenses and wrong copyright dates
2019-07-16 19:54:20 +03:00
Luca Boccassi
496c8eb05a Problem: missing copyright and license header from new file
Solution: add it
2019-07-16 17:37:40 +01:00
Luca Boccassi
10a0baf691 Problem: wrong copyright dates in newly added files
Solution: fix them
2019-07-16 17:36:44 +01:00
Luca Boccassi
38c31154d0 Problem: build broken with older compilers
Solution: define __STDC_LIMIT_MACROS before including stdint.h so that SIZE_MAX
is defined
2019-07-16 17:34:58 +01:00
Luca Boccassi
021c6a706b Problem: no license.txt file for external/sha1/
Solution: add it and mention the inclusion in NEWS
2019-07-16 17:27:01 +01:00
Luca Boccassi
3692b26649
Merge pull request #3579 from somdoron/zws2
problem: browser cannot communicate with zeromq directly
2019-07-16 13:28:30 +01:00
Luca Boccassi
feeed3f27e
Merge pull request #3580 from sigiesec/use-libsodium-based-allocator
Use libsodium based allocator
2019-07-16 13:10:34 +01:00
Simon Giesecke
4756ff3046 Problem: use of tweetnacl vs. libsodium is ambiguous
Solution: properly set defines from test_security_curve
2019-07-16 09:39:29 +02:00
somdoron
39941a0c82 problem: browser cannot communicate with zeromq directly
Solution: implement ZWS 2.0 which websocket transport for zeromq
2019-07-16 10:12:20 +03:00
Simon Giesecke
1781cff37b Problem: plaintext secrets placed in insecure memory
Solution: Use secure_allocator_t for plaintext secrets
2019-07-14 17:12:39 +02:00
Simon Giesecke
92dbb4caee Problem: no C++ style secure memory allocator available
Solution: Added secure_allocator_t based on libsodium's memory management functions when available
2019-07-14 17:12:39 +02:00
Simon Giesecke
8a7a9cb90f Problem: clang-format produces C++11 style nested templated arguments
Solution: Fixed C++ standard in clang-format config
2019-07-12 18:04:30 +02:00
Simon Giesecke
d9dce8f068
Merge pull request #3578 from ssbl/unused-parameter
Problem: unused parameter in benchmark function
2019-07-12 17:49:04 +02:00
Shubham Lagwankar
e26f094193 Problem: unused parameter in benchmark function
Solution: remove it
2019-07-12 11:29:14 -04:00
Doron Somech
9c5cf8573c
Merge pull request #3573 from sigiesec/use-std-vector
Problem: use of malloc is error-prone
2019-07-10 20:07:33 +03:00
Simon Giesecke
02f7dca678
Merge pull request #3570 from bluca/static_analysis
Static analysis warnings
2019-07-10 18:49:10 +02:00
Simon Giesecke
1de4cf6ffa Problem: use of malloc is error-prone
Solution: use std::vector instead, simplify control-flow
2019-07-10 18:26:58 +02:00
Luca Boccassi
77cd206100 Problem: errors do not fail ABI CI test
Solution: set -e in ci_build.sh like in other scripts
2019-07-10 17:08:29 +01:00
Luca Boccassi
eec972a5b4 Problem: unused variable in test tool
Solution: don't write it
2019-07-09 18:10:25 +01:00
Luca Boccassi
c819eedd89 Problem: missing rc checks in udp_engine
Solution: add them
2019-07-09 17:25:58 +01:00
Simon Giesecke
b5db4b4421
Merge pull request #3568 from somdoron/master
problem: wrong api_key for bintray
2019-07-09 09:37:38 +02:00
somdoron
71decb996d problem: wrong api_key for bintray
Solution: update it
2019-07-09 10:30:29 +03:00
Simon Giesecke
89ac4a0f6c
Merge pull request #3566 from TomMD/fix/leaks
Free memory when curve_client sends invalid ready message.
2019-07-09 09:19:24 +02:00
Simon Giesecke
b99bf4e1ce
Merge pull request #3567 from myd7349/fix-include-dir
Problem: Missing ZeroMQ_INCLUDE_DIR when only static lib is built
2019-07-09 09:01:21 +02:00
myd7349
bb3fa9c048
Problem: Missing ZeroMQ_INCLUDE_DIR when only static lib is built 2019-07-09 13:50:24 +08:00
Thomas M. DuBuisson
90ff30c086 Free memory when curve_client sends invalid ready message. 2019-07-08 21:05:36 -07:00
Doron Somech
27057263cd
Merge pull request #3565 from bluca/newver
Problem: 4.3.2 is out, need new version
2019-07-08 20:02:49 +03:00
Luca Boccassi
491a0ae107 Problem: 4.3.2 is out, need new version
Solution: bump to 4.3.3
2019-07-08 17:57:12 +01:00
Luca Boccassi
a84ffa12b2 Finalize changelog for 4.3.2 2019-07-08 17:06:38 +01:00
Doron Somech
fa82aa1120
Merge pull request #3564 from bluca/news
CVE-2019-13132
2019-07-08 19:03:58 +03:00
Luca Boccassi
c2488ed520 Problem: packaging versions out of date
Solution: bump them
2019-07-08 16:18:00 +01:00
Luca Boccassi
f5f1880b58 Problem: NEWS not up to date for v4.3.2
Solution: list new features and bug fixes
2019-07-08 16:18:00 +01:00
Luca Boccassi
0f01fb5134 Problem: markdown errors in zmq_getsockopt.txt
Solution: fix them
2019-07-08 10:47:27 +01:00
Luca Boccassi
8e6bafcbe0 Problem: application metadata not parsed correctly when using CURVE
Solution: create buffers large enough to contain arbitrary metadata
2019-07-08 10:47:27 +01:00
Luca Boccassi
ddd0da2f57
Merge pull request #3476 from TomMD/fix/memory-leak
Request handling leaked memory.  Depending on the application's use o…
2019-07-06 10:05:25 +01:00
Thomas M. DuBuisson
367cedb7c6 Fix request-handling memory leak 2019-07-05 16:53:46 -07:00
Thomas M. DuBuisson
2c89c069a9 Tommd relicensing statement 2019-07-05 16:53:46 -07:00
Luca Boccassi
5368ae0571
Merge pull request #3562 from bear-metal/lourens-relicense
Add relicense agreement from Lourens Naudé
2019-07-01 23:43:35 +01:00
Lourens Naudé
3ec1bf5096 Add relicense agreement from Lourens Naudé 2019-07-01 22:43:34 +01:00
Simon Giesecke
5f8a7b1c22
Merge pull request #3561 from zeromq/secpolicy
Problem: no security policy
2019-06-30 17:03:33 +02:00
Luca Boccassi
153deece66
Problem: no security policy
Solution: add SECURITY.md with supported branches and maintainers public keys for private communications
2019-06-30 16:00:41 +01:00
Luca Boccassi
d5067df2dd
Merge pull request #3559 from ssbl/inconsistent-naming-convention-fix
Problem: code doesn't follow libzmq naming conventions
2019-06-28 18:20:38 +01:00
Shubham Lagwankar
1186e9868a Problem: code doesn't follow libzmq naming conventions
Solution: rename types/variables that are inconsistent
2019-06-28 11:57:45 -04:00
Doron Somech
4a855fba8c
Merge pull request #3557 from bluca/docs
Clarify documentation for zmq_unbind/disconnect and new batch options
2019-06-27 21:07:59 +03:00
Luca Boccassi
364561953a Problem: zmq_disconnect documentation is confusing and breaks semantics
Solution: restore separate zmq_unbind documentation, adding a note that the implementation
might be shared but the semantics are different and should not be mixed.
This avoids tying the API to the implementation details which might change for some
engines.
2019-06-27 18:23:26 +01:00
Luca Boccassi
eba6fb2988 Problem: ZMQ_IN/OUT_BATCH_SIZE are dangerous
Solution: clearly advise users to avoid them in all cases to
avoid unforseen problems.
Also fix markdown syntax, applicable transport types and getter description.
2019-06-27 18:23:26 +01:00
Luca Boccassi
a43c842e0d
Merge pull request #3556 from ssbl/better-names
Problem: variable and type names are not descriptive
2019-06-27 18:23:19 +01:00
Luca Boccassi
68b744fac5
Merge pull request #3555 from jean-airoldie/batch_size_sockopt
Problem: {in,out}_batch_size must be configured at compiled time
2019-06-27 17:57:58 +01:00
Shubham Lagwankar
d1e6fe19b4 Problem: variable and type names are not descriptive
Solution: use more descriptive names

This commit also improves comments related to some of the changes.
2019-06-27 11:57:01 -04:00
jean-airoldie
cfcab66c71 Problem: {in,out}_batch_size must be configured at compiled time
Solution: Added a socket option to configure them at runtime.
2019-06-27 02:31:11 -04:00
Luca Boccassi
4904bf7177
Merge pull request #3550 from jean-airoldie/heartbeat_test
Problem: missing heartbeat test for draft sockets
2019-06-23 19:22:07 +01:00
jean-airoldie
241b073fd3 Problem: missing heartbeat test for draft sockets
Solution: Add heartbeat tests for CLIENT, SERVER, GATHER and SCATTER
    socket types. RADIO and DISH tests won't be added since heartbeating
    is not yet supported.
2019-06-23 13:23:21 -04:00
Luca Boccassi
fcf828d34b
Merge pull request #3547 from jean-airoldie/unbind-doc
Problem: disconnect & unbind doc is misleading
2019-06-21 11:31:20 +01:00
Shubham Lagwankar
15dafb1c1c Problem: radix tree's apply function uses incorrect resizing logic (#3548)
* Problem: radix tree's apply function uses incorrect resizing logic

Solution: rewrite the function using a vector

The buffer is extended once by 256 bytes, which will not be enough if
the node holds data larger than this number.
2019-06-20 07:58:08 +01:00
jean-airoldie
4d933c28be Problem: disconnect & unbind doc is misleading
Make it explicit that the two functions are identical.
Also document the expected disconnect behavior extensively
and illustrate the difference between disconnecting a
connected vs. bound endpoint.
2019-06-17 02:04:52 -04:00
Luca Boccassi
b17e854f15
Merge pull request #3546 from skicc/patch-1
CMake: don't try to link with librt on MinGW
2019-06-15 16:12:44 +01:00
skicc
0503abb336 RELICENSE 2019-06-15 21:56:12 +08:00
skicc
d2be018800
CMake: don't try to link with librt on MinGW
On MinGW, librt will might will found as rt library in MSYS, but fails linking with "cannot find -lrt" error.
As librt is not avaiable on native Windows, we should never try to link with -lrt on MinGW (which is native Windows).
2019-06-15 21:48:32 +08:00
Luca Boccassi
9534bbfc4d
Merge pull request #3539 from guillon/dev-socks-tests
Add tests for SOCKS proxy support
2019-06-13 15:17:32 +01:00
Christophe Guillon
153418e175 Add tests for SOCKS proxy support 2019-06-13 15:35:27 +02:00
Luca Boccassi
46b498e590
Merge pull request #3544 from somdoron/master
problem: no artifacts for x64 on windows
2019-06-13 12:45:53 +01:00
somdoron
e27a13a8ba problem: no artifacts for x64 on windows
solution: add x64 builds to appveyor
2019-06-13 14:22:28 +03:00
somdoron
8f66156aa3 problem: tests might fail and prevent deployment
Solution: don't run tests on tags

This doesn't break anything, as tags was not built until now. Anyway, when building tags we really care about the release of the packages and not tests
2019-06-12 16:11:32 +03:00
Luca Boccassi
27f9be1125
Merge pull request #3542 from guillon/fix-test-asserts
Problem: test assertions not reporting the right line number
2019-06-12 12:07:50 +01:00
Christophe Guillon
f203064374 Problem: test assertions not reporting the right line number
Solution: pass the line number as part of the testutil functions
2019-06-12 11:20:48 +02:00
Luca Boccassi
aa6b6440f2
Merge pull request #3541 from somdoron/master
problem: appveyor with libsodium change the current directory and bre…
2019-06-12 09:32:49 +01:00
somdoron
ee6755ff1d problem: appveyor with libsodium change the current directory and break the build
Solution: do git pull without changing the current directoy
2019-06-12 00:33:59 +03:00
Luca Boccassi
3cb1c377dd
Merge pull request #3540 from somdoron/master
problem: no artifact repository for windows
2019-06-11 21:04:12 +01:00
somdoron
0a696d8774 problem: no artifact repository for windows
Solution: deploy artifcats to bintray
2019-06-11 22:36:42 +03:00
Luca Boccassi
aac3cd4d93
Merge pull request #3535 from bluca/format
Problem: formatting errors
2019-06-11 19:14:00 +01:00
Luca Boccassi
321c288005 Problem: philippeleite relicense statement not added to the repository
Solution: copy it from PR https://github.com/zeromq/libzmq/pull/3537
2019-06-11 10:31:15 +01:00
Luca Boccassi
3c06ec118f Problem: formatting errors
Solution: apply clang-format-diff
2019-06-11 10:31:15 +01:00
Luca Boccassi
1fdb152b9d
Merge pull request #3537 from philippeleite/patch-2
pthread_equal to compare thread ids
2019-06-11 09:05:51 +01:00
Philippe Bernardino Leite
8a02f70706
pthread_equal to compare thread ids
I am trying to port ZeroMQ to z/OS USS and I faced several problems. One of them is this function "is_current_thread" trying to compare two thread ids with operator "==". I've changed the code to use the official function "pthread_equal" to compare thread ids and now it's working fine.
2019-06-10 22:10:01 -03:00
Luca Boccassi
2202587267
Merge pull request #3534 from guillon/dev-socks-basic-auth
Implement SOCKS5 basic authentication
2019-06-10 18:39:29 +01:00
Christophe Guillon
58c30dc7d1 Add support for SOCKS5 basic authentication 2019-06-10 16:40:06 +02:00
Luca Boccassi
68558bc394
Merge pull request #3532 from guillon/fix-socks-connect
Fix issues with SOCKS5 proxy connection
2019-06-10 14:11:39 +01:00
Christophe Guillon
42cfa697f2 Fix issues with SOCKS5 proxy connection
Two issues where introduced by commit 12c4b55a:
- the proxy connection was done to the target address instead of
the proxy address
- on error the proxy connection status was not reset to unplugged
2019-06-10 14:32:20 +02:00
Christophe Guillon
9736f57f08 Add RELICENSE grant for guillon 2019-06-10 14:31:48 +02:00
Luca Boccassi
178f9e3f3c
Merge pull request #3527 from rotty/pr/clarify-zmq_msg_send-wording
Problem: Unclear `zmq_msg_send` failure semantics
2019-05-31 16:49:42 +01:00
Andreas Rottmann
fae26774f5 Problem: Unclear zmq_msg_send failure semantics
Solution: Explicitly explain message ownership semantics when the call
fails.

Fixes #3526.
2019-05-31 17:36:06 +02:00
Luca Boccassi
96b9eece15
Merge pull request #3521 from jackpimbert/master
Add missing information on multicasting with high data rates to PGM docs
2019-05-24 10:14:23 +01:00
jackpimbert
940f54e7ce Problem: PGM doc missing info on high data rates
Solution: Include a new section on configuring both ZMQ and the host
OS tx/rx buffers to facilitate sending large messages at a high data
rate with the PGM protocol.
2019-05-24 09:55:29 +02:00
jackpimbert
840b9ba4fa Problem: No relicense agreement by jackpimbert
Solution: Added relicense agreement
2019-05-24 09:55:29 +02:00
Luca Boccassi
4dca26767e
Merge pull request #3518 from ackalker/fix-use-of-test
acinclude.m4, configure.ac: Fix several non-portable uses of `test`
2019-05-23 10:27:49 +01:00
Alain Kalker
196cb723df Add RELICENSE entry 2019-05-23 11:15:32 +02:00
Alain Kalker
9a397666d2 acinclude.m4, configure.ac: Fix several non-portable uses of test
Fixes #3517
2019-05-22 01:30:54 +02:00
Luca Boccassi
cef806550c
Merge pull request #3516 from moretromain/fedorafix
Fix Fedora 30 build
2019-05-21 14:45:42 +01:00
Romain Moret
5b07a1199c Fix compiler error 2019-05-21 15:07:00 +02:00
Luca Boccassi
2b63a89635
Merge pull request #3515 from moretromain/win-threadname
Implement thread_t::setThreadName() on windows
2019-05-21 13:23:40 +01:00
Romain Moret
27005cc1ae Implement thread name on windows, cleanup thread naming internals 2019-05-21 12:12:19 +02:00
Doron Somech
046ccfc408
Merge pull request #3513 from bluca/clang7
Problem: clang-format 5 has issues with comments
2019-05-18 19:18:42 +03:00
Doron Somech
9cb266edaa
Merge pull request #3512 from bluca/fixes
Problems: typos in docs, unnecessary ifdefs, duplicated APIs
2019-05-18 19:18:30 +03:00
Luca Boccassi
bde18f3ede Problem: comments before ifdefs are wrongly formatted
Solution: now that clang-format 6+ is used in the CI, fix it
2019-05-18 17:09:17 +01:00
Luca Boccassi
5de3aa1555 Problem: clang-tidy 6 has issues with comments
Solution: bump CI to version 7
2019-05-18 17:09:17 +01:00
Luca Boccassi
19ff4d0b6a Problem: zmq_socket_monitor_versioned_typed duplicates zmq_socket_monitor_versioned
Solution: unify the two APIs, as they are both still in DRAFT state and
thus can be changed.
2019-05-18 16:44:07 +01:00
Luca Boccassi
797439c8e2 Problem: typos in manpage entry for ZMQ_XPUB_MANUAL_LAST_VALUE
Solution: fix them
2019-05-18 16:44:07 +01:00
Luca Boccassi
41be0f5386 Problem: new xpub option is in critical path
Solution: use unlikely to optimize for the most common case
2019-05-18 16:44:07 +01:00
Luca Boccassi
a53dfe936a Problem: many unnecessary ifdefs covering new xpub option
Solution: remove them, only public headers have to be ifdef'd
2019-05-18 16:44:07 +01:00
Luca Boccassi
9bcfc251f4 Problem: new test_xpub_manual_last_value not built by automake
Solution: list it
2019-05-18 16:10:12 +01:00
imkcy9
2f98f7034b Support XPub socket send last value caching to last subscription pipe with ZMQ_XPUB_MANUAL_LAST_VALUE. (#3511)
* Add ZMQ_XPUB_MANUAL_LAST_VALUE

* Surpport xpub send last value caching to one pipe with ZMQ_XPUB_MANUAL_LAST_VALUE

* Add test_xpubub_manual_last_value

* Add relicense and doc
2019-05-17 22:12:32 +01:00
Luca Boccassi
6b51f03377
Merge pull request #3509 from jean-airoldie/monitor_typed
Problem: Potentially unitialized variable in #3508
2019-05-15 12:25:03 +01:00
jean-airoldie
8738ada00f Problem: Endpoints are sometimes not unbound quick enough
Solution: Create a unique endpoint for each fcn call.
2019-05-15 06:27:01 -04:00
jean-airoldie
7836ec752c Problem: Potentially unitialized variable in #3508
Solution: Initialized it
2019-05-15 05:35:58 -04:00
Simon Giesecke
3aca047b96
Merge pull request #3508 from jean-airoldie/monitor_typed
Problem: Socket monitoring only allows ZMQ_PAIR
2019-05-15 09:48:29 +02:00
jean-airoldie
606a8f7967 Problem: Socket monitoring only allows ZMQ_PAIR
Solution: Allow ZMQ_PUB and ZMQ_PUSH sockets types for the monitoring.
This way someone could create a ZMQ_PULL socket connected to multiple
monitoring sockets at the same time.
2019-05-15 01:48:46 -04:00
Doron Somech
e285fe6ea7
Merge pull request #3502 from sigiesec/fix-plain-hello-message
Problem: PLAIN HELLO message incorrectly uses WELCOME literal
2019-05-10 11:43:23 +03:00
Simon Giesecke
6e1c58e86e Problem: PLAIN HELLO message incorrectly uses WELCOME literal
Solution: change to HELLO
2019-05-10 03:55:07 -04:00
Doron Somech
65dd38b268
Merge pull request #3499 from sigiesec/fix-windows-build
Problem: signature of zmq_poller_fd does is incompatible with regular…
2019-05-09 20:22:33 +03:00
Simon Giesecke
d46c580977 Problem: signature of zmq_poller_fd does is incompatible with regular error handling
Solution: change return type to int (again) and return fd via an output parameter
2019-05-09 11:09:35 -04:00
Doron Somech
548f31d4b4
Merge pull request #3498 from sigiesec/fix-windows-build
Problem: syntax error on Windows related to socket descriptor type
2019-05-09 14:36:54 +03:00
Simon Giesecke
63c4d8be78 Problem: syntax error on Windows related to socket descriptor type
Solution: use proper fd_t type, and also define and use a zmq_fd_t in the API
2019-05-09 07:21:08 -04:00
Luca Boccassi
d3f52b2b91
Merge pull request #3497 from sigiesec/fix-cmake-config
Problem: generated ZeroMQConfig.cmake does not work when only static …
2019-05-08 11:34:47 +01:00
Simon Giesecke
8996912cad Problem: generated ZeroMQConfig.cmake does not work when only static or shared library was built
Solution: check for availability of shared/static libzmq targets
2019-05-08 05:19:39 -04:00
Luca Boccassi
f41f51461f
Merge pull request #3496 from sigiesec/cleanup-cmakelists
Some cleanup in CMakeLists.txt
2019-05-07 16:49:23 +01:00
Simon Giesecke
2d8ef84760 Problem: CMAKE_REQUIRED_INCLUDES used in a wrong way, check_function_exists is problematic
Solution: use check_cxx_symbol_exists resp. check_type_size instead
2019-05-07 10:37:47 -04:00
Simon Giesecke
3e5843d073 Problem: include directives are cluttered throughout CMakeLists.txt
Solution: Group include directives together at the beginning of the CMakeLists.txt file
2019-05-07 10:37:47 -04:00
Simon Giesecke
7c53567b93 Problem: extra character in option name
Solution: remove it
2019-05-07 10:37:47 -04:00
Simon Giesecke
9e4b6632c2 Problem: misspelled ar program name
Solution: fix spelling
2019-05-07 10:37:47 -04:00
Simon Giesecke
635f093744 Problem: redundant output in CMakeLists.txt
Solution: remove redundant debug output
2019-05-07 10:37:47 -04:00
Luca Boccassi
ea109fcaab
Merge pull request #3493 from moretromain/cmake-fix
Fix a typo in root CMakeLists.txt
2019-05-06 22:49:45 +01:00
Romain Moret
a565718505 RELICENSE: moretromain grant 2019-05-06 20:31:15 +02:00
Romain Moret
8eee5eb1a8 Fix a typo in CMakeLists.txt 2019-05-06 20:19:50 +02:00
Doron Somech
7971be930b
Merge pull request #3491 from bluca/gcc9
Problem: build broken on Fedora 30
2019-05-04 19:03:12 +03:00
Luca Boccassi
ca2e8b3b19 Problem: build broken on Fedora 30
Solution: use AC_COMPILE_IFELSE instead of AC_CHECK_FUNCS to check for
strnlen, as the latter does not work anymore.
2019-05-04 16:14:58 +01:00
Luca Boccassi
8c8110a136
Merge pull request #3490 from jean-airoldie/zmq_poller_fd_doc
Problem: Missing doc & unit tests for zmq_poller_fd
2019-05-02 22:45:02 +01:00
jean-airoldie
cdbe120738 Problem: No invalid pointer handling for zmq_poller_fd
Solution: Add some and document it.
2019-05-02 17:10:20 -04:00
jean-airoldie
19dd8195be Problem: Missing doc & unit tests for zmq_poller_fd
Solution: Add doc & unit tests
2019-05-02 06:31:14 -04:00
Luca Boccassi
92eedc5716
Merge pull request #3489 from normano/master
Problem: zmq_socket_monitor example did not include HANDSHAKE_SUCCEEDED event causing assert failure
2019-05-02 08:12:36 +01:00
normano
dad917e04e fixed date 2019-05-01 21:43:01 -07:00
normano
97b51e81d3 Added RELICENSE for normano contribution 2019-05-01 19:48:49 -07:00
normano
9780011846 Fixed zmq_socket_monitor example 2019-05-01 19:32:53 -07:00
Luca Boccassi
9bee21b364
Merge pull request #3484 from jean-airoldie/poller_fd
Problem: Cannot get thread safe socket fd
2019-04-28 15:18:27 +01:00
jean-airoldie
05aadc4e38 Problem: no relicense agreement by jean-airoldie
Solution: add one
2019-04-27 22:58:42 -04:00
jean-airoldie
046534480b Problem: Cannot get thread safe socket fd
Solution: Add a method to get the zmq_poller's signaler fd. Then we can
associate a poller instance with every thread safe socket and use its
fd.
2019-04-27 22:58:42 -04:00
Luca Boccassi
501f9d8da4
Merge pull request #3483 from ssbl/dead-code-fix
Problem: unused Windows-specific code in sleep_ms
2019-04-24 21:53:01 +01:00
Shubham Lagwankar
e9678efe00 Problem: unused Windows-specific code in sleep_ms
Solution: remove it since sleep_ms isn't used on Windows
2019-04-24 14:39:27 -04:00
Luca Boccassi
e3a96778b6
Merge pull request #3481 from neheb/patch-1
Add <ios> include to fix uClibc++ compilation
2019-04-19 22:57:14 +01:00
Rosen Penev
761af4939f
Add RELICENSE entry
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-04-19 14:18:29 -07:00
Rosen Penev
091e15a28d
Add <ios> include to fix uClibc++ compilation
Under uClibc++, streamoff is defined in <ios>. This header is needed to fix compilation.
2019-04-19 12:16:01 -07:00
Luca Boccassi
9067e3ac9d
Merge pull request #3480 from ipa/zeromq-3479
Zeromq 3479: fixed build for QNX 6.6 with CMake
2019-04-18 14:58:06 +01:00
Iwan Paolucci
0a5ca642e2 corrected name in the signature of relicense statement 2019-04-18 14:21:30 +02:00
Iwan Paolucci
c65fa0a34d Problem: QNX crosscompiler needs additional parameters to chosse the correct platform
Solution: Use a toolchain file for QNX x86
2019-04-18 13:41:32 +02:00
Iwan Paolucci
c531514c33 Problem: no relicense agreement by ipa
Solution: added relicense agreement
2019-04-18 13:30:32 +02:00
Iwan Paolucci
e1a895917c Problem: libzmq does not build on QNX 6.6 using CMake #3479
Solution: libm and libsocket have to be linked explicitely
2019-04-18 13:23:36 +02:00
Luca Boccassi
494a82f0e7
Merge pull request #3478 from Omegastick/master
Fix Radix Tree benchmark includes when used as submodule
2019-04-14 11:31:43 +01:00
Omegastick
7d26319247 Problem: No relicense statement for Omegastick
Solution: Add a relicense statement for Omegastick
2019-04-14 16:59:19 +09:00
Omegastick
43e398ed86 Problem: Radix Tree benchmarks break when project is used as a submodule
Solution: Use CMAKE_CURRENT_LIST_DIR instead of CMAKE_SOURCE_DIR when findng includes
2019-04-14 16:53:54 +09:00
Simon Giesecke
cc99846156
Merge pull request #3477 from bluca/manpages
Problems: formatting errors in docs reported by linters
2019-04-12 17:50:00 +02:00
Luca Boccassi
f4b0f327de Problem: markup error in zmq_socket.txt
Solution: fix it
2019-04-12 12:57:54 +01:00
Luca Boccassi
8f77150c80 Problem: man errors, can't break lines
Solution: add space between OR'ed values

zmq_getsockopt.3 2472: warning [p 17, 9.5i, div '3tbd1,1', 0.5i]: can't break line
zmq_setsockopt.3 3471: warning [p 24, 1.8i, div '3tbd1,1', 0.5i]: can't break line
2019-04-12 12:17:12 +01:00
Doron Somech
de4d69f597
Merge pull request #3473 from bluca/format
Problem: CI format check fails
2019-04-06 06:12:19 +03:00
Luca Boccassi
3c21eed0a1 Problem: CI format check fails
Solution: fix it
2019-04-06 00:12:32 +01:00
Simon Giesecke
5b140baf45
Merge pull request #3472 from bluca/hardening
Problem: immediate binding hardening not used by debian package
2019-04-05 21:39:26 +02:00
Luca Boccassi
320ed68ce9 Problem: immediate binding hardening not used by debian package
Solution: set hardening=+all in Debian packaging rules
2019-04-05 20:36:42 +01:00
Serhio
db7bdd1b1a Some explicit endpoint type changes to support GCC 5 (#3468)
* Some explicit endpoint type changes to support GCC 5

* ../RELICENSE/SergheiNovac.md
2019-04-05 10:54:26 +01:00
Luca Boccassi
6c613902da
Merge pull request #3467 from sigiesec/improve-hwm-pubsub-test
Improve hwm pubsub test
2019-04-02 19:44:55 +01:00
Simon Giesecke
b9041bf78c Problem: missing information on assertion failure
Solution: include sent and received counts on assertion failure
2019-04-02 18:52:48 +02:00
Simon Giesecke
d328f90bb7 Problem: inadequate recv variant used which assumes 0-terminated string
Solution: use array recv variant instead
2019-04-02 18:44:55 +02:00
Simon Giesecke
a5ee4fb001 Problem: code duplication for multiple transports, multiple test cases combined in one
Solution: split test cases and remove code duplication
2019-04-02 18:36:18 +02:00
Simon Giesecke
06f5a6f282 Problem: use of generic assertion macro
Solution: use more specific assertion macro
2019-04-02 18:35:35 +02:00
Simon Giesecke
d4401b230b Problem: test case not making use of test_bind helper function
Solution: replace custom code by test_bind
2019-04-02 18:34:51 +02:00
Simon Giesecke
bdccfe4097
Merge pull request #3464 from bluca/ericcson_grant
Relicensing grant from Ericsson
2019-03-28 12:33:11 +01:00
Luca Boccassi
2de7f9ccf9 Relicensing grant from Ericsson
Received via email on 2019/03/27, message-id:

BL0PR1501MB2003AF12CCA96A583B16D10F9A590@BL0PR1501MB2003.namprd15.prod.outlook.com
2019-03-28 10:53:32 +00:00
Luca Boccassi
e20861a065
Merge pull request #3463 from sigiesec/fix-3269
Problem: socket returned by ZMQ_FD cannot be used with CreateIoComple…
2019-03-27 13:17:47 +00:00
Simon Giesecke
42e27b7d0d Problem: socket returned by ZMQ_FD cannot be used with CreateIoCompletionPort
Solution: add WSA_FLAG_OVERLAPPED socket flag
2019-03-27 09:56:11 +01:00
Luca Boccassi
25bb43c33a
Merge pull request #3461 from sigiesec/refactor-tests
Refactor tests
2019-03-25 09:07:21 +00:00
Simon Giesecke
47dba21005 Problem: code is unnecessarily imperative
Solution: make more functional-style
2019-03-24 13:46:15 -04:00
Simon Giesecke
bfec30b1e5 Problem: test_address_tipc is unnecessarily verbose
Solution: make use of custom Unity macros
2019-03-24 13:34:13 -04:00
Simon Giesecke
386de33030 Problem: code from bind_loopback_tipc is duplicated
Solution: call bind_loopback_tipc where applicable
2019-03-24 13:34:13 -04:00
Simon Giesecke
0e0bead3cf Problem: code from bind_loopback_ipc is duplicated
Solution: call bind_loopback_ipc where applicable
2019-03-24 13:34:13 -04:00
Simon Giesecke
7f64b925aa Problem: code from bind_loopback_ipv4 is duplicated
Solution: call bind_loopback_ipv4 where applicable
2019-03-24 13:34:13 -04:00
Simon Giesecke
8dc933f2ed Problem: non-expressive test case name
Solution: rename to more meaningful name
2019-03-24 13:34:13 -04:00
Simon Giesecke
34999d5069 Problem: s_send(more) can be replaced by safer send_string_expect_success
Solution: remove s_send(more) and replace all uses
2019-03-24 13:34:13 -04:00
Simon Giesecke
af4fa22fd8 Problem: default test setUp/tearDown functions duplicated in many test programs
Solution: define setUp/tearDown functions via SETUP_TEARDOWN_TESTCONTEXT macro where possible
2019-03-24 12:53:12 -04:00
Simon Giesecke
2b80dd7add Problem: test_bind used with explicit endpoint where bind_loopback_ipv4 could be used
Solution: use bind_loopback_ipv4 instead
2019-03-24 12:35:19 -04:00
Simon Giesecke
454c0b834a
Merge pull request #3460 from bluca/borken
Problem: removing header from testutil.hpp breaks unittest build with…
2019-03-24 13:18:01 +01:00
Luca Boccassi
dc91981df7 Problem: removing header from testutil.hpp breaks unittest build with gcc8
Solution: include unistd.h in unittest_poller.cpp
2019-03-24 11:37:41 +00:00
Luca Boccassi
6d77558c77
Merge pull request #3459 from sigiesec/migrate-testutil
Migrate testutil* to Unity, and build testutil as separate library
2019-03-23 22:40:41 +00:00
Simon Giesecke
c2cd2966ab Problem: no documentation of testutil_unity functions
Solution: add documentation
2019-03-23 14:58:47 -04:00
Simon Giesecke
de622c8198 Problem: functions are unnecessarily declared in header
Solution: remove from header and declare as static
2019-03-23 14:09:06 -04:00
Simon Giesecke
1450830611 Problem: unused include directives
Solution: remove and add where needed
2019-03-23 09:46:37 -04:00
Simon Giesecke
d0c4402daf Problem: needless use of macros
Solution: convert streq/strneq into functions
2019-03-23 09:09:36 -04:00
Simon Giesecke
a62e9d35be Problem: internal functions present in header file
Solution: remove declaration and make functions static
2019-03-23 09:09:36 -04:00
Simon Giesecke
5d74eba64a Problem: remaining basic assertions
Solution: use unity assertions instead
2019-03-23 09:09:36 -04:00
Simon Giesecke
5b40bdb194 Problem: redundant specific of testutil headers
Solution: remove redundant entries
2019-03-23 09:09:24 -04:00
Simon Giesecke
347708bcf2 Problem: test utilities are in headers and recompiled for every test
Solution: move test utilities to separate testutil library
2019-03-23 09:09:24 -04:00
Simon Giesecke
cbd4157638 Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:36:28 -04:00
Simon Giesecke
9528983d95 Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:36:24 -04:00
Simon Giesecke
90a4d268d9 Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:07:32 -04:00
Simon Giesecke
6ed03e9333 Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:07:14 -04:00
Simon Giesecke
75cd23d6af Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:06:39 -04:00
Simon Giesecke
06e713e9e0 Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:06:39 -04:00
Simon Giesecke
4ab381436d Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
6f083df5fb Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
2f40d21618 Problem: access to moved object
Solution: use move target instead
2019-03-22 12:06:12 -04:00
Simon Giesecke
740780293a Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Simon Giesecke
e17232f725 Problem: possible use-after-free
Solution: check for failure and do not access any members afterwards
2019-03-22 12:06:12 -04:00
Simon Giesecke
f083e60d8c Problem: use of extra context
Solution: use test context instead
2019-03-22 12:06:12 -04:00
Simon Giesecke
924d47f818 Problem: tests without test framework
Solution: migrate to Unity
2019-03-22 12:06:12 -04:00
Luca Boccassi
f4b9cc994d
Merge pull request #3457 from sigiesec/migrate-zap-test
Migration of further tests & test utilities to Unity
2019-03-20 18:40:25 +00:00
Simon Giesecke
0266d4ac27 Problem: testutil_monitoring not using unity
Solution: migrate to unity and adapt users
2019-03-20 17:03:26 +01:00
Simon Giesecke
f46a96926c Problem: test_security_curve uses custom assertion macro
Solution: use standard TEST_ASSERT_SUCCESS_ERRNO macro instead
2019-03-20 16:49:46 +01:00
Simon Giesecke
efaca82bff Problem: testutil_security not using unity
Solution: migrate to unity and adapt users
2019-03-20 16:49:46 +01:00
Simon Giesecke
6e0724609a Problem: errno not output on test failure
Solution: use appropriate test assertion macro
2019-03-20 16:49:46 +01:00
Simon Giesecke
669fc4df5a Problem: test_security_zap not using a test framework
Solution: migrate to unity
2019-03-20 16:49:46 +01:00
Simon Giesecke
99e53698c5
Merge pull request #3456 from bluca/test_fd_port
Problem: TCP and UDP test sockets use hard-coded port
2019-03-19 17:57:09 +01:00
Luca Boccassi
168aa83d08
Merge pull request #3453 from panlinux/validate-group-before-using-1462
Validate group before using it
2019-03-18 23:29:06 +00:00
Luca Boccassi
98875a9ddc Problem: TCP and UDP test sockets use hard-coded port
Solution: move ephemeral port code to header and use it in both
tests
2019-03-18 23:27:01 +00:00
Luca Boccassi
830b3428ec Problem: new test binary not ignored
Solution: add it to .gitignore
2019-03-18 23:26:27 +00:00
Andreas Hasenack
1f656fd19d Problem: no relicense agreement by panlinux
Solution: added relicense agreement
2019-03-18 13:21:44 -03:00
Andreas Hasenack
d81f3ec21c Problem: test_filter_with_supplemental_process_owner_gid fails
Solution: only set supgroup to a valid gid
2019-03-18 13:21:44 -03:00
Luca Boccassi
645df4e602
Merge pull request #3449 from sigiesec/migrate-security-tests
Migrate security tests for NULL and PLAIN mechanisms to Unity
2019-03-18 12:54:52 +00:00
Luca Boccassi
17c47da01c
Merge pull request #3452 from jacquesg/strnlen
Problem: strnlen may not be available
2019-03-18 12:09:38 +00:00
Jacques Germishuys
b26542bbfc Problem: strnlen may not be available
Solution: Provide an implementation
2019-03-18 11:37:53 +00:00
Simon Giesecke
c1d2e71861
Merge pull request #3451 from jacquesg/devpoll
Restore /dev/poll support
2019-03-18 11:47:52 +01:00
Jacques Germishuys
04f5ae20af Problem: Solaris 10 had unknown, active users
Solution: Add Solaris 10 to the list
2019-03-18 10:43:11 +00:00
Simon Giesecke
8759d20d4b Problem: tests link to two different flavours of the runtime library,
causing heap corruption

Solution: remove extra runtime library settings, re-enable failing tests
on appveyor
2019-03-18 11:26:05 +01:00
Simon Giesecke
ae1bc03e9e Problem: artifacts published on appveyor are missing pdb files
Solution: add them
2019-03-18 11:25:46 +01:00
Jacques Germishuys
8a2296711d Problem: epoll_t no longer requires _worker
Solution: Remove _worker
2019-03-18 10:16:13 +00:00
Jacques Germishuys
212ab4f834 Problem: /dev/poll doesn't compile
Solution: Make devpoll_t derive from worker_poller_base_t
2019-03-18 10:15:27 +00:00
Simon Giesecke
36a16ec7d1 Problem: test_security_plain not using a test framework
Solution: migrate to Unity
2019-03-16 17:51:25 +01:00
Simon Giesecke
223ef516b6 Problem: test_security_null not using a test framework
Solution: migrate to Unity and separate test_security_no_zap_handler
2019-03-16 17:20:19 +01:00
Simon Giesecke
bd6fa4bbb3
Merge pull request #3445 from bluca/relicense_hp
Update HPE statement as requested by the grantor
2019-03-13 11:19:00 +01:00
Luca Boccassi
f4f2ebfe95 Update HPE statement as requested by the grantor 2019-03-13 10:07:48 +00:00
Constantin Rack
1198a8ec91
Merge pull request #3444 from bluca/relicense_hp
Relicensing grant from HPE
2019-03-12 14:16:22 +01:00
Luca Boccassi
84e9a1a022 Relicensing grant from HPE
Received via email on 2019/03/12, message-id:

TU4PR8401MB1277B86B48464DC63AEDCA2D96490@TU4PR8401MB1277.NAMPRD84.PROD.OUTLOOK.COM
2019-03-12 12:25:40 +00:00
Doron Somech
1e9a8c97ea
Merge pull request #3441 from bluca/test_xpub_nodrop_flaky
Problem: text_xpub_nodrop sometimes fails
2019-03-08 21:16:17 +02:00
Luca Boccassi
0bbd38f5d4 Problem: text_xpub_nodrop sometimes fails
Solution: use XPUB and wait for the subscription message rather than
using a sleep which might or might not be enough
2019-03-08 18:26:23 +00:00
Luca Boccassi
2f5c2f4a48
Merge pull request #3440 from emtr/proxy-performance-fix
Proxy performance fix
2019-03-08 15:17:31 +00:00
Claudio Biagi
d41ed6180b Proxy performance fix, ticket #3439
Improve performance of the proxy forwarding batch of message.
Add throughput benchmark for proxy.
Fix valgrind error reported on unitialized vars
RELICENSE: Add emtr grant
2019-03-08 15:02:58 +01:00
Doron Somech
2e6464864e
Merge pull request #3438 from sigiesec/fix-appveyor-test-execution
Fix appveyor test execution
2019-03-02 04:14:46 +02:00
Simon Giesecke
028aecc6d9 Problem: appveyor build always fails
Solution: temporarily skip failing test cases
2019-03-01 18:20:37 -05:00
Simon Giesecke
73159a8fab Problem: race condition in test_hwm
Solution: wait a bit to allow connect to succeed if inproc bind preceded connect
2019-03-01 18:20:37 -05:00
Simon Giesecke
14fd7505bc Problem: race condition in test_xpub_nodrop
Solution: try to avoid race condition by increasing timeout from 0 to 250ms
2019-03-01 18:20:37 -05:00
Simon Giesecke
56c94757ff Problem: analysis build failing due to warnings-as-errors
Solution: enable warnings-as-errors only on non-analysis builds
2019-03-01 18:20:37 -05:00
Simon Giesecke
a95c4ab404 Problem: test_decrease_when_full is disabled for Windows
Solution: add sleep after connecting such that sending is not started before connection succeeded
2019-03-01 15:05:55 -05:00
Simon Giesecke
828ed69d63 Problem: test_decrease_when_full test case in test_sockopt_hwm does not run reliably under Windows
Solution: disable test case for the moment and mark it as FIXME
2019-03-01 05:51:45 -05:00
Simon Giesecke
36d265ee7d Problem: redundant parentheses in return statements
Solution: remove them
2019-03-01 05:46:10 -05:00
Simon Giesecke
0c363fbb76 Problem: argument is unnecessarily copied
Solution: move instead
2019-03-01 05:46:10 -05:00
Luca Boccassi
995e0a3a26
Merge pull request #3436 from sigiesec/fix-reconnect-ivl-calculation
Problem: reconnect interval exponential backoff and may lead to integ…
2019-02-27 14:41:41 +00:00
Simon Giesecke
d61d662ecb Problem: reconnect interval exponential backoff and may lead to integer overflows
Solution: guard calculation against integer overflows
2019-02-27 08:50:01 -05:00
Luca Boccassi
46061508bf
Merge pull request #3435 from trevorbernard/relicense
Issue #2376 - Add Trevor Bernard's permission to relicense
2019-02-25 16:50:40 +00:00
Trevor Bernard
12238f6bb1 Issue #2376 - Add Trevor Bernard's permission to relicense 2019-02-25 11:21:31 -05:00
Luca Boccassi
54bf9c6a59
Merge pull request #3434 from brc859844/master
RELICENSE: Brett Cameron
2019-02-25 16:01:41 +00:00
cameronbn
23de068fe4 RELICENSE: Brett Cameron 2019-02-25 16:12:32 +01:00
Luca Boccassi
d54b524976
Merge pull request #3433 from rlenferink/relicense-info-michelet
RELICENSE: Corrected info for leonarf
2019-02-25 11:16:11 +00:00
Roy Lenferink
cc8b119c69 RELICENSE: Corrected info for leonarf 2019-02-25 12:14:04 +01:00
Doron Somech
35aaa5425f
Merge pull request #3432 from rlenferink/relicense-shancat
Adding grant from shancat
2019-02-24 14:37:26 +02:00
Roy Lenferink
6f66b5a676 Adding grant from shancat 2019-02-24 13:25:53 +01:00
Doron Somech
534ac7ef0d
Merge pull request #3431 from steve-o/master
Relicense: steve-o
2019-02-24 04:25:48 +02:00
Steven McCoy
bab50feb50 Add GitHub authors. 2019-02-24 10:04:14 +08:00
Steven McCoy
24d5bcfe4d Relicense permission for work by steve-o. 2019-02-24 09:53:58 +08:00
Constantin Rack
831ac95fd9
Merge pull request #3428 from Eelis/mallocfail
Don't crash if memory allocation in socket_poller_t::rebuild fails.
2019-02-23 10:52:22 +01:00
Constantin Rack
f8bcdaf123
Merge pull request #3430 from rlenferink/rl-rename
Renamed RELICENSE to use GitHub username
2019-02-23 10:47:45 +01:00
Roy Lenferink
fea02c1071 Renamed RELICENSE to use GitHub username 2019-02-23 10:13:47 +01:00
Doron Somech
5ac7df1d23
Merge pull request #3429 from CommanderBubble/master
Relicense
2019-02-23 11:04:15 +02:00
Eelis van der Weegen
8259c519b3 Problem: Program crashes if memory allocation in socket_poller_t::rebuild fails.
Solution: Report memory allocation failure as ENOMEM so applications can handle it gracefully.

Fixes #3427.
2019-02-23 09:55:04 +01:00
Michael
d301f995ad
Create mlloyd.md
relicense
2019-02-23 18:55:04 +11:00
Michael
2acd7391ae
Merge pull request #5 from zeromq/master
update pre license
2019-02-23 18:47:42 +11:00
Simon Giesecke
d814f37067
Merge pull request #3426 from Eelis/pollerdoc
Document that zmq_poller_new can return NULL.
2019-02-22 20:42:40 +01:00
Eelis van der Weegen
f09d5295c6 RELICENSE: Grant from Eelis. 2019-02-22 20:11:26 +01:00
Eelis van der Weegen
f1d6811dd7 Problem: The documentation for zmq_poller_new incorrectly states that it cannot fail.
Solution: Revise the offending wording, adding a remark that zmq_poller_new will return NULL in case of failure.

Fixes #3425.
2019-02-22 20:11:26 +01:00
Luca Boccassi
cdc4b8c6c6
Merge pull request #3423 from vortechs2000/relicense
Add relicense grant
2019-02-21 22:14:11 +00:00
AJ Lewis
3b3fbe0204 Add relicense grant
Add Quantum's relicense grant for my work on libzmq
2019-02-21 15:14:45 -06:00
Doron Somech
3d55131eba
Merge pull request #3422 from sigiesec/fix-zmq-proxy-docs
Problem: zmq_proxy signature in documentation does not match actual s…
2019-02-20 16:58:57 +02:00
Simon Giesecke
c05d010c01
Problem: zmq_proxy signature in documentation does not match actual signature
Solution: remove extra const
2019-02-20 15:38:52 +01:00
Luca Boccassi
f21bae529e
Merge pull request #3421 from sigiesec/document-supported-platforms
Problem: no documentation of supported platforms
2019-02-20 14:27:50 +00:00
Simon Giesecke
598b5d4dcb Problem: no documentation of supported platforms
Solution: add an initial version
2019-02-20 15:08:29 +01:00
Doron Somech
e2af39bc42
Merge pull request #3420 from mgatny/master
Problem: missing relicensing statement from mgatny
2019-02-19 20:31:33 +02:00
Mike Gatny
d63dcaf238 Problem: missing relicensing statement from mgatny
Solution: add it
2019-02-19 13:23:37 -05:00
Doron Somech
3e79d55271
Merge pull request #3419 from rlenferink/rl-rename
RELICENSE: Renamed license grants to use GitHub username
2019-02-19 19:39:29 +02:00
Roy Lenferink
cfd91f0602 Renamed license grants to use GitHub username
Updated the license grants to the GitHub username of the contributor where possible. Corrected the content of some files as well.
2019-02-19 18:34:06 +01:00
Luca Boccassi
fed6cc5669
Merge pull request #3418 from rlenferink/rl-extension
RELICENSE: Converted pnnl to markdown
2019-02-19 13:20:36 +00:00
Roy Lenferink
5b621164ed Converted to markdown 2019-02-19 13:59:55 +01:00
Doron Somech
9e41dcf077
Merge pull request #3417 from rlenferink/rl-ricnewton
RELICENSE: Received grant from Micromass UK Limited
2019-02-19 13:53:08 +02:00
Roy Lenferink
fba60985e0 Received grant from Micromass UK Limited 2019-02-19 12:48:29 +01:00
Luca Boccassi
b3a62b7867
Merge pull request #3416 from pmienk/master
RELICENCE: Phillip Mienk grant
2019-02-18 20:11:33 +00:00
Phillip Mienk
956c724302 RELICENCE: Phillip Mienk grant 2019-02-18 12:01:53 -08:00
Constantin Rack
66c9bd8020
Merge pull request #3415 from bluca/relicense_npl
Problem: no relicense grant from PNNL
2019-02-18 20:17:35 +01:00
Luca Boccassi
c189c973c2 Problem: no relicense grant from PNNL
Solution: add the one received by email

B671D81EAD34104986FFE7881B8036371ABEF4AF@EX10MBOX02.pnnl.gov
2019-02-18 19:15:28 +00:00
Simon Giesecke
39541f0306
Merge pull request #3414 from bluca/relicense_tim
Problem: missing relicense statement from Prarrot
2019-02-18 19:35:04 +01:00
Luca Boccassi
ca9eca058b Problem: missing relicense statement from Prarrot
Solution: add the one received by email

Message-ID: <CAHPFjttticWbCuZ93r55gGRDBMxAgNn==4r70op4LnQNEJM23Q@mail.gmail.com>
2019-02-18 18:24:27 +00:00
Luca Boccassi
9e8aef0b66
Merge pull request #3413 from somdoron/master
Problem: missing relicensing statement from somdoron
2019-02-18 09:08:20 +00:00
somdoron
380b852561 Problem: missing relicensing statement from somdoron
Solution: add it
2019-02-18 10:33:13 +02:00
Doron Somech
c39e7a8818
Merge pull request #3412 from calid/relicense-calid
Relicense: Dylan Cali
2019-02-18 08:45:25 +02:00
Dylan Cali
1dd9ac9548 Relicense: Dylan Cali
Ref: #2376
2019-02-17 19:22:43 -05:00
Simon Giesecke
be20089675
Merge pull request #3411 from bluca/fix_threads
Problem: non-linux build broken by last PR
2019-02-17 22:39:06 +01:00
Luca Boccassi
f83b13b2d6 Problem: build fails on VS2010 as it does not have snprintf
Solution: ifdef it
2019-02-17 20:15:59 +00:00
Luca Boccassi
c63b0955e5 Problem: zmq_threadstart name not distinguished
Solution: name it ZMQapp instead of ZMQbg, as it's created by the
application
2019-02-17 20:15:59 +00:00
Luca Boccassi
c8d039a3c7 Problem: unused variable warning in thread_start on !Linux
Solution: use LIBZMQ_UNUSED
2019-02-17 20:15:59 +00:00
Luca Boccassi
f7ca7515d7 Problem: new thread parameter not initialised in ctor
Solution: do it and remove ifndef windows
2019-02-17 20:15:59 +00:00
Luca Boccassi
d02561eec0 Problem: IO thread name starts counting at 1
Solution: start at 0
2019-02-17 20:15:59 +00:00
Luca Boccassi
563396445a Problem: IO thread name uses space separator, the rest uses /
Solution: use / like the rest of the names
2019-02-17 20:15:59 +00:00
Luca Boccassi
de76789ac6 Problem: new thread naming breaks build on !Linux and overwrites prefix
Solution: use the thread class function rather than one of the pthread
functions, and take into account the thread prefix context option
2019-02-17 20:15:59 +00:00
Kymeta Corp
484374f2b6 Problem: Threads don't have names which complicates debugging.
Solution:
1. Use optional name parameter in thread_t::start for operating
systems that have thread names.
2. Give start_thread() an optional name parameter for the
thread's name. If this parameter is set, it will be appended to "0MQ:".
If not set, "0MQ" will be used as the thread's name.
3. Give epoll the ability to name its thread. Then use this in
io_thread and reaper to name them.
2019-02-17 20:15:33 +00:00
Kymeta Corp
c47b2af90a Problem: no relicense agreement by Kymeta Corporation
Solution: add relicense agreement
2019-02-17 20:15:33 +00:00
Doron Somech
907bce52e0
Merge pull request #3410 from Quuxplusone/license
RELICENSE: Arthur O'Dwyer grant
2019-02-17 21:46:28 +02:00
Arthur O'Dwyer
465109d0ca RELICENSE: Arthur O'Dwyer grant 2019-02-17 14:45:21 -05:00
Luca Boccassi
639ed00d9a
Merge pull request #3409 from mkoppanen/relicense/mkoppanen
Add permission to relicense
2019-02-17 19:14:03 +00:00
Mikko Koppanen
9634ab182f Add permission to relicense 2019-02-17 17:49:08 +00:00
Simon Giesecke
96cd7cf2c3
Merge pull request #3408 from bluca/relicense
Problem: missing relicensing statement from bluca
2019-02-17 16:32:51 +01:00
Luca Boccassi
16a4153849 Problem: missing relicensing statement from bluca
Solution: add it - I realised only now that I only submitted a
statement for the copyright owned by a previous employer, and not
my own.
2019-02-16 17:18:41 +00:00
Shubham Lagwankar
8ef72d482e Problem: trie benchmarks count loop times instead of lookup calls (#3406)
* Problem: trie benchmarks count loop times instead of lookup calls

Solution: measure the time taken by each lookup call instead

Other changes:
- show average time taken and reduce other output
- show number of keys, queries and key size before running the benchmark
- use steady_clock as high_resolution_clock might not be steady
- increase size of query set to 1M
2019-02-13 18:47:39 +00:00
Luca Boccassi
6937447832
Merge pull request #3405 from sigiesec/use-std-condition-variable-any
Use std::condition_variable_any, move configuration to build files
2019-02-12 11:09:15 +00:00
Simon Giesecke
7fbd977184 Problem: assertion triggered in stream_connecter_base::close
Solution: change into regular control flow condition
2019-02-12 03:47:26 -05:00
Simon Giesecke
2759f459df Problem: C4267 warnings due to implicit conversion from size_t to int
Solution: change variable type to size_t
2019-02-12 03:47:26 -05:00
Simon Giesecke
21a389ca78 Problem: test_security_curve build fails with Windows targeting 8 or newer due to duplicate definition of htonll
Solution: use custom implementation only on older Windows versions
2019-02-12 03:47:26 -05:00
Simon Giesecke
120edd9809 Problem: selection of condition_variable_t implementation is confusing and not configurable
Solution: move configuration to build definition
2019-02-12 03:47:26 -05:00
Simon Giesecke
bfb092c3ec Problem: value for _WIN32_WINNT not always known in CMakeLists.txt
Solution: calculate from CMAKE_SYSTEM_VERSION

Problem: CMAKE_SYSTEM_VERSION might be newer than Windows SDK Version

Solution: limit _WIN32_WINNT value to Visual Studio default Windows SDK version
2019-02-12 03:47:22 -05:00
Simon Giesecke
d7e1cf3eb0 Problem: std::condition_variable can only be used with std::unique_lock<std::mutex>, leading to two mutexes used in condition_variable_t
Solution: use std::condition_variable_any instead
2019-02-11 07:12:43 -05:00
Simon Giesecke
119a258504
Merge pull request #3383 from ZMQers/queue_monitor
Problem: cannot monitor state of queues at runtime
2019-02-11 10:49:39 +01:00
Luca Boccassi
feadf6d40f Problem: cannot monitor state of queues at runtime
Solution: add API and ZMQ_EVENT_PIPES_STATS event which generates 2
values, one for the egress and one for the ingress pipes respectively.
Refactor the events code to be able to send multiple values.
2019-02-10 16:33:26 +00:00
Luca Boccassi
cb73745250 Problem: cannot send more than one value per v2 event
Solution: refactor code and add extra frame with value count before the
values in v2
2019-02-07 20:42:47 +00:00
Luca Boccassi
1e26a93ce2 Problem: test_monitor fails in valgrind
Solution: expect additional events
2019-02-07 20:42:47 +00:00
Luca Boccassi
c1b374fa6a Problem: manpage for zmq_socket_monitor_versioned has old example
Solution: update it
2019-02-07 16:24:41 +00:00
Luca Boccassi
83946d5c98 Problem: testutil_monitoring does not close received messages
Solution: do it, as above 32 bytes they might be on the heap
2019-02-07 16:24:41 +00:00
Luca Boccassi
edf79dfefc Problem: test_monitor check for DRAFT has to be kept up to date
Solution: check for the available version instead
2019-02-07 16:24:41 +00:00
Luca Boccassi
b20cb122d9 Problem: zmq_socket_monitor_versioned manpage not generated
Solution: add it to doc/Makefile.am
2019-02-07 16:24:41 +00:00
Luca Boccassi
2edba1259e Problem: zmq_socket_monitor_versioned manpage doesn't build
Solution: fix formatting
2019-02-07 16:24:41 +00:00
Luca Boccassi
86697347fc Problem: symlinking manpages in automake does not work
Solution: remove them for now
2019-02-07 16:24:41 +00:00
Luca Boccassi
e5a7f2eb56
Merge pull request #3402 from sigiesec/revert-64-bit-assertions
Revert 64 bit assertions
2019-02-07 15:58:38 +00:00
Simon Giesecke
31ff05d156 Revert "Problem: test build fails on 32 bit systems"
This reverts commit ac19d5f41ccca7acc40fb5970d6f7a0b20e0bc66.
2019-02-07 10:42:32 -05:00
Simon Giesecke
4273ffd266 Partially revert "Problem: monitor events are output as decimal in assertion messages"
This partially reverts commit 19c6aa5c9210144205b3e7f26752ebec8302a2f2.
2019-02-07 10:42:32 -05:00
Luca Boccassi
4bdb05df78
Merge pull request #3400 from sigiesec/fix-issue-3397
Add test for ZMQ_BINDTODEVICE
2019-02-07 14:53:48 +00:00
Simon Giesecke
9cb1fca115 Problem: on a failure to setsockopt SO_BINDTODEVICE, libzmq asserts
Solution: return an error to the user instead
2019-02-07 09:39:02 -05:00
Simon Giesecke
ec4ecb01ff Problem: no test for ZMQ_BINDTODEVICE
Solution: add test case run with cap_net_admin
Fixes #3397
2019-02-07 09:39:02 -05:00
Doron Somech
a3a40a01c9
Merge pull request #3399 from sigiesec/fix-unity-64-bit
Problem: test build fails on 32 bit systems
2019-02-07 14:46:19 +02:00
Simon Giesecke
ac19d5f41c Problem: test build fails on 32 bit systems
Solution: define UNITY_SUPPORT_64 to force 64 bit support
2019-02-07 12:13:11 +01:00
Luca Boccassi
eb42e0442b
Merge pull request #3396 from sigiesec/fix-issue-3394
Fix regression introduced by 68d520e
2019-02-07 11:07:04 +00:00
Simon Giesecke
a763d734f2 Problem: formatting broken
Solution: run clang-format
2019-02-07 11:44:18 +01:00
Simon Giesecke
7cf0d125d3 Problem: failed address resolution on TCP connect is not observable
Solution: added TODO comment for now
2019-02-07 11:07:37 +01:00
Simon Giesecke
e45ede49b5 Problem: regression introduced by 68d520e, changing behaviour of unblocking sockets
Solution: move unblock call to original location
2019-02-07 11:04:05 +01:00
Simon Giesecke
db8c26fce3 Problem: testutil_unity uses undefined names on Windows
Solution: make compilation conditional
2019-02-07 11:04:05 +01:00
Simon Giesecke
8de7e529ec Problem: no test case for tcp name resolution no longer working
Solution: add test case
2019-02-07 11:04:05 +01:00
Simon Giesecke
84dc40dd90 Problem: regression introduced by 68d520e, leading to tcp name resolution no longer working
Solution: restore "local" flag values in call to resolve

Fixes #3394
2019-02-07 11:03:51 +01:00
Luca Boccassi
5ecf8f93e2
Merge pull request #3395 from somdoron/ZeroCond
Problem: invoking the conditional variable for zero time is expensive
2019-02-06 22:08:16 +00:00
Luca Boccassi
792a1e61f3
Merge pull request #3393 from sigiesec/add-v2-monitoring
Add v2 monitoring ipc/tipc tests
2019-02-06 21:34:46 +00:00
somdoron
462dd36d0e Problem: invoking the conditional variable for zero time is expensive
Solution: for zero timeout, unlock and relock immediately instead of timedwait
2019-02-06 21:07:53 +02:00
Simon Giesecke
61e476ec89 Problem: MAX_SOCKET_STRING is too short for ipc wildcard binds
Solution: increase size to 256
2019-02-06 09:09:14 -05:00
Simon Giesecke
b54b55d854 Problem: sun_path in an AF_UNIX address might not be null-terminated
Solution: use addrlen to determine the length
2019-02-06 07:18:28 -05:00
Simon Giesecke
31015fdcfe Problem: ipc_address data member does not conform with naming convention
Solution: rename data member
2019-02-06 07:12:21 -05:00
Simon Giesecke
808028fe02 Problem: use of unnecessary complex stringstream
Solution: use memcpy instead
2019-02-06 07:11:10 -05:00
Simon Giesecke
19c6aa5c92 Problem: monitor events are output as decimal in assertion messages
Solution: output as hex instead
2019-02-06 07:11:10 -05:00
Simon Giesecke
a86592f78c Problem: test_monitor is not run for ipc and tipc
Solution: add test cases
2019-02-06 07:11:10 -05:00
Simon Giesecke
9b1627f041
Merge pull request #3391 from bluca/listener_unistd
Problem: build broken with newer gcc
2019-02-05 14:13:31 -05:00
Luca Boccassi
2df988eec3 Problem: build broken with newer gcc
Solution: add missing includes to stream_listener_base
2019-02-05 18:57:33 +00:00
Luca Boccassi
0b4bb92395
Merge pull request #3389 from sigiesec/fix-issue-3387
Problem: close always fails with wildcard bind, since directory is no…
2019-02-05 16:17:35 +00:00
Simon Giesecke
8d784f26ab Problem: close always fails with wildcard bind, since directory is not empty
Solution: unlink the socket file first
2019-02-05 10:17:28 -05:00
Luca Boccassi
b14bb2d8f8
Merge pull request #3388 from sigiesec/add-missing-include
Problem: missing include directive for close/closesocket
2019-02-05 14:24:16 +00:00
Simon Giesecke
ded4ff6fd2 Problem: missing include directive for close/closesocket
Solution: add appropriate includes
2019-02-05 09:21:06 -05:00
Luca Boccassi
b8b1b8def3
Merge pull request #3384 from sigiesec/remove-socks-tcp-code-duplication
Remove socks/tcp code duplication
2019-02-05 13:19:54 +00:00
Luca Boccassi
69a6522741
Merge pull request #3386 from sigiesec/remove-locale-dependency
Problem: tcp address strings are dependent on locale
2019-02-05 13:18:26 +00:00
Simon Giesecke
74d62bb908 Problem: tcp address strings are dependent on locale
Solution: use sprintf instead of std::stringstream
Fixes #3385
2019-02-05 05:45:35 -05:00
Simon Giesecke
e583276380 Problem: unnecessary platform-specific code parts around socklen_t
Solution: use zmq_socklen_t
2019-02-05 03:34:32 -05:00
Simon Giesecke
c215235fb2 Problem: redundant string operations in zmq::udp_engine_t::sockaddr_to_msg
Solution: reuse string lengths and use memcpy instead
2019-02-05 03:34:32 -05:00
Simon Giesecke
d451a95234 Problem: redundant code in different preprocessor branches
Solution: change preprocessor guard scope
2019-02-05 03:34:32 -05:00
Simon Giesecke
fc6ef0ebff Problem: zmq::get_peer_ip_address duplicates code from get_socket_address
Solution: change to use get_socket_address
2019-02-05 03:34:32 -05:00
Simon Giesecke
2f7a450294 Problem: socks_connecter_t duplicates code around opening and configuring a TCP socket
Solution: use tcp_open_socket function
2019-02-05 03:34:32 -05:00
Simon Giesecke
68d520ef68 Problem: tcp_connecter_t and tcp_listener_t duplicate code around opening and configuring a TCP socket
Solution: extract common parts into tcp_open_socket function
2019-02-05 03:34:32 -05:00
Simon Giesecke
3f4e64edc0 Problem: bind_to_device unnecessarily accepts a non-const string parameter
Solution: add const
2019-02-04 09:29:42 -05:00
Simon Giesecke
12c4b55af8 Problem: socks_connecter_t duplicates code with stream_connecter_base_t
Solution: let socks_connecter_t derive from stream_connecter_base_t and remove duplicate code
2019-02-04 09:29:42 -05:00
Simon Giesecke
14da2ab629
Merge pull request #3382 from bluca/tipc_endpoint
Problem: tipc disconnect does not work anymore
2019-02-03 23:31:59 +01:00
Luca Boccassi
0411bc159a Problem: tipc disconnect does not work anymore
Solution: change back the indentifier endpoint to the one passed by the
user rather than the resolved one, otherwise when the user passes the
same string to the disconnect call they do not match anymore
2019-02-03 23:01:20 +01:00
Simon Giesecke
c28cbf76d1
Merge pull request #3381 from bluca/test_ipv6_monitor
Problems: ipv6 test_monitor hangs, old Windows build fails
2019-02-03 22:57:11 +01:00
Luca Boccassi
a9a5b2bde5 Problem: DRAFT build broken on old Windows
Solution: define uint64_t if not available in the system headers and
remove inclusion of inttypes.h which does not exist and is already
conditionally included in zmq.h if required, do not use PRIx64
2019-02-03 22:11:52 +01:00
Luca Boccassi
84847138a1 Problem: test_monitor fails with ipv6
Solution: correctly set the ipv6 flag in the connecting socket
2019-02-03 20:56:07 +01:00
Luca Boccassi
01b2a8ce21 Problem: unittest_radix_tree binary not ignored
Solution: add it to .gitignore
2019-02-03 19:57:08 +01:00
Luca Boccassi
33a493c4f8
Merge pull request #3379 from sigiesec/add-v2-monitoring
Add v2 monitoring
2019-02-03 08:54:58 +01:00
Simon Giesecke
0e2e303b10 Problem: test_monitor is not run for ipv6
Solution: add test case using ipv6
2019-02-02 19:00:33 +01:00
Simon Giesecke
f22b0b7483 Problem: test_monitor failing for assertion on endpoint addresses on ZMQ_EVENT_LISTENING event
Solution: fix address passed and refactor set_local_address to remove code duplication and unnecessary address parsing when ZMQ_USE_FD is used
2019-02-02 18:33:29 +01:00
Simon Giesecke
f3561f7759 Problem: no assertions for endpoint addresses on ZMQ_EVENT_MONITOR_STOPPED and ZMQ_EVENT_LISTENING events
Solution: added assertions
2019-02-02 18:29:33 +01:00
Simon Giesecke
5e2da02528 Problem: test case is leaking test socket
Solution: close test socket
2019-02-02 17:15:27 +01:00
Simon Giesecke
54240dccbb Problem: stream listeners do not provide correct local and remote address information (test_monitor is failing)
Solution: query local and remote addresses on accepting a connection
2019-02-02 16:52:15 +01:00
Simon Giesecke
8f90f579f5 Problem: no assertions for local and remote addresses in monitor tests
Solution: added such assertions and extended test utilities
2019-02-02 16:34:19 +01:00
Simon Giesecke
f884fa725c Problem: get_monitor_event_internal segfaults when using address
Solution: dereference the pointer to the array before accessing the
element
2019-02-02 15:36:26 +01:00
Simon Giesecke
b18d28eec1 Problem: no tests for v2 monitor events and test_socket_monitor_versioned
Solution: add first test case
2019-02-02 15:33:27 +01:00
Simon Giesecke
30e0cbbcdc Problem: test_monitor depends on testutil_security
Solution: move general monitoring test utilities to new testutil_monitoring
2019-02-02 15:33:27 +01:00
Simon Giesecke
482a3a2272 Problem: documented constants are not defined
Solution: add definition to zmq.h
2019-02-02 15:33:27 +01:00
Simon Giesecke
367246bb23 Problem: test_monitor is not using a test framework
Solution: migrate to unity
2019-02-02 15:33:27 +01:00
Simon Giesecke
478e42442b Problem: no documentation on zmq_socket_monitor_versioned
Solution: add initial version of documentation
2019-02-02 15:33:27 +01:00
Simon Giesecke
d8b5204f73 Problem: socks_connecter_t does not set local address
Solution: query the local address and set it
2019-02-02 15:33:27 +01:00
Simon Giesecke
87082557f0 Problem: stream_connecter_base_t does not set local address
Solution: pass the local address by subclasses to create_engine
2019-02-02 15:33:27 +01:00
Simon Giesecke
aec9b130f7 Problem: get_socket_address and get_socket_name not available throughout libzmq and restricted to local address
Solution: move to address.hpp/.cpp and generalize
2019-02-02 15:33:27 +01:00
Simon Giesecke
01371398e9 Problem: monitor events are unversioned
Solution: add monitor event socket option
2019-02-02 15:33:27 +01:00
Simon Giesecke
2e73554644 Problem: socks_connecter_t, vmci_connecter_t and vmci_listener_t duplicate code with stream_*_base_t
Solution: add TODO comments to resolve this debt
2019-02-02 15:23:56 +01:00
Simon Giesecke
b462cc0912 Problem: misleading comments referring to a "library shutdown"
Solution: change to refer to the context
2019-02-02 15:23:56 +01:00
Simon Giesecke
9a376fbe24 Problem: code duplication in get_address of ipc/tcp/tipc listener classes
Solution: pull up to base class
2019-02-02 15:23:56 +01:00
Simon Giesecke
5c81bbe82e Problem: norm_engine.cpp missing in CMakeLists.txt
Solution: added it
2019-02-02 15:23:56 +01:00
Luca Boccassi
4d8e5fb2e9
Merge pull request #3378 from sigiesec/refactor-stream-listeners-and-connecters
Refactor stream listeners and connecters
2019-02-01 11:26:13 +01:00
Luca Boccassi
1aa6f7070c
Merge pull request #3377 from sigiesec/fix-3376
Fix handling of random port numbers with tipc
2019-02-01 11:02:24 +01:00
Simon Giesecke
e162c8bda3 Problem: code duplication around getsockname
Solution: also use get_socket_address from base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
2b04946f49 Problem: code duplication around getsockname
Solution: also use get_socket_address from base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
c476cf3d14 Problem: implicit cast between signed and unsigned types on some platforms
Solution: perform explicit cast
2019-02-01 04:58:57 -05:00
Simon Giesecke
95eb8a7a99 Problem: parts of in_event duplicated across subclasses of stream_listener_base_t
Solution: extract function create_engine into base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
93c1843f3e Problem: duplication across ipc_listener_t, tcp_listener_t, tipc_listener_t
Solution: extract common base class stream_listener_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
a40a3b7a34 Problem: several data members in stream_connecter_base_t are visible more than necessary
Solution: make them private and adapt initialization order
2019-02-01 04:58:57 -05:00
Simon Giesecke
a766a4b67e Problem: reconnect_timer_id duplicated and essentially used only in base class
Solution: removed definitions and uses in subclasses
2019-02-01 04:58:57 -05:00
Simon Giesecke
bed3b0cfb4 Problem: tipc_listener_t data members not conforming to naming style
Solution: add underscore prefix
2019-02-01 04:58:57 -05:00
Simon Giesecke
2a5fb6cb8e Problem: ipc_listener_t data members not conforming to naming style
Solution: add underscore prefix
2019-02-01 04:58:57 -05:00
Simon Giesecke
7e73587741 Problem: duplication in *_event methods across subclasses of stream_connecter_base_t
Solution: pull up common code, introduce new create_engine function in base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
a09099a615 Problem: process_term and close duplicated across subclasses of stream_connecter_base_t
Solution: pull up
2019-02-01 04:58:57 -05:00
Simon Giesecke
531df586d0 Problem: rm_fd code duplicated across stream_connecter_t subclasses
Solution: pull up tcp_connecter_t::rm_handle and use in all subclasses
2019-02-01 04:58:57 -05:00
Simon Giesecke
1a230e89ca Problem: process_plug, get_new_reconnect_ivl and add_reconnect_timer duplicated across subclasses of stream_connector_base_t
Solution: pull up to stream_connector_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
74667ebcba Problem: destructors of tcp_connecter_t, ipc_connecter_t, tipc_connecter_t contain duplicated code
Solution: pull up to stream_connecter_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
d6f8d246e2 Problem: data members are duplicated across tcp_connecter_t, ipc_connecter_t, tipc_connecter_t
Solution: extract common base class stream_connecter_base_t
2019-02-01 04:58:47 -05:00
Simon Giesecke
361d7168ad Problem: tipc_connector_t::_handle_valid is redundant
Solution: replace by checks against valid value of _handle
2019-02-01 04:33:03 -05:00
Simon Giesecke
a13eb1a9d8 Problem: ipc_connector_t::_handle_valid is redundant
Solution: replace by checks against valid value of _handle
2019-02-01 04:33:03 -05:00
Simon Giesecke
065e81879a Problem: tipc_connector_t::_timer_started is unspecifically named
Solution: rename to _reconnect_timer_started
2019-02-01 04:33:03 -05:00
Simon Giesecke
ca87aaed57 Problem: ipc_connector_t::_timer_started is unspecifically named
Solution: rename to _reconnect_timer_started
2019-02-01 04:33:03 -05:00
Simon Giesecke
c94ad64876 Problem: tipc_connector_t data members not conforming to naming conventions
Solution: add underscore prefix to data members
2019-02-01 04:33:03 -05:00
Simon Giesecke
58063a75a2 Problem: ipc_connector_t data members not conforming to naming conventions
Solution: add underscore prefix to data members
2019-02-01 04:33:03 -05:00
Simon Giesecke
4d362887bb Problem: stream_engine_t::_endpoint is unnecessarily non-const
Solution: declare _endpoint const
2019-02-01 04:33:03 -05:00
Simon Giesecke
091df743a8 Problem: stream_engine_t::_peer_address is unnecssarily non-const
Solution: extract initialization code into get_peer_address function and declare _peer_address const
2019-02-01 04:33:03 -05:00
Simon Giesecke
ae79b41d4c Problem: bug in tipc_listener_t::set_address, random port is determined but not used
Solution: assign result to address

Fixes #3376
2019-02-01 04:30:20 -05:00
Simon Giesecke
afe48e2b16 Problem: unnecessary explicit definitions/deletions of special member functions in tipc_address_t
Solution: remove them
2019-02-01 04:28:35 -05:00
Simon Giesecke
19b64709bb
Merge pull request #3374 from bluca/hurd
Problem: one more test fails on GNU/Hurd
2019-01-28 09:51:50 +01:00
Luca Boccassi
9fae3d1f10 Problem: one more test fails on GNU/Hurd
Solution: mark test_rebind_ipc as XFAIL on Hurd as it does not
implement getsockname on IPC and thus it's impossible to use
wildcard IPC binds.
Document that ZMQ_LAST_ENDPOINT does not work on Hurd with IPC.
2019-01-27 14:04:18 +00:00
Doron Somech
fe4e333334
Merge pull request #3369 from bluca/abi_checker_travis
Problem: have to check ABI compatibility manually
2019-01-20 20:24:09 +02:00
Luca Boccassi
f9b0945c1b Problem: have to check ABI compatibility manually
Solution: automate it on Travis
2019-01-20 16:38:17 +00:00
Constantin Rack
331fee4b38
Merge pull request #3368 from bluca/release_branch
Problem: race condition breaks automated OBS release
2019-01-20 16:51:26 +01:00
Luca Boccassi
51557b9b96 Problem: race condition breaks automated OBS release
Solution: instead of using a temporary release branch that gets
deleted after an arbitrary timer, which never matches the time OBS
actually takes to do a full git clone, keep the branch permanently
in place and simply move it forward to the latest tag on each
release.
2019-01-20 14:34:29 +00:00
Constantin Rack
329155655c
Merge pull request #3367 from bluca/alignment_cache_size
Problems: test failures on PPC and GNU/hurd
2019-01-20 08:42:03 +01:00
Luca Boccassi
3b6db4b370 Problem: test_pair_ipc fails on GNU/Hurd due to wildcard bind
Solution: mark it as XFAIL like the other tests that use ipc://*
2019-01-19 22:28:15 +00:00
Luca Boccassi
bfb4a868fc Problem: atomic intrinsics unreliable on PPC64 and RISC-V
Solution: prefer CXX11 atomics if they are available to compiler
intrinsics.
test_hwm_pubsub fails 50% of the times on PPC64 and RISC-V with an
apparent memory corruption of messages sent by the application thread
to the I/O thread when using compiler intrinsics.
Switching to CXX11 atomics makes the test reliable again. The
standard API should be preferred anyway, if available.
2019-01-19 21:42:54 +00:00
Luca Boccassi
8040e28b26 Problem: posix_memalign autoconf check broken on some platforms
Solution: import macro from autoconf-archive that works better
than AC_CHECK_FUNCS
2019-01-19 21:06:23 +00:00
Luca Boccassi
4a0c83fb12 Problem: yqueue false sharing issues on PPC64
Solution: detect cacheline size for aligment purposes at build time
instead of hard-coding it, so that PPC and S390 can align to a value
greater than the 64 bytes default.
Uses libc getconf program, and falls back to the previous value of 64
if not found.
2019-01-19 20:08:14 +00:00
Doron Somech
0761e6bb48
Merge pull request #3364 from bluca/thread_priority_get
Problem: ZMQ_SOCKET_LIMIT and ZMQ_THREAD_PRIORITY have the same value
2019-01-15 22:23:16 +02:00
Luca Boccassi
93b3689376 Problem: ZMQ_SOCKET_LIMIT and ZMQ_THREAD_PRIORITY have the same value
Solution: remove documents and tests for ZMQ_THREAD_PRIORITY getter. It
never worked and can never work as it has the same value as a get-only
option ZMQ_SOCKET_LIMIT. It cannot be changed without breaking ABI.
Note that the setter works fine as ZMQ_SOCKET_LIMIT is get-only.
2019-01-15 19:58:42 +00:00
Doron Somech
f0d97e0243
Merge pull request #3363 from bluca/tests_race_conditions
Problem: GCC warnings about string overflows in tests
2019-01-15 07:54:00 +02:00
Luca Boccassi
4d38552445 Problem: GCC warnings about string overflows in tests
Solution: mostly false positives, but fix them
2019-01-14 23:50:56 +00:00
Luca Boccassi
87dbd39ae0
Merge pull request #3361 from bluca/gssapi_pkgconfig
Problem: gssapi pkg-config check in configure.ac does not work
2019-01-14 20:59:49 +00:00
Luca Boccassi
73ae7a349b Problem: gssapi pkg-config check in configure.ac does not work
Solution: correctly enable the definition in platform.hpp so that the
gssapi support is actually built in if requested and available.
2019-01-14 14:51:03 +00:00
Constantin Rack
e21988d02b
Merge pull request #3360 from bluca/cve
Problem: NEWS for 4.3.1 does not mention CVE number
2019-01-14 11:02:02 +01:00
Luca Boccassi
bfba6e5a36 Problem: NEWS for 4.3.1 does not mention CVE number
Solution: add it now that it's been assigned
2019-01-14 09:54:19 +00:00
Simon Giesecke
2d02597964
Merge pull request #3359 from bluca/tests_race_conditions
Problem: test_rebind_ipc still fails
2019-01-14 08:09:57 +01:00
Luca Boccassi
d55956574d Problem: test_rebind_ipc still fails
Solution: create manually the random IPC file to reuse
2019-01-14 00:33:36 +00:00
Constantin Rack
ac9583973c
Merge pull request #3358 from bluca/tests_race_conditions
Problems: test failing on SPARC64 and hard-coded socket binds
2019-01-13 20:16:59 +01:00
Luca Boccassi
f64b697095 Problem: tests use hard-coded fixed IPC file path
Solution: use wildcards or random directories to avoid races when
multiple users are running the same test on the same machine
2019-01-13 14:50:54 +00:00
Luca Boccassi
4147957a5e Problem: test_security_zap fails on architectures that disallow unaligned pointer access
Solution: use memcpy instead of doing pointer arithmetics with casting
and dereferencing to fix the error on sparc64
2019-01-13 13:10:05 +00:00
Constantin Rack
6a3c8b46f6
Merge pull request #3357 from bluca/news
Problem: versions are out of date
2019-01-12 19:16:03 +01:00
Luca Boccassi
73d41cec57 Problem: versions are out of date
Solution: bump ABI and revisions and changelog now that v4.3.1 is out
2019-01-12 16:10:36 +00:00
Luca Boccassi
2cb1240db6 Finalise changelog for 4.3.1 2019-01-12 16:05:39 +00:00
Constantin Rack
690cd894e6
Merge pull request #3356 from bluca/news
Problem: NEWS out of date with recent changes
2019-01-12 17:02:29 +01:00
Luca Boccassi
3ce8b11aa3 Problem: NEWS out of date with recent changes
Solution: update it
2019-01-12 15:14:43 +00:00
Doron Somech
3154f3eab7
Merge pull request #3355 from bluca/formatting
Problem: small formatting issue highlighted by clang
2019-01-09 14:30:28 +02:00
Luca Boccassi
e9fd5aae43 Problem: small formatting issue highlighted by clang
Solution: fix it with make clang-format-diff
2019-01-09 12:02:58 +00:00
Luca Boccassi
4ca3d430fe
Merge pull request #3353 from guidovranken/v2_decoder-overflow-rce-fix
V2 decoder overflow RCE fix
2019-01-09 12:01:43 +00:00
Guido Vranken
731be4bd59 Problem: Compilation error due to comparison between signed and unsigned expressions
Solution: Cast the signed expression (which is always positive) to unsigned

Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-01-09 12:36:28 +01:00
Guido Vranken
dcf001906a Problem: no relicense agreement by guidovranken
Solution: added relicense agreement

Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-01-08 23:44:04 +01:00
Guido Vranken
1a2ed12716 Problem: pointer overflow in zmq::v2_decoder_t::size_ready leading to remote code execution (issue #3351)
Solution: refactor bounds check arithmetic such that no overflow shall occur

Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-01-08 23:39:41 +01:00
Luca Boccassi
7302b9b8d1
Merge pull request #3345 from ssbl/unused-import
Problem: unused import and inconsistent use of const
2019-01-02 15:55:08 +00:00
Shubham Lagwankar
cc686f15f4 Problem: unused import and inconsistent use of const
Solution: remove unused import and fix const placement.
2019-01-02 10:25:21 -05:00
Simon Giesecke
fc36c7d2c4
Merge pull request #3343 from bluca/pull_atomic_drop
Problem: race condition in PUSH might break atomicity
2018-12-30 12:18:39 +01:00
Luca Boccassi
9bd9cbbeea Problem: race condition in PUSH might break atomicity
Solution: if a multi-part message cannot be delivered by a PUSH socket
because the pipe is broken mid-way, drop the rest of the frames so that
the atomicity property is not broken.
2018-12-28 17:55:19 +01:00
Luca Boccassi
b65b523a39
Merge pull request #3341 from sigiesec/migrate-more-tests
Problem: tests without test framework
2018-12-25 17:08:59 +01:00
Simon Giesecke
88bea4fd73 Problem: tests without test framework
Solution: migrate to unity
2018-12-25 13:50:31 +01:00
Simon Giesecke
cb2b9a8cd2
Merge pull request #3338 from bluca/android_pkgconfig
Problem: Android helper does not redirect pkg-config
2018-12-17 11:41:39 -05:00
Luca Boccassi
7f34ca52c8 Problem: Android helper does not redirect pkg-config
Solution: set the appropriate options, environment variables and paths
so that the host pkg-config files are ignored, and the target ones are
used instead (if any)
2018-12-17 13:58:04 +00:00
Luca Boccassi
16af86d49c
Merge pull request #3337 from sigiesec/sigiesec/migrate-more-tests
Migrate more tests to Unity
2018-12-16 17:52:00 +00:00
Simon Giesecke
affe77280c Improved test assertion message 2018-12-16 12:28:42 -05:00
Simon Giesecke
00f4bd05be Problem: tests without test framework
Solution: migrate to unity
2018-12-16 12:28:42 -05:00
Constantin Rack
1c604c6212
Merge pull request #3336 from bluca/pkgconfig_requires
Problem: pkg-config file cannot be used for static linking, missing dependencies in packaging
2018-12-15 09:10:31 +01:00
Luca Boccassi
c27afbca27 Problem: dev packages do not depend on static deps
Solution: add them so that pkg-config Requires.private is
satisfied
2018-12-15 00:44:00 +00:00
Luca Boccassi
28d5ce3dfa Problem: pkg-config file cannot be used for static linking
Solution: use requires.private, which pkg-config expands recursively
so that dependencies of dependencies can be linked against when
using pkg-config --static
2018-12-15 00:44:00 +00:00
Luca Boccassi
9d06e29cb2 Problem: duplicated pkg-config template
Solution: use the same for both autotools and cmake
2018-12-14 23:27:42 +00:00
Luca Boccassi
ed8ed727c6
Merge pull request #3335 from jcourreges/back-to-ld-version-script
Go back to ld --version-script to hide private symbols
2018-12-14 18:41:59 +00:00
Jeremie Courreges-Anglas
687c75858e Problem: libtool -export-symbols-regexp seems to leak weak symbols
Solution: go back to using -Wl,--version-script.

Use ax_check_vscript.m4 from the autoconf-archive to detect support on
multiple platforms (eg Solaris ld(1) -M).

libtool -export-symbols-regexp used ld(1) --retain-symbols-file under
the hood, the latter lets some C++ weak symbols make their way into the
dynamic symbols table, along with the zmq_* interface.  The reason for
such behavior is unknown to me.
2018-12-14 18:48:39 +01:00
Luca Boccassi
546f8e7205
Merge pull request #3334 from jacquesg/nodelay-after-connect
TCP_NODELAY is set prior to connecting
2018-12-14 10:15:11 +00:00
Jacques Germishuys
9d8c2b3843 Problem: no relicensing grant for my contributions
Solution: add it
2018-12-14 11:53:56 +02:00
Jacques Germishuys
a1ace32650 Problem: TCP_NODELAY is set prior to connecting, which is problematic on Windows
Solution: Set TCP_NODELAY after connect()

Reference: https://mail.openvswitch.org/pipermail/ovs-dev/2014-October/290251.html
2018-12-14 11:49:05 +02:00
Simon Giesecke
cfbbfb8ab8
Merge pull request #3333 from erickt/patch-1
Fix a typo - lenght to length
2018-12-14 03:13:44 -05:00
Erick Tryzelaar
a92585586b
Fix a typo - lenght to length
Noticed there was a small typo in the documentation.
2018-12-13 20:32:29 -08:00
Luca Boccassi
b70d31c432
Merge pull request #3328 from sigiesec/sigiesec/migrate-more-tests
Problem: tests without test framework
2018-12-10 12:51:22 +00:00
Simon Giesecke
4a48184032 Problem: tests without test framework
Solution: migrate to unity
2018-12-10 07:01:06 -05:00
Luca Boccassi
65e72f9f0a
Merge pull request #3327 from sigiesec/migrate-more-tests
Problem: tests without test framework
2018-12-09 16:27:05 +00:00
Simon Giesecke
a8b2e5a617 Problem: tests without test framework
Solution: migrate to unity
2018-12-09 07:36:39 -05:00
Luca Boccassi
f025129768
Merge pull request #3326 from hgourvest/master
Switching or desactivate wifi can crash Android application
2018-12-08 14:14:00 +00:00
Henri Gourvest
a6b5c75198 Problem: Switching or desactivate wifi can lead to have EINVAL error code
returned on Android.
Solution: Avoid killing the application, allows to take
the appropriate measures to this situation.
2018-12-08 14:33:32 +01:00
Luca Boccassi
aaaec894d3
Merge pull request #3325 from jcourreges/platforms-conditionals-cleanup
Platforms conditionals cleanup
2018-12-07 20:31:53 +00:00
Jeremie Courreges-Anglas
941915d142 Problem: needlessly complicated conditionals in Makefile.am
Solution: the generic approach taken in 70b48a9 allows us to use the
same LDFLAGS on most platforms.
2018-12-07 20:36:51 +01:00
Jeremie Courreges-Anglas
386fa6e013 Problem: unused Debian/kFreeBSD-specific code
Solution: delete it
2018-12-07 20:31:25 +01:00
Luca Boccassi
4d1d64b764
Merge pull request #3322 from jcourreges/libtool-export-symbols
Portable solution for library symbols visibility
2018-12-07 18:06:36 +00:00
Luca Boccassi
36745fbf0d
Merge pull request #3324 from jcourreges/jcourreges-relicense
Relicensing grant for my contributions (jcourreges)
2018-12-07 18:05:36 +00:00
Jérémie Courrèges-Anglas
70b48a9c0c Problem: --version-script not used on OpenBSD
Solution: switch to libtool symbol visibility support, which leads to
more portable constructs in the autotools glue.  As noted in the libtool
documentation "This option has no effect on some platforms."

After this commit, global symbols intended to be kept private will
disappear on platforms that were previously not handled
using -Wl,--version-script.
2018-12-07 18:58:19 +01:00
Jeremie Courreges-Anglas
d20d107b48 Problem: no relicensing grant for my contributions
Solution: add it
2018-12-07 18:54:42 +01:00
Luca Boccassi
eda7f958f9
Merge pull request #3321 from jcourreges/openbsd-build-error
Problem: build fails on OpenBSD due to -Wl in LDFLAGS
2018-12-07 17:24:46 +00:00
Jérémie Courrèges-Anglas
fb4629eea2 Problem: build fails on OpenBSD due to -Wl in LDFLAGS
Solution: remove stray -Wl.
2018-12-07 17:05:49 +01:00
Constantin Rack
f615b8fdfc
Merge pull request #3315 from bluca/news
Problem: 4.3.0 is released, need to update ABI/version
2018-11-28 21:36:56 +01:00
Luca Boccassi
fbf37bb668 Problem: 4.3.0 is released, need to update ABI/version
Solution: bump to 5.2.1 and 4.3.1 respectively
2018-11-28 20:06:23 +00:00
Luca Boccassi
eff190d503 Problem: ABI is not correct for 4.3.0
Solution: bump it to 5.2.0 as new stable APIs have been added
2018-11-28 20:02:27 +00:00
Luca Boccassi
d411831302 Finalise changelog for 4.3.0 2018-11-28 19:53:33 +00:00
Luca Boccassi
fb7f8b77b8 Problem: NEWS out of date
Solution: mention new version of wepoll and Android Things fix
2018-11-28 19:51:31 +00:00
Luca Boccassi
6ec1a6f2af Problem: whitespace issues introduced by last 2 PRs
Solution: fix them
2018-11-28 19:35:04 +00:00
brubakerjeff
cad2423d82 Consolidation of libatomic checks (#3314)
Problem: compiler might not support atomic warning flag

Solution: check before using it
2018-11-27 09:51:31 +00:00
brubakerjeff
d98325160f Android Things 1.06 with Termux changes (#3312)
* include atomic when needed

* update for tipc

* moved check under android

* added license
2018-11-23 19:27:57 +00:00
Luca Boccassi
1bb0d63f1e
Merge pull request #3310 from sigiesec/update-wepoll-1.5.4
Problem: wepoll 1.5.2 is outdated
2018-11-19 11:46:15 +00:00
Simon Giesecke
df91e1e88a Problem: wepoll 1.5.2 is outdated
Solution: Update to upstream version 1.5.4
2018-11-19 12:02:30 +01:00
Doron Somech
0e95c6c992
Merge pull request #3308 from bluca/draft
Problems: no example for STATISTICS proxy command, no getters for some context options, new events zmq_stopwatch_intermediate proxy STATISTICS and context thread options are eligible to be made STABLE
2018-11-18 16:30:17 +02:00
Luca Boccassi
f1dd84c11f Problem: zmq_proxy STATISTICS eligible for stable
Solution: do it
2018-11-18 13:23:38 +00:00
Luca Boccassi
d61c47ef6f Problem: no example for STATISTICS in proxy manpage
Solution: add it
2018-11-18 13:23:38 +00:00
Luca Boccassi
35c6985e68 Problem: zmq_stopwatch_intermediate is eligible for STABLE
Solution: do it
2018-11-18 13:23:38 +00:00
Luca Boccassi
22c3ecc458 Problem: some context options have no getter
Solution: add one so that class-based bindings can easily use them
2018-11-18 13:23:38 +00:00
Luca Boccassi
92cf6c6451 Problem: new ctx THREAD options are eligible for STABLE
Solution: do it
2018-11-18 13:23:38 +00:00
Luca Boccassi
c347aef794 Problem: new DRAFT monitoring events are eligible for STABLE
Solution: do it
2018-11-18 13:23:38 +00:00
Doron Somech
d349f93c2b
Merge pull request #3306 from bluca/radix_autotools
Problem: radix tree never used in autotools builds
2018-11-13 16:54:45 +02:00
Luca Boccassi
6253591655 Problem: radix tree never used in autotools builds
Solution: add a switch and a default to autoconf
2018-11-13 13:17:12 +00:00
Bill Torpey
25e069d131 Add specific option to select radix tree implementation for subscriptions (#3304)
* Add specific option to select radix tree implementation for subscriptions (defaults to ON if draft API enabled).
2018-11-12 21:57:11 +00:00
Simon Giesecke
d60ed2d626
Merge pull request #3301 from bluca/tests
Problems: some tests still use hard-coded TCP ports, wrong usage of CPPFLAGS, missing NEWS, no way to force C++98 builds and CI for it
2018-11-12 10:42:58 +01:00
Luca Boccassi
f3fde8498d
Merge pull request #3303 from crocket/master
Problem: C4 process is not easily discoverable.
2018-11-10 19:47:00 +00:00
crocket
14ed4e6492 Problem: There is probably no relicensing grant from me, yet.
Solution: Add a relicensing grant.
2018-11-10 21:10:36 +09:00
crocket
8919464fbc Problem: C4 process is not easily discoverable.
Solution: Add 'Contributing' section to README.md
2018-11-10 20:57:17 +09:00
Luca Boccassi
4a0b6c6c6f Problem: compiler warning in unittest_poller
Solution: cast the unused variable
2018-11-09 20:51:20 +00:00
Luca Boccassi
1402f7727e Problem: no automated way to enforce C++98 compatibility
Solution: if the compiler supports it, pass C++98-compat flags.
Currently Clang supports this flag but GCC does not.

Add a new flag to enable it, as building with C++98-compat but also
with -std=gnu++11 will cause a lot of warnings due to the backward
compat ifdefs.

Add a CI job to run it and ensure we don't break compatibility.
2018-11-09 20:51:20 +00:00
Luca Boccassi
f215e13a71 Problem: compiler flags passed to preprocessor in autoconf
Solution: use CXXFLAGS for compiler flags and CPPFLAGS for preprocessor
flags.
2018-11-09 18:54:08 +00:00
Luca Boccassi
79f65b43cf Problem: NEWS does not mention new perf tool
Solution: add it
2018-11-09 17:03:49 +00:00
Luca Boccassi
0e01c27de5 Problem: test_router_notify cannot be ran in parallel
Solution: do not bind to an hard-coded port, use a wildcard.
2018-11-09 16:56:00 +00:00
Luca Boccassi
828812fa72 Problem: test_app_meta cannot be ran in parallel
Solution: do not bind to an hard-coded port, use a wildcard.
2018-11-09 16:46:48 +00:00
Luca Boccassi
2c1c2f8b1b Problem: new tests and perf binaries not ignored by git
Solution: add them to .gitignore
2018-11-09 16:01:19 +00:00
Shubham Lagwankar
3659c1204a Problem: radix tree needs benchmarks and improvements (#3290)
* Problem: radix tree needs benchmarks and improvements

Solution: add a benchmark and make suggested improvements
2018-11-09 10:49:40 +00:00
Simon Giesecke
05e0ab55b8
Merge pull request #3299 from bluca/news
Problem: #3263 not mentioned in NEWS
2018-11-08 14:04:56 +01:00
Luca Boccassi
b1e2c8588e Problem: #3263 not mentioned in NEWS
Solution: add it
2018-11-08 11:53:25 +00:00
Luca Boccassi
a59c010e33
Merge pull request #3298 from pijyoi/signaler_wait1
Problem: using FD_SETSIZE for optimized_fd_set_t is a pessimization
2018-11-07 08:35:04 +00:00
KIU Shueng Chuan
9a15fe7fac use required number of descriptors (1) instead of FD_SETSIZE 2018-11-07 09:58:16 +08:00
Luca Boccassi
63abe83388
Merge pull request #3296 from sigiesec/reapply-session-base-refactoring
Reapply session_base_t refactoring
2018-11-06 21:00:26 +00:00
Simon Giesecke
db09fab47b Problem: compilation broken with Sun Studio
Solution: do not use make_pair
2018-11-06 12:33:19 +01:00
Luca Boccassi
2327661810
Merge pull request #3297 from toonetown/recv-buffer-overflow
Windows apparently returns `WSAENOBUFS` from `recv`
2018-11-06 10:37:59 +00:00
Nathan Toone
fa598579e6 Problem: Assert being triggered when Windows returns WSAENOBUFS from recv call on large buffers.
Solution: Expect `WSAENOBUFS` as a valid response.  See https://github.com/zeromq/libzmq/issues/3263
2018-11-05 16:25:35 -07:00
Nathan Toone
eb74b726c2 Problem: no relicense agreement by toonetown
Solution: added relicense agreement
2018-11-05 16:25:35 -07:00
Simon Giesecke
c590873ff7 Problem: complexity of start_connecting
Solution: extract functions for each protocol
2018-11-05 16:06:21 +01:00
Simon Giesecke
31b0a1dff0
Merge pull request #3295 from bluca/hurd_freebsd_sun
Problem: build broken with Sun Studio, tests fail on debian/kfreebsd and debian/hurd, DRAFT zmq_poll is slow
2018-11-05 12:52:06 +01:00
Luca Boccassi
25ded9e897 Problem: out-of-date TODO in zmq_poll
Solution: remove it
2018-11-05 10:59:12 +00:00
Luca Boccassi
ab1607f813 Problem: poller implementation of zmq_poll is slow
Solution: use it only if there is at least one thread-safe socket,
which is not compatible with the older zmq_poll implementation.
2018-11-05 10:59:12 +00:00
Luca Boccassi
b6f55eac14 Problem: unity build broken with Sun Studio
Solution: define UNITY_WEAK_PRAGMA when building with the Sun compiler
as it does not support the weak attribute.
2018-11-05 10:59:12 +00:00
Luca Boccassi
ffd99fbaf5 Problem: GNU/Hurd does not implement getsockname for ipc
Solution: skip tests that use ipc://* as it's impossible to get the
address back for the client
2018-11-05 10:59:12 +00:00
Luca Boccassi
bd9011fe3b Problem: build broken with Sun Studio
Solution: temporary revert refactoring until it can be properly fixed.

Revert "Problem: complexity of start_connecting"

This reverts commit 6d7aeb056f11e6fd2429fa90bc175da0922d306b.
2018-11-05 10:58:45 +00:00
Luca Boccassi
54295cb342 Problem: passing tests on debian/kfreebsd marked as XFAIL
Solution: use a different system variable for debian/hurd and
debian/kfreebsd so that the tests are skipped only on hurd.
2018-11-04 18:12:55 +00:00
Luca Boccassi
205573f1a3 Problem: typo in RUN_TEST macro breaks debian/kfreebsd build
Solution: fix it
2018-11-04 18:12:18 +00:00
Luca Boccassi
320741f2c9
Merge pull request #3294 from bluca/stalebot
Problem: stale bot didn't parse labels correctly
2018-11-04 16:20:40 +00:00
Luca Boccassi
1b8a821222 Problem: stale bot label exceptions not correct
Solution: quote the labels with a space, upstream documentation
(not displayed on the Github page) suggests this should finally work
2018-11-04 15:50:40 +00:00
Doron Somech
b8b98bc601
Merge pull request #3293 from bluca/stalebot
Problem: stale issues linger on Github
2018-11-04 16:30:54 +02:00
Luca Boccassi
ecf1e31db7 Problem: stale issues linger on Github
Solution: enable Stable Bot to automatically mark an issue as stale
after 365 days of inactivity and close it after further 56 days.

Issues marked with the following labels are excluded:

 - Help Request
 - Feature Request
 - Problem reproduced
 - Critical
2018-11-04 14:18:54 +00:00
Doron Somech
c5dab3b4f3
Merge pull request #3292 from bluca/news
Problem: NEWS still out of date
2018-11-04 16:07:53 +02:00
Luca Boccassi
d330d01076 Problem: NEWS still out of date
Solution: mention all relevant bug fixes, features and changes
2018-11-04 14:05:03 +00:00
Simon Giesecke
b03d6605a1
Merge pull request #3288 from bluca/news
Problems: wrong version and outdated NEWS
2018-11-02 18:59:28 +01:00
Luca Boccassi
cb1970e136
Merge pull request #3291 from WallStProg/master
Some changes for CMakeLists.txt:
2018-11-02 17:47:41 +00:00
Bill Torpey
981cff5c93 RELICENSE: Bill Torpey 2018-11-02 12:25:04 -04:00
Bill Torpey
4e8c72c32f RELICENSE: Bill Torpey 2018-11-02 12:20:38 -04:00
Bill Torpey
29c369ff0b Some changes for CMakeLists.txt:
- MacOS version requires CMake version 3.0.2 (because of policy CMP0042)
- Add option to build instrumented binaries with Address Sanitizer
- Add option to select compiler intrinsics for atomic ops
- Only build docs on request (saves build time)
2018-11-02 11:10:14 -04:00
Luca Boccassi
34f23bea82 Problem: NEWS not up to date
Solution: partially list changes since 4.2.5. Not yet complete.
2018-11-01 22:05:25 +00:00
Luca Boccassi
1f3d4dfbea Problem: wrong new version
Solution: bump back from 4.3.1 to 4.3.0
2018-11-01 20:14:30 +00:00
Simon Giesecke
efc9a3021f
Merge pull request #3287 from bluca/radix_draft
Problem: new radix tree implementation is experimental
2018-11-01 11:04:15 +01:00
Luca Boccassi
8f69122981 Problem: new radix tree implementation is experimental
Solution: use it only for DRAFT builds for now, to leave it time to be
tested and stabilised.
2018-10-31 14:47:57 +00:00
Luca Boccassi
fc4115887c
Merge pull request #3286 from ssbl/master
Problem: potentially large memory footprint of trie as number of subscriptions increases (issue #1400)
2018-10-31 14:45:15 +00:00
Shubham Lagwankar
87d2919066 Problem: no relicense agreement by ssbl
Solution: add it
2018-10-31 07:49:55 -04:00
Shubham Lagwankar
c68afb412e Problem: potentially large memory footprint of trie as number of
subscriptions increases

Solution: use a radix tree instead of a trie to store subscriptions
2018-10-31 07:49:55 -04:00
Luca Boccassi
9861d16cfc
Merge pull request #3285 from bjovke/my_work
Problem: Use of pipe_t after free in zmq::socket_base_t::term_endpoint(). Issue #3245.
2018-10-30 17:57:45 +00:00
Bunjevacki, Jovan
f5d1d5d1af Problem: Use of pipe_t after free in zmq::socket_base_t::term_endpoint(). Issue #3245.
Solution: When pipe_t is freed (terminated) remove it from _endpoints member of zmq::socket_base_t. Resolves issue #3245.
2018-10-30 14:12:29 +01:00
Luca Boccassi
3863c869cc
Merge pull request #3284 from lhftio/udp-multicast-hops
Add support for UDP multicast ttl (ZMQ_MULTICAST_HOPS)
2018-10-30 09:41:11 +00:00
Conrad Parker
4ce402687a Problem: no relicense agreement by kfish
Solution: add relicense agreement
2018-10-30 08:14:29 +00:00
Conrad Parker
22083d7d62 Problem: UDP does not support ZMQ_MULTICAST_HOPS
Solution: add support for ZMQ_MULTICAST_HOPS (IP_MULTICAST_TTL)
2018-10-30 08:14:26 +00:00
Luca Boccassi
7064c3a55f
Merge pull request #3283 from hpsaturn/av/relicense
Relicense statement for Hpsaturn
2018-10-27 19:35:50 +01:00
Luca Boccassi
7c0017c55d
Merge pull request #3272 from hpsaturn/av/fix_for_android
fix for android building
2018-10-27 19:35:17 +01:00
Antonio Vanegas
e8c816f250 Relicense statement for Hpsaturn 2018-10-27 12:59:09 -05:00
Luca Boccassi
cbf29b5355
Merge pull request #3281 from ojura/patch-3
Relicense statement for Juraj Oršulić
2018-10-26 09:11:12 +01:00
Luca Boccassi
006f1e6773
Merge pull request #3278 from ojura/master
Always include ZMQSourceRunChecks.cmake
2018-10-26 09:10:57 +01:00
Juraj Oršulić
a48b7a7d93
Relicense statement for Juraj Oršulić 2018-10-26 09:20:13 +02:00
Juraj Oršulić
3942195817
Update CMakeLists.txt 2018-10-22 14:08:02 +02:00
Antonio Vanegas
69ac7a934c fix for android building 2018-10-09 16:49:19 -05:00
Luca Boccassi
cfc9d5f519 Problem: trailing whitespace breaks clang-format-check
Solution: fix issue introduced by #3270
2018-10-08 17:17:13 +01:00
Luca Boccassi
b9b325ce3b
Merge pull request #3271 from gabm/Relicense
Problem: gabm didn't signalise his consent to relicense libzmq
2018-10-08 17:15:03 +01:00
gabm
c1ac158f50 Problem: The flag that indicates the next expected message gets set even if the send fails (#3270)
* ZMQ_DGRAM: flip more flag after successful send

In the dgram socket we have a flag that indicates the next expected message type to ensure that always a pair of "address" + "body" messages gets sent. The first one MUST have the sendmore flag, the second MUST NOT.

In case the message does not get sent because of HWM full, then the function returns EAGAIN as it should. But unfortunately the next expected message type-flag gets flipped as well. When the socket_base::send function now tries to resend the message, it became the wrong message type... If you don't stop sending pairs of messages here (like me) then the next message that gets through will be of the wrong type, which in turn crashes the udp_engine function as described in #3268
2018-10-08 17:14:45 +01:00
Matthias Gabriel
439e57f091 grant relicense permission 2018-10-08 16:00:30 +02:00
Luca Boccassi
501d0815bf
Merge pull request #3267 from glemercier/master
Problem: Compilation with strict AARCH64 compilers is broken
2018-10-07 20:13:32 +01:00
Gregory Lemercier
ffe62d3398 Fix build on arm64 architectures with some strict compilers
This patch fixes an issue that occurs on 64-bit architetures under
strict compiler rules. The code initially checked that the received
size stored in 'uint64_t' was not bigger than the max value of a
'size_t' variable, which is legitimate on 32-bit architectures where
'size_t' variables are stored on 32 bits. On 64-bit architectures,
this test no longer makes sense since 'uint64_t' and 'size_t' types
have the same size. The issue is fixed by ignoring this portion
of code when built for arm64.
2018-10-07 18:23:08 +02:00
Gregory Lemercier
2e2806d744 Adds relicensing grant 2018-10-07 18:23:08 +02:00
Luca Boccassi
6ee048992f
Merge pull request #3266 from antonrd/issue-2488-zmq_msg_send-doc-fix
[ISSUE 2488] Updates the zmq_msg_send doc
2018-10-01 15:23:05 +01:00
Anton Dimitrov
b15aa40212 Adds relicensing grant 2018-10-01 17:11:04 +03:00
Anton Dimitrov
860c905e5a Removes unneeded trailing spaces in doc. 2018-10-01 17:10:47 +03:00
Anton Dimitrov
082457b6d0 Problem: zmq_msg_send doc incomplete return value description (issue #2488)
Solution: Add more information to the doc specifying that MAX_INT is the maximum
possible return value.
2018-10-01 17:00:21 +03:00
Constantin Rack
d4adb9a549
Merge pull request #3265 from bluca/tipc
Problem: test_connect_delay_tipc randomly fails
2018-09-30 01:22:20 +02:00
Luca Boccassi
1a5937750c Problem: test_connect_delay_tipc randomly fails
Solution: use a monitor to wait for a disconnect instead of a sleep,
and retry to send a message until it fails since the state machine
might be delayed due to the I/O thread being pre-empted on busy
systems.
Also set a receive timeout to avoid random hangs.

Fixes #3124
2018-09-29 22:39:36 +01:00
Constantin Rack
41bdf5c389
Merge pull request #3264 from bluca/issue_pr_text
Problem: have to ask manually for relicensing grant
2018-09-29 12:47:42 +02:00
Luca Boccassi
1275c96979 Problem: have to ask manually for relicensing grant
Solution: add note in PR template
2018-09-29 11:22:03 +01:00
Luca Boccassi
7476e58897
Merge pull request #3260 from sigiesec/remove-outdated-reference
Problem: INSTALL refers to deprecated VS build instructions
2018-09-22 13:55:45 +01:00
Simon Giesecke
36b62c1215 Problem: INSTALL refers to deprecated VS build instruction
Solution: remove the reference
2018-09-22 14:00:49 +02:00
Luca Boccassi
95beabe7cc
Merge pull request #3257 from f18m/hwm_test_fix
Remove race condition from XPUB/SUB test in test_blocking()
2018-09-21 11:52:58 +01:00
Francesco Montorsi
4f49e7420b Remove race condition from XPUB/SUB test in test_blocking() 2018-09-21 11:19:50 +02:00
Luca Boccassi
9f962ea0cc
Merge pull request #3255 from f18m/hwm_test_fix
Fix for test_hwm_pubsub
2018-09-20 20:41:13 +01:00
Francesco Montorsi
4b399b51ce change test_hwm_pubsub to use XPUB and wait for subscription before start to sending messages out 2018-09-20 20:42:03 +02:00
Simon Giesecke
ea517a28ff
Merge pull request #3253 from bluca/proxy_hwm
Problem: test_proxy_hwm randomly fails
2018-09-17 14:21:05 +02:00
Luca Boccassi
df218af3bd Problem: test_proxy_hwm expects wrong number of msgs
Solution: allow for a range between the minimum and maximum expected.
With 2 queues, that's between 20 and 40 messages depending on the
scheduling of the 3 threads involved.
2018-09-16 21:20:10 +01:00
Luca Boccassi
e651babd85 Problem: test_proxy_hwm uses an bool across threads
Solution: use atomics to avoid issues on non-x86 architectures
2018-09-16 21:18:52 +01:00
Luca Boccassi
02019d9f4c
Merge pull request #3254 from f18m/hwm_test_fix
Improve test reliability by: a) using XPUB in place of PUB to ensure …
2018-09-16 21:18:38 +01:00
Francesco Montorsi
72418e9dd0 Improve test reliability by: a) using XPUB in place of PUB to ensure we start publishing only after 1st subscriber has joined; b) accept both 2*HWM, 3*HWM and 4*HWM as TX/RX count of messages 2018-09-16 21:55:59 +02:00
Luca Boccassi
b933cb9d6a
Merge pull request #3251 from f18m/relicensing
add relicensing grant
2018-09-14 20:37:59 +01:00
Francesco Montorsi
a5a9fd1ff7 add relicensing grant 2018-09-14 20:01:56 +02:00
Francesco Montorsi
eb3e63e22f Hwm tests and docs (#3242)
Add new HWM tests and more detailed documentation
2018-09-13 22:14:06 +01:00
Luca Boccassi
0750211109
Merge pull request #3250 from ffontaine/master
fix static build with libatomic
2018-09-13 22:12:36 +01:00
Fabrice Fontaine
3b39942bd0 RELICENSE: Fabrice Fontaine
Create RELICENSE/FabriceFontaine.md

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2018-09-13 22:08:53 +02:00
Fabrice Fontaine
6de5f18be3 fix static build with libatomic
Commit 2ec5a33f6e986661dc92f3585ea400f919a39cae added support to link
with -latomic if needed however using LDFLAGS doesn't work when
statically linking because LDFLAGS is added before LIBS

Detection of atomic fails with:

configure:23230: /accts/mlweber1/instance-2/output/host/bin/sparc-linux-g++ -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -static -static -pedantic -Werror -Wall -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE -Wno-long-long -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -static -latomic conftest.cpp -lrt -lpthread -lstdc++ >&5
/tmp/ccgrvVTg.o: In function `main':
conftest.cpp:(.text.startup+0x10): undefined reference to `__atomic_fetch_add_4'
collect2: error: ld returned 1 exit status

So use LIBS instead of LDFLAGS

Fixes:
 - http://autobuild.buildroot.net/results/c471d6b1061a8516f7772735e471db68a32965aa

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2018-09-13 20:18:37 +02:00
Luca Boccassi
1b61ff2910
Merge pull request #3247 from schulzch/relicense
RELICENSE: Christoph Schulz
2018-09-10 10:00:55 +01:00
Christoph Schulz
fa397134fe RELICENSE: Christoph Schulz 2018-09-10 10:48:08 +02:00
Constantin Rack
10edb5930a
Merge pull request #3246 from schulzch/cmake-fixes
CMake cleanup
2018-09-10 07:51:31 +02:00
Christoph Schulz
a21228b664 Conform to cmakelint --filter=-linelength
- Lowercase all commands
- Unify indent to 2 spaces
- Remove spaces around brackets
- Remove repitition of condition in else(...) and endif(...)

Note: (re-)running CMake did not change the content of the generated files
2018-09-10 00:12:07 +02:00
Christoph Schulz
ca7c03f825 Add instead of replace linker flags (fix for LLVM toolchain) 2018-09-09 23:24:33 +02:00
Luca Boccassi
9c0bff2c9c
Merge pull request #3239 from Mystfit/relicense
RELICENSE: Byron Mallett
2018-09-01 10:32:42 +01:00
Byron Mallett
fe212927f6 RELICENSE: Byron Mallett
Added relicensing permission from Byron Mallett
2018-09-01 15:18:48 +12:00
Luca Boccassi
e0ec6a9b36 Problem: formatting errors introduced by PR #3237
Solution: fix them
2018-08-31 09:37:53 +01:00
Byron Mallett
d8f3b283f8 Added SO_REUSEPORT socket option for UDP recv ports (#3237)
* Added SO_REUSEPORT socket option for UDP multicast recv ports
2018-08-31 09:36:34 +01:00
Luca Boccassi
50dbd80c51
Merge pull request #3233 from sigiesec/migrate-tests-to-unity
Revert "Problem: test_proxy not yet using unity"
2018-08-24 09:23:37 +01:00
Simon Giesecke
1734a64d62 Revert "Problem: test_proxy not yet using unity"
This reverts commit fd27324ec3daa50bebea381ce7fd4b505a6a53e6.
2018-08-24 09:49:41 +02:00
Constantin Rack
e0fe7f1037
Merge pull request #3232 from sigiesec/migrate-tests-to-unity
Migrate tests to unity, reduce duplication
2018-08-23 20:08:22 +02:00
Simon Giesecke
430b97fc73 Problem: test_use_fd not yet using unity
Solution: migrate to unity
2018-08-23 18:03:16 +02:00
Simon Giesecke
d668925bca Problem: extensive duplication between test_use_fd_tcp and test_use_fd_ipc
Solution: merge into a single test_use_fd and reduce code duplication by extracting common functions
2018-08-23 18:00:52 +02:00
Simon Giesecke
929d295e01 Problem: test_timers not yet using unity
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
980791d182 Problem: test_stream_timeout not yet using unity
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
f01682292c Problem: test_stream_disconnect not yet using unity
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
309fe2e6fd Problem: test_router_mandatory_hwm not yet using unity
Solution: migrate to unity
2018-08-23 18:00:51 +02:00
Simon Giesecke
fd27324ec3 Problem: test_proxy not yet using unity
Solution: migrate to unity
2018-08-23 18:00:50 +02:00
Luca Boccassi
76f2edd0b7
Merge pull request #3230 from saraf/master
Fix build failure on ARM due to bad variable name
2018-08-23 12:55:48 +01:00
Aalhad Saraf
3f1f628538 Fix build failure on ARM due to bad variable name
The variable decrement was changed to decrement_
in c581f43c977f8776a56d20b7654260928e4c16b8

In -one- place, it remained as decrement
and gives:

In file included from src/ctx.hpp:44:0,
from src/address.cpp:33:
src/atomic_counter.hpp: In member function 'bool zmq::atomic_counter_t::sub(zmq::atomic_counter_t::integer_t)':
src/atomic_counter.hpp:191:28: error: 'decrement' was not declared in this scope

Changing it to decrement_ fixes the problem.
2018-08-23 17:02:56 +05:30
Luca Boccassi
12005bd926
Merge pull request #3228 from sigiesec/migrate-tests-to-unity
Migrate further tests to unity
2018-08-22 13:00:09 +01:00
Simon Giesecke
1a55100dbe Problem: test_xpub_verbose is not using testutil_unity
Solution: use utilities from testutil_unity, reduce duplication
2018-08-22 11:51:11 +02:00
Simon Giesecke
2334090732 Problem: test_stream not yet using unity
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
7ad0ff5e9a Problem: test_stream_empty not yet using unity
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
7b39d2cb2a Problem: test_unbind_wildcard not yet using unity
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
c66288a882 Problem: duplicate code
Solution: extracted into common method
2018-08-22 11:51:10 +02:00
Simon Giesecke
713f075fec Problem: test_xpub_manual not yet using unity
Solution: migrate to unity
2018-08-22 11:51:10 +02:00
Simon Giesecke
407bd3b1b2 Problem: test_spec_pushpull not yet using unity
Solution: migrate to unity
2018-08-22 11:51:09 +02:00
Simon Giesecke
261dd1f92c Problem: test_ancillarries not yet using unity
Solution: migrate to unity
2018-08-22 11:51:09 +02:00
Simon Giesecke
3d2db5d8d5 Problem: test_capabilities not yet using unity
Solution: migrate to unity
2018-08-22 11:51:09 +02:00
Simon Giesecke
dc29361ef4 Problem: test_req_correlate not yet using unity
Solution: migrate to unity
2018-08-22 11:51:09 +02:00
Simon Giesecke
244ba77ebc Problem: test_base85 not yet using unity
Solution: migrate to unity
2018-08-22 11:51:08 +02:00
Luca Boccassi
9f0b83a1d3 Problem: whitespace issue with PR #3227
Solution: fix it to comply with clang-format rules
2018-08-20 15:44:20 +01:00
answeroo
777bd48296 Pgm fix (#3227)
* Relicensing grant by Ming Ji <jiming@yafco.com>

Permission to relicense under any OSI approved license chosen by the current ZeroMQ BDFL.
2018-08-20 15:42:58 +01:00
Simon Giesecke
fce1838545 Problem: test_pair_tcp not yet using unity
Solution: migrate to unity
2018-08-20 11:13:12 +02:00
Luca Boccassi
d7e51cdfed Problem: indentation issues with PR #3226
Solution: fix them
2018-08-19 18:12:28 +01:00
answeroo
7852a6ce98 PGM receiver crash fix (#3226)
Problem: PGM receiver can crash due to race

Solution: do not run in_event until restart_input finishes correctly.

Signed-off-by: answeroo <jiming@yafco.com>
2018-08-19 18:10:51 +01:00
Luca Boccassi
1c5e81788e
Merge pull request #3225 from sigiesec/fix-bug-router-duplicate-id-no-handover
Problem: inconsistent _out_pipes when using the same routing id witho…
2018-08-17 15:27:20 +01:00
Simon Giesecke
8328208e60 Problem: inconsistent _out_pipes when using the same routing id without ZMQ_ROUTER_HANDOVER
Solution: added test case, do not erase existing without ZMQ_ROUTER_HANDOVER
2018-08-17 12:50:59 +02:00
Luca Boccassi
4ecfb81c7c
Merge pull request #3224 from sigiesec/migrate-further-tests
Migrate further tests to unity
2018-08-17 11:14:59 +01:00
Simon Giesecke
e07a6a69ad Problem: test_spec_router not yet using unity
Solution: migrate to unity
2018-08-17 10:19:00 +02:00
Simon Giesecke
ab22aeb83e Problem: test_setsockopt not yet using unity
Solution: migrate to unity
2018-08-17 10:19:00 +02:00
Simon Giesecke
30b9e5a10b Problem: test_connect_rid not yet using unity
Solution: migrate to unity
2018-08-17 10:19:00 +02:00
Simon Giesecke
0fc2f0f073 Problem: test_term_endpoint not yet using unity
Solution: migrate to unity
2018-08-17 10:19:00 +02:00
Simon Giesecke
dce77fda68 Problem: test_filter_ipc not yet using unity
Solution: migrate to unity
2018-08-16 18:34:55 +02:00
Luca Boccassi
fe82c643ed
Merge pull request #3220 from sigiesec/code-improvements
Various refactorings
2018-08-16 16:29:17 +01:00
Luca Boccassi
31f69937fc
Merge pull request #3222 from sigiesec/add-z7-debug-info-with-relwithdebinfo
Problem: /Z7 debug info is used only for Debug build, but not for Rel…
2018-08-16 15:30:13 +01:00
Simon Giesecke
987e75b887 Problem: test program test_unbind_inproc is redundant, the same is already tested in test_inproc_connect
Solution: remove test_unbind_inproc
2018-08-16 12:37:06 +02:00
Simon Giesecke
f6a3ebde99 Problem: test not using unity assertions and test utils
Solution: Migrate to unity assertions and test utils
2018-08-16 11:55:07 +02:00
Simon Giesecke
a9973ac43f Problem: /Z7 debug info is used only for Debug build, but not for RelWitDebInfo build
Solution: apply the same commadn for RelWithDebInfo build
2018-08-16 11:40:55 +02:00
Simon Giesecke
6824c167ad
Merge pull request #3217 from WenbinHou/patch-1
Update unittests/CMakeLists.txt: use ZeroMQ_SOURCE_DIR, ZeroMQ_BINARY_DIR
2018-08-16 11:15:44 +02:00
Simon Giesecke
75e4a342e2 Problem: XFAIL_TESTS does not correctly reference some tests
Solution: add tests/ directory prefix
2018-08-16 11:07:05 +02:00
Wenbin Hou
0507ae877d
Update tests/CMakeLists.txt: use ZeroMQ_SOURCE_DIR, ZeroMQ_BINARY_DIR
Use ZeroMQ_SOURCE_DIR, ZeroMQ_BINARY_DIR instead of CMAKE_SOURCE_DIR, CMAKE_BINARY_DIR in tests/CMakeLists.txt
Similar reason to change unittests/CMakeLists.txt
2018-08-16 13:17:44 +08:00
Wenbin Hou
8fbb32c8f1
RELICENSE: Wenbin Hou
Create RELICENSE/WenbinHou.md
2018-08-16 08:46:48 +08:00
Simon Giesecke
c546045d8c Problem: test_connect_delay_tipc not yet using unity
Solution: started migration to unity (run test cases separately)
2018-08-15 18:35:17 +02:00
Simon Giesecke
06a9d809aa Problem: test_connect_delay_tipc is almost always failing
Solution: add to XFAIL_TESTS until resolved
2018-08-15 15:27:37 +02:00
Simon Giesecke
6d7aeb056f Problem: complexity of start_connecting
Solution: extract functions for each protocol
2018-08-15 14:46:21 +02:00
Simon Giesecke
2cd34da1b0 Problem: code duplication in session_base_t::start_connecting
Solution: extract common code
2018-08-15 14:46:21 +02:00
Simon Giesecke
799fae44fe Problem: magic literal used for inproc
Solution: define and use named constant
2018-08-15 14:46:21 +02:00
Simon Giesecke
daadb65a46 Problem: inconsistency of using terms address and uri
Solution: use terms more consistently
2018-08-15 14:46:21 +02:00
Simon Giesecke
cdc6c66f9b Problem: complexity of term_endpoint
Solution: extract resolve_tcp_addr function
2018-08-15 14:46:21 +02:00
Simon Giesecke
a2d736c14f Problem: functionality around inprocs_t is scattered
Solution: extract into functions of new inprocs_t class
2018-08-15 14:46:21 +02:00
Simon Giesecke
fb576d2f95 Problem: unnecessary procedural code
Solution: replace by functional expression
2018-08-15 14:46:21 +02:00
Simon Giesecke
3455be144d Problem: code duplication around sending of routing id
Solution: extract functionality into send_routing_id
2018-08-15 14:46:21 +02:00
Simon Giesecke
83f41526c9 Problem: code duplication around options_t::conflate
Solution: extract functionality into get_effective_conflate_option
2018-08-15 12:18:35 +02:00
Simon Giesecke
8820dedcb7 Problem: stream_engine_t::_as_server is not used
Solution: remove it
2018-08-15 11:53:31 +02:00
Simon Giesecke
0852099f67 Problem: unused field pipe_t::_credentials
Solution: remove it
2018-08-15 11:48:00 +02:00
Szekely Gyorgy
2cdad3d0ce Add ZMQ_ROUTER_NOTIFY draft socket option (#3213)
* Add ZMQ_ROUTER_NOTIFY draft socket option
2018-08-15 08:54:08 +01:00
Luca Boccassi
4738bed5b6
Merge pull request #3219 from hoditohod/relicense
RELICENSE: Szekely Gyorgy
2018-08-15 08:50:05 +01:00
Gyorgy Szekely
69d69f21a8 RELICENSE: Szekely Gyorgy 2018-08-15 09:37:59 +02:00
Wenbin Hou
c981336445
Udpate unittests/CMakeLists.txt: use ZeroMQ_SOURCE_DIR, ZeroMQ_BINARY_DIR
Use ZeroMQ_SOURCE_DIR, ZeroMQ_BINARY_DIR instead of CMAKE_SOURCE_DIR, CMAKE_BINARY_DIR, which allows libzmq to become an "add_subdirectory" target (with static build).
Otherwise, building unittest_xxx would complain header files not found.
2018-08-15 10:11:49 +08:00
Luca Boccassi
cbb9925a10
Merge pull request #3215 from sigiesec/remove-unused-get-credential
Problem: unused get_credential methods and associated fields
2018-08-14 20:05:53 +01:00
Luca Boccassi
dbe289509e
Merge pull request #3211 from sigiesec/migrate-and-extend-probe-router-test
Migrate and extend probe router test
2018-08-13 17:40:07 +01:00
Simon Giesecke
da30ff7d3d Problem: unused get_credential methods and associated fields
Solution: remove them
2018-08-13 15:22:18 +02:00
Simon Giesecke
062b510b5d Problem: test case test_probe_router_router does not receive auto-generated routing id
Solution: add receive call for routing id
2018-08-13 13:26:50 +02:00
Luca Boccassi
0b1589dbba
Merge pull request #3209 from sigiesec/code-improvements
Code style improvements
2018-08-10 16:40:23 +01:00
Simon Giesecke
d78152bf83 Problem: no test case for ZMQ_PROBE_ROUTER on ZMQ_DEALER socket
Solution: add test case
2018-08-10 17:30:23 +02:00
Simon Giesecke
d9e5ba671b Problem: test_probe_router not yet using unity
Solution: migrate to unity/testutil_unity
2018-08-10 17:30:00 +02:00
Simon Giesecke
bbae67df89 Code style improvements 2018-08-10 15:36:31 +02:00
Simon Giesecke
b102e30419 Fixed naming for filter parameter, removed unnecessary temporary variable, fixed naming of local variable 2018-08-10 11:25:20 +02:00
Simon Giesecke
a1b6268c83 Made to_string const; converted C-style cast to reinterpret_cast 2018-08-10 11:25:09 +02:00
Luca Boccassi
6e8424ab5d
Merge pull request #3206 from sigiesec/fix-zap-memory-use-after-free
Problem: stream_engine_t instance may access its fields after it deleted itself
2018-08-09 18:17:58 +01:00
Simon Giesecke
737927e333 Fixed spelling of parameter 2018-08-09 18:27:01 +02:00
Simon Giesecke
46ed0920b2 Various code style improvements 2018-08-09 18:27:01 +02:00
Luca Boccassi
53e9af71af
Merge pull request #3208 from sigiesec/add-clang-rule-exclusions-analyze
Added some more clang-tidy rule exclusions
2018-08-09 16:36:26 +01:00
Simon Giesecke
bfa8275cfb Added some more clang-tidy rule exclusions 2018-08-09 15:44:46 +02:00
Simon Giesecke
563651e0c9 Problem: stream_engine_t instance may access its fields after it deleted itself
Solution: prevent access to data if the object was deleted
2018-08-09 15:24:23 +02:00
Luca Boccassi
76602516a8
Merge pull request #3205 from sigiesec/code-improvements
Code style improvements
2018-08-09 13:39:07 +01:00
Simon Giesecke
be81dcd4d3 Use std::min/max where possible 2018-08-09 12:53:32 +02:00
Simon Giesecke
3cb77e423e Use revision_pos constant 2018-08-09 12:47:18 +02:00
Simon Giesecke
758f903db4 Some code style improvements: removed redundant parentheses, added const, joined declaration and assignment of local variables 2018-08-09 12:41:08 +02:00
Simon Giesecke
89e5313114 Refactored zmq::stream_engine_t::handshake, extracted several sub-methods 2018-08-09 12:41:08 +02:00
Simon Giesecke
c3739ff604 Use static_cast instead of C-style casts, make local variables const where possible, use switch instead of chained if/else, extract rm_helper_multiple_subnodes from rm_helper to reduce nesting 2018-08-09 12:41:08 +02:00
Simon Giesecke
9e2cf35b66 Reduced number of calls to container end method 2018-08-09 12:41:08 +02:00
Luca Boccassi
05e400a3e0
Merge pull request #3203 from sigiesec/update-wepoll
Problem: wepoll outdated
2018-08-08 13:45:21 +01:00
Luca Boccassi
d9ade47630
Merge pull request #3202 from sigiesec/code-improvements
Simplified and optimized several code fragments
2018-08-08 13:44:48 +01:00
Simon Giesecke
19a70ab682 Optimized and simplified zmq::timers_t::execute and zmq::timers_t::timeout 2018-08-07 16:54:35 +02:00
Simon Giesecke
4f77cfa327 Removed unreachable code paths 2018-08-07 16:11:52 +02:00
Simon Giesecke
198c01e00b Use more structured for loop instead of while loop 2018-08-07 15:58:15 +02:00
Simon Giesecke
9440f4e5bc Problem: wepoll outdated
Solution: update to wepoll 1.5.2
2018-08-07 15:51:20 +02:00
Simon Giesecke
e4b4372c41 Simplified code 2018-08-07 14:15:35 +02:00
Simon Giesecke
ad3d1e7762 Reduced code duplication between xread and xhas_in 2018-08-07 14:15:35 +02:00
Simon Giesecke
3cca90ea44 Optimized zmq::dish_t::xhas_in 2018-08-07 14:15:35 +02:00
Simon Giesecke
aa1f5739b7 Optimized zmq::dish_t::xrecv 2018-08-07 14:15:35 +02:00
Simon Giesecke
fa976f87f9 Simplified uses of erase 2018-08-07 14:15:35 +02:00
Simon Giesecke
6357890ff6 Removed code duplication in process_commands 2018-08-07 10:17:12 +02:00
chymanfx
da8024d3c9 Problem: No CI for mingw64 (#3195)
* Problem: No CI for mingw64

Adding CI support for mingw64 to appveyor.yml

Reason: To help address the issue:
  Several checks fail under 64-bit MinGW on Windows when running make check #3185

* Problem: Docs do not build with mingw64, dll already in right place

Turning off WITH_DOC for mingw64
Removing copy command for mingw64 and cygwin64 (it now seems to be directly built in "bin" directoy)
2018-07-29 22:40:35 +01:00
Doron Somech
ebe701afc1
Merge pull request #3198 from bluca/timers_draft
Problems: no docs for zmq_timers_*, zmq_timers_* have been DRAFT for a long time
2018-07-28 13:59:51 +03:00
Luca Boccassi
3159161cef Problem: zmq_timers_* are ready for STABLE
Solution: move them from DRAFT state to STABLE
2018-07-27 23:07:56 +01:00
Luca Boccassi
efbec8e67f Problem: zmq_poller manpage is not build
Solution: add it to the makefile
2018-07-27 23:05:01 +01:00
Luca Boccassi
06176fde4d Problem: no documentation for zmq_timers_*
Solution: add a manpage
Fixes #3005
2018-07-27 23:04:05 +01:00
Luca Boccassi
bbcdb961a0
Merge pull request #3193 from mvilim/local_attach
Race condition with received message causes ZMQ_CONNECT_ROUTING_ID to be assigned to wrong socket
2018-07-27 08:31:55 +01:00
Michael Vilim
8a16fef3cc Problem: ZMQ_CONNECT_ROUTING_ID can be assigned to incoming socket connection (Issue #3191)
Solution: Add an identifier parameter for local attach to zmq::socket_base_t::attach_pipe
2018-07-26 18:26:35 -05:00
Luca Boccassi
0aa222d07e
Merge pull request #3197 from justusranvier/master
Problem: build system does not play nicely as a cmake subproject
2018-07-26 23:46:36 +01:00
Justus Ranvier
458f41e349
Problem: build system does not play nicely as a cmake subproject #3196
Solution: avoid exporting targets and installing files if neither
BUILD_SHARED nor BUILD_STATIC is set
2018-07-26 17:18:26 -05:00
Luca Boccassi
f4aad4d1d2
Merge pull request #3194 from QuLogic/cmake-pkgconfig
cmake: Install pkgconfig in correct lib directory.
2018-07-26 08:42:28 +01:00
Elliott Sales de Andrade
1e51d6e043 Problem: cmake: pkgconfig always installed in lib.
Solution: Use cmake's libdir variable to ensure that the pkgconfig file
ends up in the correct lib/lib64 directory. This matches the autotools
behaviour.
2018-07-26 00:36:46 -04:00
Luca Boccassi
cc4d03fa1c
Merge pull request #3181 from jcfr/support-custom-output-dir
cmake: Streamline integration allowing config of CMAKE_*_OUTPUT_DIRECTORY
2018-07-24 23:37:11 +01:00
Andras Lasso
f1aeb7956c
cmake: Fix .dll file location in the build tree
This commit ensures that the variable CMAKE_*_OUTPUT_DIRECTORY
are considered when creating the library.
2018-07-24 18:22:47 -04:00
Jean-Christophe Fillion-Robin
b1d4955065
cmake: Streamline integration allowing config of CMAKE_*_OUTPUT_DIRECTORY
Setting EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH variables is deprecated
2018-07-24 18:22:45 -04:00
Luca Boccassi
25f47ccbf8
Merge pull request #3187 from MelcoInternational/master
Switched android platform check to official form
2018-07-19 00:40:49 +01:00
jdavidberger
3b26c7f8e1
Switched android platform check to official form
See https://markmail.org/message/5ekhfztchs45lz3n#query:+page:1+mid:jfqgzrmwm37uyrt6+state:results
2018-07-18 12:14:33 -06:00
Simon Giesecke
7a9933f2e1
Merge pull request #3179 from masariello/master
Problem: stack overflow on win64 #2876
2018-06-28 17:06:49 +02:00
Alessio M
9066e0670f Problem: stack overflow on win64 #2876. Basically zmq::signaler_t::wait suffers from stack bloating the same way socket_poller was found to be bloated due to the large size of fd_set
Solution: replace the fd_set in the routine with an instance of optimized_fd_set_t
2018-06-28 14:11:32 +01:00
jamesdillonharvey
83e1712d67 Update conflate docs to cover issue #3171 (#3175)
* More info on conflate queue
2018-06-26 10:49:36 +01:00
Luca Boccassi
b0d9a5a2d5
Merge pull request #3174 from ilue/master
Fix for issue #3162
2018-06-26 08:09:05 +01:00
Simon Giesecke
0d66067411
Merge pull request #3168 from bluca/recv_sub_cancel
Problem: can't process ZMTP 3.1 cancel/subscribe commands
2018-06-25 14:00:42 +02:00
Luca Boccassi
d70714e877 Problem: can't process ZMTP 3.1 cancel/subscribe commands
Solution: add some msg helpers to parse commands, and check for
subscribe or cancel commands and process them accordingly in the xpub
and xsub classes.
2018-06-23 17:16:10 +01:00
Luca Boccassi
681e53f369 Problem: libstdc++ symbols exported on Debian/[Hurd|kFreeBSD]
Solution: use the --version-script map on those systems as well, as it
is supported
2018-06-23 17:16:10 +01:00
Luca Boccassi
8da4e9b95c Problem: pgm_sender does not initialise all its class variables
Solution: do it to silence static analysis warnings
2018-06-22 22:49:58 +01:00
Luca Boccassi
40606a93fe Problem: VMCI tests do not build
Solution: fix path in Makefile.am
2018-06-22 22:49:58 +01:00
Luca Boccassi
a059d904fe Problem: binaries and artefacts missing from gitignore
Solution: list them
2018-06-22 22:49:58 +01:00
jamesdillonharvey
edec2244d1 update pair doc (#3170)
* update pair doc
2018-06-21 16:55:18 +01:00
Luca Boccassi
85dfca3087
Merge pull request #3167 from sigiesec/fix-clang-tidy-config-analyze
Fix clang-tidy configuration
2018-06-15 10:11:34 +01:00
Simon Giesecke
21ad652a1e Problem: syntax error in shell script
Solution: add missing quotation marks
2018-06-15 10:00:57 +02:00
Simon Giesecke
bd8083e8b8 Problem: wrong quotation marks in .clang-tidy
Solution: use correct double quotes
2018-06-15 09:38:44 +02:00
ehilscher
0867c38032 Problem: connecter classes do not handle ZMQ_RECONNECT_IVL of -1 (#3163)
* Problem: connecter classes do not handle ZMQ_RECONNECT_IVL of -1

Solution: Add guards to prevent a reconnect timer from starting if ZMQ_RECONNECT_IVL is -1
(Issue 3158)
2018-06-12 23:23:39 +01:00
ilue
e22cd678b6
Fix #3162 2018-06-12 11:10:03 +08:00
Luca Boccassi
3a1e8f0704
Merge pull request #3159 from sigiesec/remove-superfluous-mutex
Problem: epoll_t employs an unnecessary mutex
2018-06-07 14:17:20 +01:00
Simon Giesecke
75e945f162 Problem: epoll_t employs an unnecessary mutex
Solution: remove the mutex
2018-06-06 21:41:16 +02:00
Luca Boccassi
add97caa4f
Merge pull request #3157 from kermitbu/master
use cmake compile the unittest
2018-06-06 13:03:07 +01:00
kermit
ba3bc3806c compile unittests 2018-06-06 18:24:53 +08:00
Luca Boccassi
7e6792ca74
Merge pull request #3156 from sigiesec/add-cygwin64-ci
Add cygwin64 CI on Appveyor
2018-06-04 19:02:15 +01:00
Luca Boccassi
aee5fc2560
Merge pull request #3155 from pijyoi/wepoll_missing_files
wepoll integration fixes
2018-06-04 17:14:38 +01:00
KIU Shueng Chuan
5a1ea0c398 Problem: ZMQ_USE_EPOLL_CLOEXEC not renamed to new name
Solution: rename it
2018-06-04 23:17:57 +08:00
KIU Shueng Chuan
9ca3821d9a Problem: incomplete wepoll filelist in Makefile.am
Solution: add them so that they get included in "make dist"
2018-06-04 23:12:40 +08:00
Simon Giesecke
4a18ed6778 Problem: build fails due to broken cygwin64 tests
Solution: allow failure of cygwin64 build
2018-06-04 15:19:13 +02:00
Simon Giesecke
eccf2e53bc Problem: cygwin build defines ZMQ_HAVE_WINDOWS
Solution: do not check for windows.h on cygwin
2018-06-04 15:19:13 +02:00
Simon Giesecke
c5d422c02b Problem: no CI for cygwin
Solution: add cygwin build
2018-06-04 15:19:13 +02:00
Simon Giesecke
d07ddb1bce
Merge pull request #3153 from pijyoi/autoconf_wepoll
Problem: not able to use wepoll in configure script
2018-06-03 11:45:44 +02:00
KIU Shueng Chuan
2336e1f170 Problem: not able to use wepoll in configure script
Solution: add wepoll as a polling system
2018-06-03 11:55:26 +08:00
pijyoi
c76ac5474b fix computation of winsock fd_set size (#3151)
* fix computation of winsock fd_set size
2018-06-02 13:16:33 +01:00
Luca Boccassi
e2a4d770d8
Merge pull request #3150 from sigiesec/reduce-duplication
Resolve huge stack size requirements problem with select on Windows
2018-06-01 19:48:17 +01:00
Simon Giesecke
17df28d2b6 Problem: outdated information in INSTALL regarding stack size
Solution: removed obsolete information
2018-06-01 18:43:59 +02:00
Simon Giesecke
5ac900a984 Problem: huge size of socket_poller_t object on Windows with select polling
Solution: use resizable_optimized_fd_set_t
2018-06-01 18:43:58 +02:00
Simon Giesecke
4a651251a7 Problem: code duplication within socket_poller_t
Solution: remove duplicated code
2018-06-01 18:24:42 +02:00
Simon Giesecke
74d3d8421f Problem: huge stack allocation with select on Windows in socket_poller_t::wait
Solution: use optimized_fd_set_t
2018-06-01 18:22:49 +02:00
Simon Giesecke
3d39bb9ca9 Problem: valid_pollset_bytes not reused in socket_poller
Solution: use it
2018-06-01 18:22:49 +02:00
Simon Giesecke
a8d62d14c1 Problem: polling utilities not at a reusable location
Solution: move to separate header
2018-06-01 18:22:48 +02:00
Simon Giesecke
fa8bc17ef3 Problem: CMake error on Win32 with DRAFTS disabled
Solution: guard CMake statement properly
2018-06-01 18:20:11 +02:00
Simon Giesecke
fc92fa897a Problem: no non-DRAFT Windows build
Solution: switch one build to non-draft
2018-06-01 18:20:11 +02:00
Simon Giesecke
7c0efcb588 Problem: huge stack allocation in Windows select code
Solution: use fast_vector_t as in poll implementation
2018-06-01 18:20:10 +02:00
Simon Giesecke
2533ffed86 Problem: memcpy code fragment is duplicated
Solution: unify between Windows and non-Windows code
2018-06-01 18:19:46 +02:00
Simon Giesecke
04dedfbc2a Problem: duplicated calculation of valid bytes in select pollset
Solution: extract to function
2018-06-01 18:16:46 +02:00
Simon Giesecke
e4c3297ed8 Problem: fragile handling of possibly dynamically allocated pollfds
Solution: extract class template fast_vector_t
2018-06-01 17:08:39 +02:00
Simon Giesecke
c6e4b0abb1 Problem: zmq_poll implementation is complex
Solution: extract compute_timeout method
2018-06-01 17:08:38 +02:00
Simon Giesecke
3db3bbfbbb Problem: duplication in implementation zmq_poller_poll
Solution: remove duplication
2018-06-01 17:08:38 +02:00
Luca Boccassi
89e5f15ac4
Merge pull request #3149 from sigiesec/analyze
Few more code style fixes
2018-05-31 17:57:16 +01:00
Simon Giesecke
67b602fe76 Problem: unused variable warnings for values only used in asserts
Solution: use a Debug build for analysis
2018-05-31 11:25:35 +02:00
Simon Giesecke
3cb4754602 Problem: analysis job prolongs overall build
Solution: start analysis job first, if enabled, since it takes the longest time
2018-05-31 11:23:04 +02:00
Simon Giesecke
4604014c12 Problem: unused result of call to pull_msg
Solution: add TODO comment regarding handling of the result
2018-05-31 11:21:33 +02:00
Simon Giesecke
c2ba553d87 Problem: unused values stored to variable, duplicated code
Solution: remove duplicated and redundant code
2018-05-31 11:02:26 +02:00
Simon Giesecke
ee4cdf8bf0 Problem: suspicious use of memcmp result
Solution: explicitly compare result against 0
2018-05-31 11:02:26 +02:00
Luca Boccassi
6bfa91f13f
Merge pull request #3145 from sigiesec/analyze
More code style fixes and improvements to static analysis configuration
2018-05-31 07:59:43 +01:00
Simon Giesecke
0b8f586d8f
Merge pull request #3144 from bluca/autoconf_taut
Problem: autoconf checks tautological compiler flag only for C++
2018-05-30 23:25:03 +02:00
Simon Giesecke
a2f91c5509 Problem: unnecessary passing of non-const data
Solution: make const
2018-05-30 23:21:53 +02:00
Simon Giesecke
c641644bb2 Problem: inconsistent parameter names
Solution: harmonize
2018-05-30 23:21:52 +02:00
Simon Giesecke
ce4b71c3fa Problem: cppcoreguidelines-pro-type-static-cast-downcast warnings that are not meant to be resolved
Solution: disable cppcoreguidelines-pro-type-static-cast-downcast warning
2018-05-30 23:21:52 +02:00
Simon Giesecke
9e6f1c9a3c Problem: redundant else after return
Solution: remove redundant else
2018-05-30 23:21:52 +02:00
Simon Giesecke
6fa12bd692 Problem: unused stored value warning
Solution: add LIBZMQ_UNUSED
2018-05-30 23:21:52 +02:00
Simon Giesecke
0f2979a38e Problem: assignment used as condition warning
Solution: changed condition
2018-05-30 23:21:52 +02:00
Simon Giesecke
24edc828ab Problem: redundant else after return
Solution: remove redundant else
2018-05-30 23:21:52 +02:00
Simon Giesecke
88646438d2 Problem: differing parameter names between declaration and definition
Solution: harmonize
2018-05-30 23:21:52 +02:00
Simon Giesecke
6c67fca7e0 Problem: numerous hicpp-signed-bitwise warnings that cannot easily be solved because of externally defined types
Solution: disable this warning for now
2018-05-30 23:21:52 +02:00
Simon Giesecke
da4309da13 Problem: violation of parameter naming conventions
Solution: change to comply with naming conventions
2018-05-30 23:21:52 +02:00
Simon Giesecke
29f1f39df3 Problem: unused parameter warning
Solution: mark parameter as unused depending on platform definitions
2018-05-30 23:21:52 +02:00
Simon Giesecke
b59d7d574d Problem: typo in parameter name
Solution: correct spelling
2018-05-30 22:52:19 +02:00
Simon Giesecke
a91c7e718c Problem: warnings on violations of CERT ERR-58
Solution: declare functions noexcept
2018-05-30 22:52:19 +02:00
Simon Giesecke
0dce223341 Problem: no check if noexcept is supported by compiler
Solution: add compile check
2018-05-30 22:50:30 +02:00
Simon Giesecke
93194e7c53 Problem: non-portable memset
Solution: add dummy pointer meber to union instead
2018-05-30 22:50:30 +02:00
Simon Giesecke
9c8fde09ca Problem: inconsistent control structures in address.cpp, redundant check for NULLness before delete
Solution: harmonize, remove redundant checks
2018-05-30 22:50:30 +02:00
Simon Giesecke
0179b7577a Problem: literals protocol names used at various places
Solution: introduced named constants
2018-05-30 22:50:29 +02:00
Luca Boccassi
06eaf20571 Problem: autoconf checks tautological compiler flag only for C++
Solution: check for C as well and set the flags separately
2018-05-30 21:21:59 +01:00
Simon Giesecke
bd76926f5b Problem: code style issues in options_t (C-style cast, suboptimal std::string::find call, redundant method is_valid)
Solution: resolved these issues
2018-05-30 13:13:31 +02:00
Simon Giesecke
a96a87f343 Problem: problematic atoi function is used (CERT ERR-34C)
Solution: use strtol instead
2018-05-30 10:35:01 +02:00
Simon Giesecke
273137741a Problem: protected data members in ip_address_t, ip_address_mask_t violates LSP
Solution: make ip_address_mask_t independent of ip_address_t, they do not share that much, remove some code duplication between ip_address_t and ip_addr_t
2018-05-30 10:28:14 +02:00
Simon Giesecke
314ac28dbd Problem: protected data member in ip_resolver_t
Solution: declare private
2018-05-30 10:03:55 +02:00
Simon Giesecke
573815da83 Problem: protected data member in encoder_base_t
Solution: encapsulate data member properly
2018-05-30 09:57:46 +02:00
Luca Boccassi
088fd65bf2
Merge pull request #3143 from sigiesec/remove-extra-files
Problem: temporary files in repo
2018-05-30 08:36:33 +01:00
Simon Giesecke
be8e7de6be Problem: temporary files in repo
Solution: remove them
2018-05-30 09:30:00 +02:00
Luca Boccassi
c6c63481c3
Merge pull request #3142 from sigiesec/analyze
Remove duplication between stream_t and router_t
2018-05-29 16:47:57 +01:00
Simon Giesecke
5a343fc27b Problem: stream_t/router_t access data member of base class
Solution: pull up functionality to base class
2018-05-29 15:05:27 +02:00
Simon Giesecke
ab3895a470 Problem: duplicated code in stream_t & router_t
Solution: pulled up to routing_socket_base_t
2018-05-29 15:05:27 +02:00
Simon Giesecke
09fab930b3 Problem: xwrite_activated duplicated between stream_t and router_t
Solution: pull up into routing_socket_base_t
2018-05-29 15:05:27 +02:00
Simon Giesecke
c9d6ef3035 Problem: Member outpipes is duplicate between router_t and stream_t
Solution: extract into common base class routing_socket_base_t, for now as protected
2018-05-29 15:05:26 +02:00
Simon Giesecke
728eddfcfd Problem: socket_base_t::connect_routing_id is protected and only used in router_t and stream_t
Solution: add an intermediary base class routing_socket_base_t, move common functionality there and make connect_routing_id private
2018-05-29 15:05:26 +02:00
Simon Giesecke
25461a78dd Problem: members of mechanmism_t are needlessly protected
Solution: make them private
2018-05-29 11:08:22 +02:00
Luca Boccassi
2dfdcaff26
Merge pull request #3141 from sigiesec/analyze
More code style improvements
2018-05-28 19:22:56 +01:00
Simon Giesecke
47dcd84f21 Problem: C-style casts
Solution: replace by reinterpret_casts or avoid entirely
2018-05-28 18:47:07 +02:00
Simon Giesecke
917a4a8e10 Problem: reinterpret_casts between unsigned char* and char*
Solution: use char* from the beginning
2018-05-28 18:47:07 +02:00
Simon Giesecke
0a43c66a32 Problem: magic literals in zap_client.cpp
Solution: extracted constants
2018-05-28 18:47:07 +02:00
Simon Giesecke
7c2d1c1824 Problem: magic literals for UCHAR_MAX
Solution: use UCHAR_MAX constant instead
2018-05-28 18:46:50 +02:00
Simon Giesecke
a4c817e736 Problem: magic number "2" in socket_base.cpp
Solution: calculate from field sizes
2018-05-28 18:45:41 +02:00
Simon Giesecke
d75ec5e055 Problem: produce_* functions always return 0
Solution: change return type to void, and remove redundant result checks
2018-05-28 17:53:46 +02:00
Simon Giesecke
7f880c256f Problem: magic numbers and data duplication in plain_*.cpp
Solution: extract constants / move to plain_common.hpp
2018-05-28 17:53:46 +02:00
Simon Giesecke
8269b23e56 Problem: magic numbers and code duplication in msg.cpp
Solution: extract constants and unified cases
2018-05-28 17:53:44 +02:00
Simon Giesecke
18000a213f Problem: magic numbers in mechanism_base.cpp
Solution: extract constants
2018-05-28 17:53:44 +02:00
Simon Giesecke
abca9f6bc1 Problem: Magic numbers in plain_server.cpp
Solution: introduced constants
2018-05-28 17:53:44 +02:00
Simon Giesecke
2da6629e0f Problem: Magic numbers "1" and "100" in signaler.cpp
Solution: introduced constants, use std::min/std::max instead of control structures
2018-05-28 17:53:43 +02:00
Simon Giesecke
a6060674b4 Problem: Magic numbers "32" and "128" in tcp_address.cpp
Solution: introduced constants
2018-05-28 17:53:43 +02:00
Simon Giesecke
93e75fd695 Problem: Magic numbers "6" and "7" in null_mechanism.cpp
Solution: introduced constants
2018-05-28 17:53:42 +02:00
Simon Giesecke
c05db7f025 Problem: Magic numbers "1" and "6" in null_mechanism.cpp
Solution: introduced constants
2018-05-28 17:53:42 +02:00
Simon Giesecke
ff27dd01f0 Problem: Magic numbers "1" and "4" in mechanism.cpp
Solution: introduced constants
2018-05-28 17:53:42 +02:00
Simon Giesecke
7c9d058cdb Problem: Magic number "2" in ip_resolver.cpp
Solution: introduced constant
2018-05-28 17:53:41 +02:00
Simon Giesecke
16bb62e6f7 Problem: ctx_t::_slots is a plain array
Solution: use a std::vector instead
2018-05-28 17:53:41 +02:00
Simon Giesecke
a0a60e80ca Problem: Magic number "2" in ctx.cpp
Solution: introduced constant
2018-05-28 17:53:40 +02:00
Simon Giesecke
bbc903884f
Merge pull request #3140 from bluca/clang_tautological
Problem: build broken with clang 6 on Android NDK 17
2018-05-28 15:30:42 +02:00
Luca Boccassi
58d13395ec Problem: clang 6 warns about comparisons on 64 bit
Solution: ignore tautological-constant-compare warnings, as they
might be useless on 64 bit but they are not on 32 bit where sizeof
size_t != sizeof uint64_t
2018-05-28 14:06:41 +01:00
Luca Boccassi
624c142365 Problem: static analysis warning about ifdef typo
Solution: fix it
2018-05-28 12:32:23 +01:00
Luca Boccassi
2d1bb07f8d
Merge pull request #3139 from sigiesec/style-improvements
Code style improvements
2018-05-27 15:44:27 +01:00
Simon Giesecke
779d120fa3 Problem: tests do not follow naming style
Solution: apply naming style
2018-05-27 13:24:08 +02:00
Simon Giesecke
d767909b50 Problem: old C-style casts used
Solution: replace by static_cast/reinterpret_cast
2018-05-27 13:24:07 +02:00
Simon Giesecke
e3c73d9881 Problem: inconsistent naming style for private data members, conflicts with naming of local variables and member functions
Solution: apply and check _lower_case naming style for private data members
2018-05-27 13:24:07 +02:00
Simon Giesecke
06cfd0d8ad Problem: unclear why QueryPerformanceFrequency is called for every call of QueryPerformanceCounter
Solution: add a comment
2018-05-27 13:24:07 +02:00
Simon Giesecke
97ba02bc2f Problem: redundant empty dtor
Solution: removed
2018-05-27 13:24:06 +02:00
Simon Giesecke
6ef67f13e3 Problem: use of C-style casts and magic literals
Solution: replace by static_cast, and introduce appropriate constants
2018-05-27 13:24:06 +02:00
Luca Boccassi
089746959d
Merge pull request #3137 from sigiesec/disable-parallel-testing
Problem: VS2008/2010/2017 tests fail if run in parallel
2018-05-26 19:19:48 +01:00
Simon Giesecke
0c74e8a0ad Problem: cmake install is not tested
Solution: run cmake --build --target install instead of msbuild to build on appveyor
2018-05-26 18:56:00 +02:00
Simon Giesecke
a1efc68516 Problem: appveyor CI takes a long time
Solution: run some builds only on master or *full-ci* branches
2018-05-26 18:56:00 +02:00
Simon Giesecke
33ba7e14b3 Problem: VS2008/2010/2017 tests fail if run in parallel
Solution: disabled parallel testing for these VS versions
2018-05-26 18:56:00 +02:00
Luca Boccassi
fae88633d7
Merge pull request #3138 from sigiesec/fix-various-style-issues
Fix various code style issues
2018-05-26 12:08:12 +01:00
Simon Giesecke
37344d0b7c Problem: redundant old-style void argument declarations
Solution: remove
2018-05-26 09:34:45 +02:00
Simon Giesecke
12a97bb769 Problem: redundant else after return
Solution: remove else
2018-05-26 09:34:45 +02:00
Simon Giesecke
21498700ef Problem: integer literals assigned to bool variables
Solution: replace by bool literals
2018-05-26 09:34:45 +02:00
Simon Giesecke
eacc805646 Problem: complex unnecessary ternary expressions
Solution: simplify to comparison against 0
2018-05-26 09:34:44 +02:00
Simon Giesecke
1432011277 Problem: inconsistent local variable naming
Solution: configured clang-tidy check and applied fixes
2018-05-26 09:34:44 +02:00
Simon Giesecke
c581f43c97 Problem: parameter naming style inconsistent
Solution: define and apply parameter naming style: lower_case_
2018-05-26 09:34:44 +02:00
Luca Boccassi
79d5ac3dee
Merge pull request #3135 from sigiesec/fix-heartbeat-ttl-max
Fix ZMQ_HEARTBEAT_TTL maximum value check
2018-05-25 15:57:45 +01:00
Simon Giesecke
763760988f Problem: VS2008 has no definition of UINT16_MAX
Solution: provide definition based on _UI16_MAX
2018-05-25 15:13:07 +02:00
Simon Giesecke
8b030a9256 Problem: no tests for corner cases of setsockopt ZMQ_HEARTBEAT_TTL
Solution: added tests
2018-05-25 15:13:07 +02:00
Simon Giesecke
d90e70c1cf Problem: maximum allowed value for ZMQ_HEARTBEAT_TTL is wrong
Solution: use UINT16_MAX
2018-05-25 15:06:11 +02:00
Luca Boccassi
50374bf6f5
Merge pull request #3134 from sigiesec/fix-sonarcloud-component-name
Fix sonarcloud component name
2018-05-24 17:05:24 +01:00
Simon Giesecke
b791645a49 Problem: project key is not unique across organizations
Solution: prefix project key with repo name
2018-05-24 18:04:43 +02:00
Luca Boccassi
f0f029c549
Merge pull request #3132 from sigiesec/add-vs2008-vs2010-ci
Add CI for VS2008 and VS2010 and fix their builds
2018-05-24 17:02:57 +01:00
Simon Giesecke
653c2073de
Merge pull request #3133 from bluca/sonarqube_token
Problem: missing sonarqube token
2018-05-24 17:08:34 +02:00
Luca Boccassi
cf41aed29d Problem: missing sonarqube token
Solution: add it
2018-05-24 16:06:08 +01:00
Luca Boccassi
1644d162fb
Merge pull request #3115 from sigiesec/analyze
Add static analysis
2018-05-24 16:04:31 +01:00
Simon Giesecke
6afa1cee3a Problem: travis-ci analysis build is always run
Solution: configure to run only on scheduled runs or on specifically named branches
2018-05-24 16:15:58 +02:00
Simon Giesecke
51fd4b6a9d Problem: analysis build on PR virtual merges
Solution: skip analysis build in install stage
2018-05-24 16:15:57 +02:00
Simon Giesecke
100745d312 Problem: appveyor analysis runs on all branches
Solution: restrict to specific branches
2018-05-24 16:15:57 +02:00
Simon Giesecke
51d4b00196 Problem: no clang-tidy configuration
Solution: add initial .clang-tidy config file
2018-05-24 16:15:30 +02:00
Simon Giesecke
7b686900f9 Problem: VS2008 build fails due to unavailable stdint.h
Solution: specify not to use stdint.h for VS<=2008, fixes #3025
2018-05-24 15:56:08 +02:00
Simon Giesecke
1e89a51734 Problem: broken indentation
Solution: fix indentation
2018-05-24 15:56:08 +02:00
Simon Giesecke
2ae0c4e2c5 Problem: unnecessarily complex inheritance hierarchy in decoders, warning C4355 with VS2010
Solution: make allocator a member of decoder_base_t
2018-05-24 15:17:08 +02:00
Simon Giesecke
d96a030125 Problem: no CI builds for VS2008/VS2010
Solution: add to appveyor jobs
2018-05-24 15:17:04 +02:00
Simon Giesecke
4d3516f634 Problem: no static analysis under Linux
Solution: activate clang-tidy, scan-build and sonar-scanner
2018-05-24 13:44:46 +02:00
Simon Giesecke
2b31e50b01 Problem: No static analysis under Windows
Solution: Enable VS static analyzer and core guideline checks
2018-05-24 13:44:45 +02:00
Luca Boccassi
edd9a0c5c8
Merge pull request #3130 from sigiesec/fix-automake
Problem: autotools build broken
2018-05-24 09:22:26 +01:00
Simon Giesecke
b6d36c92a2 Problem: autotools build broken
Solution: fix directory reference
2018-05-24 09:09:39 +02:00
Luca Boccassi
f3e7911dd6
Merge pull request #3127 from sigiesec/integrate-wepoll
Support epoll polling under Windows with wepoll
2018-05-23 21:15:56 +01:00
Luca Boccassi
a6cfbca3ac
Merge pull request #3128 from sigiesec/fix-test-inproc-connect
Problem: test_context_socket is not thread-safe
2018-05-23 18:47:07 +01:00
Simon Giesecke
06e0c0776d Problem: cmake run is very slow with MSVC
Solution: skip tests than can never succeed with MSVC
2018-05-23 18:13:22 +02:00
Luca Boccassi
013958299b
Merge pull request #3129 from sigiesec/deprecate-msvc-sln-builds
Problem: prepared Visual Studio solution files are hard to maintain and redundant with CMake builds
2018-05-23 16:47:08 +01:00
Simon Giesecke
64f2b100da Problem: test_context_socket is not thread-safe
Solution: use regular zmq_socket instead in thread functions
2018-05-23 17:32:27 +02:00
Simon Giesecke
af6d70ec72 Problem: prepared Visual Studio solution files are hard to maintain and redundant with CMake builds
Solution: declare them as deprecated
2018-05-23 17:26:28 +02:00
Simon Giesecke
9df851225a Problem: test_radio_dish takes time near timeout
Solution: increase timeout
2018-05-23 16:31:05 +02:00
Simon Giesecke
945c79de67 Problem: test cases setting ZMQ_MULTICAST_LOOP to false fail on Windows
Solution: disable test cases
2018-05-23 16:26:52 +02:00
Simon Giesecke
57ef8e2e3e Problem: custom test ignore
Solution: use unity mechanism for ignoring with message
2018-05-23 16:26:52 +02:00
Simon Giesecke
2bdf86d6c2 Problem: timeout on test_many_sockets with epoll
Solution: increase timeout, remove timeout settings for unsupported poll poller
2018-05-23 16:26:52 +02:00
Simon Giesecke
275a89ac3c Problem: test_many_sockets does not show number of sockets that could be created
Solution: add diagnostic output
2018-05-23 16:25:08 +02:00
Simon Giesecke
bd129e78ff Problem: test assertion unnecessary complex
Solution: use TEST_ASSERT_FAILURE_ERRNO
2018-05-23 16:25:08 +02:00
Simon Giesecke
f5aec6fb27 Problem: no CI build with epoll under Windows
Solution: add epoll build job
2018-05-23 16:25:07 +02:00
Simon Giesecke
082b6aa641 Problem: epoll not supported under Windows
Solution: Use wepoll on Windows
2018-05-23 16:25:07 +02:00
Simon Giesecke
c62df64bc2 Problem: wepoll source not in repository
Solution: import wepoll 1.5.0 source
2018-05-23 16:25:07 +02:00
Luca Boccassi
b56e7f13c5
Merge pull request #3126 from sigiesec/migrate-test-inproc-connect
Problem: test_inproc_connect not using test framework
2018-05-23 14:54:33 +01:00
Luca Boccassi
3730833f9d
Merge pull request #3125 from sigiesec/improve-socket-inheritance
Improve socket inheritance handling
2018-05-23 13:50:39 +01:00
Simon Giesecke
fdfa907187 Problem: test_inproc_connect not using test framework
Solution: migrate to unity
2018-05-23 13:48:58 +02:00
Simon Giesecke
2d9a8955f5 Problem: race condition in making socket non-inheritable
Solution: create sockets with WSA_FLAG_NO_HANDLE_INHERIT
2018-05-23 11:23:33 +02:00
Simon Giesecke
44da0e7e42 Problem: code duplication in making sockets non-inheritable
Solution: extracted make_socket_noninheritable function
2018-05-23 11:23:33 +02:00
Simon Giesecke
c432aada84 Problem: inconsistent error handling and unnecessary code duplication
Solution: make error handling consistent and use retired_fd to remove code duplication
2018-05-23 11:23:33 +02:00
Luca Boccassi
44b0753c5c
Merge pull request #3047 from acsearle/master
Allow EBADF on iOS #3046
2018-05-23 09:56:32 +01:00
Luca Boccassi
d02ba13576
Merge pull request #3122 from sigiesec/test-migrations
Migrated some more tests to unity and fixed some more code style issues
2018-05-22 20:37:34 +01:00
Luca Boccassi
6c106d3930
Merge pull request #3121 from sigiesec/split-poller-config
Split poller config and disable 'poll' poller on Windows for I/O thread polling
2018-05-22 19:31:05 +01:00
Simon Giesecke
440be28d7e Problem: unnecessary non-const variables
Solution: add const
2018-05-22 18:46:40 +02:00
Simon Giesecke
d6952ded71 Problem: unused include directives and redundant forward declarations
Solution: removed
2018-05-22 18:46:40 +02:00
Simon Giesecke
04ec6aaf28 Problem: malloc call may fail
Solution: add alloc_assert
2018-05-22 18:46:40 +02:00
Simon Giesecke
18eabed6ea Problem: I/O thread poll poller build unsupported
Solution: use API_POLLER=poll instead of POLLER=poll
2018-05-22 18:36:04 +02:00
Simon Giesecke
d326434b37 Problem: API poller cannot be set independently from I/O thread poller, poll I/O thread poller broken on Windows
Solution: change platform definitions to separate API poller from I/O thread poller, disallow configuring poll I/O thread poller on Windows
2018-05-22 18:36:04 +02:00
Simon Giesecke
ad100b0b9f Problem: test_xpub_nodrop not using test framework
Solution: migrate to unity
2018-05-22 18:33:18 +02:00
Simon Giesecke
f13377de05 Problem: test_pub_invert_matching failing
Solution: insert some sleeps to remedy timing dependencies
2018-05-22 18:33:18 +02:00
Simon Giesecke
12c6ae2283 Problem: test_pub_invert_matching not using test framework
Solution: migrate to unity
2018-05-22 18:33:18 +02:00
Simon Giesecke
fa467d3425 Problem: test_hwm_pubsub not using test framework
Solution: migrate to unity
2018-05-22 18:33:17 +02:00
Simon Giesecke
ee85957dc4 Problem: no test case for polling pending connect that ultimately fails
Solution: added test case, reproduces the likely cause for #3107
2018-05-22 18:21:06 +02:00
Bill Torpey
8ad0d5896e prevent duplicate connections from PUB sockets also (see https://gith… (#3117)
* Update zmq_connect documentation to mention issue of multiple connects to the same endpoint
2018-05-22 16:05:32 +01:00
Luca Boccassi
c178193c50
Merge pull request #3116 from sigiesec/fix-some-more-style-issues
Fix some more code style issues
2018-05-18 17:53:34 +01:00
Simon Giesecke
4e616f30dd Problem: C-style casts used
Solution: replace by C++-style casts
2018-05-18 17:04:01 +02:00
Simon Giesecke
d002eb5578 Problem: analyzer does not know that zmq_abort does not return
Solution: add no-return attributes
2018-05-18 16:25:24 +02:00
Simon Giesecke
7b3acd47b2 Problem: malloc may fail in blob_t ctors
Solution: add alloc_assert calls
2018-05-18 16:25:24 +02:00
Simon Giesecke
9da0c6d62f Problem: goto jumping backwards
Solution: replace by for loop
2018-05-18 14:34:43 +02:00
Simon Giesecke
62e48f837d Problem: assignment within complex condition
Solution: restructured code, inverted condition
2018-05-18 14:34:43 +02:00
Simon Giesecke
fcee4ccdfd Problem: type of retired_fd is not fd_t (but int)
Solution: properly declared underlying type of enum declaring retired_fd
2018-05-18 14:34:43 +02:00
Simon Giesecke
f103f62630 Problem: unreachable return statement
Solution: fix #if/#else structure
2018-05-18 14:34:42 +02:00
Simon Giesecke
290d215324 Problem: stream_engine assumes options_t.type is a single byte, but its type is int
Solution: change options_t.type to int8_t
2018-05-18 14:34:42 +02:00
Luca Boccassi
6a5051fac3
Merge pull request #3114 from sigiesec/fix-some-style-issues
Fix some code style issues
2018-05-17 15:43:20 +01:00
Simon Giesecke
e19823d83a Problem: redundant else
Solution: remove redundant else
2018-05-17 15:17:55 +02:00
Simon Giesecke
ad781319ef Problem: ternary operator used with boolean literals\n\nSolution: Use comparison with 0 instead 2018-05-17 15:17:55 +02:00
Simon Giesecke
22b72bb678 Problem: deallocate calls release after de-allocation
Solution: reduce to newly extracted function clear, which does not use the freed pointer
2018-05-17 15:05:41 +02:00
Simon Giesecke
e37fc47fb6 Problem: return value is stored but never used
Solution: add code to make non-use explicit
2018-05-17 15:05:41 +02:00
Simon Giesecke
2120f6aced Problem: ypipe_t::read is called with NULL argument
Solution: call check_read instead
2018-05-17 15:05:41 +02:00
Simon Giesecke
440d428153 Problem: single-argument ctor of blob_t is not marked explicit
Solution: add explicit
2018-05-17 13:29:27 +02:00
Antony Searle
fa027970bb Allow EBADF on iOS #3046 2018-05-16 14:59:44 +10:00
Luca Boccassi
cbd52feb48
Merge pull request #3112 from devindusoft/FixCompilation_ZMQ_ATOMIC_PTR_MUTEX
Fixed compilation with ZMQ_ATOMIC_PTR_MUTEX
2018-05-15 15:10:49 +01:00
Luca Boccassi
6a9c6d427f
Merge pull request #3111 from sigiesec/win-draft-fix-and-migrate-test
Reenable DRAFT builds on Appveyor and fix test_radio_dish_udp_ipv6
2018-05-15 15:08:56 +01:00
Simon Giesecke
e78d20ff2c Problem: test_radio_dish_udp_ipv6 triggers assertion under Windows
Solution: fix handling of sockaddr in recvfrom
2018-05-15 14:53:40 +02:00
Simon Giesecke
dd1c87f9d9 Problem: type mismatch errors/warnings in Windows build
Solution: fix types
2018-05-15 14:53:40 +02:00
Simon Giesecke
10cb710ab8 Problem: appveyor builds do not build DRAFT
Solution: set ENABLE_DRAFTS=ON
2018-05-15 14:53:40 +02:00
Luca Boccassi
7953083617
Merge pull request #3109 from sigiesec/migrate-test-spec-dealer-to-unity
Problem: test_spec_dealer not using test framework
2018-05-15 13:25:18 +01:00
Simon Giesecke
b30cbfc112 Problem: test_spec_dealer not using test framework
Solution: migrate to Unity
2018-05-15 13:58:08 +02:00
korbes
63e1e745f8 Fixed compilation with ZMQ_ATOMIC_PTR_MUTEX 2018-05-14 22:08:15 -03:00
Luca Boccassi
d81a041f18
Merge pull request #3103 from sigiesec/win-warnings-as-errors
Warnings in Windows builds
2018-05-14 22:53:04 +01:00
Simon Giesecke
d437d668c0 Problem: MSVC warnings in connection with poll
Solution: handle types properly
2018-05-14 22:25:21 +02:00
Simon Giesecke
e447f058e2 Problem: C4244 warnings regarding SOCKET vs. int in test_system
Solution: Use fd_t
2018-05-14 21:09:57 +02:00
Simon Giesecke
106127b5d6 Problem: C4267 warnings in test_stream_disconnect
Solution: Use size_t instead of int
2018-05-14 21:09:57 +02:00
Simon Giesecke
5ca0d4e8a9 Problem: C4267 warnings in test_spec_router
Solution: Use unsigned char instead of size_t
2018-05-14 21:09:57 +02:00
Simon Giesecke
69a6b86310 Problem: C4267 warning test_spec_pushpull
Solution: Use unsigned char instead of size_t
2018-05-14 21:09:57 +02:00
Simon Giesecke
3cbc7cb0dc Problem: C4244 warnings regarding SOCKET vs. int in test_security_null and test_security_plain
Solution: Use fd_t
2018-05-14 21:09:56 +02:00
Simon Giesecke
3ee65906af Problem: various warnings regarding SOCKET vs. int in test_security_curve
Solution: Use fd_t
2018-05-14 21:09:56 +02:00
Simon Giesecke
28631d1cd3 Problem: C4550 warning in testutil_security
Solution: explicitly compare function pointer against NULL
2018-05-14 19:18:43 +02:00
Simon Giesecke
b0c3a42ed2 Problem: C4800 warnings in unittest_ip_resolver.cpp
Solution: make proper boolean expression
2018-05-14 19:18:42 +02:00
Simon Giesecke
c589f2b603 Problem: C4800 warning in socket_base.cpp
Solution: make proper boolean expression
2018-05-14 19:18:37 +02:00
Simon Giesecke
c52871f82c Problem: C4627 warning in proxy.cpp and signaler.cpp
Solution: move conditional include directive to precompiled.hpp
2018-05-14 18:07:13 +02:00
Simon Giesecke
a8095a1046 Problem: C4800 warning in ip_resolver.cpp
Solution: fix type specification
2018-05-14 18:07:13 +02:00
Simon Giesecke
95c770a275 Problem: C4099 warning in udp_engine.cpp
Solution: fix type specification
2018-05-14 17:17:11 +02:00
Simon Giesecke
d7e99085ef Problem: Warnings in Windows builds
Solution: enable warnings-as-errors
2018-05-14 17:17:10 +02:00
Luca Boccassi
6092431b97
Merge pull request #3100 from sigiesec/fix-poller-invalid-events
Problem: zmq_poller_[add/modify] accept invalid events arguments silently
2018-05-14 15:26:19 +01:00
Simon Giesecke
8ad43907e6
Merge pull request #3101 from bluca/heartbeat_disabled
Problem: heartbeat tests are disabled
2018-05-14 15:05:29 +02:00
Simon Giesecke
bf6bde3ae3 Problem: unnecessary ifdefs regarding handling of int vs. SOCKET at various places
Solution: use a typedef instead
2018-05-14 14:58:36 +02:00
Simon Giesecke
e8877f78a9 Problem: zmq_poller_[add/modify] accept invalid events arguments silently
Solution: check and return an error on invalid arguments. Fixes #3088
2018-05-14 14:58:36 +02:00
Luca Boccassi
eac265059d Problem: heartbeat tests are disabled
Solution: re-enable them
2018-05-14 13:41:39 +01:00
Simon Giesecke
6b9b369469 Problem: zmq_poller_* argument check code is cloned
Solution: extract common code into functions
2018-05-14 14:34:46 +02:00
Luca Boccassi
54aff77475
Merge pull request #3096 from sigiesec/add-poller-docs
Add poller docs
2018-05-14 11:10:10 +01:00
Simon Giesecke
4fea7184dc Problem: man zmq_poller_* not working
Solution: add symlinks to zmq_poller.txt
2018-05-14 11:29:24 +02:00
Simon Giesecke
f4b1cae082 Problem: no documentation for zmq_poller_*
Solution: add initial documentation
2018-05-14 11:29:24 +02:00
Simon Giesecke
213254cca5 Problem: inconsistent behaviour of zmq_poller_new in case of memory exhaustion
Solution: return NULL and set errno to ENOMEM
2018-05-14 11:29:24 +02:00
Simon Giesecke
2cd147e5ff Problem: misleading comment for calling zmq_poller_add with events == 0
Solution: change comment, and add test case for zmq_poller_modify with events == 0
2018-05-14 11:29:24 +02:00
Simon Giesecke
00d25b7873 Problem: inconsistent behaviour of zmq_poller_add and zmq_poller_add_fd in case of memory exhaustion
Solution: always return -1 with errno == ENOMEM
2018-05-14 11:29:24 +02:00
Luca Boccassi
0a037a7431
Merge pull request #3097 from sigiesec/ping-context
ZMTP 3.1 PING Context not implemented
2018-05-14 09:55:41 +01:00
Simon Giesecke
be66eacf5c Problem: test_heartbeats still using plain assertions
Solution: migrate to unity assertions
2018-05-14 10:14:32 +02:00
Luca Boccassi
b331caad06 Problem: ZMTP 3.1 PING Context not implemented
Solution: if a PING message contains a context, echo it back in the
PONG message. In order to do so, create the PONG message when PING
is received and store it in the engine.
After the PING the engine goes straight to encoding and sending, so
there can always be at most one pending PING.
Add tests for various contexts.
2018-05-14 10:14:13 +02:00
Luca Boccassi
5482b1ca45 Problem: heartbeat command parsing does not check command name size
Solution: treat the first byte of the command body as the size of the
command name, rather than as an id, to comply with ZMTP 3.1.
This was not an actual problem at runtime since both heartbeat
commands have a size of 4, which was treated like an id.
But once SUBSCRIBE/UNSUBSCRIBE get implemented it needs to be checked.
2018-05-14 09:15:39 +02:00
Luca Boccassi
ba9274c39a Problem: test_heartbeats mocked ZMQ_REP is hacky and fragile
Solution: remove it, it doesn't add much value anyway
2018-05-14 09:15:38 +02:00
Simon Giesecke
f218478237 Problem: test_heartbeats use no test framework
Solution: migrate to unity
2018-05-14 09:15:38 +02:00
Simon Giesecke
df2fe88b92
Merge pull request #3095 from bluca/sunstudio_linux
Problem: building on Linux with Sun Studio still fails
2018-05-13 21:21:50 +02:00
Luca Boccassi
09f700f72e Problem: uninitialised class variable warning
Solution: initialise it
2018-05-13 18:24:50 +01:00
Luca Boccassi
7ba074fa28 Problem: Sun Studio build errors
Solution: add compiler flags to support extensions like anonymous
structs in unions, fix casting of const, and check for suncc rather
than solaris
2018-05-13 18:24:50 +01:00
Simon Giesecke
cdb54d248b
Merge pull request #3094 from simias/mcast-if
Problem: no way to specify source interface for UDP multicast sender …
2018-05-13 18:47:59 +02:00
Lionel Flandrin
a833ace204 Problem: no way to specify source interface for UDP multicast sender sockets
Solution: if a binding interface is provided in the sender URL we pass
it to IP[V6]_MULTICAST_IF setsockopt
2018-05-13 18:32:12 +02:00
Luca Boccassi
f6e528443e
Merge pull request #3093 from simias/fix-aliasing
Problem: test_radio_dish triggers aliasing errors with some compilers
2018-05-13 16:31:49 +01:00
Lionel Flandrin
4eb6786347 Problem: test_radio_dish triggers aliasing errors with some compilers
Solution: refactor the test code to work around aliasing issues
2018-05-13 17:05:05 +02:00
Simon Giesecke
21f642fa4f
Merge pull request #3092 from bluca/solaris_studio
Problem: build broken on Solaris with Sun Studio compilers
2018-05-13 15:05:16 +02:00
Luca Boccassi
c5b7f4f536 Problem: test_system info output hidden on Solaris
Solution: change the ifdef to always print on any Unix, as they
all have ulimit
2018-05-13 13:19:07 +01:00
Luca Boccassi
510a42c3d5 Problem: test_system fails on Solaris due to lower file limit
Solution: use a different max socket value on Solaris, where the
default limit is 256 instead of 1024
2018-05-13 13:18:08 +01:00
Luca Boccassi
b78cfb2395 Problem: mismatching declarations and definitions break Solaris Studio build
Solution: add missing const qualifier to internal functions
2018-05-13 13:17:20 +01:00
Luca Boccassi
8b82ed50a2 Problem: Solaris Studio does not convert from char * to string
Solution: do it explicitly to fix build on Solaris 10/11 with the Sun
compiler
2018-05-13 13:16:37 +01:00
Simon Giesecke
3d9c119543 Problem: compilation broken on Solaris
Solution: remove constness on pair arguments. Fixes #3090
2018-05-13 13:15:32 +01:00
Luca Boccassi
15e8de2f88
Merge pull request #3091 from sigiesec/fix-warnings-msvc
Problem: warnings in MSVC builds around size_t/int
2018-05-13 12:11:05 +01:00
Simon Giesecke
d6433b5c24 Problem: warnings in MSVC builds around size_t/int
Solution: use proper types
2018-05-13 11:11:19 +02:00
Simon Giesecke
5fe783070b
Merge pull request #3085 from bluca/getrandom_test
Problem: getrandom test does not check if it's working
2018-05-11 09:51:43 +02:00
Luca Boccassi
0f896fcd36
Merge pull request #3087 from simias/mcast_loop
Problem: ZMQ doesn't expose the MULTICAST_LOOP socket option
2018-05-10 19:10:28 +01:00
Lionel Flandrin
4b635c3d06 Problem: documentation for zmq_udp is outdated
Solution: update to document new binding options and IPv6 support
2018-05-10 19:24:48 +02:00
Lionel Flandrin
99412c810d Problem: ZMQ doesn't expose the MULTICAST_LOOP socket option
Solution: add a new ZMQ_MULTICAST_LOOP option for UDP sockets.
2018-05-10 19:24:46 +02:00
Luca Boccassi
e9211aed2c
Merge pull request #3086 from simias/warning-fix
Problem: test helper recv_string_expect_success ignores flags
2018-05-10 11:15:01 +01:00
Lionel Flandrin
f9c30f3e19 Problem: test helper recv_string_expect_success ignores the flags argument
Solution: pass the flags to zmq_recv
2018-05-10 11:43:47 +02:00
Luca Boccassi
3c2656eb52
Merge pull request #3081 from simias/udp_ipv6
UDP Ipv6 support
2018-05-09 13:01:06 +01:00
Lionel Flandrin
b0df4be51c Problem: UDP engine does not support IPv6
Solution: Add IPv6 support
2018-05-09 12:06:23 +02:00
Luca Boccassi
4ff814f204 Problem: getrandom test does not check if it's working
Solution: check return value in autoconf and CMake. On some platforms
the function is available but not implemented (eg: GNU/Hurd).
2018-05-09 10:41:20 +01:00
Luca Boccassi
7aba6821ac
Merge pull request #3084 from jorikcaljouw/new_fix_vs2015
Add ip_resolver.cpp and ip_resolver.hpp for vs2015 libzmq project
2018-05-08 13:17:33 +01:00
Jorik Caljouw
45b0ff59ff Add ip_resolver.cpp and ip_resolver.hpp for vs2015 libzmq project 2018-05-08 14:04:05 +02:00
Constantin Rack
b9ba36389d
Merge pull request #3083 from asafkahlon/master
acinclude.m4: check if -latomic is needed.
2018-05-07 22:25:41 +02:00
Asaf Kahlon
2ec5a33f6e acinclude.m4: check if -latomic is needed.
On some cases, -latomic is needed for likning, and since the current
acinclude.m4 checks only compilation we can sometimes miss the need for -latomic
and the linking process will fail.
Therefore, the AC_CHECK_IFELSE was replaced with AC_LINK_IFELSE. If the first
try fails, we try to link again with -latomic and add LIBS="-latmoic" in case we
succeeded.

Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
2018-05-07 22:02:25 +03:00
Luca Boccassi
363fa7892d
Merge pull request #3078 from simias/mcast_bind
Mcast bind
2018-05-04 14:22:53 +01:00
Lionel Flandrin
746d4a0f5e Problem: UDP transport doesn't let the user specify the local bind address
for multicast

Solution: augment the UDP URL syntax to accept an interface specifier with a
syntax similar to the PGM urls.

Fixes #2212
2018-05-04 14:36:18 +02:00
Lionel Flandrin
524affc4c3 Problem: UDP address parser uses ad hoc code to detect multicast address
Solution: factor the code into ip_resolver, add IPv6 support and unit tests.
2018-05-04 10:44:01 +02:00
Luca Boccassi
1bb1029bd1
Merge pull request #3075 from simias/udp_parser
Udp parser
2018-05-03 14:40:37 +01:00
Lionel Flandrin
2dc8579412 Problem: the UDP address code uses an ad hoc custom parser
Solution: replace it with the ip_resolver code shared with the TCP
address code

It simplifies the UDP parsing code and makes it behave more like the
TCP counterpart, in particular it's not possible to connect to hosts
by name and bind by NIC names.

It also adds support for "*" port resolving to 0 (useful to let the OS
allocate the port number).
2018-05-03 14:22:48 +02:00
Lionel Flandrin
0b36b84243 Problem: no unit tests for udp_address.cpp
Solution: add unit tests
2018-05-03 14:22:42 +02:00
Luca Boccassi
801559c504
Merge pull request #3077 from simias/port_check
Problem: ip_resolver allows wildcard ports for non-bindable sockets
2018-05-03 13:07:37 +01:00
Lionel Flandrin
406c348771 Problem: ip_resolver allows wildcard ports for non-bindable sockets
Solution: return an error in this situation but still allow using an explicit
"0" if somebody really wants to connect to port 0.

This shouldn't break any existing code because a "*" port was already rejected
in an early test in the TCP path in zmq::socket_base_t::connect.
2018-05-03 13:19:22 +02:00
Luca Boccassi
889ac2eb3d
Merge pull request #3074 from simias/author
Add me to AUTHORS + RELICENSE file
2018-05-02 18:27:27 +01:00
Lionel Flandrin
e027c80ed3
Added simias.md to RELICENSE 2018-05-02 19:24:20 +02:00
Lionel Flandrin
142ee305e7
Add Lionel Flandrin to AUTHORS 2018-05-02 19:24:07 +02:00
Luca Boccassi
5f7c9c43f5
Merge pull request #3070 from simias/ip_refactor_clean
Problem: address parsing code is tied to the TCP code
2018-05-02 18:05:06 +01:00
Lionel Flandrin
4cd2c2ebf8 Problem: address parsing code is tied to the TCP code
Solution: Factor the code into a different file with a well defined API and add
unit tests.
2018-05-02 18:06:01 +02:00
Simon Giesecke
6160da5dbe
Merge pull request #3068 from bluca/appveyor_cache
More attempts to speed up Appveyor
2018-04-30 20:21:54 +02:00
Luca Boccassi
578c255f4f Problem: Appveyor VS 2015/17 images are single-core
Solution: use 2013 images for all builds bar 2, to test newer versions
2018-04-30 16:29:16 +01:00
Luca Boccassi
2af2701ba6 Problem: Appveyor rebuilds libsodium every time
Solution: cache the git repository and build directory
2018-04-29 22:41:39 +01:00
Luca Boccassi
09d951ada3 Problem: Appveyor runs test sequentially
Solution: add -j flag to run them in paralle, cuts test runtime
from ~80 to ~20 seconds
2018-04-29 22:14:05 +01:00
Luca Boccassi
e5eab4b91f Problem: CMake parallel build not enabled for C files
Solution: set the equivalent flag
2018-04-29 22:14:05 +01:00
Luca Boccassi
5210fa4e8d
Merge pull request #3066 from AxelNennker/patch-3
Update android_build_helper.sh
2018-04-29 17:19:08 +01:00
Luca Boccassi
d47726ae41
Merge pull request #3065 from AxelNennker/patch-2
Update README.md
2018-04-29 17:00:28 +01:00
Axel Nennker
1d25658332
Update android_build_helper.sh
Minimum platform for arm is android-14
2018-04-29 17:56:16 +02:00
Axel Nennker
d36c1ca5e0
Update README.md
added missing = to export VARIABLE=VALUE
2018-04-29 17:52:31 +02:00
Luca Boccassi
9e4447f8e6
Merge pull request #3064 from AxelNennker/patch-1
use HTTPS when downloading a binary before excuting it check hashes
2018-04-29 16:19:49 +01:00
Axel Nennker
990268e1db
use HTTPS when downloading a binary before excuting it check hashes
Changed  the download URL to use HTTPS.
Provided the hashes for version r10e
Replaces /home/zmq by $HOME
2018-04-29 17:18:38 +02:00
Doron Somech
046689bbe7
Merge pull request #3063 from bluca/heartbeat
Problem: heartbeat commands break REP session, unclear documentation
2018-04-28 18:41:46 +03:00
Luca Boccassi
4a4c6c27e4 Problem: heartbeat tests only cover ROUTER/DEALER
Solution: check more socket type to cover other session managers.
Increase timeout as the test now takes ~12 seconds.
2018-04-28 15:49:54 +01:00
Luca Boccassi
cae6434345 Problem: HEARTBEAT command breaks REQ connection
Solution: ignore command messages in the REQ session to avoid
disrupting the state machine.
Commands are handled by the engine before handing off to the session.
2018-04-28 15:25:24 +01:00
Luca Boccassi
cdf5566108 Problem: default ZMQ_HEARTBEAT_TIMEOUT when enabled not documented
Solution: mention in manpage that if the timeout is not set and the
interval is, the timeout will be equal to the interval
2018-04-28 11:47:21 +01:00
Luca Boccassi
55be8f1c2f
Merge pull request #3058 from dwijnand/patch-1
Fix formatting in CONTRIBUTING
2018-04-27 18:06:05 +01:00
Dale Wijnand
e6dc9605a5
Fix formatting in CONTRIBUTING
Avoids the git instructions being all on one line.
2018-04-27 17:57:07 +01:00
Luca Boccassi
69a894e1cb
Merge pull request #3055 from dennisklein/master
Install relocatable dylibs (MacOS)
2018-04-25 19:47:22 +01:00
Dennis Klein
0dda63660e
Install relocatable dylibs (MacOS)
Problem: When building libzmq with CMake, the installed libzmq.dylib
  has a relative install name (otool -D libzmq.dylib) on MacOS. This
  is a regression against building via autotools which sets an
  absolute install name. Effectively, the CMake built libzmq.dylib
  is rendered useless if installed in non-system directories and
  used in environments without explicit DYLD_LIBRARY_PATH mgmt. For
  example running any of the installed executables currently fails:
  $ /some_install_prefix/bin/inproc_lat
  dyld: Library not loaded: libzmq.5.dylib
    Referenced from: /some_install_prefix/bin/inproc_lat
    Reason: image not found
  Trace/BPT trap: 5

Solution: Best practice is to install relocatable dylibs.
  On MacOS this means setting an install name with a special prefix,
  e.g. @rpath/libzmq.dylib, and adding the relevant search paths
  to the embedded rpath list. In this patch the necessary CMake options
  are added to generate the desired relocatable dylibs. Find more
  information on: https://cmake.org/Wiki/CMake_RPATH_handling.
2018-04-25 20:18:42 +02:00
Doron Somech
7f230b12fe
Merge pull request #3053 from bluca/draft_doc
Problem: Server-client not marked as DRAFT in manpage
2018-04-23 20:17:10 +03:00
Luca Boccassi
c027255329 Problem: Server-client not marked as DRAFT in manpage
Solution: add note like for radio-dish
Fixes: #3050
2018-04-23 18:13:16 +01:00
Luca Boccassi
54fd20afdf
Merge pull request #3049 from maksqwe/fix_fd_cast
Fix fd_t variable casting on Windows platform
2018-04-19 11:04:04 +01:00
Maks Naumov
989dfc7801
Fix fd_t variable casting on Windows platform
event_accepted() already accepts fd_t type and there is no reason to cast it to int type
Moreover, on Windows x64 this leads to truncation memsize -> int
2018-04-19 12:38:06 +03:00
Luca Boccassi
c971445025
Merge pull request #3045 from asafkahlon/fix-configure-dladdr-check
configure.ac: serach for dladdr only on libunwind
2018-04-14 21:13:05 +01:00
Asaf Kahlon
ce2f87970d configure.ac: serach for dladdr only on libunwind
The original configure.ac tries to check for dladdr, but it actually needs
it only in case we have libunwind (which has a another section and checks for it
too).
This can fail the build on systems without dynamic linking support.
Therefore, the dladdr check has to be preformed only when checking libunwind.

Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
2018-04-14 22:29:49 +03:00
asafkahlon
8e8009ec5d Implement the wsa_error_no function with switch-case (#3044)
* Implement the wsa_error_no function with switch-case

Signed-off-by: Asaf Kahlon <asafka7@gmail.com>
2018-04-13 15:16:54 +01:00
Steffen Wittmeier
bb4fb32925 CMake: Linker PDB install rule does not work when Visual Studio generators are used (#3040)
* Fixes issues with the PDB install rule for VS solutions

* Fix for compile PDB and linker PDB under Windows
2018-04-04 10:48:36 +01:00
Luca Boccassi
02eefb41ad
Merge pull request #3039 from msune/refix_pedantic_warnings
Problem: C++ style comments in header file breaks pedantic build
2018-04-03 22:31:26 +01:00
Marc Sune
c7d602a29b Problem: C++ style comments in header file breaks pedantic build
Solution: change missing comments in header file
Fixes: #3036 and adds on top of '15905c5'
2018-04-03 22:58:36 +02:00
Simon Giesecke
efc9efc42f
Merge pull request #3037 from bluca/tweetnacl_pedantic
Problem: C++ style comments in C file breaks pedantic build
2018-04-03 09:32:46 +02:00
Luca Boccassi
15905c5561 Problem: C++ style comments in C file breaks pedantic build
Solution: change comments
Fixes: #3036
2018-04-02 21:52:01 +01:00
Luca Boccassi
2aa54d6620
Merge pull request #3029 from sigiesec/fix-poller-context-shutdown
Fix assertion failure when calling zmq_poller_destroy after zmq_ctx_term
2018-03-28 11:27:57 +01:00
Simon Giesecke
f571c22851 Problem: socket_poller destruction after context shutdown is only tested with a non-thread-safe socket
Solution: test with both thread-safe and non-thread-safe sockets
2018-03-28 11:23:08 +02:00
Simon Giesecke
87fbb5c447 Problem: socket poller shutdown asserts when context is terminating
Solution: do not call getsockopt to query thread-safety of a socket
2018-03-28 11:23:08 +02:00
Simon Giesecke
32c8abb1d8 Problem: regression when zmq_poller_destroy is called after zmq_ctx_term
Solution: Added test case to reproduce, not solving the problem!
2018-03-28 10:53:16 +02:00
Simon Giesecke
ef6162ab77
Merge pull request #3027 from bluca/cmake_format
Problem: clang-format Travis job broken
2018-03-28 09:41:17 +02:00
Luca Boccassi
099070c396 Problem: clang-format Travis job broken
Solution: don't run configure
2018-03-27 21:53:47 +01:00
Min RK
8fb5b10d8a Problem: make dist results are not tested (#3024)
* always run tests from tarball of `make dist`

ensures that tests will not pass if critical files are omitted from releases

* add explicit make dist only for non-default builds

distcheck should already cover this for default builds

* don’t verify that valgrind/coverage tests can be run from dists

* add various files missing from dists

- missing template from cmake
- add missing android build files
- add some missing ci_build.sh scripts
2018-03-27 17:36:30 +01:00
Constantin Rack
c8a1c4542d
Merge pull request #3020 from bluca/newver
Problem: 4.2.5 is out, we need to restore API changes and 4.3.x
2018-03-23 22:28:59 +01:00
Luca Boccassi
6f26a33359 Problem: 4.2.5 is out, we need to restore API changes and 4.3.x
Solution: revert the revert!

Revert "Problem: regression in 4.2.3 went unnoticed, want to release 4.2.5"

This reverts commit 5f17e26fa4c60c3de0282d1b6ad1e8b7037ed57a.
2018-03-23 19:31:42 +00:00
Luca Boccassi
d062edd8c1 Finalise changelog for 4.2.5 2018-03-23 19:23:22 +00:00
Constantin Rack
d70981f54d
Merge pull request #3019 from bluca/newver
Problem: regression in 4.2.3 needs to be fixed before 4.3
2018-03-23 20:13:00 +01:00
Luca Boccassi
a66a9d9e8d Problem: want to release 4.2.5 but no NEWS
Solution: note bug fixes
2018-03-23 11:27:07 +00:00
Luca Boccassi
5f17e26fa4 Problem: regression in 4.2.3 went unnoticed, want to release 4.2.5
Solution: revert DRAFT -> STABLE API transition so that we can do a
bugfix-only 4.2.5 release.
Will be re-reverted once tagged.

Revert "Problem: ZMQ_BINDTODEVICE has met STABLE conditions"

This reverts commit 3cb79f5042cf32cdb7b1b58d4acf17eba85ec9f7.

Revert "Problem: ZMQ_MSG_GSSAPI_* have met STABLE conditions"

This reverts commit 374da4207b8034b0fcd67a2cc2165d50e09b9387.

Revert "Problem: ZMQ_MSG_T_SIZE has met STABLE conditions"

This reverts commit 6411c4a247c08ead50919d16b30eb030eaf44a7e.

Revert "Problem: docs say STABLE API still in DRAFT"

This reverts commit 9f2f30b7ffa09acc51d3b87251a47e83b435d5d4.
2018-03-23 11:22:10 +00:00
Constantin Rack
7f1f7057d8
Merge pull request #3018 from bluca/null_auth_regression
Problem: backward incompatible change to NULL with ZAP
2018-03-22 22:10:30 +01:00
Luca Boccassi
1c5a63e939 Problem: backward incompatible change to NULL with ZAP
Solution: like for other mechanism, do not enforce strict ZAP protocol
adherence unless the specific socket option is enabled with NULL auth.

Add test to exercise this functionality, and fix ZAP test to set the
socket option when it uses NULL auth.

See: https://github.com/zeromq/pyzmq/pull/1152
2018-03-22 19:27:23 +00:00
Luca Boccassi
e4b3bd8631 Problem: cannot set ZAP_ENFORCE_DOMAIN in testutil's wrappers
Solution: override unused parameter for NULL wrapper
2018-03-22 19:25:42 +00:00
Simon Giesecke
7722381fe7
Merge pull request #3016 from bluca/fix_docs
Problem: some inaccuracies in manpages
2018-03-21 22:53:44 +01:00
Luca Boccassi
1b733e75a2 Problem: zmq_connect doc says inproc has to be bound first
Solution: fix it, as since 4.2.0 there is no ordering constraint
anymore
Fixes: #2854
2018-03-21 19:57:54 +00:00
Luca Boccassi
dba4ef28cc Problem: zmq_close manpage does not say it's asynchronous
Solution: clarify it since it's a common source of confusion
2018-03-21 19:55:55 +00:00
Luca Boccassi
9f2f30b7ff Problem: docs say STABLE API still in DRAFT
Solution: update them
2018-03-21 19:54:31 +00:00
Luca Boccassi
0e1a9a5252
Merge pull request #3015 from aytekinar/3012-gcc-fix
Fix gcc build problem
2018-03-21 19:37:31 +00:00
Arda Aytekin
6fa9362351
Fix gcc build problem
Fixed gcc-related build problem resulting from `-errwarn=%all` switch.

Fixes #3012.
2018-03-21 18:21:39 +01:00
Doron Somech
0b99710949
Merge pull request #3014 from bluca/draft
Problems: some APIs have met stable conditions
2018-03-21 19:03:26 +02:00
Luca Boccassi
3cb79f5042 Problem: ZMQ_BINDTODEVICE has met STABLE conditions
Solution: move them from DRAFT to STABLE since it's been in a public
release, committed for 6+ months and has not changed.
2018-03-21 16:45:41 +00:00
Luca Boccassi
374da4207b Problem: ZMQ_MSG_GSSAPI_* have met STABLE conditions
Solution: move them from DRAFT to STABLE since it's been in a public
release, committed for 6+ months and has not changed.
2018-03-21 16:45:41 +00:00
Luca Boccassi
a4b74a7b05 Problem: ZMQ_ZERO_COPY_RCV not marked as DRAFT in docs
Solution: update manpages
2018-03-21 16:45:41 +00:00
Luca Boccassi
6411c4a247 Problem: ZMQ_MSG_T_SIZE has met STABLE conditions
Solution: move it from DRAFT to STABLE since it's been in a public
release, committed for 6+ months and has not changed.
Given a new STABLE symbol has been added, bump minor version number.
2018-03-21 16:45:41 +00:00
Simon Giesecke
7fb3bdd59a
Merge pull request #3013 from bluca/newver
Problem: 4.2.4 is out, version is out of date
2018-03-21 17:17:35 +01:00
Luca Boccassi
f0378bfbf7 Problem: 4.2.4 is out, version is out of date
Solution: bump to 4.2.5
2018-03-21 16:03:49 +00:00
Luca Boccassi
44f7158b29 Finalise changelog for 4.2.4 2018-03-21 15:45:59 +00:00
Luca Boccassi
4efc2bf44e Problem: no mention of #2942 in NEWS
Solution: add it
2018-03-21 15:45:59 +00:00
Luca Boccassi
45681798b7
Merge pull request #3011 from sigiesec/migrate-to-unity
Migrate test_reqrep_tcp to unity
2018-03-21 15:43:26 +00:00
Simon Giesecke
84a3767d61 Problem: open TODO comment regarding explicit zmq_disconnect/zmq_unbind
Solution: replaced by a comment explaining why the calls are in the test
2018-03-21 16:28:10 +01:00
Simon Giesecke
786a8d48d5 Problem: code duplication in test_reqrep_tcp
Solution: extracted make_connect_address
2018-03-21 15:09:23 +01:00
Simon Giesecke
8372797cc3 Problem: code duplication in test_reqrep_tcp
Solution: extracted bind_loopback
2018-03-21 15:09:22 +01:00
Simon Giesecke
c84c3a525a Problem: test_reqrep_tcp not yet using unity
Solution: migrate to unity
2018-03-21 15:09:19 +01:00
Constantin Rack
15b3dccf47
Merge pull request #3009 from bluca/newver
Problem: NEWS out of date
2018-03-20 20:21:18 +01:00
Luca Boccassi
780813c4e7 Problem: NEWS out of date
Solution: note new features, APIs and major user-visible bug fixes
2018-03-20 19:18:43 +00:00
Luca Boccassi
a415ede398
Merge pull request #3008 from eponsko/master
Problem: Unnecessary errno_assert
2018-03-20 13:46:30 +00:00
Pontus Sköldström
6a5af3dae6 Removed unnecessary errno_assert 2018-03-20 14:35:24 +01:00
Luca Boccassi
9d3efcb030
Merge pull request #3002 from eponsko/master
Problem: ZMQ_DISH over UDP triggers errno_assert() after hitting wate…
2018-03-19 18:06:13 +00:00
Pontus Sköldström
65a9670065 Problem: ZMQ_DISH over UDP triggers errno_assert() after hitting watermark 2018-03-19 17:46:48 +01:00
Simon Giesecke
e49a861f7c
Merge pull request #3001 from bluca/sodium_global_init
Problem:  global random init/deinit breaks existing applications
2018-03-19 17:25:33 +01:00
Luca Boccassi
8f5fc705e4 Problem: global random init/deinit breaks existing applications
Solution: restrict it only to the original issue #2632, Tweetnacl on
*NIX when using /dev/urandom, ie: without the new Linux getrandom()
syscall.

Existing applications might use atexit to register cleanup functions
(like CZMQ does), and the current change as-is imposes an ordering
that did not exist before - the context MUST be created BEFORE
registering the cleanup with atexit. This is a backward incompatible
change that is reported to cause aborts in some applications.

Although libsodium's documentation says that its initialisation APIs
is not thread-safe, nobody has ever reported an issue with it, so
avoiding the global init/deinit in the libsodium case is the less
risky option we have.

Tweetnacl users on Windows and on Linux with getrandom (glibc 2.25 and
Linux kernel 3.17) are not affected by the original issue.

Fixes #2991
2018-03-19 15:47:07 +00:00
Luca Boccassi
4d9fc8066f
Merge pull request #2999 from sigiesec/migrate-to-unity
Migrate further tests to unity
2018-03-16 17:14:12 +00:00
Simon Giesecke
6d89635f9a Problem: test_udp not using unity
Solution: migrate to unity, merge into test_radio_dish, and split up test cases
2018-03-16 17:03:45 +01:00
Simon Giesecke
dc2764f58c Problem: test_last_endpoint not using unity
Solution: migrate to unity
2018-03-16 16:35:31 +01:00
Simon Giesecke
1747cbdcac Problem: test_immediate not using unity
Solution: migrate to unity, and split test cases
2018-03-16 15:46:39 +01:00
Simon Giesecke
6f8b604648 Problem: test_radio_dish not using unity
Solution: migrate to unity, and split test cases
2018-03-16 15:22:14 +01:00
Simon Giesecke
cdc298f567 Problem: bind_loopback_ipv4 not reusable
Solution: Moved bind_loopback_ipv4 to testutil_unity to allow for reuse
2018-03-16 15:21:39 +01:00
Doron Somech
8d0d4c76ee
Merge pull request #2998 from kachanovskiy/master
Fix for #2997
2018-03-16 13:54:02 +02:00
Kachanovskiy
eb76ea06bd Fix for #2997 2018-03-16 12:48:00 +01:00
Luca Boccassi
9079cf8ed4
Merge pull request #2995 from eponsko/master
Problem: Documentation missing for ZMQ_METADATA socket option
2018-03-15 16:55:26 +00:00
Luca Boccassi
4cb15ec638
Merge pull request #2994 from sigiesec/migrate-to-unity
Migrate further tests to unity, and split up into individual test cases
2018-03-15 16:55:05 +00:00
Pontus Sköldström
57422c7df1 Problem: Documentation missing for ZMQ_METADATA socket option 2018-03-15 17:24:54 +01:00
Simon Giesecke
7bd57ba83b Problem: test case tests multiple aspects
Solution: split test case
2018-03-15 16:43:34 +01:00
Simon Giesecke
3e374d98f1 Problem: test case tests multiple aspects
Solution: split test case
2018-03-15 16:43:33 +01:00
Simon Giesecke
eb0307a9a6 Problem: test case tests multiple aspects
Solution: split test case
2018-03-15 16:43:32 +01:00
Simon Giesecke
10dae6e830 Problem: test_poller not using unity
Solution: migrate to unity, and split test cases
2018-03-15 16:43:30 +01:00
Simon Giesecke
991b2336e4 Problem: test_thread_safe not using unity
Solution: migrate to unity, and split test cases
2018-03-15 16:43:27 +01:00
Simon Giesecke
5d32828bbf Problem: test_reconnect_ivl not using unity
Solution: migrate to unity, and reduce code duplication
2018-03-15 16:43:26 +01:00
Luca Boccassi
e388774737
Merge pull request #2981 from eponsko/master
Problem: no support for ZMTP 3.1 application metadata
2018-03-15 12:57:40 +00:00
Simon Giesecke
1e217ac063 Problem: unity built with unnecessary float but without command line argument support
Solution: add appropriate definitions to build
2018-03-15 11:28:50 +01:00
Simon Giesecke
f92cdf9470 Problem: test_ctx_destroy not using unity, and mixing test cases
Solution: migrate to unit and split up test cases
2018-03-15 10:58:56 +01:00
Luca Boccassi
b2e50d9d03
Merge pull request #2992 from sigiesec/migrate-to-unity
Migrate more tests to unity
2018-03-14 23:04:53 +00:00
Simon Giesecke
fa89fb8639 Problem: Makefile.am missing unity dependencies
Solution: add unity dependencies/flags
2018-03-14 22:40:24 +01:00
Simon Giesecke
9553a1f33e Problem: test_connect_resolve not yet using unity
Solution: migrate to unity
2018-03-14 22:40:24 +01:00
Simon Giesecke
6f9459e3fb Migrate tests/test_conflate.cpp to unity 2018-03-14 19:05:19 +01:00
Simon Giesecke
d318c95bc2 Problem: different aspects mixed in one test case
Solution: split up test case
2018-03-14 18:59:36 +01:00
Simon Giesecke
dbcd42c58d Migrate tests/test_client_server.cpp to unity 2018-03-14 18:45:26 +01:00
Simon Giesecke
0114572ce6 Migrate tests/test_bind_src_address.cpp to unity 2018-03-14 18:45:25 +01:00
Simon Giesecke
be33dce68e Migrate tests/test_bind_after_connect_tcp.cpp to unity 2018-03-14 18:45:25 +01:00
Simon Giesecke
631de94563 Problem: test_router_hangover not yet using unity
Solution: migrate to unity
2018-03-14 15:09:13 +01:00
Luca Boccassi
59516ed51a
Merge pull request #2990 from sigiesec/migrate-to-unity
Problem: test assertion failures do not clean up properly
2018-03-14 13:25:02 +00:00
Pontus Sköldström
dd5eec35be Support application metadata through ZMQ_METADATA
Lets the application set per-connection metadata.
Metadata is specified as "X-key:value" and set using zmq_setsockopt, eg:
zmq_setsockopt (s, ZMQ_METADATA, "X-key:value", 11);

The peer can then obtain the metadata from a received message:
char *data = zmq_msg_gets(msg, "X-key");
2018-03-14 12:56:15 +01:00
Simon Giesecke
59157f0e2f Problem: missing guidelines on proper test cleanup
Solution: add guidelines to tests/README.md
2018-03-14 12:26:06 +01:00
Simon Giesecke
9e3932b46b Problem: test assertion failures do not clean up properly
Solution: provide test_context and manage sockets of test_context via setup and teardown
2018-03-14 12:24:21 +01:00
Luca Boccassi
df03bf4825
Merge pull request #2987 from sigiesec/migrate-to-unity
Migrate further tests (test_hwm, test_router_mandatory) to unity
2018-03-14 08:14:34 +00:00
Simon Giesecke
c602361836 Problem: debug output in CMake file
Solution: removed
2018-03-14 08:22:23 +01:00
Simon Giesecke
437e9f4f59 Problem: tests readme outdated
Solution: fixed description for building tests, added references to unity and unittests
2018-03-14 08:22:23 +01:00
Simon Giesecke
ae558706bf Problem: test_hwm and test_router_mandatory not yet using unity
Solution: migrate to unity
2018-03-14 08:22:23 +01:00
Luca Boccassi
c9437ab755
Merge pull request #2986 from wittmeie/ws/fix-for-windows-imported-target
Missing IMPORTED_LOCATION_<CONFIG>property for shared-library import-targets (see zeromq/libzmq#2985)
2018-03-12 15:41:10 +00:00
Luca Boccassi
d2293da6e5
Merge pull request #2983 from tonytheodore/master
Fixes for mingw cross-compilation
2018-03-12 14:00:39 +00:00
Steffen Wittmeier
79d9f2ba1e Fixes missing IMPORTED_LOCATION in import-target 2018-03-12 13:38:46 +01:00
Tony Theodore
c7876c097f Problem: mingw static/shared builds have different preprocessor defines
Solution: remove objects optimisation in library build (similar to #2860)
and set PUBLIC compile definitions on all static builds instead of MSVC
only.
2018-03-12 21:56:37 +11:00
Sergey Kachanovskiy
9c748f1bf1 Partial fix for issue 2963, removed invalid casts from fd_t to int (#2984)
* Fixes issue 2963, ref stream_engine.cpp:981

* Fixes issue 2963, ref socks_connecter.cpp:158

* Fixes issue 2963, ref tcp_listener.cpp:144

* Fixes issue 2963, ref tcp_connecter.cpp:423

* Fixes issue 2963, ref socks_connecter.cpp:436

* Fixes issue 2963, ref tcp_listener.cpp:179

* Fixes issue 2963, ref tcp_listener.cpp:268

* Fixes issue 2963, ref tcp_connecter.cpp:160
2018-03-12 11:55:58 +01:00
Tony Theodore
794d7a3143 Problem: certain windows header files are actually lowercase
Solution: change case of `WinSock2.h Iphlpapi.h Rpc.h` to match the
files on disk. This is only noticeable when cross-compiling from a
case-sensitive system so wouldn't get picked up in MSVC or mingw
builds running on a windows machine.

MSDN uses capitalised versions in prose and lowercase in code examples:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs.85).aspx

Fixes #2978, the missing library message is a little misleading.
2018-03-12 20:19:27 +11:00
Constantin Rack
7bce4ffbc7
Merge pull request #2982 from bluca/formattweetnacl
Problem: formatting issues in CI
2018-03-11 19:07:23 +01:00
Luca Boccassi
8d544ef1c4 Problem: formatting issues in the CI
Solution: commit clang-format-diff
2018-03-10 12:44:27 +00:00
Luca Boccassi
fef99d6c50 Problem: tweetnacl is external code and clang-format parses it
Solution: add pragma to make clang-format ignore the external code
2018-03-10 12:43:34 +00:00
Manuel Segura
4726f7262d Pull request to merge porting to WindRiver VxWorks 6.x (#2966)
* Problem: Still need to port over more files to VxWorks 6.x

Solution: Port more files to VxWorks 6.x

* Problem: Need to port over remaining files to VxWorks 6.x. Also remove POSIX thread dependency for VxWorks (because of priority inversion problem in POSIX mutexes with VxWorks 6.x processes)

Solution: Port over remaining files to VxWorks 6.x. Also removed POSIX thread dependency for VxWorks

* Problem: Needed to modify TCP, UDP, TIPC classes with #ifdefs to be compatible with VxWorks 6.x.

Solution:  Modify TCP, UDP, TIPC classes with #ifdefs to be compatible with VxWorks 6.x
2018-03-10 11:03:02 +00:00
Simon Giesecke
0d23b5ca69
Merge pull request #2980 from kachanovskiy/master
Fixed issue #2979
2018-03-09 22:45:16 +01:00
Kachanovskiy
90342e0d29 Fixed issue #2979 2018-03-09 22:24:23 +01:00
Luca Boccassi
19060345e4 Problem: TIPC availability check is too strict (#2977)
* Problem: TIPC availability check is too strict

Solution: at build time only check if the API is available. In the tests
do a first check and a skip if the functionality is not available.

TIPC needs an in-tree but not loaded by default kernel module, tipc.ko
to be loaded, which requires root, so it is unlikely to be available on
any build system by default.
This will allow most distributions to ship with TIPC support built in,
and to avoid tests failure if the module is not there.

* Problem: no Travis tests for TIPC

Solution: mark one job with sudo: required and load the kernel module

* Problem: CMake fails when test returns 77 (skip)

Solution: set property to let it mark the test as skipped as intended
2018-03-09 17:47:42 +01:00
Pontus.Skoeldstroem
7abb8388d6 Problem: Tests for different TIPC address types missing (#2956)
* Tests for different TIPC address types and code cleanup

* Adds tests for binding/connecting with different TIPC address types
  using Unity
* Adds error checking for address type misuse
2018-03-07 17:31:26 +00:00
Luca Boccassi
40c6c1a7c9
Merge pull request #2976 from zeromq/revert-2974-static_init_gcc
Revert "Problem: mis-detection of threadsafe_static_init causes test failures"
2018-03-07 15:18:16 +00:00
Simon Giesecke
cef9cfa091
Revert "Problem: mis-detection of threadsafe_static_init causes test failures" 2018-03-07 15:03:07 +01:00
Constantin Rack
0c6c935726
Merge pull request #2974 from bluca/static_init_gcc
Problem: mis-detection of threadsafe_static_init causes test failures
2018-03-07 07:51:38 +01:00
Luca Boccassi
9bd2d3f937 Problem: mis-detection of threadsafe_static_init causes test failures
Solution: do not rely __cplusplus >= 201103L to detect whether the
compiler supports thread safe static initialisation, but check only
the proper feature preprocessor macro.
GCC introduced it in version 8, and Clang in version 6.
2018-03-06 23:11:03 +00:00
Constantin Rack
677efea238
Merge pull request #2973 from bluca/deb7
Problem: build broken with gcc-4.7
2018-03-06 22:55:07 +01:00
Luca Boccassi
e0b1992dd7 Problem: build broken with gcc-4.7
Solution: initialise variable in options.cpp to dummy value to fix
compiler complaint:

 src/options.cpp: In function
  'int zmq::do_setsockopt_int_as_bool_strict(const void*, size_t, bool*)':
 src/options.cpp:121:5: error: 'value' may be used uninitialized in
  this function [-Werror=maybe-uninitialized]
 src/options.cpp: In function
  'int zmq::do_setsockopt_int_as_bool_relaxed(const void*, size_t, bool*)':
 src/options.cpp:135:31: error: 'value' may be used uninitialized in
  this function [-Werror=maybe-uninitialized]
2018-03-06 20:29:47 +00:00
Luca Boccassi
ec58ba04f3
Merge pull request #2972 from sigiesec/reduce-sockopt-code-duplication
Problem: code duplication in getsockopt/setsockopt
2018-03-06 20:08:46 +00:00
Simon Giesecke
6f967c3a13 Problem: code duplication in getsockopt/setsockopt
Solution: extracted common code into do_getsockopt/do_setsockopt functions
2018-03-06 16:41:30 +01:00
Luca Boccassi
10d2b2885e
Merge pull request #2971 from ZMQers/fix-static-init
Problem: static initialization order fiasco
2018-03-06 09:18:52 +00:00
Constantin Rack
494c2a71f8
Merge pull request #2970 from bluca/format
Problem: CI check for format fails
2018-03-06 00:18:17 +01:00
Luca Boccassi
c36d8cb8e4 Problem: PR template does not mention clang-format
Solution: add paragraph explaining how to run it to make sure code is
correctly formatted.
2018-03-05 22:47:40 +00:00
Luca Boccassi
541ca30d8e Problem: make clang-format still shows error in the CI
Solution: run make clang-format-diff and commit the changes.
2018-03-05 22:41:11 +00:00
Luca Boccassi
4ea1e78d9d
Merge pull request #2969 from skaes/master
Problem: enormous memory increase due to zero copy decoding
2018-03-05 17:40:33 +00:00
Stefan Kaes
fcbd2a5710 Problem: enormous memory increase due to zero copy decoding
The zero copy decoding strategy implemented for 4.2.0 can lead to a large
increase of main memory usage in some cases (I have seen one program go up to
40G from 10G after upgrading from 4.1.4). This commit adds a new option to
contexts, called ZMQ_ZERO_COPY_RECV, which allows one to switch to the old
decoding strategy.
2018-03-05 18:13:28 +01:00
Ryan Hileman
3658b2b580 Problem: pthread condvar timeouts are broken (#2967)
* fix pthread condvar timeouts

This fixes a race condition / hang for threadsafe sockets.
Context: https://github.com/zeromq/czmq/issues/1873#issuecomment-370279244
2018-03-05 16:36:10 +00:00
Simon Giesecke
8cdfc8b9dd Problem: static initialization order fiasco
Solution: use local statics when available in a thread-safe implementation
2018-03-05 16:30:57 +01:00
Luca Boccassi
d54633add1
Merge pull request #2964 from bluca/fix_mtrie_32bit
Problem: unittest_mtrie fails on 32bit *nix
2018-03-02 19:06:51 +00:00
Luca Boccassi
23025f44c6 Problem: unittest_mtrie fails on 32bit *nix
Solution: correctly dereference pointer in test.
2018-03-02 18:00:17 +00:00
Luca Boccassi
173b54a8c9
Merge pull request #2950 from zeromq/add-unittests-mtrie
Problem: no unit tests for mtrie
2018-03-02 17:41:06 +00:00
Simon Giesecke
9cd01bb54f Problem: inconsistent return values from mtrie_t::rm
Solution: Return an enum from rm instead of a bool, and adapt existing uses
2018-03-02 13:42:50 +01:00
Simon Giesecke
36cdcc6c1a Problem: docs of mtrie referring to subscriptions and pipes
Solution: generalized terms to entries/values
2018-03-02 13:42:47 +01:00
Simon Giesecke
e34e03d1a6 Problem: missing test case for addition of duplicate entry
Solution: added test case
2018-03-02 13:42:46 +01:00
Luca Boccassi
d57422819a Problem: documentation for ZMQ_XPUB_VERBOSE(R) is unclear
Solultion: clarify that notifications for unique subs/unsubs are always
passed, and these option only affect the behaviour for duplicated ones.
2018-03-02 13:42:45 +01:00
Luca Boccassi
354491ddf2 Problem: no test for ZMQ_XPUB_VERBOSE(R)
Solution: add test_xpub_verbose to cover those APIs
2018-03-02 13:42:44 +01:00
Simon Giesecke
5d5def40b5 Problem: casts required due to void* arguments in a C++ class
Solution: introduce a type template argument
2018-03-02 13:42:42 +01:00
Simon Giesecke
15b4f596a8 Problem: insufficient unit tests for mtrie
Solution: added further test cases
2018-03-02 13:42:41 +01:00
Simon Giesecke
5fb0e97ab7 Problem: semantic issues
Solution: added some TODO comments, improved existing documentation
2018-03-02 13:42:31 +01:00
Simon Giesecke
8bb055ece8 Problem: insufficient unit tests for mtrie
Solution: added test case, reduced code duplication in tests
2018-03-02 13:40:53 +01:00
Simon Giesecke
0e34d13063 Problem: insufficient unit tests for mtrie
Solution: added unit test and assertions
2018-03-02 13:40:50 +01:00
Simon Giesecke
506f0e5c44 Problem: insufficient unit tests for mtrie
Solution: add test case
2018-03-02 13:40:49 +01:00
Simon Giesecke
56d806a9ef Problem: infufficient unit tests for mtrie
Solution: added some test cases for rm
2018-03-02 13:40:48 +01:00
Simon Giesecke
b42a59a839 Problem: insufficient unit tests for mtrie
Solution: added test case
2018-03-02 13:40:46 +01:00
Simon Giesecke
96fb17cb55 Problem: unittests not recognized by code coverage measurement
Solution: add CODE_COVERAGE_*FLAGS to unit tests build

Fixes #2949
2018-03-02 13:40:45 +01:00
Simon Giesecke
dbbc10e05b Problem: incomplete test coverage of mtrie
Solution: add some more test cases
2018-03-02 13:32:51 +01:00
Simon Giesecke
a9712c0bf2 Problem: no unittests for mtrie
Solution: made mtrie generic (to remove complex dependency on pipe_t),
and added some unit tests
2018-03-02 13:32:51 +01:00
Simon Giesecke
9fc3692e3f Problem: read-only arguments of mtrie are not declared as const
Solution: add const, introduce typedef
2018-03-02 13:32:50 +01:00
Luca Boccassi
31387f84e4
Merge pull request #2960 from Romain-Geissler-1A/fix-gcc-8-build
Fix gcc 8 build warning/error with -O3.
2018-02-27 11:00:49 +00:00
Romain Geissler
1e03f7b2d4 Fix gcc 8 build warning/error with -O3. 2018-02-27 10:12:22 +01:00
Luca Boccassi
b575b05d2c
Merge pull request #2951 from eponsko/master
Problem: No support for addressing using TIPC Port Identity
2018-02-19 17:24:24 +00:00
Pontus Sköldström
78aa9b1983 Support addressing TIPC Port Identity
ZeroMQ currently supports location independent addressing using TIPC
Port Names with tipc://{type,instance}. This commits adds support for
connecting and binding using TIPC Port Identity addresses. To connect
using Port Identities the expected format is tipc://<Z.C.N:Ref>, e.g.
"tipc://<1.2.3:123123>". To bind using TIPC Port Identities the expected
format is "tipc://<*>".
2018-02-19 17:34:40 +01:00
Luca Boccassi
4c7c9b87bf
Merge pull request #2947 from sigiesec/fix-unittest-poller-race
Problem: race condition in unittest_poller
2018-02-14 18:19:44 +00:00
Luca Boccassi
2700c15d67
Merge pull request #2946 from hartcw/master
Minor fixes for windows cmake build
2018-02-14 15:10:56 +00:00
Francis Hart
ef7cb96782 Fix cmake install error when BUILD_SHARED is off
This fixes an error with the cmake install configuration, which
attempted an invalid copy of a .pdb file on windows, when the
BUILD_SHARED option is disabled.
2018-02-14 15:22:54 +02:00
Francis Hart
d470475272 Add cmake build option for disabling tests
This adds a new cmake build option called BUILD_TESTS, that can be used
to enable/disable building of the tests. This is enabled by default.
2018-02-14 15:22:54 +02:00
Francis Hart
dee0213108 Ensure correct cmake target suffix for all builds
This updates the cmake set_target_properperties usage, so that the suffix
is specified for the MinSizeRel build type.
2018-02-14 15:22:54 +02:00
Simon Giesecke
5224b8704a Problem: race condition in unit test
Solution: fix order of statements in test_events_t
2018-02-13 22:27:15 -05:00
Luca Boccassi
487c275809
Merge pull request #2945 from kachanovskiy/master
Fix build break when SIO_LOOPBACK_FAST_PATH is not defined (i.e. in VS2010)
2018-02-13 22:29:38 +00:00
Kachanovskiy
e10464e45e Fix for build break when SIO_LOOPBACK_FAST_PATH is not defined (i.e. in VS2010) 2018-02-13 23:04:08 +01:00
Luca Boccassi
bc467f0631
Merge pull request #2944 from sigiesec/unity
Problem: insufficient unit tests for poller concept and ypipe
2018-02-13 19:05:51 +00:00
Simon Giesecke
94743fd21f Problem: wrong formatting in several files
Solution: apply clang-format
2018-02-13 18:40:43 +01:00
Simon Giesecke
90c6d993be Problem: kqueue_t fails unittest_poller
Solution: fix shutdown of kqueue_t
2018-02-13 18:38:30 +01:00
Simon Giesecke
3b90ad8c63 Problem: support of std::atomic is incomplete in VS <2015
Solution: use std::atomic only from VS 2015
2018-02-13 18:38:29 +01:00
Simon Giesecke
9aa957b445 Problem: appveyor builds fails if they are not the most recent commit
Solution: use shallow_clone option instead of clone_depth
2018-02-13 18:38:28 +01:00
Simon Giesecke
815c7db06b Problem: poll build runs as last appveyor build
Solution: change order of appveyor build jobs to enable faster feedback
on more diverse builds
2018-02-13 18:38:27 +01:00
Simon Giesecke
0458b85dec Problem: Some tests timeout on appveyor for POLLER=poll
Solution: Increase test timeouts for poll poller under Windows
2018-02-13 18:38:26 +01:00
Simon Giesecke
96131b5b4e Problem: no documentation of the poller concept
Solution: added documentation
2018-02-13 18:38:25 +01:00
Simon Giesecke
fafea72b92 Problem: header files not included in VS project files
Solution: add to list of sources
2018-02-13 18:38:24 +01:00
Simon Giesecke
a8e9032dc5 Problem: unreachable code in io_thread_t::process_stop
Solution: replaced by assertion
2018-02-13 18:38:24 +01:00
Simon Giesecke
922053237f Problem: test_sockopt_hwm not using unity
Solution: migrate test_sockopt_hwm to unity
2018-02-13 18:38:23 +01:00
Simon Giesecke
a5738529e8 Problem: wsa_assert does not include error code
Solution: extend output of wsa_assert
2018-02-13 18:38:22 +01:00
Simon Giesecke
e8e24030ea Problem: network initialization and shutdown functions not available for
reuse

Solution: extract into functions defined in ip.hpp

Problem: signaler_t::make_fdpair not reusable

Solution: move make_fdpair to ip.hpp

Problem: epoll worker with no fds cannot be stopped

Solution: use interruptible epoll_pwait call

Problem: insufficient unit tests for poller

Solution: add test cases
2018-02-13 18:38:17 +01:00
Simon Giesecke
ecb3b503c3 Problem: no output of details on test failure
Solution: set CTEST_OUTPUT_ON_FAILURE option
2018-02-12 17:17:32 +01:00
Luca Boccassi
e57afec80e
Merge pull request #2943 from sigiesec/fix-select-unix
Problem: data races in select/poll poller implementations
2018-02-12 16:09:08 +00:00
Simon Giesecke
c62574ffca Problem: segfault in select_t::trigger_events
Solution: fixed access to stale vector
2018-02-12 14:42:46 +01:00
Simon Giesecke
11a5388637 Problem: data race w.r.t. select_t::stopping
Solution: change termination condition of select_t
2018-02-12 14:42:33 +01:00
Simon Giesecke
e650240580 Problem: data race w.r.t. poll_t::stopping
Solution: remove stopping, stop on thread-safe conditions; add
additional checks for correct thread-safe usage
2018-02-12 14:41:53 +01:00
Simon Giesecke
08201bc1b9 Problem: select blocks forever under Unix
Solution: fixed call of select, and initialization of poll_t members
2018-02-12 14:39:02 +01:00
Luca Boccassi
a30133d8f5
Merge pull request #2935 from ZMQers/unity-base
Problem: no test framework, no unit tests
2018-02-12 11:01:08 +00:00
Luca Boccassi
d0e01b4bb2 Problem: regression with "select" on *nix (#2940)
* Problem: build failure with select as polling mechanism

Solution: cast mailbox_handle argument to (poller_t::handle_t) like in
the reaper thread class.

* Problem: build failure due to INT_MAX use without include

Solution: include limits and climits in src/select.cpp where INT_MAX is
used

* Problem: build failure due to unused variable in select.cpp

Solution: move the declaration of int rc inside the ifdef block where
it is actually used

* Problem: reference to wrong variable in select.cpp breaks build

Solution: fix it

* Problem: family_entry_t constructor has no body, build fails on *nix

Solution: add empty inline function in the struct

* Problem: no test coverage for poll and select

Solution: add Travis jobs for them on Linux

* Problem: Travis jobs cannot run in container infra

Solution: set sudo: false as it is not required anymore
2018-02-12 03:01:03 -05:00
Simon Giesecke
9ec95f9d46 Problem: build failure with VS <2015, has no snprintf
Solution: use _snprintf when snprintf is not available
2018-02-11 17:33:13 +00:00
Luca Boccassi
29e304ea5c Problem: unity license not mentioned in debian/copyright
Solution: add it
2018-02-11 17:33:13 +00:00
Luca Boccassi
1478fd0022 Problem: unittests not built with autotools
Solution: add them to Makefile.am, linking to the static libzmq.a
library and its dependencies
2018-02-11 17:33:13 +00:00
Luca Boccassi
f6f67cbf96 Problem: no autotools support for building with unity
Solution: add a noinst convenience static library and use it with the
tests that require it
2018-02-11 17:25:36 +00:00
Simon Giesecke
7ea924c763 Problem: segfault on thread_t::stop if thread was never started
Solution: add started flag
2018-02-11 17:25:36 +00:00
Simon Giesecke
56c726d425 Problem: no unit tests
Solution: set up initial unit tests
2018-02-11 17:25:36 +00:00
Simon Giesecke
f87d3ab294 Problem: pollers unnecessarily depend on whole ctx_t, but actually use only start_thread method
Solution: extract thread_ctx_t from ctx_t
2018-02-11 17:25:36 +00:00
sigiesec
687f6a694f Problem: license and source information missing
Solution: added MIT license file and github source info
2018-02-11 17:25:36 +00:00
sigiesec
5f854a31b7 Problem: test_security_curve not using test framework
Solution: use unity in test_security_curve
2018-02-11 17:25:36 +00:00
sigiesec
21879abb5b Problem: test_socket_null not using test framework
Solution: rewrite test_socket_null to use unity
2018-02-11 17:25:36 +00:00
sigiesec
61a28a26cc Problem: no test framework
Solution: add unity test framework, and integrate into cmake build
2018-02-11 17:25:36 +00:00
Luca Boccassi
afd5d9f721
Merge pull request #2939 from sigiesec/fix-poll-timer-event-retiring
Fixed a deadlock and an assertion failure in poll_t
2018-02-11 17:06:36 +00:00
Simon Giesecke
5873894c83 Problem: wrong assertion macro used on Windows
Solution: use wsa_assert instead of errno_assert
2018-02-11 13:52:41 +01:00
Simon Giesecke
2f27bcd74b Problem: assertion failure in poll_t::poll if timer_event retired a
pollset entry

Solution: clean up retired entries before poll
2018-02-11 13:49:26 +01:00
Simon Giesecke
a2af3d18cc Problem: unittest_poller fails for poll_t
Solution: fixed behaviour in corner cases
2018-02-11 13:49:25 +01:00
Simon Giesecke
ac777bad94
Merge pull request #2938 from bluca/format_autotools
Problem: make format-check not implemented with autotools
2018-02-10 15:26:53 -05:00
Simon Giesecke
504e6d0ecc
Merge pull request #2937 from bluca/gcc_4_build
Problem: DRAFT build broken with GCC 4.7
2018-02-10 15:25:54 -05:00
Luca Boccassi
d832267e23 Problem: make format-check not implemented with autotools
Solution: port implementation from zproject
2018-02-10 17:35:12 +00:00
Luca Boccassi
9b1ce59719 Problem: DRAFT build broken with GCC 4.7
Solution: change variable type in test_timers to match public API
2018-02-10 17:08:01 +00:00
Luca Boccassi
c33cb38af2
Merge pull request #2928 from eponsko/master
Add support for ZMQ_XPUB_NODROP on ZMQ_RADIO sockets
2018-02-09 17:15:47 +00:00
Luca Boccassi
eded1f8b90
Merge pull request #2923 from sigiesec/fastpath
Add support for SIO_LOOPBACK_FAST_PATH on Windows
2018-02-09 17:08:51 +00:00
Pontus Sköldström
a57f7e3824 Add support for ZMQ_XPUB_NODROP on ZMQ_RADIO sockets
Solves issue #2927
2018-02-09 16:20:50 +01:00
Simon Giesecke
a5e763039d Problem: use of TCP loopback fastpath not available for user sockets
Solution: add socket option
2018-02-09 14:22:42 +01:00
sigiesec
490d76da2f Problem: SIO_LOOPBACK_FAST_PATH not activated for signaler socket pair
Solution: activate SIO_LOOPBACK_FAST_PATH if available

See #2899
2018-02-09 13:50:40 +01:00
Luca Boccassi
9544dade49
Merge pull request #2926 from sigiesec/fix-issue-2925
Problem: assertion failure in poller_base.cpp:42
2018-02-09 09:49:17 +00:00
sigiesec
50d80d0835 Problem: test_timeo frequently fails on travis, probably because of slow
execution

Solution: relax test assertion to what can be guaranteed
2018-02-09 09:56:38 +01:00
sigiesec
88d8c768d1 Problem: test_timers frequently fails on travis-ci
Solution: relaxed test assertions, based on the actual time passed,
instead of assuming that this equals to the time slept
2018-02-09 09:55:40 +01:00
Simon Giesecke
3baefc66ea Problem: incomplete assertions around modifications of fd_entries vs.
load

Solution: add assertions, partially in debug build only, improved naming
2018-02-09 09:53:02 +01:00
Simon Giesecke
a1d55d0506 Problem: race conditions for options.linger (#2910)
* Problem: race conditions for options.linger

Solution: make options.linger atomic
2018-02-08 22:10:45 +00:00
Simon Giesecke
de0c669323 Problem: std::atomic not used on Visual C++ although it is available (#2930)
* Problem: std::atomic not used on Visual C++ although it is available

Solution: change conditional compilation to recognize _MSC_VER
2018-02-08 22:01:02 +00:00
Luca Boccassi
52d64e1d5d
Merge pull request #2929 from sigiesec/add-windows-poll-build
Add windows poll build on Appveyor
2018-02-08 22:00:30 +00:00
Luca Boccassi
cdfc6bb8b3
Merge pull request #2924 from sigiesec/tcp-cleanup
Problem: duplicated code, redundant member handle_valid, asymmetry between tcp_connecter and tcp_listener
2018-02-08 21:57:46 +00:00
Luca Boccassi
9fbd125b41
Merge pull request #2917 from ZMQers/thread-safe-simplification
Problem: code duplication and unnecessary nesting around ZMQ_THREAD_SAFE querying
2018-02-08 21:57:06 +00:00
sigiesec
147fe9ed77 Problem: code duplication and unnecessary nesting around ZMQ_THREAD_SAFE
querying

Solution: remove code duplication and rearrange conditions
2018-02-08 22:54:30 +01:00
Luca Boccassi
cb9ccfa154
Merge pull request #2921 from sigiesec/mechanism-cleanup
Problem: code style issues in mechanism_t and socket_base_t
2018-02-08 21:53:14 +00:00
Luca Boccassi
2e849a4d60
Merge pull request #2913 from ZMQers/add-const
Problem: several fields are non-const without need
2018-02-08 21:47:21 +00:00
Luca Boccassi
9872daa293
Merge pull request #2912 from ZMQers/socket-base-signaler-unreachable-code
Problem: unreachable code around socket_base_t::add/remove_signaler
2018-02-08 21:46:02 +00:00
Luca Boccassi
3491fd0421
Merge pull request #2932 from sigiesec/reapply-2920
fix Windows Intel compiler build failure
2018-02-08 21:44:07 +00:00
Tetsuya Hayashi
fdcb4520ca fix Windows Intel compiler build failure 2018-02-08 22:41:43 +01:00
Simon Giesecke
0b509c3d5b Problem: no CI build on Windows with POLLER=poll
Solution: add appveyor job
2018-02-08 22:20:13 +01:00
Simon Giesecke
2c2ea82789 Problem: duplicated code, redundant member handle_valid, asymmetry between
tcp_connecter and tcp_listener

Solution: remove duplication and redundant member, align handling of
handle in tcp_connecter and tcp_listener
2018-02-08 22:20:01 +01:00
sigiesec
06d805ff82 Problem: unnecessary complex operations in socket_base_t::term_endpoint
Solution: use simpler operations, construct std::string only once
2018-02-08 22:19:54 +01:00
sigiesec
9a6993adce Problem: several code style issues in mechanism_t: code and data duplication,
unnecessary construction of temporary std::string

Solution: removed duplication, removed construction of std::string
2018-02-08 22:19:54 +01:00
sigiesec
368eff9ecb Problem: several fields are non-const without need
Solution: add const where easily possible
2018-02-08 22:17:03 +01:00
sigiesec
5b510656d0 Problem: unreachable code around socket_base_t::add/remove_signaler
Solution: replaced by assertion
2018-02-08 22:16:30 +01:00
Luca Boccassi
b77d7610cd
Merge pull request #2908 from ZMQers/clang-format
Problem: inconsistent formatting
2018-02-08 17:59:24 +00:00
Luca Boccassi
3bcbd6544b
Merge pull request #2922 from zeromq/revert-2920-work/fix-icl-build
Revert "Problem: Windows Intel compiler build broken"
2018-02-04 23:34:41 +01:00
Luca Boccassi
08cc22a52b
Revert "Problem: Windows Intel compiler build broken" 2018-02-04 23:33:40 +01:00
Luca Boccassi
c43c8795ca
Merge pull request #2920 from tetsuh/work/fix-icl-build
Problem: Windows Intel compiler build broken
2018-02-04 22:52:10 +01:00
Tetsuya Hayashi
fee3884b5d fix Windows Intel compiler build failure 2018-02-03 22:56:29 +09:00
sigiesec
43c11d0a61 Problem: cmake broken under Windows
Solution: fix CMAKE_MODULES_PATH
2018-02-02 15:47:43 +01:00
sigiesec
ac775ba48b Problem: clang-format-diff does not run
Solution: fix execution directory
2018-02-02 15:47:43 +01:00
sigiesec
749a85cb21 Problem: travis-ci is using outdated clang(-format)
Solution: explicitly select clang-5.0
2018-02-02 15:47:43 +01:00
sigiesec
26b5b5b2d9 Problem: out-of-scope files are considered by cmake clang-format targets
Solution: restrict to src, tests, perf, tools and include directories
2018-02-02 15:47:43 +01:00
sigiesec
4161793d19 Problem: clang-format not run on CI
Solution: add clang-format to cmake, and add another travis-ci build type
2018-02-02 15:47:43 +01:00
sigiesec
41f459e1dc Problem: formatting inconsistent
Solution: applied clang-format
2018-02-02 15:47:43 +01:00
sigiesec
6d8baea714 Problem: no definition for applying automated formatting
Solution: added .clang-format file
2018-02-02 15:46:47 +01:00
Luca Boccassi
a45e4bb7bc
Merge pull request #2909 from eponsko/master
Problem:  ZMQ_DISH triggers assert when hitting the watermark(?)
2018-02-02 15:36:08 +01:00
Pontus Sköldström
542fe67f25 Problem: ZMQ_DISH triggers assert when hitting the watermark(?)
Solves issue #2907 by checking whether the msg already has a group
2018-02-02 14:01:45 +01:00
Luca Boccassi
390d79e0ab
Merge pull request #2904 from jimklimov/jf-testlog
Improve handling of Jenkinsfile failed testlog archives
2018-02-01 08:17:29 +00:00
Jim Klimov
2559a99570 Improve handling of Jenkinsfile failed testlog archives
Port from zproject / czmq : Jenkinsfile :
* add RETRY_NUMBER suffix to test-suite tarballs
* and set build UNSTABLE if retries were needed
2018-02-01 01:40:49 +01:00
Luca Boccassi
c6bd123650
Merge pull request #2903 from sigiesec/fix-2895-2
Problem: in case of exhausted resources on creation of a context, assertions are triggered
2018-01-31 22:35:37 +00:00
sigiesec
206c832167 Problem: in case of exhausted resources on creation of a context, assertions are triggered
Solution: signal error to caller, and apply appropriate cleanup
2018-01-31 20:53:06 +01:00
Luca Boccassi
4e2b9e6e07
Merge pull request #2902 from jimklimov/jf-testlog
Update Jenkinsfile according to current zproject template
2018-01-30 18:52:29 +00:00
Jim Klimov
21b0628cd1 Jenkinsfile : regenerated with zproject support for logging test-suite results (revised) 2018-01-30 19:51:40 +01:00
Jim Klimov
aec6ea78c5 Jenkinsfile : regenerated with zproject support for logging test-suite results 2018-01-30 18:32:46 +01:00
Jim Klimov
7186cd515d Jenkinsfile : regenerated with zproject support for failed-test retries 2018-01-30 18:31:42 +01:00
Jim Klimov
c6a6ec39a6 Jenkinsfile : regenerated with zproject support for better workspace cleanup before test preparation 2018-01-30 18:28:17 +01:00
Jim Klimov
4110c6b751 Jenkinsfile : regenerated with zproject support for configurable test timeout 2018-01-30 18:27:12 +01:00
Jim Klimov
59347f68b8 Jenkinsfile : regenerated with zproject support for cppcheck among other tests 2018-01-30 18:24:29 +01:00
Jim Klimov
70d3cc23be Jenkinsfile : regenerated with zproject support for DO_DIST_DOCS option 2018-01-30 18:21:49 +01:00
Luca Boccassi
da7d4d0760
Merge pull request #2901 from thedrow/patch-1
Enable ccache for faster builds
2018-01-27 10:37:41 +00:00
Omer Katz
befe62674c
Enable ccache for faster builds. 2018-01-27 11:01:35 +02:00
Luca Boccassi
c52ca3c284
Merge pull request #2897 from sigiesec/fix-2895
Problem: add_fd might be called with fd_ == retired_fd
2018-01-26 10:08:50 +00:00
Simon Giesecke
7488be61c2 Problem: add_fd might be called with fd_ == retired_fd
Solution: add assertion
2018-01-25 16:03:43 +01:00
Luca Boccassi
4518e0cc35
Merge pull request #2889 from SalvoVirga/fix/libzmq-static-cmake
Correct linking for libzmq-static
2018-01-15 10:29:30 +00:00
Salvo Virga
9d6a5f3c2f linkage is now homogeneous for both targets libzmq and libzmq-static
all calls to target_link_libraries are now at the same location
2018-01-15 00:36:02 +01:00
Constantin Rack
2540e1a609
Merge pull request #2888 from minrk/fix-cmake
Fix inclusion of cmake files in dists
2018-01-14 05:42:19 +01:00
Min RK
35c4b68a09 fix inclusion of cmake modules in dist 2018-01-13 13:15:51 -08:00
Min RK
5f8488de6d move FindSodium to builds/cmake/Modules
with the rest of the CMake modules
2018-01-13 13:15:51 -08:00
Min RK
f8da0ac721 move cmake ZeroMQConfig.cmake.in to builds/cmake 2018-01-13 13:14:53 -08:00
Luca Boccassi
e2ed5a357e
Merge pull request #2886 from SylvainCorlay/cmake-soversion
[cmake] fix SOVERSION
2018-01-13 10:11:56 +00:00
Sylvain Corlay
8d35cf82f1 [cmake] fix SOVERSION 2018-01-13 09:31:04 +01:00
Luca Boccassi
21927a74d9
Merge pull request #2885 from JohanMabille/librt_fix
removing hard-coded path of librt
2018-01-10 23:08:15 +00:00
Johan Mabille
b2a8bbd89b removing hard-coded path of librt 2018-01-10 21:07:25 +01:00
Giuseppe Corbelli
020b0bede8 Fix CMake tests on Windows (#2872)
* Changed CMake tests to use check_symbol_exists in network-related libraries on win32 instead of check_library_exists
2018-01-09 17:15:24 +00:00
Luca Boccassi
cea60575f3
Merge pull request #2879 from WallStProg/dup-connect
prevent duplicate connections from PUB sockets also
2017-12-29 23:03:39 +01:00
Bill Torpey
ec05166545 prevent duplicate connections from PUB sockets also (see https://github.com/zeromq/libzmq/issues/788) 2017-12-29 14:36:59 -05:00
Luca Boccassi
4621e5885e
Merge pull request #2878 from evoskuil/master
Problem: NuGet package versioning out of sync with releases.
2017-12-28 10:37:39 +01:00
evoskuil
2859cdea0b Problem: generated NuGet files out of date. 2017-12-27 17:31:02 -08:00
evoskuil
2b91051cda Problem: NuGet package versioning out of sync with releases. 2017-12-27 16:48:04 -08:00
Luca Boccassi
4e20c4592a
Merge pull request #2870 from evoskuil/master
Problem: vc++ 11.0 (vs 2012) compile fails on move semantics.
2017-12-15 10:09:12 +00:00
evoskuil
f41b51ee04 Problem: NuGet packaging versions out of date. 2017-12-14 17:24:38 -08:00
evoskuil
7133eafae1 Problem: shared NuGet packaging descr. is compiler-specific. 2017-12-14 14:58:02 -08:00
evoskuil
9622984241 Problem: vc++ 11.0 (vs 2012) compile fails on move semantics. 2017-12-14 14:58:02 -08:00
BJovke
9f7a6aac23
Merge pull request #2869 from evoskuil/master
Problem: fn pointers are not bool (vc++ warning C4550).
2017-12-14 23:07:20 +01:00
evoskuil
8d78e08f71 Problem: fn pointers are not bool (vc++ warning C4550). 2017-12-14 12:47:38 -08:00
Luca Boccassi
87fbe5a542
Merge pull request #2868 from jasperla/openbsd/ucred
Problem: Build is broken on OpenBSD
2017-12-14 09:08:15 +00:00
Jasper Lievisse Adriaanse
22b57f6f28 Problem: Build is broken on OpenBSD
Solution: re-instate block for OpenBSD erroneously removed in 9622a830
2017-12-14 09:47:49 +01:00
Constantin Rack
15828e4804
Merge pull request #2866 from bluca/new_ver
Problem: 4.2.3 is out, version(s) are out of date
2017-12-14 07:32:32 +01:00
Luca Boccassi
28a65cad50
Merge pull request #2867 from gouarin/fix-missing-file
add ZeroMQConfig.cmake.in in EXTRA_DIST
2017-12-13 19:51:01 +00:00
gouarin
084568bdf9 add ZeroMQConfig.cmake.in in EXTRA_DIST 2017-12-13 20:15:38 +01:00
Luca Boccassi
65a1e458ab Problem: 4.2.3 is out, version(s) are out of date
Solution: bump changelog, ABI revision, library and packaging version
2017-12-13 14:12:15 +00:00
Luca Boccassi
3226b8ebdd Finalise changelog for 4.2.3 2017-12-13 13:25:26 +00:00
Luca Boccassi
fa85072fc3 Problem: no NEWS item for #2861
Solution: add it
2017-12-13 13:25:26 +00:00
Luca Boccassi
66fe4296ff
Merge pull request #2865 from jimklimov/jenkins-agent
Problem: nuget packaging refers to imatix gsl
2017-12-13 13:22:48 +00:00
Jim Klimov
e4fee1d3e0 Problem: nuget packaging refers to imatix gsl
Solution: re-point to the maintained zeromq fork

Signed-off-by: Jim Klimov <EvgenyKlimov@eaton.com>
2017-12-13 14:20:27 +01:00
Luca Boccassi
028d02a038
Merge pull request #2864 from jimklimov/jenkins-agent
Problem: Jenkinsfile uses "any" agent
2017-12-13 13:17:15 +00:00
Jim Klimov
3af762441a Problem: Jenkinsfile uses "any" agent
Solution: avoid using infrastructure and default agents by requiring a reasonable label (like in GSL and zproject)

Signed-off-by: Jim Klimov <EvgenyKlimov@eaton.com>
2017-12-12 16:08:37 +01:00
Luca Boccassi
e2dbc99c4c
Merge pull request #2861 from glaure/master
export ZMQ_STATIC compile flag to depending projects (MSVC)
2017-12-12 10:57:08 +00:00
Gunther Laure
5189898479 export ZMQ_STATIC compile flag to depending projects (MSVC)
Signed-off-by: Gunther Laure <glaure@dewetron.com>
2017-12-12 10:25:19 +01:00
Constantin Rack
9bb863618c
Merge pull request #2860 from bluca/cmake_win_static
Problem: static build broken on Win + CMake
2017-12-11 07:49:42 +01:00
Luca Boccassi
53e536a983 Problem: static build broken on Win + CMake
Solution: revert the objects optimisation, and go back to building
everything twice on Windows, as the static builds needs different
preprocessor definitions from the shared one, so the objects have to be
rebuilt.
Keep the optimisation for all the other platforms.
Fixes #2858
2017-12-10 17:42:42 +00:00
Luca Boccassi
1dd42fef83
Merge pull request #2857 from jimklimov/jfdc
Problem: Jenkinsfile does not pass distcheck etc.
2017-12-07 09:20:09 +00:00
Jim Klimov
822c6341dd Problem: Jenkinsfile does not pass DISTCHECK_CONFIGURE_FLAGS and LD_LIBRARY_PATH into make 2017-12-07 08:30:16 +01:00
Jim Klimov
c6356b9c5a Problem: Jenkinsfile tests libzmq for memcheck - there is not spoon 2017-12-07 07:11:01 +01:00
Jim Klimov
e7440779a4 Problem: Jenkinsfile timeouts expire 2017-12-07 03:28:14 +01:00
Jim Klimov
e201985ad3 Problem: Jenkinsfile does not use DISTCHECK_CONFIGURE_FLAGS 2017-12-07 02:43:26 +01:00
Luca Boccassi
737ea1f60d
Merge pull request #2856 from scpeters/patch-1
Problem: WIN32 CMAKECONFIG_INSTALL_DIR is broken
2017-12-06 22:34:13 +00:00
Steven Peters
de5e7a3983 Problem: WIN32 CMAKECONFIG_INSTALL_DIR is broken
Solution: set it to CMake instead of a subfolder of share.
See cmake find_package documentation for further info.
2017-12-06 12:45:48 -08:00
Constantin Rack
d15795b4e3
Merge pull request #2852 from bluca/pkg_include_cppzmq
Problem: Debian packages are missing zmq.hpp
2017-12-02 09:44:59 +01:00
Luca Boccassi
dee655959c
Merge pull request #2853 from jimklimov/jf
Problem: No Jenkinsfile
2017-12-01 09:21:13 +00:00
Luca Boccassi
83c042ccda Problem: Debian packages are missing zmq.hpp
Solution: install it if available. Download it from its repo as part
of the OBS source run.
Debian and Ubuntu always ship zmq.hpp in libzmq-dev, so do the same.
In the RPM world it is in its own separate package, so don't do the
same for RPM.
2017-12-01 01:09:28 +00:00
Jim Klimov
f90dbe08bb Introduce Jenkinsfile 2017-12-01 02:02:23 +01:00
Constantin Rack
fcacb603d6
Merge pull request #2851 from bluca/zpoller_wait_news
Problem: DRAFT API change not in NEWS
2017-11-26 14:32:45 +01:00
Luca Boccassi
156633feaa Problem: DRAFT API change not in NEWS
Solution: add it
2017-11-26 11:53:16 +00:00
Jim Klimov
d8aa8fc794
Merge pull request #2846 from bluca/appveyor_vs2013
Problem: no coverage for VS2013 and VS2017
2017-11-24 11:14:00 +01:00
Constantin Rack
a88abaa579
Merge pull request #2848 from bluca/linger_news
Problem: ZMQ_LINGER doc change not in NEWS
2017-11-24 08:00:59 +01:00
Luca Boccassi
e3cbdf4b93 Problem: ZMQ_LINGER doc change not in NEWS
Solution: add it
2017-11-23 17:27:09 +00:00
Luca Boccassi
90ea11c999
Merge pull request #2847 from fnaime/default_linger
Wrong ZMQ_LINGER default value
2017-11-23 17:24:37 +00:00
fnaime
da9bc91053
Wrong ZMQ_LINGER default value
Problem: Wrong linger default value

Solution: correct documentation
2017-11-23 14:15:09 -02:00
Luca Boccassi
96252e4aac Problem: Appveyor builds Libsodium when disabled
Solution: use if statements to avoid building it when it's disabled
2017-11-22 18:59:29 +00:00
Luca Boccassi
16d7686b48 Problem: no VS2013/17 CI jobs
Solution: add them to Appveyor
2017-11-22 18:41:12 +00:00
Jim Klimov
9f83a5988d
Merge pull request #2844 from bluca/cmake_double_build
Problems: CMake rebuilds everything twice, warnings with Tweetnacl, no autoconf option to disable Werror
2017-11-20 20:32:10 +01:00
Luca Boccassi
574d72b0e2 Problem: Travis builds with brew fail
Solution: add workaround until Travis really fixes the issue:
https://github.com/travis-ci/travis-ci/issues/8552
2017-11-20 15:55:35 +00:00
Luca Boccassi
08289d8f33 Problem: cannot disable Werror with autoconf
Solution: add --disable-Werror flag like the existing
--disable-pedantic or CMake's -DLIBZMQ_WERROR=OFF
Fixes #2818
2017-11-20 15:55:35 +00:00
Luca Boccassi
0298d037d0 Problem: CMake rebuilds everything twice
Solution: build all the objects separately before the link step, to
avoid rebuilding when doing both static and shared builds
2017-11-20 15:55:35 +00:00
Luca Boccassi
5264d49eab Problem: duplicate definition in CMake tweetnacl builds
Solution: don't redefine preprocessor macro if it's already defined in
platform.hpp
2017-11-19 12:47:05 +00:00
Constantin Rack
b3bf51716e
Merge pull request #2842 from bluca/accept4
Problem: accept4 not available on all platforms
2017-11-18 13:00:13 +01:00
Luca Boccassi
ac552ba448 Problem: accept4 not available on all platforms
Solution: check for availability in CMake and autoconf before using it
2017-11-18 11:33:53 +00:00
Constantin Rack
0d0d72e836
Merge pull request #2841 from bluca/news
Problems: no NEWS for 4.2.3, missing some events docs, whitespace in header
2017-11-18 10:00:54 +01:00
Luca Boccassi
5a8fd337fd Problem: NEWS not up to date
Solution: add main features and bug fixes
2017-11-17 18:15:25 +00:00
Luca Boccassi
e523adf3da Problem: new monitor events missing from docs
Solution: add them
2017-11-16 22:00:14 +00:00
Luca Boccassi
7a7c776abb Problem: trailing whitespace in include/zmq.h
Solution: remove it
2017-11-16 21:54:15 +00:00
Luca Boccassi
d49b0fad6d
Merge pull request #2840 from ccpaging/master
Problem: Build fails in Visual Studio 2008 without `stdint.h`
2017-11-16 11:48:30 +00:00
Simon Giesecke
700d7cd142
Merge pull request #2839 from bluca/linger_test
Problems: test_security_{zap|curve} often hangs, debian builds ignore test failures hiding issues
2017-11-16 10:07:14 +01:00
ccpaging
e8ad51e62f Clean code for Visual Studio 2008 compiler 2017-11-16 14:09:13 +08:00
Luca Boccassi
741e5c3db4 Problem: debian builds ignore test failures hiding issues
Solution: make test failures fail the build
2017-11-16 00:47:24 +00:00
Luca Boccassi
de8f14adf5 Problem: test_security_{zap|curve} often hangs
Solution: set 0 linger on the sockets immediately after creating them
rather than immediately before closing them.
Running through helgrind/drd highlights a few race conditions, one of
which is the setting of linger vs checking it when closing the socket.
Work around it by setting it immediately to fix the test hangs.
2017-11-16 00:44:29 +00:00
Jim Klimov
d2b6985028
Merge pull request #2833 from bluca/stream_test_parallel
Problem: test_stream_exceeds_buffer cannot be ran in parallel
2017-11-13 13:23:50 +01:00
Luca Boccassi
cffc1c4d2d
Merge pull request #2832 from ebyrob/fix-doc-zmq_msg_init-zmq_recv
Change zmq_recv to zmg_msg_recv since zmq_msg_t used there.
2017-11-10 16:02:15 +00:00
ebyrob
d7926d6d5a
Change zmq_recv to zmg_msg_recv since zmq_msg_t is only used with the zmg_msg_recv style functions. 2017-11-10 09:06:16 -05:00
Luca Boccassi
498c6bbb67 Problem: test_stream_exceeds_buffer cannot be ran in parallel
Solution: bind to wildcard and let the OS pick a free port instead
of using an hard-coded 12345 TCP port
2017-11-10 09:49:54 +00:00
Luca Boccassi
e10b350630
Merge pull request #2827 from korli/haiku
add Haiku support
2017-11-09 11:56:17 +00:00
Jerome Duval
23f89f4671 add Haiku support
* link against libnetwork.so for network functions.
2017-11-09 12:22:25 +01:00
Luca Boccassi
aafdeb7687
Merge pull request #2825 from rolftimmermans/req_relaxed_has_out
Problem: REQ socket with ZMQ_REQ_RELAXED does not report ZMQ_POLLOUT when queried for events after first message.
2017-11-08 10:18:27 +00:00
Rolf Timmermans
c8592dfbc3 Problem: REQ socket with ZMQ_REQ_RELAXED does not report ZMQ_POLLOUT when queried for events after first message.
Solution: Check for strictness before returning false if no reply has been received.
2017-11-08 09:55:14 +01:00
Simon Giesecke
b3d19ffe1a
Merge pull request #2813 from AntonBarwald/master
Problem: Sometimes on OSX we get ETIMEDOUT instead of EAGAIN
2017-11-02 17:35:00 +01:00
Anton Bärwald
630f6d6ae7 Problem: On OSX usleep() changes the errno value
Solution: Update errno value after calling usleep()
2017-11-02 16:01:11 +01:00
Luca Boccassi
812e756264 Merge pull request #2809 from sigiesec/optimize-select-win
Optimize select on Windows; reduce code duplication in select_t
2017-10-26 14:08:38 +01:00
sigiesec
f9d7eea6f9 Problem: code duplication
Solution: unified Windows & non-Windows code further
2017-10-26 11:05:39 +02:00
sigiesec
e7817ad38d Problem: code duplication
Solution: reduced code duplication by introducing local variables and
new function trigger_events
2017-10-26 10:47:05 +02:00
sigiesec
37914d1be2 Problem: get_fd_family call is expensive and called frequently for the
same fds

Solution: cache results of get_fd_family
2017-10-26 09:46:11 +02:00
Luca Boccassi
2b75a9ef18 Merge pull request #2806 from sigiesec/initialize-wsaevents-only-when-used
Problem: wsa_events are initialized/destroyed within every loop
2017-10-25 17:58:35 +01:00
sigiesec
cd32603c0e Problem: wsa_events are initialized/destroyed within every loop
iteration even if not used

Solution: Move wsa_events closer to usage
2017-10-25 18:30:03 +02:00
Luca Boccassi
dec3af4d69 Merge pull request #2803 from f18m/master
Change ZMQ_THREAD_AFFINITY to ZMQ_THREAD_AFFINITY_CPU_ADD/REMOVE
2017-10-25 09:35:49 +01:00
f18m
2aa0e6fd4d Change ZMQ_THREAD_AFFINITY to ZMQ_THREAD_AFFINITY_CPU_ADD/ZMQ_THREAD_AFFINITY_CPU_REMOVE. Avoid prefix thread names when no prefix was set. 2017-10-25 09:55:47 +02:00
Luca Boccassi
cb266ee073 Merge pull request #2619 from diorcety/winxp
Partial Windows XP support
2017-10-24 13:05:48 +01:00
Yann Diorcet
81327af557 Partial Windows XP support 2017-10-24 13:12:34 +02:00
Luca Boccassi
d459542176 Merge pull request #2800 from sigiesec/optimize-blob-t-router
Problem: one missed optimization opportunity for blob_t map lookup
2017-10-23 10:49:13 +01:00
Simon Giesecke
7ec58b279a Problem: one missed optimization opportunity for blob_t map lookup
Solution: create referencing blob_t
2017-10-23 11:12:15 +02:00
Luca Boccassi
54ca01ac0e Merge pull request #2799 from sigiesec/optimize-map-ops
Problem: use of std::map::insert is inefficient
2017-10-22 17:00:57 +01:00
Simon Giesecke
a4aceb272b Problem: use of std::map::insert is inefficient
Solution: use std::map::emplace instead, where available
2017-10-22 17:15:00 +02:00
Luca Boccassi
07eb52cbad Merge pull request #2797 from zeromq/fix-zmq-atomic-counter-value-docs
Problem: description of return value is cloned from zmq_atomic_counter_new
2017-10-21 16:23:20 +01:00
Simon Giesecke
439e49bca1 Problem: description of return value is cloned from zmq_atomic_counter_new
Solution: provide correct description

Fixes #2789
2017-10-21 17:21:00 +02:00
Simon Giesecke
0897b3e07b Problem: excessive memory allocations around blob_t (#2796)
* Problem: excessive memory allocations around blob_t

Solution: redefine blob_t as a custom type, and use reference/move
semantics where possible
2017-10-21 12:19:51 +01:00
Simon Giesecke
cfef04035c Clarify usage of zmq_close (#2792)
* Clarify usage of zmq_close
2017-10-18 15:27:00 +01:00
Luca Boccassi
2c247271a3 Merge pull request #2793 from sigiesec/timeout-comment
Problem: comment before sndtimeo/rcvtimeo does not specify dimension
2017-10-18 14:33:09 +01:00
sigiesec
cfb2129557 Problem: comment before sndtimeo/rcvtimeo does not specify dimension
Solution: add "milliseconds"
2017-10-18 15:04:54 +02:00
Doron Somech
835df92241 Merge pull request #2791 from bluca/centos6
Problems: DRAFT build broken in CentOS 6, missing bits in documentation
2017-10-17 18:56:52 +03:00
Luca Boccassi
cfe44284f7 Merge pull request #2790 from youRFate/master
added note concerning issue 2788 to INSTALL
2017-10-17 15:09:24 +01:00
youRFate
4e1588c4c3 added note concerning issue 2788 to INSTALL 2017-10-17 16:04:03 +02:00
Luca Boccassi
bd2ff7fbf8 Problem: DRAFT build broken with old GCC due to missing SIZE_MAX
Solution: define __STDC_LIMIT_MACROS in test_timers.cpp before
including testutil.hpp so that the definitions are included
2017-10-17 14:13:28 +01:00
Luca Boccassi
fe96697e8b Merge pull request #2787 from youRFate/master
added libiphlpapi to PKGCFG_LIBS_PRIVATE for static mingw builds
2017-10-17 13:39:31 +01:00
Luca Boccassi
2e2c22dd5b Problem: DRAFT build broken with old GCC due to GNU modifier
Solution: print unsigned integers instead of size_t to avoid the error:

  error: ISO C++ does not support the 'z' gnu_printf length modifier

due to very old version of GCC.
2017-10-17 13:36:10 +01:00
youRFate
6df5e771bb added libiphlpapi to PKGCFG_LIBS_PRIVATE for static mingw builds 2017-10-17 14:30:09 +02:00
Luca Boccassi
55a347c7da Problem: zmq_proxy_steerable manpage does not mention multipart
Solution: mention that the STATISTICS command returns a message with 8
frames
2017-10-17 13:20:34 +01:00
Luca Boccassi
cc8d3586cd Problem: formatting error in zmq_ctx_set
Solution: fix it
2017-10-17 13:18:46 +01:00
Luca Boccassi
fa5443e92f Merge pull request #2786 from f18m/affinity-scheduling-docs
Increase details in docs
2017-10-17 13:16:37 +01:00
f18m
b95ef430be Add docs for ZMQ_THREAD_NAME_PREFIX 2017-10-17 14:11:42 +02:00
f18m
e12f3e68c0 Increase details in docs 2017-10-17 14:03:53 +02:00
f18m
f25cd6e7be Background thread names (#2784)
* Add ZMQ_THREAD_NAME_PREFIX ctx option
2017-10-17 12:06:50 +01:00
Doron Somech
9af03e2214 Merge pull request #2785 from bluca/travis_norm
Problem: Travis does not build with NORM
2017-10-17 14:03:01 +03:00
Luca Boccassi
5311aa9cd9 Problem: Travis does not build with NORM
Solution: install package and enable the build on some Linux jobs
2017-10-17 11:17:13 +01:00
Luca Boccassi
189b551b40 Merge pull request #2783 from f18m/docs-proxy-stats
Add documentation for new steerable proxy command
2017-10-17 11:08:00 +01:00
f18m
e2678b8b11 Add documentation for new steerable proxy command 2017-10-17 11:08:09 +02:00
Jim Klimov
920288b5b7 Merge pull request #2781 from bluca/norm_pkgconfig
Problems: autoconf does not use pkgconfig for NORM, deb packages do not build with libnorm
2017-10-17 02:29:25 +02:00
Luca Boccassi
9ad8ddf401 Problem: deb packages do not build with libnorm
Solution: add dependency and configure flag
2017-10-16 23:32:15 +01:00
Luca Boccassi
78cdff3a3e Problem: autoconf does not use pkgconfig for NORM
Solution: use the pkgconfig macro as the first step and then fallback
to manual checks
2017-10-16 23:23:32 +01:00
Constantin Rack
39ad27c970 Merge pull request #2779 from bluca/thread_fixes
Problems: no documentation for new thread affinity and priority options, test_ctx_options only checks global DRAFT flag
2017-10-16 14:05:21 +02:00
Luca Boccassi
e5e83c53e5 Problem: ZMQ_THREAD_AFFINITY is not documented
Solution: add a section in zmq_ctx_set's manpage
2017-10-16 12:43:34 +01:00
Luca Boccassi
1478517e1a Problem: use of nice() for ZMQ_THREAD_PRIORITY not documented
Solution: mention that it is used on Linux when SCHED_OTHER is selected
2017-10-16 12:42:59 +01:00
Luca Boccassi
4c2a95eab2 Problem: test_ctx_options only checks global DRAFT flag
Solution: this will break once the tested APIs move from DRAFT to STABLE
so instead check for the specific macros.
2017-10-16 12:34:13 +01:00
f18m
bfbb4ff2e9 Background threads enhancements (#2778)
* Background thread scheduling 

- add ZMQ_THREAD_AFFINITY ctx option; set all thread scheduling options
from the context of the secondary thread instead of using the main
process thread context!
- change ZMQ_THREAD_PRIORITY to support setting NICE of the background
thread when using SCHED_OTHER
2017-10-16 12:29:03 +01:00
Constantin Rack
577e713e2c Merge pull request #2775 from arsenm/master
Add my RELICENSE
2017-10-13 08:56:19 +02:00
Matt Arsenault
5f03120ac5 Add my RELICENSE 2017-10-12 22:14:39 -07:00
Constantin Rack
23da2347bd Merge pull request #2773 from bluca/zap
Problems: strict ZAP protocol adherence is backward incompatible, minor static analysis warnings
2017-10-09 20:29:08 +02:00
Luca Boccassi
b6aee51691 Problem: strict ZAP protocol adherence is backward incompatible
Solution: add ZMQ_ZAP_ENFORCE_DOMAIN to hide backward incompatible
change and make it disabled by default.
In a future release that breaks API compatibility we can then switch
the default to enabled in order to achieve full RFC compatibility.

Fixes #2762
2017-10-09 17:48:33 +01:00
Luca Boccassi
50bddbaac9 Problem: dead code in options.hpp
Solution: remove unused zap_ipc_creds boolean variable
2017-10-09 13:52:56 +01:00
Luca Boccassi
e3ee55b191 Problem: missing indentation for UDP branch
Solution: fix it
2017-10-09 13:52:56 +01:00
Luca Boccassi
c8f3f8a5da Problem: ambiguos bitwise ANDs in if statements
Solution: wrap bitwise ANDs in brackets as the static analyzer suggests
2017-10-09 13:52:56 +01:00
Constantin Rack
136431ebf7 Merge pull request #2769 from bluca/ipc_fixes 2017-10-07 21:53:24 +02:00
Constantin Rack
a6de31fff6 Merge pull request #2771 from bluca/lcov_autoconf
Problem: lcov autoconf macro out of date
2017-10-06 23:42:04 +02:00
Luca Boccassi
6a9dec30a9 Problem: lcov autoconf macro out of date
Solution: update it
2017-10-06 19:37:46 +01:00
Luca Boccassi
ed64585e93 Problem: test_rebind_ipc might not see race condition on fast envs
Solution: pre-create the second socket to save a few cycles between
closing the old one and binding the new one
2017-10-06 11:32:14 +01:00
Luca Boccassi
53f463a3fa Problem: test_rebind_ipc uses generic socket file name
Solution: name it after the test to avoid possible clashes when
running tests in parallel.
2017-10-06 11:08:40 +01:00
Luca Boccassi
7ad06f1449 Problem: IPC event_closed logs -1 as the FD
Solution: take a copy of the file descriptor before setting it to
retired_fd.
2017-10-06 09:53:59 +01:00
Luca Boccassi
9be8cebd21 Merge pull request #2765 from GreatFruitOmsk/issue-2764
Problem: Race condition in IPC sockets
2017-10-06 09:25:33 +01:00
Ilya Kulakov
656cdb959a Problem: Race condition in IPC sockets
Solution: Don't unlink file on close

File may not belong to the socket at that point.
2017-10-05 14:57:10 -07:00
Luca Boccassi
01a3f3955c Merge pull request #2768 from ADDubovik/master
fix build for msvc2017
2017-10-05 21:18:19 +01:00
Alexander Dubovik
02c46463d7 fix build for msvc2017 2017-10-05 22:54:12 +03:00
Luca Boccassi
99c527702b Merge pull request #2766 from hxw/master
add __FreeBSD__ to ifdefs
2017-10-05 09:17:51 +01:00
Christopher Hall
997825bdf1 add __FreeBSD__ to ifdefs
On FreeBSD the sysmbol __FreeBSD_kernel__ is only defines if a
specific param.h file is included, unlike Debian/kFreeBSD where this
symbol is always defined.  So also compile the FreeBSD specific code
if __FreeBSD__ is defined for FreeBSD 11 & 12 compatibility.

Signed-off-by: Christopher Hall <hsw@ms2.hinet.net>
2017-10-03 15:30:42 +08:00
Luca Boccassi
44f96a3652 Merge pull request #2745 from sigiesec/rename-identity
Problem: term "identity" is confusing
2017-09-20 10:08:45 +02:00
Constantin Rack
f6688f0516 Merge pull request #2756 from bluca/reconnect_ivl_connect
Problem: zmq_connect fails after disconnect due to RECONNECT_IVL == -1
2017-09-20 07:46:19 +02:00
sigiesec
2c8a7223b8 Problem: remaining use of "identity"
Solution: replaced by "routing id"
2017-09-19 17:55:00 +02:00
sigiesec
7e3f4b1d32 Problem: ZMTP protocol broken w.r.t. Identity property
Solution: differentiate propertly between ZMTP property names and ZeroMQ API property names
2017-09-19 17:55:00 +02:00
sigiesec
a5e3a65ae2 Problem: inconsistency between zmq.h and zmq_draft.h
Solution: fix zmq_draft.h
2017-09-19 17:55:00 +02:00
sigiesec
4b821d8f84 Problem: remaining uses of "identity"
Solution: replaced by "routing id"
2017-09-19 17:54:59 +02:00
sigiesec
1414bf938c Problem: use of unqualified "id" in code example
Solution: use "routing_id" instead
2017-09-19 17:54:52 +02:00
sigiesec
d6694e7d47 Problem: Use of "rid" in the docs
Solution: Replaced by "routing id"
2017-09-19 17:53:54 +02:00
sigiesec
12f62c74c1 Problem: docs refer to "Identity"
Solution: change docs to refer to "Routing id"
2017-09-19 17:53:54 +02:00
sigiesec
fab57634b4 Problem: Message metadata properties still refer to "identity"
Solution: Renamed, but support querying the property by its old name
2017-09-19 17:53:53 +02:00
sigiesec
27c7e52a5a Problem: Usage of "rid" in server_t
Solution: Replaced by "routing_id"
2017-09-19 17:53:53 +02:00
sigiesec
41bae55af7 Problem: inconsistent naming related to routing ids
Solution: renamed routing_id fields in pipe_t, renamed ZMQ_CONNECT_RID to ZMQ_CONNECT_ROUTING_ID
2017-09-19 17:53:53 +02:00
sigiesec
9e7507b38b Problem: term "identity" is confusing
Solution: replace by "routing id"
2017-09-19 17:53:44 +02:00
Luca Boccassi
76dfec7fc3 Merge pull request #2755 from sigiesec/client-side-error
Problem: tests where client should receive an ERROR sometimes do not
2017-09-19 16:48:37 +02:00
Luca Boccassi
edb4ca1023 Problem: zmq_connect fails after disconnect due to RECONNECT_IVL == -1
Solution: when a connection breaks and ZMQ_RECONNECT_IVL is set to -1,
which means a reconnection will not be attempted, send a message from
the I/O thread to the application thread to make the socket call
term_endpoint, which is the equivalent of manually calling
zmq_disconnect.
This way subsequent zmq_connect call to the same endpoint will attempt
again to do a connection.
Otherwise, for some socket types like SUBs, those new connects will
fail as the endpoint is recorded, despite the connection having been
permanently closed.

Add test cases to exercise this corner case with TCP and IPC.
2017-09-19 14:05:43 +01:00
sigiesec
e0243dcbca Problem: tests where client should receive an ERROR sometimes do not
receive an ERROR (probably because the connection is closed before)

Solution: wait for client-side monitor events before closing the client
socket

Fixes #2705
2017-09-19 11:16:05 +02:00
Luca Boccassi
843e627bed Merge pull request #2753 from zeromq/zap-domain-docs
Problem: documentation of ZMQ_ZAP_DOMAIN is wrong
2017-09-19 10:17:15 +02:00
sigiesec
7297df6278 Problem: documentation of ZMQ_ZAP_DOMAIN is wrong
Solution: fix documentation
2017-09-19 09:13:57 +02:00
Luca Boccassi
e2f2193bec Merge pull request #2752 from sigiesec/test-no-zap-handler
Problem: missing tests and inconsistent behaviour for ZAP corner cases
2017-09-18 20:19:14 +02:00
sigiesec
77f76a49b2 Problem: no tests for cases 5 and 6 of #2711
Solution: added tests
2017-09-18 18:43:32 +02:00
sigiesec
e546f9296e Problem: duplicated code & inconsistent behaviour between
mechanisms

Solution: uniformly require a ZAP domain to be set to activate ZAP
handling, clarify comment on Stonehouse pattern
2017-09-18 17:01:38 +02:00
sigiesec
ee8b8bd29c Problem: no test for ZAP handler terminating in flight
Solution: added test & some improvements of test utils
2017-09-18 16:54:03 +02:00
sigiesec
a5f94cb610 Problem: tests without ZAP handler are failing
Solution: emit events as expected by tests, and refuse connections when
ZAP is required but no handler started

Addresses #2711 partially
2017-09-18 12:58:09 +02:00
sigiesec
13b972b226 Problem: no tests without ZAP handler where one is expected
Solution: added test case for NULL/PLAIN/CURVE
2017-09-18 10:26:28 +02:00
Jim Klimov
9071265c02 Merge pull request #2751 from bluca/centos6
Problem: CentOS 6 build fails
2017-09-18 01:32:49 +02:00
Luca Boccassi
40c1a3ab7e Problem: CentOS 6 build fails
Solution: use same autoconf workaround as for Debian 7, and manually
create the config directory
2017-09-17 20:44:28 +01:00
Luca Boccassi
2e167886cf Merge pull request #2749 from reza-ebrahimi/master
Update AUTHERS File
2017-09-15 00:10:31 +02:00
Luca Boccassi
23c2f4987b Merge pull request #2748 from tkoeppe/relicense
RELICENSE: Google, Inc.
2017-09-14 23:54:41 +02:00
Reza Ebrahimi
633325e0bc Update AUTHERS File 2017-09-14 22:04:26 +04:30
Thomas Köppe
21d78f4789 RELICENSE: Google, Inc.
Relevant commits: ddb82a546b8786b23b977087000e296589529cb2, 68f5926ec65d33043ba3f1687e49d1e6abe47fa2

Also adds AUTHORS entry that should have been part of the previous commits.
2017-09-13 16:31:38 +01:00
Luca Boccassi
5de2a82be8 Merge pull request #2744 from msune/refactor_poller_wait
Problem: duplicated socket_poller::wait() code
2017-09-13 00:48:26 +02:00
Marc Sune
5b92989540 Problem: duplicated socket_poller::wait() code
zmq::socket_poller_t::wait() had an important set of common lines
between POLL and SELECT variant.

Solution: refactor zmq::socket_poller_t::wait() and add the
following methods:

zmq::socket_poller_t::zero_trail_events()
zmq::socket_poller_t::check_events()
zmq::socket_poller_t::adjust_timeout()

Signed-off-by: Marc Sune <mardevel@gmail.com>
2017-09-12 21:47:57 +02:00
Constantin Rack
18498f620f Merge pull request #2746 from zeromq/revert-2743-rename-identity
Revert "Problem: term "identity" is confusing"
2017-09-07 15:24:07 +02:00
Doron Somech
af03241dcb Revert "Problem: term "identity" is confusing" 2017-09-07 15:47:43 +03:00
Doron Somech
08b01a5108 Merge pull request #2743 from sigiesec/rename-identity
Problem: term "identity" is confusing
2017-09-07 12:58:56 +03:00
sigiesec
cd55c62499 Problem: use of unqualified "id" in code example
Solution: use "routing_id" instead
2017-09-07 11:21:13 +02:00
sigiesec
0874eec803 Problem: Use of "rid" in the docs
Solution: Replaced by "routing id"
2017-09-07 11:18:50 +02:00
sigiesec
f174003740 Problem: docs refer to "Identity"
Solution: change docs to refer to "Routing id"
2017-09-07 11:09:18 +02:00
sigiesec
deae59dca9 Problem: Message metadata properties still refer to "identity"
Solution: Renamed, but support querying the property by its old name
2017-09-07 10:33:25 +02:00
sigiesec
ae2ea1a655 Problem: Usage of "rid" in server_t
Solution: Replaced by "routing_id"
2017-09-07 10:33:25 +02:00
sigiesec
e00131dd43 Problem: inconsistent naming related to routing ids
Solution: renamed routing_id fields in pipe_t, renamed ZMQ_CONNECT_RID to ZMQ_CONNECT_ROUTING_ID
2017-09-07 10:33:13 +02:00
sigiesec
1daf83079a Problem: term "identity" is confusing
Solution: replace by "routing id"
2017-09-06 17:45:56 +02:00
Doron Somech
876d90732d Merge pull request #2741 from bluca/proxy_stats_typos
Problems: typos in proxy_steerable stats
2017-09-06 12:04:57 +03:00
Luca Boccassi
4fac78ec31 Problem: proxy stat 5th multipart message treated as 1st
Solution: fix it
2017-09-06 08:27:29 +01:00
Luca Boccassi
d7da31ed25 Problem: typo in comment in proxy.cpp
Solution: fix it
2017-09-06 08:27:17 +01:00
Doron Somech
f520738a0a Merge pull request #2740 from bluca/proxy_stats_frames
Problem: proxy_steerable STATISTICS returns conflated buffers
2017-09-06 08:58:34 +03:00
Luca Boccassi
b8695a47b5 Problem: proxy_steerable STATISTICS returns conflated buffers
Solution: split each stat into its own frame, to make it simpler and
easier to use it, especially from high level bindings
2017-09-06 01:28:28 +01:00
Constantin Rack
a89d79aa71 Merge pull request #2738 from bluca/proxy_stat_fixes
Problems: proxy stats test break 32bit build, not declared as draft
2017-09-05 20:52:51 +02:00
Luca Boccassi
78c4d33600 Problem: new STATISTICS proxy_steerable not behind DRAFT
Solution: ifdef it until it's declared stable
2017-09-05 17:37:52 +01:00
Luca Boccassi
c5aef5e078 Problem: compilation fails on 32 bit
Solution: trucate 64 bit stats in test_proxy, as it's much easier than
to try and print 64 unsigned integers in a portable way
2017-09-05 17:23:08 +01:00
f18m
4be9513443 Add "STATISTICS" command to zmq_proxy_steerable() (#2737)
* Issue #2736: Add STATISTICS command to zmq_proxy_steerable()
2017-09-05 17:05:04 +01:00
Luca Boccassi
f4b32aa792 Merge pull request #2734 from pavel-pimenov/fix-v1001
Variable is assigned but is not used until the end of the function
2017-09-04 15:25:43 +01:00
Luca Boccassi
197ae832bf Merge pull request #2735 from pavel-pimenov/fix-728
Excessive check options.mechanism == ZMQ_NULL
2017-09-04 14:50:34 +01:00
pavel.pimenov
0e8bf3520c V728 An excessive check 'options.mechanism == 0' can be simplified.
The '||' operator is surrounded by opposite expressions. session_base.cpp 377
2017-09-04 15:25:31 +03:00
pavel.pimenov
51ac7d28c5 V1001 The 'ptr' variable is assigned but is not used until the end of the function. 2017-09-04 15:15:35 +03:00
Constantin Rack
7afd6ab5ef Merge pull request #2732 from bluca/compiler_warnings
Problems: compiler warnings
2017-09-01 22:11:57 +02:00
Luca Boccassi
8feed48bb9 Problem: switch statements without breaks
Solution: add /* FALLTHROUGH */ comments so that nagging compilers
don't nag
2017-09-01 20:01:15 +01:00
Luca Boccassi
31089326fb Problem: unused variables warnings in get_peer_state
Solution: wrap arguments with LIBZMQ_UNUSED
2017-09-01 19:57:00 +01:00
Luca Boccassi
0382118371 Problem: unused variable in test_wait_corner_cases
Solution: don't pass it
2017-09-01 19:55:51 +01:00
Luca Boccassi
31e3977ab9 Merge pull request #2731 from sigiesec/fix-issue-2723
Problem: assertion in src\select.cpp:111 on Windows or hang on zmq_ctx_destroy
2017-09-01 19:51:39 +01:00
Luca Boccassi
17b95683ce Merge pull request #2730 from sigiesec/fix-issue-2623
Problem: unable to query state of a router for a particular peer
2017-09-01 16:23:42 +01:00
sigiesec
79e28af4ce Problem: new function zmq_socket_get_peer_state not in zmq_draft.h
Solution: added function to zmq_draft.h
2017-09-01 17:15:23 +02:00
sigiesec
f3b268d84f Problem: no tests for error cases of zmq_socket_get_peer_state
Solution: added tests
2017-09-01 16:28:59 +02:00
sigiesec
eeccbbd6f8 Problem: test case fails with tcp transport
Solution: use inproc transport instead
2017-09-01 16:28:59 +02:00
sigiesec
fc334bc759 Problem: unclean and duplicated test code
Solution: refactoring
2017-09-01 16:28:59 +02:00
sigiesec
f70097c1cf Problem: test does not trigger HWM
Solution: modify order of operations, add diagnostic output
2017-09-01 16:28:59 +02:00
sigiesec
48a1e637b6 Problem: zmq_socket_get_peer_state is not implemented
Solution: add initial implementation
2017-09-01 16:28:58 +02:00
sigiesec
cda20260b3 Problem: missing call to zmq_poller_destroy
Solution: added call
2017-09-01 16:28:58 +02:00
sigiesec
f4d139bd16 Problem: duplicated code in socket-related functions
Solution: extract as_socket_base_t function
2017-09-01 16:28:58 +02:00
sigiesec
efa86fe629 Problem: no test case using the proposed zmq_socket_get_peer_state function
Solution: added test case (with dummy implementation of zmq_socket_get_peer_state)
2017-09-01 16:28:58 +02:00
sigiesec
49e1b8b75f Problem: test case in main function
Solution: extracted test_basic function
2017-09-01 16:28:57 +02:00
Jim Klimov
4691714d5c Merge pull request #2729 from bluca/cmake
Problems: ZMQ_HAVE_O_CLOEXEC not defined by CMake, support for CMake << 3.1 broken
2017-09-01 14:53:45 +02:00
Luca Boccassi
fab14a3cc1 Problem: support for CMake << 3.1 broken
Solution: remove redundant target_sources directive
2017-09-01 10:59:48 +01:00
sigiesec
23e018f37a Problem: termination is requested from a session's owner when already in
pending termination while processing an error

Solution: terminate pipe instead

Fixes #2723
2017-09-01 11:55:31 +02:00
sigiesec
eb8105cde1 Problem: assertion failure in select.cpp:111 under Windows
Solution: handle case when get_fd_family fails
2017-09-01 11:55:31 +02:00
Luca Boccassi
124e04659c Problem: ZMQ_HAVE_O_CLOEXEC not defined by CMake
Solution: add it to CMake's platform.hpp.in
2017-09-01 10:15:42 +01:00
Luca Boccassi
28a4b9a969 Merge pull request #2727 from fove-robin/fix-o-cloexec
Problem: ZMQ_HAVE_O_CLOEXEC always disabled
2017-09-01 09:39:39 +01:00
Robin Stacey
83f54d90ad Problem: ZMQ_HAVE_O_CLOEXEC always disabled
Solution: Escape quotes in cmake test.
2017-09-01 16:37:27 +09:00
Simon Giesecke
f1c72dc8e5 Merge pull request #2721 from bjovke/my_work
Problem: Inconsistent size_t/int usage. size_t and int don't match in 64 bit build and produce warnings. Solution: types corrected.
2017-08-28 15:47:57 +02:00
bjovke
91e0d689bb Problem: Inconsistent size_t/int usage. Solution: types corrected. 2017-08-28 15:03:46 +02:00
Constantin Rack
9c8844fd08 Merge pull request #2719 from jimklimov/setThreadName
Problem: cosmetic setThreadName() can be fatal
2017-08-25 16:01:52 +02:00
Jim Klimov
40a3b0746f Problem: cosmetic setThreadName() can be fatal
Solution: do not assert() the values returned; if we failed to set the thread name - we just have harder debugging, not flawed production conditions.
Closes github issue #2679

Signed-off-by: Jim Klimov <EvgenyKlimov@eaton.com>
2017-08-25 15:30:03 +02:00
Luca Boccassi
5c981be9f8 Merge pull request #2718 from sigiesec/issue-template
Problem: bug reports are often missing relevant information
2017-08-25 12:20:43 +01:00
sigiesec
3f946428ec Problem: bug reports are often missing relevant information
Solution: provide template for bug reports
2017-08-25 13:16:23 +02:00
Constantin Rack
f6933f85a9 Merge pull request #2716 from sigiesec/remove-tweetnacl-from-coverage
Problem: coverage includes tweetnacl, which is not our code
2017-08-23 15:16:33 +02:00
sigiesec
fc2b7cd5ea Problem: coverage includes tweetnacl, which is not our code
Solution: exclude tweetnacl from coverage
2017-08-23 14:42:52 +02:00
Luca Boccassi
3d1f11881f Merge pull request #2715 from sigiesec/add-timers-tests
Problem: insufficient tests for zmq_timers_* and inadequate behaviour in corner cases
2017-08-23 12:52:43 +01:00
sigiesec
7eebed56a5 Problem: no test for zmq_timers_timeout without any active timers
Solution: add test
2017-08-23 10:31:44 +02:00
sigiesec
6147e45a07 Problem: missing tests for zmq_timers_* corner cases, missing handling of such corner cases, code duplication, missing assertions in test code
Solution: add tests, add checks to timers_t, add match_by_id functor, add assertions
2017-08-23 09:41:34 +02:00
sigiesec
d072d57e2e Problem: no tests for zmq_timer_* with NULL timers argument
Solution: added tests
2017-08-23 09:41:22 +02:00
sigiesec
8b263d5820 Problem: test_timers.cpp sleep_ duplicates msleep from testutil
Solution: replace sleep_ my msleep
2017-08-23 09:05:10 +02:00
Doron Somech
8f3113b278 Merge pull request #2714 from sigiesec/add-poller-tests
Problem: insufficient tests for zmq_poller_*
2017-08-22 22:38:36 +03:00
sigiesec
f685a3ffd2 Solution: unreachable code paths in socket_poller_t
Problem: replaced by assertions resp. removed
2017-08-22 21:23:09 +02:00
sigiesec
8ae91fdf9a Problem: no test cases for zmq_poller_add*, zmq_poller_modify*, zmq_poller_remove* corner cases
Solution: added test cases
2017-08-22 20:22:39 +02:00
sigiesec
68f416c0ca Problem: missing test case for zmq_poller_wait_all with negative number of events
Solution: add test case
2017-08-22 20:04:55 +02:00
sigiesec
a71f7b0405 Problem: zmq_poller_* uses ETIMEDOUT (instead of the usual EAGAIN) to indicate timeouts
Solution: replace ETIMEDOUT within socket_poller_t and all client code by EAGAIN

Fixes #2713
2017-08-22 20:00:29 +02:00
sigiesec
6a3c053a3e Problem: EFAULT is returned for bad file descriptors passed to zmq_poller_*_fd
Solution: Return EBADF instead
2017-08-22 19:43:56 +02:00
sigiesec
74303b08e6 Problem: calling zmq_poller_wait* with NULL events causes an assertion, as opposed to other NULL arguments, which return an error
Solution: return EFAULT when such an operation is attempted
2017-08-22 19:43:56 +02:00
sigiesec
c1a4cfdd9f Problem: waiting on an empty poller with infinite timeout waits forever
Solution: return EFAULT when such an operation is attempted
2017-08-22 19:43:56 +02:00
sigiesec
0c9b16d62a Problem: missing test cases for zmq_poller_* functions called with invalid arguments and corner cases for zmq_poller_wait_*
Solution: added test cases
2017-08-22 19:43:42 +02:00
sigiesec
2e4fc4faf0 Problem: zmq_poller_*_fd functions do not check for invalid fd
Solution: add checks, added test cases
2017-08-22 19:28:07 +02:00
sigiesec
f9af5503b4 Problem: missing test cases for zmq_poller_* functions called with invalid arguments
Solution: added test cases
2017-08-22 19:28:07 +02:00
Luca Boccassi
6f665eb951 Merge pull request #2712 from sigiesec/add-socket-null-tests
Problem: no tests for socket-related functions passing NULL as socket
2017-08-22 18:01:14 +01:00
sigiesec
9a336622fb Problem: no tests for socket-related functions passing NULL as socket
Soluton: added tests
2017-08-22 16:22:38 +02:00
Luca Boccassi
1881735f7d Merge pull request #2710 from sigiesec/remove-select-rm_fd-code-duplication
Problem: code duplication within zmq::select_t::rm_fd
2017-08-21 17:05:39 +01:00
sigiesec
c3c2515542 Problem: code duplication within zmq::select_t::rm_fd
Solution: extract find_fd_entry_by_handle from rm_fd
2017-08-21 14:36:50 +02:00
Jim Klimov
ee7f5b9b97 Merge pull request #2708 from bluca/obs_flair
Problem: packages builds not mentioned in README.md
2017-08-21 14:32:18 +02:00
Luca Boccassi
c2ce55aaa4 Merge pull request #2707 from sigiesec/test-monitor-diagnostics
Problem: test_monitor fails sometimes due to a wrong event received but unclear which one
2017-08-21 12:25:10 +01:00
Luca Boccassi
7cd890a8bc Problem: packages builds not mentioned in README.md
Solution: add brief description and links
2017-08-21 11:51:16 +01:00
Simon Giesecke
0aef54421d Problem: test_monitor is disabled on Windows
Solution: enable test
2017-08-21 12:20:37 +02:00
Simon Giesecke
82227136ea Problem: test_monitor sometimes fails due to a wrong event received, but not known which
Solution: add diagnostic output
2017-08-21 12:20:36 +02:00
Luca Boccassi
5e85fa6a39 Merge pull request #2698 from sigiesec/client-side-auth-error-events
Problem: no tests for client-side events for successful handshake and authentication failure in handshake
2017-08-20 22:42:51 +01:00
Simon Giesecke
74203729bd Problem: test_zap_unsuccessful_status_500 and test_curve_security_with_bogus_client_credentials sometimes fail, particulary on slow/valgrind runs
Solutio: relax test assertion
2017-08-20 22:47:15 +02:00
sigiesec
bd0675b93f Problem: no tests for client-side events for successful handshake and authentication failure in handshake
Solution: added tests for CURVE, add emitting of client-side event in curve_client_t; add ZAP code 300/500 tests for all mechanisms; suppress sending an error message for ZAP code 300
2017-08-20 22:45:14 +02:00
Constantin Rack
7481fba561 Merge pull request #2706 from bluca/gssapi_test_monitor
Problem: test_security_gssapi expects wrong event
2017-08-20 13:09:50 +02:00
Luca Boccassi
b239d99a2c Problem: test_security_gssapi does not close messages
Solution: do it to avoid leaks. Even though they are below 33 bytes so
it's all allocated on the stack, the small message size might change in
the future.
2017-08-20 11:54:49 +01:00
Luca Boccassi
cd09065c8a Problem: test_security_gssapi expects wrong event
Solution: fix it
2017-08-20 11:54:13 +01:00
Luca Boccassi
72b517b309 Merge pull request #2704 from sigiesec/fix-test-sockopt-hwm
Problem: test_sockopt_hwm fails occasionally
2017-08-20 11:40:05 +01:00
Simon Giesecke
00c6962516 Problem: test failing due to too few messages sent relative to SNDHWM
Solution: relaxed assertion to accept 10% of the SNDHWM, and updated documentation accordingly
2017-08-20 11:51:09 +02:00
sigiesec
4c2acdacca Problem: wrong assumption on behavior of ZMQ_SNDHWM in test_sockopt_hwm.cpp
Solution: align assertions with specification of ZMQ_SNDHWM (actual number of enqueueable messages may be lower)
2017-08-20 11:43:13 +02:00
Constantin Rack
7283574cee Merge pull request #2703 from bluca/rpm_la
Problem: RPM -devel still ships libzmq.la
2017-08-20 07:33:08 +02:00
Luca Boccassi
cfc3c7a66b Problem: spec changelog out of date
Solution: mention recent changes
2017-08-19 22:04:31 +01:00
Luca Boccassi
b3acae89e2 Problem: RPM -devel still ships libzmq.la
Solution: don't. libtool's archive files are already being deprecated
in Debian-based distros. They are no longer necessary, and cause the
reverse dependencies to over-link.
EG: when built with sodium/pgm/krb5, all applications/libraries
linking against libzmq would be forced to link against sodium/pgm/krb5
despite not using any of those libraries symbols.
2017-08-19 22:04:31 +01:00
Constantin Rack
13f3ab988a Merge pull request #2702 from bluca/test
Problems: GSSAPI builds broken with picky compilers, Debian/RPM packages do not use GSSAPI, no CI jobs that test GSSAPI
2017-08-19 19:58:09 +02:00
Luca Boccassi
68ba6d17be Problem: Travis does not test PGM
Solution: enable option and install build-dependency for the jobs that
already install packages only, to minimise marginal cost in term of
runtime
2017-08-19 17:54:42 +01:00
Luca Boccassi
f979ed4f35 Problem: Travis does not test GSSAPI
Solution: enable option and install build-dependency for the jobs that
already install packages only, to minimise marginal cost in term of
runtime
2017-08-19 17:53:57 +01:00
Luca Boccassi
8896b672c4 Problem: RPM build does not pass correct configure options
Solution: fix it
2017-08-19 17:40:15 +01:00
Luca Boccassi
962630fd65 Problem: Debian package not built with GSSAPI
Solution: add build-dependency and configure option
2017-08-19 17:40:15 +01:00
Luca Boccassi
f6ce019fff Problem: incompatible parameter passed to send_zap_request
Solution: cast from void* to uint8_t* to match new definition
2017-08-19 17:40:15 +01:00
Luca Boccassi
7c85bf2f88 Problem: uninitialised variables in gssapi_server constructor
Solution: initialise session and peer_address
2017-08-19 17:40:15 +01:00
Luca Boccassi
2ba0149ee4 Problem: gssapi_mechanism_base_t initialisation misses one param
Solution: pass the session as well as the options
2017-08-19 17:40:15 +01:00
Luca Boccassi
83c9c0b55f Problem: gssapi_client does not have a peer_address param
Solution: remove it from the gssapi_mechanism_base initialiser
2017-08-19 17:40:15 +01:00
Luca Boccassi
24b2f61b1b Problem: gssapi_server out of date with zap_client
Solution: remove local unused zap_client variable
2017-08-19 17:40:15 +01:00
Luca Boccassi
c8097af884 Problem: DRAFT GSSAPI socket options in wrong section cause duplication
Solution: move them together with the other DRAFT socket options, and
change value of DRAFT ZMQ_BINDTODEVICE from 90 to 92 to avoid clash
2017-08-19 17:40:15 +01:00
Luca Boccassi
6f49e40e36 Problem: gssapi_mechanism_base does not include mechanism_base
Solution: include mechanism_base.hpp instead of mechanism.hpp
2017-08-19 17:40:15 +01:00
Luca Boccassi
e2ffa2a77b Problem: produce_ready in gssapi_mechanism_base not deduped
Solution: call make_command_with_basic_properties
2017-08-19 17:40:15 +01:00
Doron Somech
2c8a1315c1 Merge pull request #2700 from bluca/gssapi_uninit_ref
Problems: free of stack variable, TODO left to evaluate
2017-08-19 14:49:52 +03:00
Luca Boccassi
7453a02144 Problem: CMake on Linux does not link libzmq with optional libs
Solution: add missing target_link_libraries
Fixes #2701
2017-08-19 12:26:36 +01:00
Luca Boccassi
90b6c102bb Problem: various unused variables warnings
Solution: use LIBZMQ_UNUSED where necessary
2017-08-19 12:18:51 +01:00
Luca Boccassi
e81a40b8bd Problem: CMake build ignores SO_BINDTODEVICE
Solution: add it to CMake's platform.hpp.in
2017-08-19 12:07:25 +01:00
Luca Boccassi
9387897674 Problem: multi-part able sockets deprecated in favour of non-multi-part
Solution: as discussed, remove the deprecation notices, as many users
expressed the need for multi-part support.
Fixes #2699
2017-08-19 11:23:18 +01:00
Luca Boccassi
5b1c0cd0ac Problem: test_security_gssapi fails to build
Solution: monitor new events only if DRAFT APIs are enabled, and
convert to new event types. Same for DRAFT socket options.
2017-08-18 16:56:36 +01:00
Luca Boccassi
330856daec Problem: double definition in test_security_gssapi
Solution: remove the second one to fix build failure
2017-08-18 16:28:03 +01:00
Luca Boccassi
b7346f8e00 Problem: gssapi search in autoconf does not use pkgconfig
Solution: use it before falling back to headers checks
2017-08-18 16:24:53 +01:00
Luca Boccassi
7be3efc936 Problem: TODO in gssapi mechanism
Solution: remove it.
Looking at the code:

https://github.com/krb5/krb5/blob/master/src/lib/gssapi/mechglue/g_unseal.c#L55

gss_unwrap as the very first thing checks that plaintext is not a
null pointer, which in our case it's true given it's on the stack,
and then initialises its members to 0 length and null ptr.

https://github.com/krb5/krb5/blob/master/src/lib/gssapi/mechglue/g_rel_buffer.c#L36

So it should be safe to release it in all cases, and the release API
seems to check again if it's not a null pointer and then if the
members are 0 length and null pointer it's a no-op.
2017-08-18 15:58:35 +01:00
Luca Boccassi
77444e206c Problem: free on stack variable in GSSAPI mechanism
Solution: free wrapper.value instead of wrapper.
2017-08-18 15:57:51 +01:00
Doron Somech
80f4a87fb9 Merge pull request #2697 from bluca/vs2008
Problem: missing files from VS2008 solution
2017-08-18 16:49:20 +03:00
Luca Boccassi
f0554e7f16 Merge pull request #2696 from sigiesec/gssapi-dont-abort-on-bad-data
Problem: gssapi_mechanism_base_t aborts the application when it receives a message it cannot decode
2017-08-18 12:50:28 +01:00
Luca Boccassi
8ecfee475c Problem: missing files from VS2008 solution
Solution: generate list of sources and headers with:

 ls -1 src/*cpp | sort | sed 's|src/\(.*\)|      <File RelativePath="..\\..\\..\\..\\src\\\1" />|g'
 ls -1 src/*hpp | sort | sed 's|src/\(.*\)|      <File RelativePath="..\\..\\..\\..\\src\\\1" />|g'

and add them.
2017-08-18 12:45:12 +01:00
sigiesec
898691e2eb Problem: gssapi_mechanism_base_t aborts the application when it receives a message it cannot decode
Solution: emit an ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL event instead of using zmq_assert
2017-08-18 12:29:37 +02:00
Luca Boccassi
31c72e22ab Merge pull request #2695 from sigiesec/fine-grained-handshake-error-codes
Problem: Values in ZMQ_EVENT_HANDSHAKE_FAILED_* are not helpful
2017-08-18 11:21:48 +01:00
sigiesec
301f3c70c2 Problem: code duplication between curve_client_t and curve_server_t decode and encode
Solution: extracted common base class curve_mechanism_base_t
2017-08-18 11:34:22 +02:00
sigiesec
44f6aa3de6 Problem: gssapi_* do not emit ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL events
Solution: emit appropriate events
2017-08-18 10:30:48 +02:00
sigiesec
ca7eee357e Problem: no ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL events emitted in plain_client_t
Solution: emit events at appropriate places
2017-08-18 10:15:44 +02:00
sigiesec
c66ae4656f Problem: curve_client_t may emit misleading event on bad data processed by curve_client_t::decode
Solution: use check_basic_command_structure in curve_client_t::decode, also prepare other client mechanisms to use that method by rearranging inheritance hierarchy
2017-08-18 10:04:58 +02:00
sigiesec
bdd0f3b18b Problem: documentation on zmq_socket_monitor out-of-sync with current
state of ZMQ_EVENT_HANDSHAKE_FAILED_* events

Solution: update documentation
2017-08-18 09:35:13 +02:00
sigiesec
e22ca065d6 Problem: curve_client_t does not emit handshake failure events
Solution: add handshake failure events to curve_client_t
2017-08-18 09:18:06 +02:00
sigiesec
9bec68354c Problem: console output for NULL protocol errors
Solution: emit socket monitor events for NULL protocol errors (like CURVE)
2017-08-18 09:18:06 +02:00
sigiesec
11b3c93852 Problem: console output for PLAIN protocol errors
Solution: emit socket monitor events for PLAIN protocol errors (like CURVE)
2017-08-18 09:18:06 +02:00
sigiesec
e2d3ba9c62 Problem: classification ZMQ_HANDSHAKE_FAILED_* events is coarse-grained and partially misleading
Solution: redesign ZMQ_HANDSHAKE_FAILED_* events, introduce new class of ZMQ_HANDSHAKE_FAILED_AUTH events
2017-08-18 09:17:59 +02:00
Constantin Rack
f252f02b01 Merge pull request #2693 from bluca/verbose_check
Problem: coverage CI job does not print test errors
2017-08-17 18:53:53 +02:00
Luca Boccassi
9ac244a67c Problem: coverage CI job does not print test errors
Solution: run make check with VERBOSE=1
2017-08-17 17:20:56 +01:00
Luca Boccassi
2d2b51579b Merge pull request #2692 from minrk/utf8-groups
specify that groups shall be UTF8
2017-08-17 15:33:29 +01:00
Min RK
3130b913fc specify that groups shall be UTF8
group being a `char *` is logically a text type, which needs an encoding.

Declare in the API that groups shall be UTF8-encoded,
matching the `zmq_msg_gets` API, which is the other user-facing `char *` API,
which has the same definition.

This allows bindings to provide text-type APIs,
which they cannot do if arbitrary bytes are allowed
2017-08-17 16:12:53 +02:00
Luca Boccassi
1e393586c7 Merge pull request #2691 from sigiesec/relicense
Problem: no relicense agreement by sigiesec
2017-08-17 14:27:52 +01:00
sigiesec
fecbd42dbe Problem: no relicense agreement by sigiesec
Solution: added relicense agreement
2017-08-17 15:20:12 +02:00
Luca Boccassi
d52197d84f Merge pull request #2689 from sigiesec/remove-zap-client-duplication
Problem: ZAP client code duplicated across mechanisms with behaviour deviations
2017-08-17 13:24:36 +01:00
Jim Klimov
77aa5f4b3e Merge pull request #2688 from bluca/unwind_test_curve
Problem: missing flags break build of test_security_curve
2017-08-17 13:57:58 +02:00
sigiesec
f9985708b7 Problem: unreachable code in zap_client_t
Solution: replaced unreachable code by assertions and adapted uses
2017-08-17 12:54:05 +02:00
sigiesec
7f15e6c868 Problem: make-based builds broken
Solution: add testutil_security.hpp to Makefile.am
2017-08-17 12:34:49 +02:00
sigiesec
863a02b4a1 Problem: no ZAP tests for PLAIN mechanism
Solution: added ZAP tests for PLAIN
2017-08-17 12:22:26 +02:00
sigiesec
00816875b8 Problem: no ZAP tests for NULL mechanism
Solution: added ZAP tests for NULL
2017-08-17 12:11:14 +02:00
sigiesec
f107b53768 Problem: deviating behavior regarding monitoring events between mechanisms
Solution: move relevant behavior to zap_client_t
2017-08-17 12:10:00 +02:00
sigiesec
406af1ef67 Problem: ZAP tests are now generic but placed in test_security_curve.cpp
Solution: Move ZAP tests to own file test_security_zap.cpp, move common code to testutil_security.hpp
2017-08-17 11:45:18 +02:00
sigiesec
59d8060165 Problem: ZAP tests are only run with CURVE security
Solution: as a first step, parametrize mechanism configuration in CURVE tests
2017-08-17 11:10:11 +02:00
sigiesec
8dce0396fb Problem: inconsistent handling of ZAP replies
Solution: unification, pulled up common behaviour to zap_client_t/zap_client_common_handshake_t
2017-08-17 09:44:05 +02:00
sigiesec
8c58ef7f5c Problem: zap_msg_available duplicated between curve_server_t and plain_server_t (with deviating behaviour)
Solution: pull up into zap_client_common_handshake_t, along with handle_zap_status_code and error_detail/current_error_detail
2017-08-16 18:05:36 +02:00
sigiesec
314a3acfa9 Problem: status method duplicated between curve_server_t and plain_server_t
Solution: extract into new intermediate base class zap_client_common_handshake_t
2017-08-16 18:05:36 +02:00
sigiesec
ebba815a4d Problem: duplicate but equivalent state enums in curve_server_t and plain_server_t
Solution: pull state enum up to zap_client_t and unify names of enum values
2017-08-16 18:05:35 +02:00
sigiesec
414c6f45b8 Problem: receive_and_process_zap_reply is duplicated in all mechanisms
Solution: extract receive_and_process_zap_reply into zap_client_t and convert zap_client_t into base class of the server mechanism classes
2017-08-16 18:05:35 +02:00
sigiesec
d7a3778387 Problem: plain_server_t duplicates zap_client_t::send_zap_request
Solution: Use zap_client_t::send_zap_request
2017-08-16 18:05:35 +02:00
sigiesec
014b201d3e Problem: ZAP message without credentials is not terminated
Solution: Set more flag depending on presence of credentials
2017-08-16 18:05:35 +02:00
sigiesec
b324c66b6f Problem: null_mechanism duplicates zap_client_t::send_zap_request\nSolution: use zap_client_t::send_zap_request 2017-08-16 18:05:34 +02:00
sigiesec
f3884f3380 Problem: gssapi_server_t duplicates zap_client_t::send_zap_request
Solution: Use zap_client_t::send_zap_request
2017-08-16 18:04:31 +02:00
sigiesec
6e8a0b31be Problem: ZAP client code is duplicated in all mechanisms
Solution: created a zap_client_t class, extracted first function send_zap_request from curve_server_t
2017-08-16 18:04:30 +02:00
Luca Boccassi
97e532e7db Problem: missing flags break build of test_security_curve
Solution: add all the required compiler flags since the test includes
source code from the library directly
2017-08-16 15:19:09 +01:00
Luca Boccassi
e2df328d17 Merge pull request #2685 from minrk/uint32_t
add missing uint32_t typedef on msvc
2017-08-16 09:41:37 +01:00
Min RK
e0271087f0 add missing uint32_t typedef on msvc
uint32_t is used in the draft APIs
and undefined on MSC 1500
preventing compilation
2017-08-16 09:40:20 +02:00
Simon Giesecke
4a18f6204c Problem: Possible buffer overruns related to metadata in various mechanisms (#2683)
* Problem: no test case with CURVE encryption and large identity

Solution: added test case (currently crashing)

* Problem: possible buffer overflow in mechanism_t::add_property

Solution: add target buffer length parameter and check the buffer is sufficiently large

* Problem: test cases accidentally excluded from build

Solution: remove #if/#endif

* Problem: possible buffer overruns related to metadata at various locations

Solution: allocate buffer large enough for actual metadata, reduce code duplication

* Problem: syntax error related to pointer type conversion

Solution: change argument type of make_command_with_basic_properties to const char *

* Problem: large metadata may cause an assertion in produce_initiate

Solution: Allow metadata of arbitrary size in produce_initiate
2017-08-15 18:42:31 +01:00
Simon Giesecke
d5e4319edc [WIP, do not merge] Problem: insufficient tests for ZMTP-CURVE protocol errors (#2680)
* Extracted connect_vanilla_socket function

* Problem: no tests for ZMTP-CURVE protocol errors

Solution: added two test cases with erroneous HELLO commands

* Problem: insufficient tests for ZMTP-CURVE protocol errors

Solution: added two test cases with erroneous HELLO command version

* Problem: test HELLO message is invalid apart from deliberate errors

Solution: create cryptographically correct HELLO message
add tweetnacl.c to test_security_curve

* Problem: nonce is incorrect, build fails with GCC

Solution: use correct non prefix

* Problem: make builds are failing

Solution: transfer CMake changes to (auto)make files

* Problem: nonce is incorrect, build fails with GCC

Solution: use correct non prefix

* Problem: make builds are failing

Solution: transfer CMake changes to (auto)make files

* Problem: no test with INITIATE command with invalid length

Solution: added test case

* Problem: code duplication between test_security_curve.cpp and curve_client.cpp

Solution: extracted parts of zmq::curve_client_t::produce_hello into reusable function

* Problem: code duplication between test_security_curve.cpp and curve_client.cpp

Solution: extracted further parts of zmq::curve_client_t into reusable functions
added missing file

* Problem: mechanism_t::add_property can be declared static

Solution: declare mechanism_t::add_property static

* Problem: intermediate crypto data needs to be passed between static function calls to curve_client_tools_t

Solution: add non-static member functions

* Problem: msg_t instance may be closed twice

Solution: remove offending close

* Problem: prepare_hello uses static curve_client_tools_t::produce_hello

Solution: Use non-static curve_client_tools_t::produce_hello

* Problem: no test with invalid command name where INITIATE command is expected

Solution: added test case

* Problem: make builds are failing due to curve_client_tools.hpp not being found

Solution: add curve_client_tools.hpp to list of source files

* Problem: wrong initializer order in zmq::curve_client_t

Solution: reorder

* Problem: under non-Windows systems, test fails because random_open was not called

Solution: call random_open/random_close within test

* Problem: conflict between custom function htonll and macro definition on Darwin

Solution: define htonll function only if not defined as a macro

* Problem: nullptr not defined on all platforms

Solution: replace nullptr by NULL

* Problem: libsodium builds not working

Solution: adapt compile and link file sets for libsodium builds

* Problem: Makefile.am broken

Solution: Fix syntax

* Problem: no tests for garbage encrypted cookie or content in INITIATE

Solution: added test cases

* Problem: test cases accidentally excluded from build

Solution: remove #if/#endif

* Solution: some error cases are unreachable

Problem: for the time being, added some comments without changing the code

* Added comments on hard-to-test cases
2017-08-15 15:28:24 +01:00
Luca Boccassi
a927ecc0ed Merge pull request #2678 from evoskuil/fix-warnings
Problem: unused variable causing warnings or breaks.
2017-08-12 10:32:31 +01:00
evoskuil
16dd37bbff Problem: unused variable causing warnings or breaks. 2017-08-11 16:07:54 -07:00
Luca Boccassi
85b8b38fe1 Merge pull request #2677 from evoskuil/fix-warnings
Problem: unused variables causing warnings or breaks.
2017-08-11 22:24:48 +01:00
evoskuil
a604b84ab6 Problem: unused variables causing warnings or breaks. 2017-08-11 14:16:55 -07:00
Constantin Rack
6abeb7ec2f Merge pull request #2675 from bluca/sunos_sigbus
Problem SIGBUS under 64-bit SunOS Sparc
2017-08-11 20:01:05 +02:00
Luca Boccassi
e376c81c2d Problem: SIGBUS on SPARC64
Solution: force the compiler to make the atomic_counter_t alignment
friendly.
This will ensure that the pointers inside the buffers allocated by
shared_message_memory are aligned, at the cost of growing the memory
size of atomic_counter_t from 4 to 8 bytes on 64 bit (when not using
mutexes).
Note that although content_t contains an atomic_counter_t, the
compiler already padded the struct so there is no change in the
buffer sizes used by the engines, save for the extra 4 bytes for the
buffer's own single atomic counter.
Fixes #2588
2017-08-11 17:48:23 +01:00
Luca Boccassi
f0ae5e585c Problem: C++11 atomic API never used
Solution: remove requirement to manually define macro and just check
for the C++ supported version.
Note that compiler intrinsics still have priority if available, to
avoid changes unless necessary.
2017-08-11 17:47:18 +01:00
Luca Boccassi
347f143a5c Merge pull request #2673 from jakecobb/curve_testing
CURVE throughput performance testing
2017-08-10 21:16:51 +01:00
Jake Cobb
84ab771808 Problem: Throughput calculation underestimates slow messages
Solution: Use a double for messages per second and calculate
Megabits per second using it.  Truncate messages per second
only in the reported output.
2017-08-10 14:30:22 -04:00
Jake Cobb
78b26d7ac2 Problem: Throughput perf tool doesn't support CURVE
Solution: Add extra argument to enable CURVE, use
fixed keys to make local_thr and remote_thr compatible
with CURVE enabled.
2017-08-10 14:29:21 -04:00
Luca Boccassi
6652a0d742 Merge pull request #2672 from jakecobb/cmake_libsodium
Problem: CMake build does not allow static linking libsodium
2017-08-10 18:17:45 +01:00
Jake Cobb
0cbdc18817 Problem: CMake build does not allow static linking libsodium
Solution: Pass along SODIUM_STATIC define if set in CMake config
2017-08-10 13:04:15 -04:00
Luca Boccassi
889a6bff05 Merge pull request #2671 from AlainODea/ao-clarify-null-ZAP-status-code
Problem: log for bad ZAP status code is confusing
2017-08-10 15:01:31 +01:00
Alain O'Dea
454d1eda65
Problem: log for bad ZAP status code is confusing
Solution: log that handler sent bad status code to clarify ZAP debugging
2017-08-10 10:59:18 -02:30
Constantin Rack
82c4792e21 Merge pull request #2668 from bluca/fix_pgm_build 2017-08-08 19:53:58 +02:00
Luca Boccassi
75fba539d0 Problem: PGM/NORM builds broken due to i_engine API change
Solution: implement get_endpoint in the NORM and PGM engines too
2017-08-08 15:18:07 +01:00
Simon Giesecke
a6cef4ef86 Problem: ZAP status codes != 200 do not result in an appropriate monitor event (#2665)
* Problem: missing test for status code 300, inadequate assertion for status code 500

Solution: add test, change assertion (currently test fails)

* Problem: gcc compiler error deprecated conversion from string constant

Solution: declare variable as const

* Problem: in case of ZAP handler returning a status code other than 200, no appropriate event is emitted

Solution: immediately emit event after receiving reply from ZAP handler

* Problem: endpoint address is not included in zap-reply monitor event

Solution: added functions to retrieve endpoint address in zmq::i_engine and zmq::session_base_t
removed unused code block in zmq::stream_engine_t::next_handshake_command

* Problem: wrong formatting

Solution: fix formatting

* Problem: test fails because of EPIPE

Solution: add EPIPE/ECONNRESET/ECONNAGAIN handling for more test cases
2017-08-08 13:10:20 +01:00
Simon Giesecke
834b9e4cd7 Problem: some test cases may still fail because of EPIPE/ECONNABORT/ECONNRESET (#2664)
* Problem: CI failure on Appveyor with err==ECONNRESET

Solution: ignore ECONNRESET analogous to EPIPE

* Problem: blocking test execution

Solution: added more debug output, do not wait for monitor infinitely without output
2017-08-07 17:07:37 +01:00
Jim Klimov
612d81a831 Merge pull request #2659 from bluca/fix_getrandom
Problems: test_security_curve occasionally hangs or fails due to ECONNABORTED
2017-08-07 12:36:59 +02:00
Luca Boccassi
20bbd016c1 Merge pull request #2663 from sigiesec/fix-zap-assertion
Problem: failing assertion on ZAP protocol error
2017-08-07 11:15:54 +01:00
Luca Boccassi
2564c8e5b9 Merge pull request #2662 from sigiesec/fix-hwm-tests-race-2
Problem: occasional test failures due to messages not (yet) received in test assertion
2017-08-07 10:51:11 +01:00
Simon Giesecke
de82cbe4ba Problem: failing assertion on ZAP protocol error
Solution: do not assert on ZAP protocol error when connection was closed by client
2017-08-07 10:59:36 +02:00
Simon Giesecke
8842e0f0a9 Problem: occasional test failures due to messages not (yet) received in test assertion
Solution: add sleep
2017-08-07 10:35:25 +02:00
Luca Boccassi
5f6ff69f62 Problem: test_security_curve fails due to ECONNABORTED
Solution: expect that error, which can happen on very slow machines
due to a client timimng out or RST before the connection is accepted
by the server
2017-08-07 09:26:38 +01:00
Luca Boccassi
1c1f10a25a Problem: test_security_curve occasionally hangs
Solution: refactor the ZAP thread to avoid creating the socket in the
main thread and using it in the ZAP thread, and also to eliminate
races at shutdown use another inproc control socket to signal
termination to the thread
2017-08-07 09:18:37 +01:00
Constantin Rack
02e93492b6 Merge pull request #2661 from jimklimov/brandom
Problem: getrandom usage breaks build
2017-08-07 09:07:13 +02:00
Luca Boccassi
3046fe2053 Problem: getrandom usage breaks build
Solution: add missing flags parameter
2017-08-07 08:43:25 +02:00
Constantin Rack
98a3bb6f24 Merge pull request #2656 from bluca/unwind
Problems: use-before-initialise error in print_backtrace, test_security_curve sometimes fails due to unexpected ECONNRESET
2017-08-06 03:06:06 +02:00
Luca Boccassi
14df80ae3a Problem: test_security_curve does not account for ECONNRESET
Solution: ignore ECONNRESET as with EPIPE - it can happen on very
slow machines when the engine sends data to the peer and then tries
to read from the TCP socket before the peer has read
2017-08-05 18:08:21 +01:00
Luca Boccassi
dc51ebeb1f Problem: valgrind shows unitialised errors in backtrace print
Solution: fix them
2017-08-05 18:04:15 +01:00
Constantin Rack
03c0b2dfe2 Merge pull request #2654 from bluca/appveyor
Problems: timeout in curve test, redundant windows and android CI jobs
2017-08-04 22:48:33 +02:00
Luca Boccassi
0a8775e717 Merge pull request #2655 from sigiesec/fix-curve-produce-error
Problem: zmq::curve_server_t::produce_error sends sizeof std::string instead of status code length
2017-08-04 17:43:24 +01:00
Luca Boccassi
067b7b0d27 Problem: Android build on Travis OSX takes 10 minutes+
Solution: remove it, and test it only on Linux, as the toolchain and
build process is the same.
2017-08-04 16:29:11 +01:00
Luca Boccassi
9c085381ee Problem: test_security_curve timeouts on CMake
Solution: bump timeout from 20 to 60 seconds
2017-08-04 16:25:59 +01:00
Luca Boccassi
8275f6356a Problem: redundant appveyor test
Solution: remove it. No need to do an additional sodium on - curve
off test, as sodium will be disabled anyway
2017-08-04 16:24:40 +01:00
Luca Boccassi
e83abb3de3 Merge pull request #2652 from sigiesec/curve-security-tests-improvement
Problem: open TODOs in test code, CI failures
2017-08-04 16:03:44 +01:00
Simon Giesecke
41108b203e Problem: zmq::curve_server_t::produce_error sends sizeof std::string instead of status code length
Solution: send status code length (always 3) instead
2017-08-04 16:54:46 +02:00
Simon Giesecke
7ba70e95e5 Problem: test failure on CI due to ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL/EPIPE problem
Solution: add workaround at another place, unify two code fragments to remove duplication
2017-08-04 16:05:20 +02:00
Simon Giesecke
aacb219acd Problem: open TODOs in test code
Solution: removed code duplication
improved global variable naming
added assertions on number of ZAP requests handled
added assertion on monitor event to test_curve_security_with_plain_client_credentials
2017-08-04 15:11:14 +02:00
Jim Klimov
e84804d4cc Merge pull request #2647 from bluca/travis_test
Problems: too many OSX travis builds, curve test uses hard-coded TCP port
2017-08-04 13:21:02 +02:00
Luca Boccassi
5c7f56639b Merge pull request #2651 from sigiesec/doc-property-defines
Problem: new ZMQ_MSG_PROPERTY_* defines were not mentioned in the documentation
2017-08-04 11:51:12 +01:00
Luca Boccassi
32085870df Merge pull request #2650 from sigiesec/connection-close-event-workaround
Problem: sporadic failure in test_curve_security_with_null_client_credentials
2017-08-04 11:48:27 +01:00
Simon Giesecke
63779094d3 Problem: new ZMQ_MSG_PROPERTY_* defines were not mentioned in the documentation
Solution: add documentation
2017-08-04 12:46:41 +02:00
Luca Boccassi
b92dc0a674 Merge pull request #2649 from sigiesec/remove-property-literal-duplication
Problem: Message property names are duplicated
2017-08-04 11:09:31 +01:00
Simon Giesecke
4b847f3ff9 Problem: no tests for ZAP handler that has an invalid protocol (#2648)
* Problem: no tests for ZAP protocol errors

Solution: added first test for a bogus version number in ZAP reply

* Problem: no tests for ZAP protocol errors

Solution: added more test cases

* Problem: cannot compile without ZMQ_BUILD_DRAFT_API

Solution: conditionally compile parts that depend on draft API

* Problem: test_security_curve times out in CI

Solution: Increase timeout for this test to 20 seconds
2017-08-04 11:07:41 +01:00
Simon Giesecke
4fec4c99be Problem: sporadic failure in test_curve_security_with_null_client_credentials
Solution: add workaround for EPIPE error
2017-08-04 11:35:00 +02:00
Simon Giesecke
7a16c292b7 Problem: Documentation mentions a message property "Resource", which does not exist
Solution: Remove from documentation
2017-08-04 10:34:48 +02:00
Simon Giesecke
9949965717 Problem: Property names are duplicated at several places
Solution: Define them in zmq.h and use them (currently in DRAFT API)
2017-08-04 10:33:51 +02:00
Luca Boccassi
5b91eb549b Problem: OSX builds are very slow
Solution: avoid running brew update and brew install binutils unless
it's for the android cross-compilation, where it's necessary for
greadelf.
2017-08-03 23:35:51 +01:00
Luca Boccassi
0c5731ac00 Problem: 2 OSX libsodium Travis runs
Solution: remove the non-draft test run, as OSX is very slow and
overcrowded on Travis
2017-08-03 14:43:36 +01:00
Luca Boccassi
d96b0f42a6 Problem: additional doc-build test on Travis
Solution: remove it, as it takes time and it's enough to test once
2017-08-03 14:42:14 +01:00
Luca Boccassi
ccb1250fcc Problem: a curve test uses hard-coded TCP port
Solution: use the wildcard endpoint instead
2017-08-03 14:41:36 +01:00
Simon Giesecke
c191909c0e Problem: Misleading error code in case ZAP handler sends an invalid status code (#2646)
Solution: Use EPROTO instead of EACCES error code in that case
2017-08-03 14:20:35 +01:00
Simon Giesecke
5d4e30eb13 Replace console output by monitoring events for curve security issues (#2645)
* Fixing #2002 one way of doing it

 * Mechanisms can implement a new method `error_detail()`
 * This error detail have three values for the moment: no_detail
 (default), protocol, encryption.
    + generic enough to make sense for all mechanisms.
    - low granularity level on information.

* Fixing #2002: implementation of the error details

The ZMQ_EVENT_HANDSHAKE_FAILED event carries the error details
as value.

* Removed Microsoft extenstion for enum member access

This was leading to compilation error under linux.

* Adaptation of CURVE test cases

* Monitoring event: changed API for detailed events

Removed ZMQ_EVENT_HANDSHAKE_FAILED and replaced it by:
- ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL,
- ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL,
- ZMQ_EVENT_HANDSHAKE_FAILED_ENCRYPTION

Adaptation of text case `security_curve`

* Removed event value comparison

This was introduced for the previous API model adaptation

* Removed the prints in std output and added missing details

`current_error_detail` was not set in every protocol error cases

* Fixed initialization of current_error_detail

* Fixed error in greeting test case

The handshake failure due to mechanism mismatch in greeting is actually
a protocol error. The error handling method consider it like so and
send a protocol handshake failure monitoring event instead of no_detail.

Fixed the test_security_curve expectation as well.

* Upgraded tests of monitoring events

The tests check the number of monitoring events received

* Problem: does not build under Linux or without ZMQ_DRAFT_API

Solution:
- properly use ZMQ_DRAFT_API conditional compilation
- use receive timeouts instead of Sleep

* Problem: duplicate definition of variable 'timeout'

Solution: merged definitions

* Problem: inconsistent timing dependencies

Solution: reduce timing dependency by using timeouts at more places

* Problem: assertion failure under Linux due to unexpected monitor event

Solution: output event type to aid debugging

* Problem: erroneous assertion code

* Problem: assertion failure with a garbage server key due to an extra third event

Solution: changed assertion to expect three events (needs to be checked)

* Problem: extra include directive to non-existent file

Solution: removed include directive

* Problem: assertion failure on appveyor for unknown reason

Solution: improve debug output

* Problem: no build with libsodium and draft api

Solution: add build configurations with libsodium and draft api

* Problem: assertion failure on CI

Solution: change assertion to reflect actual behaviour on CI (at least temporarily)

* Problem: error in condition in assertion code

* Problem: assertion failure on CI

Solution: generalize assertion to match behavior on CI

* Problem: assertion failures on CI

Solution: removed inconsistent assertion on no monitor events before flushing
improved debuggability by converting function into macro

* Problem: diverging test code for three analogous test cases with garbage key

Solution: extract common code into function

* Problem: does not build without ZMQ_BUILD_DRAFT_API

Solution: introduce dummy variable

* Attempt to remove workaround regarding ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL again

* Problem: EAGAIN error after handshake complete if there is no more data in inbuffer

Solution: Skip tcp_read attempt in that case

* Problem: handshaking event emitted after handshaking failed

Solution: use stream_engine_t::handshaking instead of mechanism_t::status() to determine whether still handshaking

* Include error code in debug output

* Improve debugging output: output flushed events

* Split up ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL into ZMQ_EVENT_HANDSHAKE_FAILED_ZMTP and ZMQ_EVENT_HANDSHAKE_FAILED_ZAP

* Fixed compilation without ZMQ_BUILD_DRAFT_API

* Renamed ZMQ_EVENT_HANDSHAKE_SUCCEED to ZMQ_EVENT_HANDSHAKE_SUCCEEDED for language consistency

* Renamed ZMQ_EVENT_HANDSHAKE_SUCCEED to ZMQ_EVENT_HANDSHAKE_SUCCEEDED for language consistency

* Renamed ZMQ_EVENT_HANDSHAKE_SUCCEED to ZMQ_EVENT_HANDSHAKE_SUCCEEDED for language consistency

* Fixed assert_monitor_event (require event instead of allowing no event)
Reverted erroneous change to handshaking condition
Renamed test_wrong_key to test_garbage_key
Generalized assumption in test_garbage_key to allow for ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL with error == EPIPE

* Better isolate test cases from each other by providing a fresh context & server for each

* Added diagnostic output

* Changed assertion to reflect actual behavior on CI

* Fixed formatting, observe maximum line length

* Fixed formatting, observe maximum line length

* Increase timeout to check if this fixes valgrind run

* Close server with close_zero_linger

* Increase timeout to check if this fixes valgrind run

* Increase timeout to check if this fixes valgrind run

* Generalize assertion to also work with valgrind

* Fixed formatting

* Add more diagnostic output

* Generalize assertion to also work with valgrind
2017-08-03 14:15:56 +01:00
Jim Klimov
fda9daa200 Merge pull request #2639 from bluca/wine_doc
Problems: using Wine requires system tuning, ZMQ_BINDTODEVICE not draft
2017-08-01 15:39:45 +02:00
Luca Boccassi
bb0b518e7f Problem: ZMQ_BINDTODEVICE not used for ZMQ_DISH
Solution: apply the option outside of the send/recv_enabled blocks so
that it is used for all types of UDP sockets
2017-07-31 16:31:31 +01:00
Luca Boccassi
415bdbc1b9 Problem: ZMQ_BINDTODEVICE is DRAFT but not DRAFT
Solution: move definition in the DRAFT section of the header
2017-07-31 16:31:31 +01:00
Luca Boccassi
2048ed5dbf Problem: using Wine requires system tuning
Solution: document it in the INSTALL file
Fixes #2638
2017-07-31 15:59:39 +01:00
Luca Boccassi
a34adbf474 Merge pull request #2640 from brianbalerno/vrf
Add socket option BINDTODEVICE
2017-07-31 15:58:56 +01:00
Brian Russell
b963542e8f Add socket option BINDTODEVICE
Linux now supports Virtual Routing and Forwarding (VRF) as per:

https://www.kernel.org/doc/Documentation/networking/vrf.txt

In order for an application to bind or connect to a socket with an
address in a VRF, they need to first bind the socket to the VRF device:

    setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1);

Note "dev" is the VRF device, eg. VRF "blue", rather than an interface
enslaved to the VRF.

Add a new socket option, ZMQ_BINDTODEVICE, to bind a socket to a device.
In general, if a socket is bound to a device, eg. an interface, only
packets received from that particular device are processed by the socket.

If device is a VRF device, then subsequent binds/connects to that socket
use addresses in the VRF routing table.
2017-07-31 15:31:47 +01:00
Constantin Rack
4a37ce9aeb Merge pull request #2636 from bluca/tweetnacl_fd
Problem: tweetnacl on *nix use of /dev/urandom is not thread safe
2017-07-28 17:04:54 +02:00
Luca Boccassi
fbb6bbdcb8 Problem: reading from /dev/urandom is clunky
Solution: if available use the getrandom function as it doesn't
require any synchronization, state or cleanup
2017-07-28 11:28:19 +01:00
Luca Boccassi
2626fdfa23 Problem: tweetnacl leaks file descriptor on fork+exec
Solution: open with O_CLOEXEC if available or set FD_CLOEXEC if not
2017-07-28 11:27:55 +01:00
Luca Boccassi
e015a0f8b9 Problem: fd leak in tweetnacl with one ctx per thread
Solution: add a crypto [de-]initialiser, refcounted and serialised
through critical sections.
This is necessary as utility APIs such as zmq_curve_keypair also
call into the sodium/tweetnacl libraries and need the initialisation
outside of the zmq context.
Also the libsodium documentation explicitly says that sodium_init
must not be called concurrently from multiple threads, which could
have happened until now. Also the randombytes_close function does
not appear to be thread safe either.
This change guarantees that the library is initialised only once at
any given time across the whole program.
Fixes #2632
2017-07-28 11:27:53 +01:00
Luca Boccassi
a7bf010ee2 Problem: misleading indentation in tweetnacl.c
Solution: fix it
2017-07-27 21:04:43 +01:00
Luca Boccassi
2991e6f602 Merge pull request #2633 from pavel-pimenov/fix-C4324
Suppress C4324 (VC++2017)
2017-07-27 10:10:03 +01:00
pavel.pimenov
dfd9d48496 Suppress C4324 (VC++2017)
'zmq::command_t': structure was padded due to alignment specifier
https://msdn.microsoft.com/en-us/library/92fdk6xx.aspx
2017-07-27 07:06:19 +03:00
Constantin Rack
a537ace084 Merge pull request #2631 from ecoughlan/skip_invalid_setsockopt
Don't try to set IPV6_V6ONLY on OpenBSD
2017-07-22 23:16:28 +02:00
Eamonn Coughlan
cfb59dde21 Problem: can't set IPV6_V6ONLY on OpenBSD
Solution: skip setsockopt call resulting in EINVAL
2017-07-22 22:53:12 +02:00
Constantin Rack
b2c4dad46e Merge pull request #2626 from minrk/relicense
RELICENSE: minrk
2017-07-17 14:01:26 +02:00
Min RK
01f29ed8b9 add license grant for minrk 2017-07-17 13:57:53 +02:00
Constantin Rack
e1dfb2e337 Merge pull request #2625 from trofi/master
configure.ac: allow user to disable libunwind discovery via --disable-libunwind
2017-07-14 23:14:54 +02:00
Sergei Trofimovich
88487e7da3 configure.ac: allow user to disable libunwind discovery via --disable-libunwind
on ia64 architecture libunwind comes with gcc. Unfortunately
libunwind is not directly usable as-is and fails at link time:

```
    ia64-unknown-linux-gnu-g++ -o perf/.libs/local_lat perf/local_lat.o src/.libs/libzmq.so -lsodium -lrt -lpthread -ldl
    src/.libs/libzmq.so: undefined reference to `_ULia64_step'
```

The change adds --{enable,disable}-libunwind flag to control
automatic dependency. The default is unchanged: use if available.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2017-07-14 21:44:30 +01:00
Luca Boccassi
dfcf396ded Merge pull request #2624 from msune/master
Problem: adapt, clarify docs ZMQ_ROUTER_MANDATORY
2017-07-14 17:53:55 +01:00
Marc Sune
609c131249 Problem: adapt, clarify docs ZMQ_ROUTER_MANDATORY
Solution:

* Document the new behaviour when generating 'ZMQ_POLLOUT' events
  for ZMQ_ROUTER sockets with 'ZMQ_ROUTER_MANDATORY' set to `1`
* Add clarifications for 'ZMQ_ROUTER' socket when
  'ZMQ_ROUTER_MANDATORY' is set to `1`
2017-07-14 18:49:14 +02:00
Luca Boccassi
bba4a93727 Merge pull request #2622 from msune/master
Fix ROUTER's xhas_out() in MANDATORY mode
2017-07-14 15:48:37 +01:00
Marc Sune
b7b89a8f60 Fix ROUTER's xhas_out() in MANDATORY mode
Before this commit, xhas_out() was returning true regardless. This
was correct before the ZMQ_ROUTER_MANDATORY flag as introduced.
However, ZMQ_POLLOUT.

With this commit, _if_ ZMQ_ROUTER_MANDATORY is set, xhas_out() will
return false if ALL peer's outgoing pipes are full.

There is an outstanding high-level design question:

If ZMQ_ROUTER_MANDATORY is set, and zmq_poll() waits for ZMQ_POLLOUT
events, zmq_poll() will immediately wake up if only 1 pipe has
room to send, regardless of the peer, creating a busy loop of
zmq_poll() wake-up, zmq_send() (EAGAIN). There is no way for
the application to selectively wait for ZMQ_POLLOUT for specific
peer(s), which seems somehow necessary in ZMQ_ROUTER_MANDATORY.

This discussion will be addressed in a separate issue.

Signed-off-by: Marc Sune <marc@voltanet.io>
Signed-off-by: Fredi Raspall <fredi@voltanet.io>
2017-07-14 15:55:58 +02:00
Doron Somech
30ab0ed897 Merge pull request #2615 from bluca/curve_server_reconnect
Problem: CURVE server (connect) fails when client rebinds
2017-07-01 20:54:32 +03:00
Luca Boccassi
d04065b778 Problem: CURVE server (connect) fails when client rebinds
Solution: if a CURVE server is using zmq_connect, the same session
will be used for any client "reconnect" (actual binds). This is
acceptable, so do not assert if zap_pipe already exists during the
handshake, but simply reuse it.
Fixes #2608
2017-07-01 17:37:07 +01:00
Constantin Rack
4e6c89e3cd Merge pull request #2613 from mattconnolly/relicense
RELICENSE: Matt Connolly
2017-06-29 08:04:24 +02:00
Matt Connolly
1d17182799 RELICENSE: Matt Connolly
Refs #2376
2017-06-28 22:51:24 -07:00
Luca Boccassi
35cd0245c9 Merge pull request #2610 from bjovke/my_work_2
Problem: When using print_backtrace() on Linux with libunwind, printout of stack traces from multiple threads are interleaved. Solution: added static mutex to serialize printing of stack traces.
2017-06-27 21:05:48 +01:00
Luca Boccassi
33038da522 Merge pull request #2609 from bjovke/my_work
Problem: intermittent memory leak for req/rep send/recv. #2602 Solution: memory leak fixed.
2017-06-27 20:13:28 +01:00
bjovke
9ef34addb8 Problem: When using print_backtrace() on Linux with libunwind, printout of stack traces from multiple threads are interleaved. Solution: added static mutex to serialize printing of stack traces. 2017-06-27 20:29:08 +02:00
bjovke
69355730a4 Problem: intermittent memory leak for req/rep send/recv. #2602 Solution: memory leak fixed. 2017-06-27 20:15:08 +02:00
Constantin Rack
a3550e6104 Merge pull request #2605 from emanuelkoczwara/master
Update zmq.txt
2017-06-23 19:02:09 +02:00
Emanuel Koczwara
cb54a6b24a Update zmq.txt
Fixed minor typo.
2017-06-23 18:57:33 +02:00
Doron Somech
f5da4b1c6c Merge pull request #2603 from bluca/xpub_manual_subs
Problem: XPUB_MANUAL subscriptions not removed on peer term
2017-06-22 11:46:31 +03:00
Luca Boccassi
3536c4b9c4 Problem: XPUB_MANUAL subscriptions not removed on peer term
Solution: remove the pipe from the real trie when a peer disconnects.
Also add a unit test that exercises the behaviour by reconnecting
a different socket and sending a message that matches.
Fixes #2601 and introduced by #2042
2017-06-22 01:02:08 +01:00
Luca Boccassi
8e2027983a Problem: XPUB_MANUAL takes effect for the next bind
Solution: fix unit test to bind after setting the option.
2017-06-22 00:58:44 +01:00
Joe Eli McIlvain
2d83acceff Merge pull request #2596 from bluca/zap_curve
Problems: ZAP can be set up incorrectly, CURVE and GSSAPI can be used only with ZAP
2017-06-15 11:51:43 -07:00
Luca Boccassi
35fce88fee Merge pull request #2599 from ibancg/master
Problem: cannot cross-compile with Mingw-w64
2017-06-14 15:28:02 +01:00
Iban Cereijo
d040dc18b5 Problem: CMake evaluation fails with Mingw-w64
Solution: we can use 'CMAKE_SYSTEM_VERSION' instead of
'${CMAKE_SYSTEM_VERSION}' for the 'if' clauses.

CMake fails to evaluate condition when CMAKE_SYSTEM_VERSION is
empty, which can happen with a default installation of Mingw-w64
in Linux.
2017-06-14 15:55:29 +02:00
Iban Cereijo
2c4e5364aa Problem: missing Ws2_32.lib when cross compiling
Solution: use lower case ws2_32.lib to enable cross compilation
from platforms with case-sensitive filesystems.

When cross compiling the tests with Mingw-w64, CMake cannot
locate Ws2_32.lib
2017-06-14 15:54:03 +02:00
Luca Boccassi
6ad0b08da9 Problem: GSSAPI can no longer be used without ZAP
Solution: do not fail if ZAP is not enabled.
GSSAPI already provides authentication and can be used separately,
so it is a valid use case.
2017-06-13 22:56:49 +01:00
Luca Boccassi
0ce18eac25 Problem: CURVE can no longer be used without ZAP
Solution: revert change that made ZAP mandatory.
The "Stonehouse" pattern, where CURVE is used only for encryption and
without authentication, is a valid use case so we should still
support it.
Also restore CURVE testing in the test_heartbeat.

Fixes #2594
2017-06-13 22:56:32 +01:00
Luca Boccassi
33695d1da8 Problem: ZAP is allowed to be configured incorrectly or not to work
Solution: if inproc://zeromq.zap.01 exists, which means ZAP is
enabled, abort immediately if it cannot be used (eg: out of memory)
or it is configured incorrectly (eg: wrong socket type).
Otherwise authentication failures will simply be ignored and
unauthorised peers will be allowed to slip in.
2017-06-13 22:56:31 +01:00
Doron Somech
10a9ba0926 Merge pull request #2593 from ilovexyz/dev
fix bug: #2592 dish client does not resend subscriptions to radio server after radio server restart
2017-06-12 07:34:28 +03:00
sunddy
af598f2e1c fix bug: dish client does not resend subscriptions to radio server after radio server restart
problem: for zmq radio/dish pattern, if the radio process restarts, the dish will not resend subscriptions to radio. And the result is that the dish will never receive any more messages.

solution: in session_base_t::reconnect (), take ZMQ_DISH into consideration when invoking hiccup method.
2017-06-12 12:26:21 +08:00
BJovke
99805931e4 Merge pull request #2591 from laplaceyang/pr_cancel_timer_in_reconnect
fix bug: coredump if set linger and immediate together
2017-06-02 10:25:18 +02:00
laplaceyang
67a6594fc0 fix bug: coredump if set linger and immediate together
In function session_base_t::reconnect, if we set immediate to 1 and set linger, we will get into first block of reconnect function, and set pipe to NULL, but we forget to cancel timer of linger. Once timer tiggered, we will get coredump. Solution: cancel timer in the end of set pipe to NULL
2017-06-02 11:36:41 +08:00
Constantin Rack
bcc30f2ab0 Merge pull request #2584 from GreatFruitOmsk/master
RELICENSE: Ilya Kulakov
2017-05-23 19:40:34 +02:00
Ilya Kulakov
545135fb8d RELICENSE: Ilya Kulakov
Refs #2376
2017-05-23 10:38:13 -07:00
Constantin Rack
ec56eaaeb6 Merge pull request #2583 from timou/wincmake
Suppress linker warning 4221 for MSVC
2017-05-20 21:08:58 +02:00
Tim Ebringer
293a18257a Suppress linker warning 4221 for MSVC
Some #define switches cause the body of entire files to be omitted. This
causes a linker warning on Visual Studio 2017, for example

    warning LNK4221: This object file does not define any previously
    undefined public symbols, so it will not be used by any link
    operation that consumes this library

Since this is warning us about something that shouldn't be
earth-shattering news, we add a linker flag to suppress this warning on
MSVC builds.
2017-05-20 14:29:58 -04:00
Doron Somech
92339a4d9d Merge pull request #2582 from bluca/test_poller_use_after_free
Problem: use-after-free in test_poller
2017-05-18 15:37:31 +03:00
Luca Boccassi
17637536b8 Problem: use-after-free in test_poller
Solution: remove server socket from poller before closing it
Fixes #2581
2017-05-18 13:10:19 +01:00
Luca Boccassi
bc8ad8860b Merge pull request #2580 from diorcety/ninja
Use OBJECT_DEPENDS and OBJECT_OUTPUTS for precompiled.hpp
2017-05-18 11:33:05 +01:00
Yann Diorcet
f66c49a62b Fix precompiled 2017-05-18 12:02:07 +02:00
Luca Boccassi
6ad533bec4 Merge pull request #2578 from rkfg/dev
Problem: abort at socket creation on Android with jzmq
2017-05-17 14:09:14 +01:00
rkfg
72b4b6830f Problem: abort at socket creation on Android with jzmq
Solution: don't set thread name on Android

Setting a thread name on Android may fail with "permission
denied" error and abort the process due to failed assertion.
Tested on Android 5 and 6 (two phones).
Strangely enough, it only happens on signed APKs and is fine
in debug. Using JeroMQ is not an option as we need TCP keepalive
settings and authentication which JeroMQ doesn't support.
2017-05-17 15:05:37 +03:00
Doron Somech
8e1facc73e Merge pull request #2577 from bluca/rep_leak
Problem: REP leaves label msgs for dead REQ in pipe
2017-05-17 11:53:49 +03:00
Luca Boccassi
bdc676f687 Problem: REP leaves label msgs for dead REQ in pipe
Solution: roll back the pipe if writing messages other than the
first fails in router::xsend. Roll it back also when the pipe is
terminating.
Also add test case that reproduces the memory leak when ran with
valgrind.
Fixes #2567
2017-05-17 09:18:15 +01:00
Luca Boccassi
766c47ffdd Merge pull request #2575 from zeromq/revert-2572-rep_leak
Revert "Problem: REP leaves label msgs for dead REQ in pipe"
2017-05-16 10:31:23 +01:00
BJovke
1489fc1ac5 Revert "Problem: REP leaves label msgs for dead REQ in pipe" 2017-05-16 11:20:03 +02:00
BJovke
75cc2015d1 Merge pull request #2572 from bluca/rep_leak
Problem: REP leaves label msgs for dead REQ in pipe
2017-05-16 10:28:24 +02:00
Luca Boccassi
0999fdd885 Problem: REP leaves label msgs for dead REQ in pipe
Solution: roll back the pipe if writing messages other than the
first fails in router::xsend.
Also add test case that reproduces the memory leak when ran with
valgrind.
Fixes #2567
2017-05-10 23:44:03 +01:00
Luca Boccassi
d17581929c Merge pull request #2570 from jruffin/master-relicense
Added the license grant for jruffin
2017-05-10 11:57:03 +01:00
Julien Ruffin
30dac3807f Added the license grant for jruffin 2017-05-10 12:50:41 +02:00
Doron Somech
b7e8a3d699 Merge pull request #2566 from leonarf/leonarf-relicense
license right grant from Leonard Michelet
2017-05-08 19:02:31 +03:00
Leonard
7dc06fdfb2 license right grant from Leonard Michelet 2017-05-08 17:42:55 +02:00
Doron Somech
f0df483fa7 Merge pull request #2564 from rotty/master
Relicensing grant from rotty
2017-05-07 15:34:58 +03:00
Andreas Rottmann
806bc9dd08 Relicensing grant from rotty 2017-05-07 14:05:55 +02:00
Luca Boccassi
fb92cd30a1 Merge pull request #2562 from pijyoi/fix_init_fdset
Problem: not using official api FD_ZERO to init fd_set
2017-05-06 10:51:51 +01:00
KIU Shueng Chuan
d11f501dc1 problem: not using official api FD_ZERO to init fd_set
solution: fix it

In particular, on Windows, using FD_ZERO is much more efficient than
zeroing out the whole structure.
2017-05-06 08:03:09 +08:00
Constantin Rack
0a66acb31b Merge pull request #2560 from bluca/tests_ports
Problems: cannot use wildcard port with source address, tests bind to hardcoded TCP ports, ASAN CI run could use some improvements
2017-05-05 08:23:07 +02:00
Constantin Rack
18651d1699 Merge pull request #2561 from flub/master
Grant permission to relicense to MPL
2017-05-03 19:50:54 +02:00
Floris Bruynooghe
3241875b7b Grant permission to relicense to MPL 2017-05-03 19:46:20 +02:00
Luca Boccassi
655fbfc399 Problem: ASAN test doesn't print good traces with GCC 4.8
Solution: add Ubuntu toolchain PPA and use GCC 6
2017-05-01 22:57:05 +01:00
Luca Boccassi
86f9f1df7a Problem: CI doesn't build with debugging symbols
Solution: pass -g so that valgrind/asan can print useful backtraces
2017-05-01 22:57:05 +01:00
Luca Boccassi
11e2e5f6b5 Problem: address sanitizer support in CI is hacky
Solution: import better solution from zproject and add a new autoconf
option
2017-05-01 22:57:05 +01:00
Luca Boccassi
6d76106cde Problem: test_many_sockets is flacky on OSX
Solution: mark it as XFAIL. We tried many times to tweak the system
settings from the CI script but it still fails.
2017-05-01 22:57:05 +01:00
Luca Boccassi
463c2d75ae Problem: CI builds and test runs not done in parallel
Solution: run make with -j5, as now the tests support it.
2017-05-01 22:57:05 +01:00
Luca Boccassi
48792f8006 Problem: CI runs libsodium tests
Solution: don't, libzmq's CI tests are not responsible for testing
libsodium stable releases. Save some time in the CI.
2017-05-01 22:57:05 +01:00
Luca Boccassi
b29d46b6a5 Problem: tests use same IPC endpoint
Solution: use either a wildcard IPC, or where the codepath needs to
be tested a file named after the test, so that it is unique and there
is no clash on the filesystem, allowing parallel test runs.
2017-05-01 22:57:05 +01:00
Luca Boccassi
5934919f3e Problem: tests bind to hardcoded TCP ports
Solution: use ZMQ_LAST_ENDPOINT in most places. This alllows running
tests in paralle, and on over-booked shared machines where many of
the ports would be already in use.
Keep 3 tests with an hardcoded port, as there are some code paths that
require it (eg: connect before bind), but list those ports in
tests/testutil.hpp as macros so that they do not overlap and still
allow parallel runs.

These changes were inspired by a patch uploaded to Ubuntu by the
package maintainer, Steve Langasek <steve.langasek@ubuntu.com>.
Thank you Steve!
2017-05-01 22:57:05 +01:00
Luca Boccassi
2c2c813824 Merge pull request #2559 from michicc/master
RELICENSE: Grant from michicc
2017-05-01 21:53:41 +01:00
Michael Lutz
584706f023 RELICENSE: Grant from michicc 2017-05-01 21:31:57 +02:00
Luca Boccassi
ae461dc2a9 Problem: cannot use wildcard port with source address
Solution: fix TCP endpoint parsing to allow
tcp://127.0.0.1:*;127.0.0.1:1000
2017-05-01 14:57:29 +01:00
Doron Somech
06666d8c4a Merge pull request #2558 from bluca/obs_release
Problem: no way to deploy releases to OBS
2017-05-01 16:39:19 +03:00
Luca Boccassi
f126da8b22 Problem: no way to deploy releases to OBS
Solution: add new tokens to .travis.yml and change ci_deploy.sh
script to use Github APIs to create a temporary branch at the tag,
and the OBS APIs to trigger a source service run in the stable and
draft release projects:
network:messaging:zeromq:release-stable
network:messaging:zeromq:release-draft

The branch hack is unfortunately necessary as it is not possible to
modify OBS sources with the token APIs, and it is also not possible
to automatically fetch the latest tag in the service files.
The temporary branch is immediately deleted.
2017-04-30 16:15:15 +01:00
Constantin Rack
e24ef3ff48 Merge pull request #2557 from bluca/package_gssapi_manpage
Problem: RPM build fails due to ignored zmq_gssapi.7
2017-04-29 14:14:30 +02:00
Luca Boccassi
d96c48ffa4 Problem: OBS _service sets version to unix timestamp.commitid
Solution: a new option has been added to the tar_scm service, so use
it to set the version to last_tag+git<last commit date> which is more
useful.
Unfortunately it's not possible to set it to the current version as
set in the header files, as it's not possible to parse files, only
commit ids, dates and git tags. But it's a step forward.
2017-04-29 13:08:25 +01:00
Luca Boccassi
9dd75e62bf Problem: RPM build fails due to ignored zmq_gssapi.7
Solution: use wildcard to pick up manpages in the spec file
2017-04-29 12:53:09 +01:00
Constantin Rack
2215a9d391 Merge pull request #2554 from bluca/disable_new_poller_without_drafts
Problem: new zmq_poller used by zmq_poll without DRAFTs
2017-04-28 18:01:04 +02:00
Luca Boccassi
90c76fbd60 Problem: new zmq_poller used by zmq_poll without DRAFTs
Solution: do not define ZMQ_HAVE_POLLER in src/zmq_drafts.h otherwise
src/zmq.cpp will implement zmq_poll using the new poller classes.
Same for ZMQ_HAVE_TIMERS, even though it has no internal effect, but
to be safe against future development.
2017-04-28 16:10:01 +01:00
Luca Boccassi
e905f9da99 Merge pull request #2553 from diorcety/x
Fix WITH_DOC
2017-04-28 12:59:17 +01:00
Yann Diorcet
ec7b9480f5 Fix WITH_DOC 2017-04-28 13:43:17 +02:00
Luca Boccassi
54b89858ab Merge pull request #2550 from garlick/gssapi_test
add simple GSSAPI test for make check
2017-04-26 17:42:33 +01:00
Jim Garlick
edd6b0ad01 gssapi: add a basic test for GSSAPI security
Problem: there is no test coverage for GSSAPI.

Solution: add a test structured like the CURVE test.

The test is not built if libzmq is not configured with
--with-libgssapi_krb5. It will report SKIPPED status
if the required environment is missing (see below).

Environment:  KRB5_KTNAME and KRB5_CLIENT_KTNAME
environment variables must point to a keytab file
containing creds for a host-based test principal
(see comment at top of source for details).
Kerberos must be configured and a KDC containing the
test principal must be running, otherwise the test
will fail/hang.

N.B. For now, the test must use the same principal for
both client and server roles because it seems impossible
to set them to different principals when they are
threads in the same process.  Once one principal is
cached in credential cache, attempts to acquire creds
for a different "desired name" seem to be ignored and
the cached principal is used instead.
2017-04-26 09:31:21 -07:00
Luca Boccassi
8e33d4247c Merge pull request #2549 from garlick/gssapi_nametype
Clean up after move of GSSAPI NAMETYPE options to DRAFT
2017-04-25 22:49:56 +01:00
Jim Garlick
53918fc115 gssapi: drop unnecessary ifdefs
Problem: GSSAPI DRAFT code was made conditional on
ZMQ_BUILD_DRAFT_API, but zmq_draft.h duplicates the DRAFT
symbols definitions from zmq.h so this is unnecessary.

Solution: drop the extra ifdefs
2017-04-25 13:50:12 -07:00
Jim Garlick
c978d3bb0a gssapi: renumber socket options
Problem: GSSAPI NAMETYPE socket option numbers were modified
+1000 when moved to DRAFT section, but should use the definitive
values while in DRAFT to minimize disruption later.

Solution: renumber the socket options
2017-04-25 09:58:07 -07:00
Luca Boccassi
c23fcc1b05 Merge pull request #2548 from garlick/gssapi_nametype
move GSSAPI NAMETYPE options to DRAFT, etc.
2017-04-25 09:44:17 +01:00
Jim Garlick
568feb1c7f gssapi: document NAMETYPE options in get/setsockopt(3)
Problem: GSSAPI NAMETYPE options were not documented in man
pages for zmq_getsockopt() and zmq_setsockopt().

Solution: add new options to these manual pages.
2017-04-24 16:13:10 -07:00
Jim Garlick
8892087e99 gssapi: add NAMETYPE options to zmq_getsockopt
Problem: GSSAPI NAMETYPE options were added to zmq_setsockopt()
but not zmq_getsockopt().

Add them to zmq_getsockopt().
2017-04-24 16:12:42 -07:00
Jim Garlick
9fbf2e2eb6 gssapi: move new options to DRAFT section
Problem: The new GSSAPI NAMESPACE options should have been
added to the DRAFT section of the API so they can be changed
until stabilized.

Solution:
- Move defines to the DRAFT section of zmq.h
- Duplicate them in zmq_draft.h, as is the local custom
- Compile only if defined (ZMQ_BUILD_DRAFT_API)
- Refactor internals slightly to avoid #ifdef hell
2017-04-24 16:12:27 -07:00
Luca Boccassi
c49436ad94 Merge pull request #2547 from diorcety/x
Targets broken by some parts of f7d1c159d4f96686ce994319280c1bd3a2eab994
2017-04-24 15:48:10 +01:00
Yann Diorcet
17460b3b2b Targets broken by some parts of f7d1c159d4f96686ce994319280c1bd3a2eab994 2017-04-24 15:57:14 +02:00
Constantin Rack
74395668c6 Merge pull request #2546 from rikvdh/master
RELICENSE: Grant from rikvdh
2017-04-23 11:52:54 +02:00
Rik van der Heijden
67eee47557 RELICENSE: Grant from rikvdh 2017-04-23 11:21:12 +02:00
Luca Boccassi
4ae2ffdac7 Merge pull request #2545 from garlick/gssapi_nametype
add GSSAPI NAMETYPE socket options
2017-04-22 11:12:23 +01:00
Jim Garlick
48f72844ad gssapi: add zmq_gssapi.7 to MAN7 in Makefile.am
Problem: zmq_gssapi.7 was not mentioned in doc/Makefile.am

Solution: add man page to MAN7 in doc/Makefile.am
2017-04-21 13:08:48 -07:00
Jim Garlick
8bd3f03cd4 gssapi: add NAMETYPE socket opts to zmq_gssapi.7
Problem: new GSSAPI socket options are not documented.

Solution: add PRINCIPAL NAMES section to zmq_gssapi.7
2017-04-21 13:08:48 -07:00
Jim Garlick
0b185e8297 gssapi: add NAMETYPE socket options
Problem: principals are looked up unconditionally
with the GSS_C_NT_HOSTBASED_SERVICE name type.

Solution: Add two new socket options to set the name type
for ZMQ_GSSAPI_PRINCIPAL and ZMQ_GSSAPI_SERVICE_PRINCIPAL:

ZMQ_GSSAPI_PRINCIPAL_NAMETYPE
ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE

They take an integer argument which must be one of
ZMQ_GSSAPI_NT_HOSTBASED (0) - default
ZMQ_GSSAPI_NT_USER_NAME (1)
ZMQ_GSSAPI_NT_KRB5_PRINCIPAL (2)

These correspond to GSSAPI name types of:
GSS_C_NT_HOSTBASED_SERVICE
GSS_C_NT_USER_NAME
GSS_KRB5_NT_PRINCIPAL_NAME

Fixes #2542
2017-04-21 13:08:45 -07:00
Constantin Rack
4783605b78 Merge pull request #2544 from Asmod4n/patch-2
RELICENSE: Hendrik Beskow grant
2017-04-21 19:58:33 +02:00
Asmod4n
798b258fbc Create Asmod4n.md 2017-04-21 19:54:25 +02:00
Luca Boccassi
427292561c Merge pull request #2541 from garlick/gssapi_fix
fix misc. bugs in GSSAPI support
2017-04-20 18:49:05 +01:00
Jim Garlick
2b9a352a3c gssapi: use gss_buffer_desc consistently
Problem: one call to gss_import_name() includes the terminating
NULL in a gss_buffer_desc.length, and one doesn't.

According to the examples at:
http://docs.oracle.com/cd/E19253-01/816-4863/overview-22/index.html
the NULL should be included in the length.

Solution:  Fix one case to include the terminating NULL in the length.
2017-04-20 09:42:06 -07:00
Jim Garlick
4e22dd0e97 gssapi: fail if client sets wrong principal
Problem: if client sets ZMQ_GSSAPI_PRINCIPAL to a name
for which credentials cannot be obtained, authentication
proceeds with default credentials.

Solution: Before initializing the security context, check
whether there was a failed attempt to acquire credentials
for a specific principal and bail out if so.

Fixes #2531
2017-04-20 09:42:06 -07:00
Jim Garlick
f2b579ce02 gssapi: use GSS_C_BOTH to acquire credentials
Problem: if client sets the ZMQ_GSSAPI_PRINCIPAL to a valid
principal, authentication fails.

When an application sets ZMQ_GSSAPI_PRINCIPAL, whether as a
client or a server, libzmq internally calls gss_acquire_cred()
with cred_usage=GSS_C_ACCEPT.  This cred_usage setting is for
acceptors (servers) only, thus it doesn't work for initiators
(clients).

Solution: Change the cred_usage parameter to GSS_C_BOTH to allow
initiators to set ZMQ_GSSAPI_PRINCIPAL.
2017-04-20 09:42:06 -07:00
Jim Garlick
c371824b5b gssapi: document ZMQ_GSSAPI_PRINCIPAL as optional
Problem: the ZMQ_GSSAPI_PRINCIPAL socket option is described
as mandatory in the zmq_gssapi(7) manual page.  In fact it
is optional.

Solution: Describe ZMQ_GSSAPI_PRINCIPAL as optional.
If unspecified, default credentials are used.
2017-04-20 09:42:06 -07:00
Jim Garlick
43f4c28660 gssapi: define HAVE_LIBGSSAPI_KRB5 in configure.ac
Problem: configure.ac is not setting HAVE_LIBGSSAPI_KRB5
in src/platform.hpp when --with-libgssapi_krb5 is specified

Commit 09e868b74379f9c4b0e3a487b246a41d44606d96
switched the libgssapi_krb5 check from AC_CHECK_LIB
to AC_SEARCH_LIBS, but neglected to add an AC_DEFINE
for HAVE_LIBGSSAPI_KRB5, thus the GSSAPI code is
never compiled.

Solution: Add missing AC_DEFINE of HAVE_LIBGSSAPI_KRB5.
2017-04-20 09:41:27 -07:00
Luca Boccassi
aa90863b77 Merge pull request #2539 from juan-filewave/win_build_if_defined_ZMQ_USE_POLL
Problem: Windows build broken by #if ZMQ_USE_POLL
2017-04-20 15:05:15 +01:00
Juan A. Garcia Pardo
52ce6aab86 Problem: Windows build broken by #if ZMQ_USE_POLL
Solution: use #if defined ZMQ_USE_POLL
2017-04-20 15:53:06 +02:00
Asmod4n
ce602d08db change macOS < 10.12 clock to SYSTEM_CLOCK, fixes #2537 (#2538)
* change macOS < 10.12 clock to SYSTEM_CLOCK, fixes #2537

* remove clock_id option from alt_clock_gettime since we always want a monotonic clock.

* update header definition for alt_clock_gettime

* pass clock definition down to host_get_clock_service for macOS < 10.12

* change to monotonic clocks
2017-04-19 23:13:06 +01:00
Luca Boccassi
45f4a40026 Merge pull request #2536 from RPGillespie6/master
Add CMake Build Output Options
2017-04-17 23:54:26 +01:00
RPGillespie6
69b2affe05 Add CMake Build Output Options
Add two new options to CMakeLists.txt:

`BUILD_SHARED` - Whether or not to build the shared object (Default: ON)
`BUILD_STATIC` - Whether or not to build the static archive (Default: ON)
2017-04-17 18:26:04 -04:00
BJovke
1d4014dc52 Problem: Minor inconsistency in macro syntax. Solution: Code fixed. (#2534)
* Problem: Minor inconsistency in macro syntax. Solution: Code fixed.
2017-04-14 17:10:57 +01:00
Luca Boccassi
e8be2e9d60 Merge pull request #2533 from bjovke/my_work
Problem: FD set copying for Windows still not optimal in some places.
2017-04-14 16:01:53 +01:00
bjovke
dc7bbe35b4 Problem: FD set copying on Windows still not optimal on some places. Solution: Improved memcpy() of FD sets for Windows builds. 2017-04-14 16:31:05 +02:00
Luca Boccassi
a3ad12f7fa Merge pull request #2532 from bjovke/my_work
Problem: Stack overflow in Windows VS 2012 builds for simple ZeroMQ u…
2017-04-14 11:26:33 +01:00
bjovke
6d3d99f3a1 Problem: Stack overflow in Windows VS 2012 builds for simple ZeroMQ usage. Solution: Added notice in INSTALL file to mandatory use at least 2 MB stack size in VS 2012 and recommendation to use at least 2 MB in all other Windows builds. 2017-04-14 11:54:51 +02:00
Constantin Rack
eb37793a43 Merge pull request #2528 from kurdybacha/master
RELICENSE: Pawel Kurdybacha grant
2017-04-13 06:56:45 +02:00
Pawel Kurdybacha
01f8ae061d RELICENSE: Pawel Kurdybacha grant 2017-04-13 00:44:22 +01:00
Luca Boccassi
bf07573188 Merge pull request #2527 from diorcety/x
Fix compilation on windows using msys2
2017-04-12 11:58:50 +01:00
Yann Diorcet
f7d1c159d4 Fix windows compilation 2017-04-12 10:59:04 +02:00
Luca Boccassi
dfde9a22cc Merge pull request #2526 from bjovke/my_work
Problem: GCC 6 build fails due to misleading indentation and visually ambiguous if/else block ordering.
2017-04-11 12:42:35 +01:00
bjovke
aa3540e657 Problem: misleading indentation and visually ambiguous if/else block ordering.
Solution: fixed indentation and if/else block.
2017-04-11 13:14:13 +02:00
Doron Somech
c2798ef0db Merge pull request #2525 from swansontec/master
RELICENSE: William Swanson
2017-04-11 08:47:25 +03:00
William Swanson
0b1402ffc7 RELICENSE: William Swanson 2017-04-10 18:32:15 -07:00
Luca Boccassi
d815228246 Merge pull request #2523 from bjovke/my_working_branch
Critical BUG introduced with #2518 fixed.
2017-04-10 20:09:07 +01:00
Luca Boccassi
3b01410edc Merge pull request #2524 from jakecobb/tcp_codestyle
Problem: Bad style in tcp.hpp/cpp
2017-04-10 19:13:48 +01:00
bjovke
c635ee7e9d Critical BUG introduced with #2518 fixed. 2017-04-10 20:09:22 +02:00
Jake Cobb
f89e3ee854 Problem: Bad style in tcp.hpp/cpp
Solution: Add spaces between function
name and parentheses.
2017-04-10 13:57:29 -04:00
Luca Boccassi
2df4e87849 Merge pull request #2522 from bjovke/my_working_branch
Another macro correction.
2017-04-10 17:31:32 +01:00
Luca Boccassi
af6e071f65 Merge pull request #2521 from jakecobb/windows_tcptuning_consistency
Consistency of Windows TCP tuning assertions
2017-04-10 17:27:50 +01:00
Jake Cobb
cd39b00e19 Consistency of Windows TCP tuning assertions
Treat ECONNRESET, ENETRESET and EINTR as non-fatal
failures in TCP Tuning on Windows as they are in the
Unixes.  Also adds ENETRESET to the Unix list that was missing.
2017-04-10 10:57:17 -04:00
bjovke
9bee9d6d03 Another macro correction. 2017-04-10 16:14:26 +02:00
Luca Boccassi
d66c2508cf Merge pull request #2519 from bjovke/master
Case found not covered in latest zmq::proxy() code.
2017-04-10 15:01:27 +01:00
bjovke
b6fb1f64a5 Macro correction. 2017-04-10 15:39:20 +02:00
bjovke
2bdd06ca7e Relicense file extensions corrected. 2017-04-10 14:36:30 +02:00
BJovke
64807214be Merge pull request #2520 from twhittock/patch-1
Relicense: Tom Whittock grant
2017-04-10 14:33:43 +02:00
twhittock
6ecdd68153 Tom Whittock grant 2017-04-10 13:28:10 +01:00
bjovke
30cd655b3d Case found not covered in latest zmq::proxy() code. 2017-04-10 14:10:47 +02:00
Doron Somech
545cacf5e2 Merge pull request #2518 from bjovke/master
Reworked zmq::proxy() for improved performance.
2017-04-10 12:50:15 +03:00
bjovke
26520fe152 zmq::socket_poller_t speed improvement for constructor and wait() function. 2017-04-10 11:35:08 +02:00
bjovke
a7977a5e84 Reworked zmq::proxy() for improved performance. 2017-04-10 11:34:24 +02:00
bjovke
3e55545ab0 Code reformatting of proxy.cpp 2017-04-10 11:30:52 +02:00
Luca Boccassi
2b543e7a2e Merge pull request #2516 from meox/master
adding licence
2017-04-09 12:44:46 +01:00
meox
c8d6b67402 adding licence 2017-04-09 13:25:52 +02:00
Luca Boccassi
6853e3f935 Merge pull request #2514 from lytboris/freebsd-enable-ai_v4mapped
re-enable AI_V4MAPPED on FreeBSD & DragonFlyBSD
2017-04-09 10:24:50 +01:00
Constantin Rack
63e1984aa7 Merge pull request #2513 from lytboris/windows-assign-instead-compare
fix a typo - assigment was used instead of comparison
2017-04-09 10:58:59 +02:00
Boris Lytochkin
ef8b0c60fc re-enable AI_V4MAPPED on FreeBSD & DragonFlyBSD
Detect AI_V4MAPPED is not supported in getaddrinfo() on the fly
and retry query. This issue was seen on ancient FreeBSD releases
and current implementation does support this flag correctly.
2017-04-09 11:49:21 +03:00
Boris Lytochkin
2b1bbf1673 fix a typo - assigment was used instead of comparison 2017-04-09 11:37:22 +03:00
Luca Boccassi
6a41f278c5 Merge pull request #2510 from lytboris/ipv6-resolve_nic_name-fix
choose IP(v6) address based on ipv6_ flag in a correct way
2017-04-08 22:27:20 +01:00
Thomas Rodgers
ac7d02e7b0 Relicense Grant (#2511)
* Relicense Grant - Thomas Rodgers (rodgert@twrodgers.com)
2017-04-08 22:26:55 +01:00
Boris Lytochkin
8bc92bde34 choose IP(v6) address based on ipv6_ flag in a correct way 2017-04-08 23:00:23 +03:00
Luca Boccassi
9846da02dc Merge pull request #2507 from eburkitt/upmaster
Add relicense grant for eburkitt
2017-04-06 21:14:22 +01:00
Evan Burkitt
9dbf5791fb Add relicense grant for eburkitt 2017-04-06 13:05:42 -07:00
Luca Boccassi
e5583cb043 Merge pull request #2495 from bluca/relicense_typo
Problem: typos in RELICENSE/ptroja.md
2017-04-06 09:59:32 +01:00
Yann Diorcet
c7fea39005 Fix asciidoc 2017-04-05 14:16:29 +02:00
Luca Boccassi
238aa49d55 Merge pull request #2504 from herbrechtsmeier/location
cmake: Use LOCATION property only for imported targets
2017-04-05 10:51:16 +01:00
Stefan Herbrechtsmeier
9deb6b023b cmake: Use LOCATION property only for imported targets
Newer CMake versions allow use of the LOCATION target property only for
imported targets (CMP0026). Because the old package variables are only
needed for backward compatibility after configuration they could be
deactivated for super projects which build ZeroMQ together with other
projects.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-04-05 11:26:13 +02:00
Luca Boccassi
96e61d9f95 Merge pull request #2503 from herbrechtsmeier/msvc
cmake: Remove build/msvc include path to remove file name clash
2017-04-05 09:28:34 +01:00
Stefan Herbrechtsmeier
2f367bddf7 cmake: Remove build/msvc include path to remove file name clash
Remove the `build/msvc` include path from the test project to fix a
problem with the order of the include paths. Additionally remove the
unnecessary `include_directories` from the master project.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-04-05 10:03:07 +02:00
Luca Boccassi
926d2d2673 Merge pull request #2493 from herbrechtsmeier/cmake
CMake: Add cross compiling support and export targets to package config
2017-04-05 08:31:40 +01:00
Luca Boccassi
ac92fb54a6 Merge pull request #2502 from herbrechtsmeier/appveyor
appveyor: Use correct CURVE security options
2017-04-05 08:30:59 +01:00
Stefan Herbrechtsmeier
abbfed2b65 appveyor: Use correct CURVE security options
The AppVeyor build test options mismatch between command line options
and CMake CURVE security options. Rename the command line options to
the correct names.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-04-05 08:57:48 +02:00
Constantin Rack
cd753eedb4 Merge pull request #2501 from mauri-melato/master
RELICENSE: mauri-melato grant
2017-04-04 21:19:29 +02:00
mauri-melato
0c2ffd6926 RELICENSE: Maurizio Melato grant 2017-04-04 21:00:35 +02:00
mauri-melato
84f83d6f2d Merge pull request #1 from zeromq/master
Update the mauri-melato libzmq fork
2017-04-04 20:15:29 +02:00
Constantin Rack
699b3a2fd6 Merge pull request #2500 from kobolog/kobolog/relicense
Relicense
2017-04-04 19:08:30 +02:00
Andrey Sibiryov
d0427d13af Relicense. 2017-04-04 13:03:47 -04:00
Stefan Herbrechtsmeier
f186421273 cmake: Export targets to package config
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-04-04 15:48:39 +02:00
Stefan Herbrechtsmeier
4e3e3f659d cmake: Disable runtime checks while cross compiling
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-04-04 15:48:39 +02:00
Stefan Herbrechtsmeier
556de55e4c cmake: Use project specific source directory instead of top level source tree
Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
2017-04-04 15:48:39 +02:00
BJovke
f5ba27faec Relicense bjovke (#2498) 2017-04-04 14:45:24 +01:00
Luca Boccassi
61ba79a41c Merge pull request #2497 from jakecobb/relicense
RELICENSE: Jake Cobb grant
2017-04-04 14:16:54 +01:00
Jake Cobb
33db22c6a5 Relicensing permission for Jake Cobb 2017-04-04 09:09:13 -04:00
Luca Boccassi
34588101ee Merge pull request #2496 from bbdb68/master
RELICENSE : Bruno Bodin grant
2017-04-04 13:53:57 +01:00
Bruno Bodin
840f726b8b RELICENSE : Bruno Bodin grant 2017-04-04 14:45:03 +02:00
Luca Boccassi
98dc4a4ef6 Problem: typos in RELICENSE/ptroja.md
Solution: fill in the missing fields
2017-04-04 13:10:54 +01:00
Piotr Trojanek
b26b1932cb RELICENSE: Piotr Trojanek grant (#2381) 2017-04-04 13:07:57 +01:00
Luca Boccassi
26513b70d2 Merge pull request #2494 from bjovke/master
Unnecessary dynamic memory allocation in zmq_poller_poll()
2017-04-04 11:54:38 +01:00
bjovke
319eb27f19 Unnecessary dynamic memory allocation for zmq::socket_poller_t in zmq_poller_poll(). Fixed by allocating zmq::socket_poller_t from stack. 2017-04-04 11:51:59 +02:00
Jake Cobb
5d5263ed8a Prevent DOS by asserts in TCP tuning (#2492)
* Prevent DOS by asserts in TCP tuning

-Propagates socket option errors from the
tuning functions to the callers.
-Asserts a subset of error conditions during tuning,
excluding external network causes.
-Checks tuning results in 3 call sites and treats
them like failures to connect, accept, etc.

* Fix variable name

* Remove lambda requiring C++11
2017-04-04 09:55:26 +01:00
bbdb68
1d58a00992 Problem: no windows UWP support
* add define for windows/UWP

* prevent issue with COM references

* gettickcount not available on uwp

* add compiler definitions

* add convenitnece cmake file

* brute force uwp compilation

* fix compiler version

* cosmetics
2017-04-04 09:50:33 +01:00
Constantin Rack
e224cc9061 Merge pull request #2490 from lodagro/master
Relicense: Wouter Overmeire (lodagro)
2017-04-01 22:59:18 +02:00
Constantin Rack
9e86341483 Merge pull request #2489 from reunanen/relicense
RELICENSE: Juha Reunanen / Tomaattinen / Outotec grant
2017-04-01 22:58:46 +02:00
Wouter Overmeire
dfdd84fcd4 Relicense: Wouter Overmeire (lodagro) 2017-04-01 22:06:11 +02:00
Juha Reunanen
e1b9dbe5cc RELICENSE: Juha Reunanen / Tomaattinen / Outotec grant 2017-04-01 09:31:02 +03:00
Doron Somech
c5acd1bd70 Merge pull request #2486 from evoskuil/master
Problem: msg_t leaks/unhandled failures (and bad style).
2017-03-31 08:39:51 +03:00
evoskuil
7952c584b6 Problem: xpub test has broken style (missing whitespace). 2017-03-30 14:45:48 -07:00
evoskuil
1dd9cac24d Problem: xpub_t.xattach_pipe no handle msg.copy or pipe_t.write fails. 2017-03-30 14:45:40 -07:00
evoskuil
6436bc51e6 Problem: sub.xsetsockopt leaks message (0..n bytes) payload on fail. 2017-03-30 14:06:39 -07:00
evoskuil
1b79da0d7d Problem: proxy leaks one message payload (0..n bytes) on close. 2017-03-30 13:57:48 -07:00
evoskuil
4ea7d01803 Problem: send_failure() util name undergeneralized (for read success). 2017-03-30 13:57:47 -07:00
evoskuil
8c165ad1d2 Problem: excess whitespace (style). 2017-03-30 13:57:47 -07:00
Constantin Rack
d91cd4148e Merge pull request #2485 from zeromq/relicense
License grant
2017-03-30 20:50:14 +02:00
Kapp Arnaud
77562f7027 License grant 2017-03-30 20:46:47 +02:00
Doron Somech
f1bbb6fc0a Merge pull request #2484 from bluca/address_sanitizer
Problem: lack of out-of-bound memory checks in tests
2017-03-30 20:26:17 +03:00
Luca Boccassi
d3ca23502f Problem: lack of out-of-bound memory checks in tests
Solution: add a CI build run with GCC's Address Sanitizer enabled.
This compiler flag will make the unit test programs abort if it
detects errors such as out-of-bound memory access or use-after-free.
2017-03-30 15:33:51 +01:00
Luca Boccassi
7ce68da212 Merge pull request #2482 from evoskuil/master
Problem: insufficient error handling relative to zap_connect.
2017-03-30 10:48:38 +01:00
evoskuil
0bfd747af8 Problem: heartbeats test has invalid curve design; xplat and style probs. 2017-03-29 17:43:25 -07:00
evoskuil
a014e77ef7 Problem: leaks on send_zap_request fail, use of goto idiom is fragile. 2017-03-29 16:48:40 -07:00
evoskuil
29a5c98d83 Problem: zap_connect() asserts on write fail (yet returns fail codes). 2017-03-29 14:31:48 -07:00
evoskuil
a0ccdc866e Problem: secure servers ignore zap_connect failre code and set ready. 2017-03-29 14:31:47 -07:00
Luca Boccassi
9c6fb09929 Merge pull request #2478 from evoskuil/master
Problem: assert used for ZAP error handling aborts process.
2017-03-29 19:58:54 +01:00
evoskuil
6c1fb4d0b8 Problem: NuGet pacakge out of date. 2017-03-29 10:44:10 -07:00
evoskuil
f44300cb00 Problem: assert used for ZAP error handling aborts process. 2017-03-29 10:43:56 -07:00
Constantin Rack
a6d03df37d Merge pull request #2477 from zeromq/jemc-relicense
Problem: No relicense file for jemc contributions.
2017-03-29 07:30:37 +02:00
Joe Eli McIlvain
a86751ba51 Problem: No relicense file for jemc contributions.
Solution: Add relicense file.
2017-03-28 20:29:52 -07:00
Luca Boccassi
84d94b4f43 Merge pull request #2475 from chrisstaite/master
Relicense grant for chrisstaite
2017-03-28 19:02:34 +01:00
Chris
5cc487cb8a Relicense grant for chrisstaite 2017-03-28 19:00:14 +01:00
Doron Somech
8e2d2d47c6 Merge pull request #2472 from linville/master
RELICENSE: Aaron Linville grant
2017-03-28 07:59:18 +03:00
Aaron Linville
6d739f4ac7 RELICENSE: Aaron Linville grant 2017-03-27 22:13:51 -04:00
Luca Boccassi
815f4126e4 Merge pull request #2471 from t-b/improve_oom_handling
Improve oom handling
2017-03-27 23:22:07 +01:00
Thomas Braun
33e29bd383 Problem: Out of memory condition not always checked
Solution: Use the appropriate assertion macro.
2017-03-27 23:58:38 +02:00
Thomas Braun
fe9f6b2837 Problem: GSSAPI check for Out of memory is done conditionally
Solution: Do it unconditionally.
2017-03-27 23:58:27 +02:00
Thomas Braun
19f30f7926 Problem: throwing version of new called
Solution: Pass (std::nothrow) as done in all other places.
2017-03-27 23:58:19 +02:00
Thomas Braun
634c69abd3 Add relicense statement 2017-03-27 22:42:49 +02:00
Constantin Rack
182cb0ea06 Merge pull request #2470 from ianbarber/master
RELICENSE: Ian Barber grant
2017-03-27 19:31:26 +02:00
Ian Barber
1f74979e8a Relicense grant for ianbarber 2017-03-27 10:26:27 -07:00
Luca Boccassi
14bb2693db Merge pull request #2469 from madebr/relicense
Problem: need to relicense libzmq
2017-03-27 14:34:33 +01:00
Anonymous Maarten
38e3c120df RELICENSE: Anonymous Maarten grant 2017-03-27 15:10:19 +02:00
Luca Boccassi
5744042741 Merge pull request #2468 from goodfella/goodfella-relicensing
RELICENSE: Nick Guiffrida grant
2017-03-26 22:21:48 +01:00
nick
0a6f540bfe RELICENSE: Nick Guiffrida grant 2017-03-26 13:53:35 -07:00
Constantin Rack
159b39eb77 Merge pull request #2467 from bjoto/master
RELICENSE: Björn Töpel / bjoto
2017-03-26 20:49:23 +02:00
Bjorn Topel
31a3ead6e4 RELICENSE: Björn Töpel / bjoto 2017-03-26 20:40:05 +02:00
Constantin Rack
8cf64c2190 Merge pull request #2466 from evoskuil/master
Problem: insufficient use of const complicates calling.
2017-03-26 10:12:32 +02:00
evoskuil
616fbeff21 Problem: insufficient use of const complicates calling. 2017-03-26 00:53:50 -07:00
Constantin Rack
7a4c802489 Merge pull request #2465 from evoskuil/master
Problem: typo in comment.
2017-03-26 09:11:12 +02:00
Luca Boccassi
fd513470c8 Merge pull request #2464 from ulikoehler/relicense
Added relicense permit
2017-03-25 23:28:32 +00:00
Uli Köhler
be94f91148 added czmq to permission as well 2017-03-25 23:58:13 +01:00
Uli Köhler
e1cc4cde1e Added relicense permit 2017-03-25 23:55:04 +01:00
evoskuil
feb8e868df Problem: typo in comment. 2017-03-25 13:51:18 -07:00
Constantin Rack
e9e2f8d9ea Merge pull request #2463 from tSed/sma/relicensing
RELICENSE: Samuel Martin grant
2017-03-25 17:27:46 +01:00
Samuel Martin
754e9f6d88 RELICENSE: Samuel Martin grant 2017-03-25 17:14:22 +01:00
mkluwe
99007399f0 Relicense (#2462) 2017-03-24 15:24:06 +00:00
Brian Buchanan
66accc05f5 Relicense (#2456) 2017-03-24 11:50:03 +00:00
Nikolay Amiantov
28cdd111db Allow relicense (#2458) 2017-03-24 11:49:47 +00:00
Michal Vyskocil
9221b600bb Problem: need to relicense libzmq (#2459)
Solution; add vyskocilm.md
2017-03-24 11:49:28 +00:00
mditzel
771b7c6c3b RELICENSE: Maarten Ditzel (#2460) 2017-03-24 11:49:07 +00:00
Jim Klimov
85165bad6b Problem: need to relicense libzmq (#2461)
Solution: add jimklimov.md for my part
2017-03-24 11:48:50 +00:00
Luca Boccassi
3f80657c24 Merge pull request #2457 from evoskuil/master
Problem: VS projects are drifting and require sodium.
2017-03-24 11:47:44 +00:00
evoskuil
72714ad297 Problem: no nuget package for 4.2.2 2017-03-24 01:47:22 -07:00
evoskuil
f2d7b2cad8 Problem: curve not enabled by default in Visual Studio. 2017-03-23 22:29:19 -07:00
evoskuil
91a01f447d Problem: libsodium linked by default in Visual Studio projs. 2017-03-23 22:28:45 -07:00
evoskuil
dbb5e72638 Problem: Visual Studio projects intertwined and drifting. 2017-03-23 21:32:48 -07:00
Luca Boccassi
dbd8346225 Merge pull request #2455 from willstrang/master
RELICENSE: William P Strang grant
2017-03-24 00:50:53 +00:00
Will Strang
779561fea1 RELICENSE: William P Strang grant 2017-03-23 20:14:50 -04:00
Luca Boccassi
b906f48f27 Merge pull request #2454 from evoskuil/master
Problem: __STDC_LIMIT_MACROS before PCH causes VC++ warning.
2017-03-23 21:30:19 +00:00
evoskuil
068c815224 Problem: __STDC_LIMIT_MACROS before PCH causes VC++ warning. 2017-03-23 13:58:26 -07:00
Luca Boccassi
6622e16245 Merge pull request #2451 from evoskuil/master
Problem: implicit cast from size_t to int implies data loss.
2017-03-23 19:08:35 +00:00
evoskuil
af0320f786 Problem: implicit cast from size_t to int implies data loss. 2017-03-23 11:38:51 -07:00
Doron Somech
ded6c84b38 Merge pull request #2450 from pijyoi/master
RELICENSE: KIU Shueng Chuan
2017-03-23 16:33:42 +02:00
KIU Shueng Chuan
c796240792 RELICENSE: KIU Shueng Chuan 2017-03-23 22:28:50 +08:00
Constantin Rack
773b8ff4b1 Merge pull request #2449 from sdrsdr/sdrsdr-relicense-grant
Relicense Grant
2017-03-23 13:28:17 +01:00
Stoian Ivanov
d468e7a6c2 Relicense Grant 2017-03-23 13:50:38 +02:00
Luca Boccassi
ed6fd03f88 Merge pull request #2448 from chickenkiller/master
RELICENSE: License grant by Lionel Orry
2017-03-23 10:53:44 +00:00
Lionel Orry
6a87d20c19 RELICENSE: Lionel Orry grant 2017-03-23 11:48:55 +01:00
Luca Boccassi
f82ef5a207 Merge pull request #2447 from somdoron/gitfoxi-relicense
relicense michael fox
2017-03-23 10:24:04 +00:00
Michael Fox
a4e90f6fb8 relicense michael fox 2017-03-23 12:16:22 +02:00
Luca Boccassi
7c584142c5 Merge pull request #2446 from Hugne/master
Relicense: Erik Hugne
2017-03-22 18:02:39 +00:00
Erik Hugne
a898cd3359 Relicense: Erik Hugne 2017-03-22 18:53:19 +01:00
Luca Boccassi
04b96adfda Merge pull request #2445 from reza-ebrahimi/master
Relicense: Reza Ebrahimi <reza-ebrahimi>
2017-03-22 09:56:19 +00:00
Reza Ebrahimi
c6409b56a9 Relicense: Reza Ebrahimi <reza-ebrahimi> 2017-03-22 12:21:16 +03:30
Constantin Rack
d0ebd0370c Merge pull request #2444 from tabe/relicense-tabe
RELICENSE: Takeshi Abe
2017-03-22 09:19:16 +01:00
Constantin Rack
af6293de8d Merge pull request #2442 from bprager/master
license grant
2017-03-22 08:15:27 +01:00
bprager
04e4f0fe3c Create BerndPrager.md 2017-03-22 11:09:21 +07:00
Takeshi Abe
6c63f173be RELICENSE: Takeshi Abe 2017-03-22 10:49:11 +09:00
Luca Boccassi
96402a85be Merge pull request #2441 from natano/master
Relicense grant: Martin Natano
2017-03-21 22:12:56 +00:00
Martin Natano
d1ce868a35 Relicense grant: Martin Natano 2017-03-21 22:56:33 +01:00
Chuck Remes
88d1b862b2 Relicense - Chuck Remes (#2439)
* Create ChuckRemes.md

relicense my code contributions

* Update ChuckRemes.md

add GitHub name and my name
2017-03-21 21:15:21 +00:00
Luca Boccassi
ce4a57f360 Merge pull request #2440 from fidlej/topic_license
RELICENSE: Ivo Danihelka grant
2017-03-21 21:14:36 +00:00
Ivo Danihelka
10f591d7ff RELICENSE: Ivo Danihelka grant 2017-03-21 20:55:17 +00:00
Luca Boccassi
9d14c2dc77 Merge pull request #2438 from a4z/authors
Problem: not on the authors list
2017-03-21 18:11:58 +00:00
a4z
fcb826fb7e Problem: not on the authors list
Soloution: add me on the authors list
2017-03-21 19:07:15 +01:00
Luca Boccassi
98ddc96834 Merge pull request #2437 from a4z/relicense
add relicense file
2017-03-21 18:04:06 +00:00
a4z
2e564e9a3d add relicense file 2017-03-21 18:59:04 +01:00
Luca Boccassi
59ecc99a2f Merge pull request #2435 from Bklyn/master
Relicense: Caleb Epstein (Bklyn)
2017-03-21 13:41:41 +00:00
Caleb Epstein
58bf0dd44e Relicense: Caleb Epstein (Bklyn) 2017-03-21 09:39:14 -04:00
Luca Boccassi
0d039c92d3 Merge pull request #2434 from opedroso/master
RELICENSE: Osiris Pedroso
2017-03-21 11:52:56 +00:00
Osiris Pedroso
30ba3955d9 RELICENSE: Osiris Pedroso 2017-03-21 06:49:41 -05:00
Luca Boccassi
895e03e553 Merge pull request #2431 from robertcastle/master
Relicense - Robert Castle / Egomotion Ltd
2017-03-21 10:46:41 +00:00
Luca Boccassi
889fd5587d Merge pull request #2433 from SRombauts/master
RELICENSE: Sébastien Rombauts (SRombauts)
2017-03-21 10:46:05 +00:00
Sébastien Rombauts
144c76c911 RELICENSE: Sébastien Rombauts (SRombauts) 2017-03-21 11:35:10 +01:00
Luca Boccassi
2a2b67c25d Merge pull request #2429 from cowo78/master
Giuseppe Corbelli relicense grant
2017-03-21 10:18:28 +00:00
Luca Boccassi
a3b8174940 Merge pull request #2428 from olafmandel/relicense
RELICENSE: Olaf Mandel grant
2017-03-21 10:17:53 +00:00
Robert Castle
acd115fb2a Relicense - Robert Castle / Egomotion Ltd 2017-03-21 10:17:35 +00:00
Luca Boccassi
427338342f Merge pull request #2427 from mipaaa/master
Michael Hand grant
2017-03-21 10:17:25 +00:00
Anthony Scemama
45c6ba177e Relicense (#2426)
* Relicense
2017-03-21 10:16:57 +00:00
Luca Boccassi
fef3f2375a Merge pull request #2430 from roalz/relicense
RELICENSE: Roal Zanazzi (roalz)
2017-03-21 10:16:13 +00:00
Luca Boccassi
1f2d5ad561 Merge pull request #2425 from fichtner/relicense
add "any" relicensing permission
2017-03-21 10:15:42 +00:00
roalz
cbd9c00b1f RELICENSE: Roal Zanazzi (roalz) 2017-03-21 10:57:49 +01:00
Giuseppe Corbelli
1fafe0a38c Added RELICENSE/GiuseppeCorbelli.md to allow libzmq relicensing 2017-03-21 09:41:11 +00:00
Olaf Mandel
5f09a98567 RELICENSE: Olaf Mandel grant 2017-03-21 10:07:04 +01:00
Michael Hand
c38bf8f930 Michael Hand grant 2017-03-21 11:29:06 +03:00
Franco Fichtner
4961671b7f add "any" relicensing permission 2017-03-21 07:25:37 +01:00
Constantin Rack
27ce7f6ef6 Merge pull request #2424 from gena-moscow/master
RELICENSE
2017-03-21 06:53:09 +01:00
Constantin Rack
607b52fed3 Merge pull request #2423 from aseering/master
RELICENSE: Adam Seering
2017-03-21 06:52:25 +01:00
Gennady Makovetski
ed989bf36d RELICENSE 2017-03-21 08:14:58 +03:00
Adam Seering
5d61675fc1 RELICENSE: Adam Seering 2017-03-20 23:51:10 -04:00
Luca Boccassi
1df0de728d Merge pull request #2419 from sheremetyev/relicense
RELICENSE: Fedor Sheremetyev
2017-03-20 22:50:08 +00:00
Luca Boccassi
bf6656e442 Merge pull request #2420 from drodri/relicense
relicense
2017-03-20 22:49:27 +00:00
Luca Boccassi
123d8a7a51 Merge pull request #2421 from ezhikus/master
RELICENSE: Volodymyr Korniichuk
2017-03-20 22:48:54 +00:00
Volodymyr Korniichuk
c030c6c9e4 RELICENSE: Volodymyr Korniichuk 2017-03-21 00:32:08 +02:00
Fedor Sheremetyev
2c9ce720c0 RELICENSE: Fedor Sheremetyev 2017-03-20 22:07:55 +00:00
drodri
5f519115c3 relicense 2017-03-20 23:07:30 +01:00
Luca Boccassi
d80e8225d2 Merge pull request #2418 from djelenc/master
RELICENSE: David Jelenc
2017-03-20 21:52:09 +00:00
David Jelenc
50f8c6d049 RELICENSE: David Jelenc 2017-03-20 22:46:05 +01:00
Luca Boccassi
09c91ec593 Merge pull request #2417 from c-rack/relicense-c-rack
RELICENSE: Constantin Rack
2017-03-20 19:57:16 +00:00
Constantin Rack
730de88c3f RELICENSE: Constantin Rack 2017-03-20 20:51:47 +01:00
Luca Boccassi
d1f5070a3c Merge pull request #2416 from ghpu/master
Agreement to relicensing.
2017-03-20 18:16:33 +00:00
Ghislain
59478a8618 Agreement to relicensing. 2017-03-20 19:13:21 +01:00
Luca Boccassi
237ad227f0 Merge pull request #2415 from febeling/copyright-grant
RELICENSE febeling
2017-03-20 17:18:06 +00:00
Florian Ebeling
d34aa4b0bb RELICENSE febeling 2017-03-20 17:41:53 +01:00
Gavin McNiff
9833d18cf7 Relicense approval (#2397)
* Create GavinMcNiff.md
2017-03-20 15:55:07 +00:00
Luca Boccassi
bf46e30e25 Merge pull request #2414 from JohanMabille/relicense
relicense
2017-03-20 15:45:08 +00:00
Johan Mabille
949a92043f relicense 2017-03-20 16:43:13 +01:00
Luca Boccassi
69038ec033 Merge pull request #2413 from SylvainCorlay/relicense
Relicense approval
2017-03-20 15:39:38 +00:00
Sylvain Corlay
45ff0212e4 Relicense 2017-03-20 16:32:49 +01:00
Luca Boccassi
78e4989f60 Merge pull request #2412 from banburybill/master
RELICENSE: Jim Hague
2017-03-20 15:30:47 +00:00
Jim Hague
85782f391c RELICENSE: Jim Hague 2017-03-20 15:26:37 +00:00
Luca Boccassi
05b692859c Merge pull request #2411 from camachat/master
RELICENSE: Eric Camachat
2017-03-20 15:06:39 +00:00
Luca Boccassi
78b2866977 Merge pull request #2410 from soulik/testing
RELICENSE: soulik
2017-03-20 15:06:12 +00:00
Eric Camachat
86eed73cee RELICENSE: Eric Camachat 2017-03-20 07:56:14 -07:00
Mário Kašuba
5781df52c2 RELICENSE: soulik 2017-03-20 15:30:46 +01:00
Luca Boccassi
ece055ac9a Merge pull request #2409 from danriegsecker/master
Relicense statement for Dan Riegsecker (@danriegsecker)
2017-03-20 14:04:45 +00:00
Dan Riegsecker
68c49b2881 Relicense statement for Dan Riegsecker (@danriegsecker) 2017-03-20 09:59:12 -04:00
Luca Boccassi
e2e9f7ce9d Merge pull request #2408 from loachfish/master
RELICENSE: Justin.Hung grant
2017-03-20 13:40:04 +00:00
huanglin
d5e6ec0d8d RELICENSE: Justin.Hung grant 2017-03-20 21:28:30 +08:00
Diego Fons
adea1cefdc RELICENSE: Diego Fons (#2407)
* RELICENSE: Diego Fons
2017-03-20 12:59:04 +00:00
Adrian Muraru
e9372f236a Added RELICENSE for amuraru contributor (#2406)
* Create amuraru.md
2017-03-20 12:44:44 +00:00
Luca Boccassi
56484e65b5 Merge pull request #2405 from shripchenko/master
RELICENSE: shripchenko
2017-03-20 11:57:31 +00:00
shripchenko
6d4d25a915 RELICENSE: shripchenko 2017-03-20 14:55:04 +03:00
Luca Boccassi
47c3a6b6f1 Merge pull request #2404 from zeromq/gonzus-patch-1
Create gonzus.md
2017-03-20 11:11:50 +00:00
Gonzalo Diethelm
66b7314166 Create gonzus.md
Relicensing libzmq
2017-03-20 12:11:18 +01:00
Luca Boccassi
9d5b5b7b07 Merge pull request #2401 from rlenferink/master
RELICENSE: Updated wrong filename
2017-03-20 10:56:26 +00:00
Luca Boccassi
2c771a409e Merge pull request #2403 from montoyaedu/patch-1
Create montoyaedu.md
2017-03-20 10:56:07 +00:00
Montoya Edu
f6e80e410c Create montoyaedu.md 2017-03-20 11:36:27 +01:00
Roy Lenferink
ec14bb7b35 RELICENSE: Updated wrong filename 2017-03-20 11:08:39 +01:00
Luca Boccassi
89096c71fa Merge pull request #2400 from cjuniet/master
RELICENSE: Christophe Juniet
2017-03-20 09:52:03 +00:00
Luca Boccassi
88bf9f8f1c Merge pull request #2399 from sappo/master
RELICENSE: Kevin Sapper grant
2017-03-20 09:51:26 +00:00
Christophe Juniet
a2e9ad696b RELICENSE: Christophe Juniet 2017-03-20 10:36:00 +01:00
Kevin Sapper
d561143321 RELICENSE: Kevin Sapper grant 2017-03-20 10:16:58 +01:00
Constantin Rack
a0d61a8029 Merge pull request #2398 from demozon/master
RELICENSE: Tore Halvorsen
2017-03-20 09:18:53 +01:00
Constantin Rack
951ba9d0e6 Merge pull request #2392 from clkao/patch-1
Create clkao.md
2017-03-20 09:18:20 +01:00
Constantin Rack
0793c7abea Merge pull request #2396 from vtellier/master
RELICENSE: Vincent Tellier
2017-03-20 09:17:56 +01:00
Constantin Rack
95940fa676 Merge pull request #2391 from Bitiquinho/master
RELICENSE: Leonardo J. Consoni grant
2017-03-20 09:17:31 +01:00
Constantin Rack
bc7c5a1e96 Merge pull request #2390 from taotetek/master
Problem: want to relicense under mplv2
2017-03-20 09:17:15 +01:00
Constantin Rack
7b2ba9f842 Merge pull request #2389 from johntconklin/relicense
RELICENSE: John T. Conklin grant
2017-03-20 09:16:50 +01:00
Tore Halvorsen
0df66b9648 RELICENSE: Tore Halvorsen 2017-03-20 09:04:17 +01:00
Constantin Rack
b121e621c0 Merge pull request #2395 from ckamm/ckamm-relicense
RELICENSE: Christian Kamm grant
2017-03-20 08:44:28 +01:00
Vincent Tellier
39407c0d46 [RELICENSE] Vincent Tellier
MPLv2 or any Open Source Initiative (OSI) approved license chosen by the
current ZeroMQ BDFL.
2017-03-20 08:08:58 +01:00
Christian Kamm
0434e03932 RELICENSE: Christian Kamm grant 2017-03-20 08:01:37 +01:00
Constantin Rack
6c424465a6 Merge pull request #2394 from danielhtshih/master
RELICENSE: Daniel Shih grant
2017-03-20 07:59:17 +01:00
Constantin Rack
61cf277d81 Merge pull request #2393 from evoskuil/master
RELICENSE: Eric Voskuil grant
2017-03-20 07:58:09 +01:00
Daniel Shih
555f4ccb56 RELICENSE: Daniel Shih grant 2017-03-20 13:32:06 +08:00
evoskuil
eb3f00717f RELICENSE: Eric Voskuil grant 2017-03-19 20:55:24 -07:00
Chia-liang Kao
44a7a3e6e4 Create clkao.md 2017-03-20 10:30:01 +08:00
Bitiquinho
10a39e57a1 RELICENSE: Leonardo J. Consoni grant 2017-03-19 23:03:14 -03:00
Brian Knox
2ac51173de Problem: want to relicense under mplv2 2017-03-19 20:38:40 -04:00
J.T. Conklin
d26414d152 RELICENSE: John T. Conklin grant 2017-03-19 17:33:59 -07:00
Luca Boccassi
027856d770 Merge pull request #2385 from rgagnon24/master
RELICENSE: Robert Gagnon
2017-03-19 22:39:37 +00:00
Luca Boccassi
2b7cda2eff Merge pull request #2386 from jkryl/master
RELICENSE: Jan Kryl grant
2017-03-19 22:39:16 +00:00
chuggafan
7913e96271 I have added msys building, license stuff (#2387)
(msys building is buggy, please be aware, it fails to compile on my
machine) also I modified the buildall.bat/buildbase.bat to use correct
MSVC versions instead of "visual studio 2017"
2017-03-19 22:38:43 +00:00
Luca Boccassi
8ce9a11af4 Merge pull request #2388 from TTimo/master
relicensing
2017-03-19 22:37:57 +00:00
Luca Boccassi
7df5373c12 Merge pull request #2384 from agronholm/master
Relicense: Alex Grönholm grant
2017-03-19 22:37:39 +00:00
Timothee Besset
cef0289f4d relicensing 2017-03-19 17:32:46 -05:00
Jan Kryl
c0ddcf6f5c RELICENSE: Jan Kryl grant 2017-03-19 23:04:23 +01:00
Rob Gagnon
28e3225801 RELICENSE: Robert Gagnon 2017-03-19 16:59:22 -05:00
Alex Grönholm
63120a88b0 Create agronholm.md 2017-03-19 23:47:04 +02:00
Luca Boccassi
6517d9199c Merge pull request #2383 from thompsa/master
RELICENSE: Andrew Thompson grant
2017-03-19 21:32:42 +00:00
Andrew Thompson
b9ac5cdc6c RELICENSE: Andrew Thompson grant 2017-03-20 10:27:57 +13:00
Luca Boccassi
d4b90657e8 Merge pull request #2382 from AndreLouisCaron/relicense
RELICENSE: Andre Caron grant
2017-03-19 21:24:48 +00:00
Andre Caron
625f52e3a2 RELICENSE: Andre Caron grant 2017-03-19 17:02:05 -04:00
Luca Boccassi
c4d80a50c0 Merge pull request #2380 from cdolan/relicense
RELICENSE: Christopher Dolan grant
2017-03-19 20:38:34 +00:00
Christopher Dolan
eaa77b383b RELICENSE: Christopher Dolan grant 2017-03-19 16:33:08 -04:00
Constantin Rack
5aab04b083 Merge pull request #2379 from yuvallanger/master
RELICENSE: Yuval Langer grant
2017-03-19 21:14:08 +01:00
Yuval Langer
4ea0dc4778 RELICENSE: Yuval Langer grant 2017-03-19 22:07:40 +02:00
Luca Boccassi
b43cd5af78 Merge pull request #2378 from staticfloat/sf/relicensing
Add relicensing agreement for Elliot Saba
2017-03-19 19:53:27 +00:00
Luca Boccassi
4856169620 Merge pull request #2377 from tailhook/relicense
Relicense permission by Paul Colomiets
2017-03-19 19:52:01 +00:00
Elliot Saba
c33b875d11 Add relicensing agreement for Elliot Saba 2017-03-19 12:51:48 -07:00
Paul Colomiets
86c7be3854 Relicense permission by Paul Colomiets 2017-03-19 21:46:49 +02:00
mlodew
9091623243 Fixed lib and dll paths in visual studio build (#2375)
Fixed path to lib and dll files.
2017-03-19 16:50:33 +00:00
Doron Somech
4cc32d3367 Merge pull request #2374 from rlenferink/license_grants
RELICENSE: Added templates for relicensing
2017-03-17 19:43:47 +02:00
Roy Lenferink
a46ca653a9 RELICENSE: Added templates for relicensing 2017-03-17 17:11:25 +01:00
Luca Boccassi
eccf8b7aae Merge pull request #2373 from rlenferink/rlenferink_grant
RELICENSE: License grant by Roy Lenferink
2017-03-17 16:01:19 +00:00
Roy Lenferink
bf2b957c49 RELICENSE: Roy Lenferink grant 2017-03-17 16:35:57 +01:00
Luca Boccassi
db854614e1 Merge pull request #2372 from Q-Leap-Networks/pr-fix_test_sodium
zmq_curve_keypair(): return result from crypto_box_keypair()
2017-03-16 14:48:15 +00:00
Goswin von Brederlow
1dd5fef20c zmq_curve_keypair(): return result from crypto_box_keypair() to make testcase meaningfull 2017-03-16 14:01:08 +00:00
Constantin Rack
da1633ebe7 Merge pull request #2368 from bluca/io_thread_name
Problem: refactor gone wrong, redundant thread name
2017-03-12 14:28:30 +01:00
Luca Boccassi
d7aceef2ed Problem: thread name is redundant
Solution: call it simply "ZMQ background" instead of "ZMQ b/g thread"
2017-03-12 13:11:44 +00:00
Luca Boccassi
092ad50b0c Problem: I can't refactor
Solution: fix ifdef check for pthread_setname
2017-03-12 13:11:11 +00:00
Constantin Rack
33246f7a9e Merge pull request #2367 from bluca/io_thread_name
Problem: ZMQ background threads are unnamed
2017-03-12 10:47:34 +01:00
Luca Boccassi
3ab4796c5a Problem: ZMQ background threads are unnamed
Solution: use pthread API to set the name. For now call every thread
"ZMQ b/g thread". Would be nice to number the I/O threads and name
explicitly the reaper thread, but in reality a bit of internal API
churn would be necessary, so perhaps it's not worth it.
This is useful when debugging a process with many threads.
2017-03-12 00:46:15 +00:00
Constantin Rack
3548d5e950 Merge pull request #2365 from somdoron/deprecate_zmq_poll
problem:zmq_poll is slow and the API is complicated
2017-03-11 10:21:44 +01:00
somdoron
aac8bb19fc problem:zmq_poll is slow and the API is complicated
solution: deprecate zmq_poll in favor of zmq_poller
2017-03-11 11:20:44 +02:00
Constantin Rack
580c5b288a Merge pull request #2364 from somdoron/master
problem: zmq_poll is slow because FD is being created on every call
2017-03-11 10:20:09 +01:00
somdoron
f694a2d985 problem: zmq_poll is slow because FD is being created on every call
making the creation of FD only when thread safe sockets are in used
within the zmq_poller which improve the zmq_poll performance.
2017-03-11 11:07:06 +02:00
Luca Boccassi
651f81e8af Merge pull request #2362 from nexcvon/patch-2
Problem: zmq::signaler_t::send may loop forever
2017-03-06 15:26:24 +00:00
nexcvon
9624f9ade7 Problem: zmq::signaler_t::send may loop forever
Solution: restore the wsa_assert statement previously removed.
2017-03-06 21:55:30 +08:00
Constantin Rack
70a7756d8d Merge pull request #2361 from bluca/obs_new
Problem: Travis using deprecated OBS project
2017-03-03 23:14:46 +01:00
Luca Boccassi
05a967fa1b Problem: Travis using deprecated OBS project
Solution: switch to shiny new one in the network:messaging namespace
2017-03-03 18:04:26 +00:00
Luca Boccassi
34be53d8e4 Merge pull request #2360 from nexcvon/patch-2
Problem: Assertion failed in zmq::signaler_t::send
2017-03-03 13:13:07 +00:00
nexcvon
bcf75777c8 Problem: Assertion failed in zmq::signaler_t::send
Solution: Change to the way it does below on non-Windows platforms, retry when send returns -1.
2017-03-03 19:00:58 +08:00
Doron Somech
07d904a2f8 Merge pull request #2354 from bluca/fix_pipe
Problem: router pipe can block forever
2017-02-25 06:13:18 +02:00
Luca Boccassi
a73d5cd6c6 Problem: router pipe can block forever
Solution: invert check_write and check_hwm calls in router xsend
function so that check_write can mark the pipe as inactive if
necessary.
2017-02-24 23:56:52 +00:00
Doron Somech
1cfc3e1744 Merge pull request #2353 from bluca/fix_test
Problem: unnecessary change to router_mandatory_hwm test
2017-02-24 21:11:06 +02:00
Luca Boccassi
0f473d14cb Problem: unnecessary change to router_mandatory_hwm test
Solution:

Revert "Problem with ZMQ_ROUTER_MANDATORY option when peer lost"

This partially reverts commit 06740b5d8c1fbf13205c9b6c63ba7e7ef4350a04.

The change in the mentioned commit was fixed to be backward
compatible so test changes are no longer necessary.
Partially revert the commit, leaving only the bug fix and taking out
the test change and the superfluous change in socket_base.
2017-02-24 17:57:14 +00:00
Doron Somech
ca311f7bfe Merge pull request #2352 from reza-ebrahimi/master
Commit: Issue #2348
2017-02-24 19:33:13 +02:00
Reza Ebrahimi
06740b5d8c Problem with ZMQ_ROUTER_MANDATORY option when peer lost
indention

Revert "indention"

This reverts commit a6e7e192ac2d089ac9f7dc0d31d4b1fd10de982e.

indention

indention

Fix Failure in tests

Check both pipe full and pipe close
2017-02-24 20:49:26 +03:30
Doron Somech
995a41b5a3 Merge pull request #2350 from tabe/zmq_socket_doc-typo
Problem: typo in the zmq_socket doc
2017-02-23 09:24:46 +02:00
Takeshi Abe
c7ce4a1cea Problem: typo in the zmq_socket doc
Solution: fix it
2017-02-23 10:29:25 +09:00
boringuy
d6f4263ce3 cmake WITH_LIBSODIUM option is broken (#2349)
* cmake WITH_LIBSODIUM option is broken

- Fixed the variable name in platform.hpp.in
- Fixed #if check for randombytes_close() when libsodium is used

* Fixed typo from previous commit

* Reverted compile error fix for randombytes_close()
2017-02-22 22:28:05 +00:00
Luca Boccassi
6818cced8e Merge pull request #2347 from zstang/patch-1
#2341 fix
2017-02-21 09:46:18 +00:00
zstang
3b0dfd528f #2341 fix
the root path name specified in this file cause the #2341 problem, the root path name is not need.
2017-02-21 17:35:36 +08:00
Constantin Rack
64a85ebf2f Merge pull request #2346 from bluca/news
Problem: 4.2.2 is out, version(s) are out of date
2017-02-18 19:25:43 +01:00
Luca Boccassi
ac5c75cea1 Problem: 4.2.2 is out, version(s) are out of date
Solution: bump changelog, ABI revision, library and packaging version
2017-02-18 17:56:55 +00:00
Constantin Rack
8d75d506b6 Merge pull request #2345 from bluca/news
Problem: NEWS not up to date, packaging versions not up to date
2017-02-18 18:48:41 +01:00
Luca Boccassi
5285b6e152 Problem: packaging versions out of date
Solution: bump to 4.2.2
2017-02-18 17:43:48 +00:00
Luca Boccassi
854ed90472 Problem: NEWS not up to date
Solution: mention main changes and bug fixes since 4.2.1
2017-02-18 17:40:45 +00:00
Luca Boccassi
26998b738e Merge pull request #2332 from bluca/parse_v4_mapped_in_v6
Problem: v4-in-v6 mapped addresses cause parsing failure
2017-02-07 21:22:24 +00:00
Luca Boccassi
0db22c0069 Merge pull request #2337 from SylvainCorlay/include-find-sodium
Include FindSodium.cmake in dist tarball
2017-02-07 13:22:23 +00:00
Sylvain Corlay
33dccd2bf1 Include FindSodium.cmake in dist tarball 2017-02-07 14:12:43 +01:00
Luca Boccassi
18cb7caeb2 Problem: v4-in-v6 mapped addresses cause parsing failure
Solution: in the address validator accept an endpoint that starts
with :, eg: ::ffff:192.168.0.1:12345 as it's a valid mapped
address.
2017-02-03 11:19:31 +01:00
Luca Boccassi
78dafe5c7c Merge pull request #2331 from jimklimov/sol-poller
Problem: polling does not work well OOB in OpenIndiana
2017-02-02 17:27:23 +00:00
Jim Klimov
f8816945c2 Problem: polling does not work well OOB in OpenIndiana
Solution: even though epoll() semantics are supported in modern illumos, it may differ from what Linux developers are used to expect. Skip epoll and use poll or select semantics (both were checked to work well).
2017-02-02 18:18:37 +01:00
Luca Boccassi
e56bc48ebc Merge pull request #2327 from chutz/fix-divide-by-zero
fix divide by zero in zmq::lb_t::sendpipe
2017-01-28 01:29:20 +00:00
Patrick McLean
df7c684dd5 fix divide by zero in zmq::lb_t::sendpipe
This is based on https://github.com/zeromq/zeromq3-x/pull/116/files
2017-01-27 17:08:20 -08:00
Luca Boccassi
5c34f65ad5 Merge pull request #2326 from SylvainCorlay/framework
Make OS Xframwork build optional
2017-01-27 19:53:28 +00:00
Sylvain Corlay
4e472b18e3 Make OS Xframwork build optional 2017-01-27 19:30:18 +01:00
Ahmad M. Zawawi
bf6d8a5d17 Fix clock_t crash on iOS 9.3.2 and 9.3.5 (#2325)
* Fix possible clock_t crash on iOS 9.3.2 and 9.3.5 + macOS < 10.12

* No need to read return value
2017-01-26 13:21:41 +00:00
sigiesec
c6c21cf197 Problem: zmq_z85_decode does not validate its input (#2322)
* Problem: zmq_z85_decode does not validate its input
Solution: added checks for invalid characters and overflows

* Added tests, added further check for range overflow, removed (multiple) calls to strlen

* Problem: gcc fails to build
Solution: added missing include directive

* Added VS2015 test_utils_z85 project

* Fixed indentation and copyright notice

* Resolved garbage from merge

* Revert "Added VS2015 test_utils_z85 project"

This reverts commit c58b3c664c144326e77135aa1184b6f0dee11143.

* Problem: test calls zmq_z85_decode with a NULL dest
Solution: call zmq_z85_decode with a properly sized buffer

* Problem: tests for zmq_z85_* scattered over two files
Solution: merged files

* Removed reference to removed test file from CMakeLists.txt

* Problem: Missing include directive to stdint.h
Solution: Added include directive

* Define __STDC_LIMIT_MACROS before including stdint.h

* Problem: Wrong variable is checked for invalid character marker
Solution: Use correct variable
2017-01-25 14:28:03 +00:00
Luca Boccassi
673bb506cf Merge pull request #2318 from kurdybacha/static_file_fix
CMake static library output does not match ZeroMQ Config.
2017-01-22 18:43:21 +00:00
Pawel Kurdybacha
877419e94f CMake static library output does not match ZeroMQ Config.
Configuration used in ZeroMQConfig.cmake.in does not match to
explicic "libzmq" output of static build.
2017-01-22 18:17:55 +00:00
Luca Boccassi
c031b0c470 Merge pull request #2317 from SylvainCorlay/windows-static-target-name
Problem: cmake artefacts different from make generated artefacts
2017-01-21 14:27:43 +00:00
Sylvain Corlay
e38453866d Problem: cmake artefacts different from make generated artefacts 2017-01-21 15:14:30 +01:00
Constantin Rack
e5677d89d5 Merge pull request #2315 from bluca/typo
Problem: typo in the zmq_has doc
2017-01-19 22:11:37 +01:00
Luca Boccassi
5f8d87bf32 Problem: typo in the zmq_has doc
Solution: fix it
2017-01-19 21:00:15 +00:00
Luca Boccassi
9aae95e496 Merge pull request #2314 from Asmod4n/master
add test and documentation for "draft" capability
2017-01-19 20:37:16 +00:00
Asmod4n
b7cd6e8a85
add test and documentation for "draft" capability 2017-01-19 20:50:18 +01:00
Luca Boccassi
a6a56e299d Merge pull request #2313 from Asmod4n/patch-1
Problem: cannot check if libzmq was build with draft api
2017-01-19 17:59:03 +00:00
Asmod4n
4dbd387fa9 Add "draft" capability to zmq_has
As discussed in #2307
2017-01-19 18:44:56 +01:00
Luca Boccassi
4c1b338015 Merge pull request #2311 from SylvainCorlay/static-target-name
cmake: Set output name to libzmq for the libzmq-static target
2017-01-19 13:28:35 +00:00
Sylvain Corlay
c65a27213a Problem: name of static library generated by cmake differs from the behavior of kernel.
Solution: Change the target output name from libzmq-static to libzmq.
2017-01-19 13:31:39 +01:00
Luca Boccassi
ee9751ec25 Merge pull request #2308 from chuggafan/master
Updated buildbase and buildall to work with visual studio 2017
2017-01-16 20:11:28 +00:00
chuggafan
020ff65efa Updated buildbase and buildall to work with visual studio 2017 2017-01-16 14:54:40 -05:00
Luca Boccassi
f86053b985 Merge pull request #2304 from JohanMabille/cmake_fix
cmake install on linux fixed
2017-01-12 23:42:19 +00:00
Johan Mabille
36d0c70647 cmake install on linux fixed 2017-01-13 00:10:32 +01:00
Constantin Rack
b8d8c498c6 Merge pull request #2302 from laplaceyang/pr_thread_safe_modify_pipe
Problem: Thread-safe solution for modify hwm of pipe
2017-01-11 09:28:33 +01:00
laplaceyang
107f2441d5 Problem: Thread-safe solution for modify hwm of pipe
Solution: where change pipe hwm, send a command (new type pipe_hwm) to peer, so peer pipe can modify hwm thread-safely
2017-01-11 10:49:54 +08:00
Constantin Rack
4fc313d152 Merge pull request #2301 from bluca/set_peer_unsafe
Problems: modifying pipe from different thread is not safe and HWM always boosted by 1
2017-01-10 21:13:25 +01:00
Luca Boccassi
edc770d680 Problem: HWM always boosted by 1
Solution: initialise *hwmboost to -1 instead of 1, and use it only if
it's >= 0. The socket option code checks anyway that the
user-provided value is >= 0 so there is no risk of clashing. The
documentation also specifies that it has to be >= 0.
2017-01-10 11:40:14 +00:00
Luca Boccassi
9f1ba60f50 Problem: modifying pipe from different thread is not safe
Solution: revert change from #2299 to avoid bugs while we look for an
alternative and thread-safe solution
2017-01-10 11:38:02 +00:00
Luca Boccassi
598befc1f8 Merge pull request #2299 from laplaceyang/pr_set_hwm_after_connect
Problem: set hwm after connect lead to infinite hwm
2017-01-09 08:34:12 +00:00
laplaceyang
5adcb83509 Problem: set hwm after connect lead to infinite hwm 2017-01-09 12:34:40 +08:00
Constantin Rack
77e1792cd8 Merge pull request #2298 from bluca/spec_uuid
Problem: spec file still depends on libuuid
2017-01-08 12:10:21 +01:00
Luca Boccassi
ce735c44ef Problem: spec file still depends on libuuid
Solution: remove the dependency as it's not been needed for a while
2017-01-07 22:25:36 +00:00
Constantin Rack
81bbd2b72d Merge pull request #2296 from bluca/asciidoc-base
Problem: debian packages do not build manpages
2017-01-07 19:39:36 +01:00
Luca Boccassi
e37936616d Problem: debian packages do not build manpages
Solution: build-depend on asciidoc and xmlto
2017-01-07 16:10:08 +00:00
Luca Boccassi
9dbbd69480 Merge pull request #2295 from JohanMabille/cmake_win_install
Cmake win install
2017-01-07 01:51:30 +01:00
Johan Mabille
e258890f67 INSTALLATION instructions 2017-01-07 00:47:22 +01:00
Johan Mabille
7c709e5466 cmake install config file 2017-01-07 00:21:06 +01:00
Johan Mabille
e95d23198f CPack option and .txt files installation dir 2017-01-06 14:29:56 +01:00
Luca Boccassi
e80db0e8e5 Merge pull request #2294 from JohanMabille/cmake_precompiled
Windows cmake build fixed
2017-01-06 11:10:41 +01:00
Johan Mabille
2d749a066c Windows cmake build fixed 2017-01-06 10:52:20 +01:00
Constantin Rack
ceb6be7751 Merge pull request #2292 from bluca/osx_sigpipe
Problem: peer can close connection before SO_NOSIGPIPE is set
2017-01-04 20:28:51 +01:00
Luca Boccassi
31a3a06828 Problem: peer can close connection before SO_NOSIGPIPE is set
Solution: setsockopt returns EINVAL if the connection was closed by
the peer after the accept returned a valid socket. This is a valid
network error and should not cause an assert.
To handle this we have to extract the setsockopt from the stream
engine, as there's no clean way to return an error from the
constructor. Instead, try to set this option before creating the
engine in the callers, and return immediately as if the accept
had failed to avoid churn. Do the same for the connect calls by
setting the option in open_socket, so that the option for that
case is set even before connecting, so there's no possible race
condition.
Since this has to be done in 4 places (tcp/ipc listener, socks
connecter and open_socket) add an utility function in ip.cpp.
Fixes #1442
2017-01-04 17:34:33 +00:00
Constantin Rack
d532f2e4d8 Merge pull request #2290 from bluca/doc_proxy_eintr
Problem: zmq_proxy* may return EINTR other than ETERM
2017-01-03 21:21:11 +01:00
Constantin Rack
17ef8c6793 Merge pull request #2289 from bluca/windoze_includes_test
Problem:capitalized include filenames trip mingw
2017-01-03 21:20:46 +01:00
Luca Boccassi
28c7abf821 Problem: zmq_proxy* may return EINTR other than ETERM
Solution: mention this in the documentation
2017-01-03 15:34:08 +01:00
Luca Boccassi
7e186432cb Problem:capitalized include filenames trip mingw
Solution: use lowercase
2017-01-03 14:59:57 +01:00
Luca Boccassi
dce4d06b71 Merge pull request #2288 from paddor/master
fix typos
2017-01-03 12:49:34 +01:00
Patrik Wenger
1b3df75b87 fix typos 2017-01-03 12:45:33 +01:00
Luca Boccassi
ec2ba8a997 Merge pull request #2283 from vtellier/master
Fixed issue #2227 second part
2017-01-01 19:29:09 +01:00
Vincent Tellier
ea7e03a7ff Fixed issue #2286 by documentation
tests/README.md explicitly indicates to check the libzmq.lib path in
CMakeLists.txt.
2017-01-01 19:08:28 +01:00
Vincent Tellier
7e36db07b1 Handshake events null pointer fix
The mechanism is instanciated during the handshake itself, when and
error happen before this, the error method shall work anyway.
An error handling with a NULL mechanism means the handshake fail, so the
handshake failure event is also raised in this case.
2017-01-01 19:08:28 +01:00
Vincent Tellier
ffb31dcadd Fixed issue #2227 second part
- removed the previously added encryption_error, less changes less bug
 - handshake fail is now signaled when an error happen while the
   mechanism is still hanshaking
2017-01-01 19:08:28 +01:00
Constantin Rack
ee98e7dca0 Merge pull request #2287 from bluca/hurd_ipv6_tos
Problem: build fails on GNU/Hurd as it does not support IPV6_TCLASS
2017-01-01 17:06:31 +01:00
Luca Boccassi
efc0e94291 Problem: build fails on GNU/Hurd as it does not support IPV6_TCLASS
Solution: check if IPV6_TCLASS is defined so that when Hurd adds
support it will just work. Also it will avoid tripping over this on
other similar legacy systems.
2017-01-01 16:23:27 +01:00
Constantin Rack
c38fde00a0 Merge pull request #2285 from bluca/bump_versions
Problem: 4.2.1 is out, time to bump versions
2016-12-31 18:25:36 +01:00
Luca Boccassi
7c0ded93af Problem: 4.2.1 is out, time to bump versions
Solution: add new changelog entry, bump library version in zmq.h and
bump ABI version in configure.ac and CMakeLists.txt
2016-12-31 16:26:41 +01:00
Luca Boccassi
7005f22726 Bugfix release 4.2.1
Finalize changelog and bump ABI revision
2016-12-31 15:55:48 +01:00
Kevin Sapper
086bb890c5 Merge pull request #2282 from bluca/event_test
Problems: test_monitor failing, DRAFT events leaking when draft APIs are disabled
2016-12-31 14:13:45 +01:00
Luca Boccassi
3f3601e855 Problem: handshake events not tested with curve
Solution: check that the expected handshake success or failure events
are triggered in the curve security unit test
2016-12-31 01:31:37 +01:00
Luca Boccassi
d50b5b80fd Problem: NEWS entry for ctx option does not point to docs
Solution: fix it
2016-12-30 23:53:20 +01:00
Luca Boccassi
fc748ec799 Problem: new monitor events not mentioned in NEWS
Solution: add an entry
2016-12-30 23:52:27 +01:00
Luca Boccassi
200649fd57 Problem: new handshake event monitoring undocumented
Solution: add them to the event monitor manpage
2016-12-30 23:40:22 +01:00
Luca Boccassi
2afba0085f Problem: documentation does not warn about ZMQ_EVENT_ALL and new events
Solution: add a note pointing out that when new events are added the
ZMQ_EVENT_ALL mask will start returning them, so applications that
can't handle that transparently should not use it and instead pick
only the event types they want.
Creating a new event type and having monitors with ZMQ_EVENT_ALL
return them will not be considered a backward incompatible change
even though the flow of events will change.
2016-12-30 23:27:56 +01:00
Luca Boccassi
c0e2bc4ef9 Problem: new DRAFT monitor events returned even without --enable-draft
Solution: wrap the event triggering in the DRAFT ifdef as well as the
defines. This ensures that the event are returned only if the
library was built with DRAFTs enabled.

Also update the test case to expect the new events since it uses
the catch-all mask. Although the sequence of event is different and
this might be considered as an API breakage, using the catch-all
ZMQ_EVENT_ALL mask implies that, well, all events are monitored so
it's normal that new ones will be added.
Users that don't want this kind of behaviour to change can simply
monitor only the event that they care about.
2016-12-30 23:21:14 +01:00
Luca Boccassi
0ebed80dc1 Merge pull request #2281 from vtellier/master
Code formatting + reverted hard error handshake fail
2016-12-30 21:00:17 +01:00
Vincent Tellier
48bc75e8a1 Code formatting + reverted hard error handshake fail
- Moved new events in draft section + added to zmq_draft.h
 - Removed the remainning tabs
 - Reverted the hard error (back to soft error) in curve_server.cpp

=> The feature doesn't works anymore
2016-12-30 18:34:33 +01:00
Luca Boccassi
0ad600c7de Merge pull request #2280 from vtellier/master
Fixed issue #2227
2016-12-30 17:15:18 +01:00
Vincent Tellier
b6e9e0c2d3 Fixed issue #2227
Added two new monitoring events:
 - ZMQ_EVENT_HANDSHAKE_SUCCEED is raised once the encryption handshake succeed
 - ZMQ_EVENT_HANDSHAKE_FAILED is raised when it failed
Both events are raised on server and client side.
2016-12-30 16:26:42 +01:00
Constantin Rack
64b07d8132 Merge pull request #2278 from bluca/msg_t_size_draft 2016-12-29 21:48:39 +01:00
Luca Boccassi
8c22ba246c Problem: bug fixes not mentioned in NEWS file
Solution: add most relevant bug fixes since 4.2.0
2016-12-29 21:07:39 +01:00
Luca Boccassi
113feb60a2 Problem: ZMQ_MSG_T_SIZE draft but not in DRAFT section
Solution: move it there, add it to src/zmq_draft.h and clarify in the
documentation and in the NEWS file that this option is not yet stable
2016-12-29 21:07:39 +01:00
Luca Boccassi
715f87fec7 Merge pull request #2277 from bluca/automake_1.14
Problem: debian build fails with automake < 1.14
2016-12-28 16:36:58 +01:00
Luca Boccassi
47c7d8ee50 Problem: debian build fails with automake < 1.14
Solution: create config subdir as a workaround if building the
packages with automake < 1.14
2016-12-28 00:55:17 +01:00
Constantin Rack
ef88b8c760 Merge pull request #2276 from bluca/sodium_pkg 2016-12-27 16:28:08 +01:00
Luca Boccassi
bbae5d0f9a Problem: dpkg-query might fail in CI build and fail the build
Solution: rework the bash test to avoid build failures as intended
and make it an easier one-liner
2016-12-27 14:45:45 +01:00
Constantin Rack
b2a2bb8609 Merge pull request #2275 from bluca/travis_pkg 2016-12-27 12:51:19 +01:00
Luca Boccassi
b1137b7672 Problem: documentation build not tested on Travis
Solution: install asciidoc and xmlto in the libsodium build run, since
it already refreshes APT to download other packages, so the delay is
smaller
2016-12-27 12:20:18 +01:00
Luca Boccassi
822def9b2b Problem: Travis rebuilds libsodium every time
Solution: use packages on Ubuntu and brews on OSX. The packages and
the brews are always kept up to date, so it's no use to rebuild the
libsodium stable branch manually everytime.
2016-12-27 11:48:38 +01:00
Luca Boccassi
a1220b7fd4 Problem: Travis OSX workaround for libtool no longer needed
Solution: Revert "Problem: Travis CI OSX builds are broken"

This reverts commit 531b3bf7c3ed5f29760c89b7152a2c85a4a9d8bd.
2016-12-27 11:28:09 +01:00
Luca Boccassi
1f86019e3f Problem: Travis installs packages when not needed
Solution: narrow down the matrix to install valgrind and lcov only
for the test runs that use them.
CMake is part of the default image so no need to install it at all.
2016-12-27 11:27:33 +01:00
Constantin Rack
5871ea5df8 Merge pull request #2274 from bluca/cloexec 2016-12-26 20:18:12 +01:00
Luca Boccassi
06055a7b74 Problem: cmake does not run test_zmq_poll_fd
Solution: add it to the list
2016-12-26 19:20:09 +01:00
Luca Boccassi
6e708ce144 Problem: socketpair leaks file on fork+exec
Solution: if available, call socketpair with SOCK_CLOEXEC flag to
make the process close the socket on fork+exec
2016-12-26 19:13:02 +01:00
Luca Boccassi
f287c7a2aa Problem: eventfd leaks socket on fork+exec
Solution: if available, use eventfd with EFD_CLOEXEC flag to make
the process close the socket on fork+exec
2016-12-26 19:08:27 +01:00
Luca Boccassi
211898d243 Problem: epoll leaks socket on fork+exec
Solution: if available, use epoll_create1 with EPOLL_CLOEXEC flag to
make the process close the socket on fork+exec
2016-12-26 19:08:27 +01:00
Constantin Rack
16439e42d2 Merge pull request #2272 from bluca/document_read_after_free 2016-12-26 15:24:44 +01:00
Constantin Rack
d68e2e018e Merge pull request #2273 from bluca/docs 2016-12-26 15:12:40 +01:00
Luca Boccassi
3dc016cab3 Problem: no documentation for ZMQ_SOCKS_PROXY
Solution: add paragraphs to zmq_get/setsockopt man pages
2016-12-26 14:54:58 +01:00
Luca Boccassi
baf32a1985 Problem: no documentation for zmq_curve_public
Solution: add manpage
2016-12-26 14:54:58 +01:00
Luca Boccassi
a06f97d73a Problem: fix for read-after-free not documented
Solution: add a comment as it's easy to miss and very tempting to
"optimize"
2016-12-25 18:01:55 +01:00
Luca Boccassi
dc39ceb347 Merge pull request #2268 from imkos/master
Mingw32 Compile
2016-12-22 13:55:03 +01:00
Kos
43941052a9 add link libsodium.a 2016-12-22 14:25:00 +08:00
Kos
edad90f770 mingw32 fix 2016-12-22 09:35:49 +08:00
Luca Boccassi
fe3756defa Merge pull request #2266 from Cziken/master
Problem: Duplicated code
2016-12-19 18:07:37 +01:00
Wojciech Kula
ee72493e14 Problem: Duplicated code
Solution: set_curve_key method in options_t struct with little
improvement in switch-case block
2016-12-19 12:13:14 +01:00
Constantin Rack
7a8180ece7 Merge pull request #2265 from bluca/contribution_notice_github
Problem: contributing guidelines unclear for new devs
2016-12-18 16:52:15 +01:00
Luca Boccassi
e6b1f56131 Problem: contributing guidelines unclear for new devs
Solution: port Github PR template from CZMQ
2016-12-18 11:46:08 +00:00
Constantin Rack
2dec320b22 Merge pull request #2263 from bluca/revert_curve_break 2016-12-16 18:12:37 +01:00
Luca Boccassi
48e9e24726 Problem: #2262 broke curve
Solution: Revert "Problem: Duplicated code"

This reverts commit 022eeaf33d50f8a1515a28ffb8c8cafd843ca064.
2016-12-16 16:50:17 +00:00
Constantin Rack
2aa09d34ff Merge pull request #2262 from Cziken/master
Problem: Duplicated code
2016-12-16 17:32:27 +01:00
Wojciech Kula
022eeaf33d Problem: Duplicated code
Solution: set_curve_key method in options_t struct with little
improvement in switch-case block
2016-12-16 17:09:53 +01:00
Cziken
d514bb598a Fixed handling of WSAEWOULDBLOCK to be generic (#2260)
* Fixed handling of WSAEWOULDBLOCK to be generic

I don't know what was the intention of this early if statement but
now this is properly evaluated in wsa_error_no function if this is
performance issue I suggest moving evaluating this error code to the
beginning of wsa_error_no.

* Fixed handling of WSAEWOULDBLOCK to be generic

Introduced default pointer to const char * and overrides this as NULL
if function is called by zmq::wsa_error()

* Fixed handling of WSAEWOULDBLOCK to be generic

Introduced default pointer to const char * and overrides this as NULL
if function is called by zmq::wsa_error()
2016-12-16 15:51:00 +01:00
Luca Boccassi
2b565088d0 Merge pull request #2257 from minrk/check-event
zmq_poll: only compare FD when neither item is a zmq socket
2016-12-15 14:20:46 +01:00
Min RK
0abdc28c84 only compare FD when neither item is a zmq socket 2016-12-15 14:05:40 +01:00
Luca Boccassi
1910ef8d3e Merge pull request #2256 from laplaceyang/pr_zmq4_pub_with_zmtp_v1_sub
fix bug zmq4.x PUB msg to ZMTP1.0 SUB server
2016-12-15 14:02:50 +01:00
Min RK
02a6079968 Merge pull request #2255 from bluca/poll_fd_testcase
Problem: no mixed FD and zmq socket zmq_poll test
2016-12-15 13:39:20 +01:00
laplaceyang
8e8fdcc9ed fix bug zmq4.x PUB msg to ZMTP1.0 SUB server 2016-12-15 20:29:58 +08:00
Luca Boccassi
272d340c1f Problem: no mixed FD and zmq socket zmq_poll test
Solution: add one
2016-12-15 12:03:48 +00:00
Luca Boccassi
f9d231437a Merge pull request #2251 from hnwyllmm/master
misuse of 'close'
2016-12-13 12:43:07 +01:00
Laughing
a4e448d586 misuse of 'close'
use 'pollset_destroy' instead of 'close' to release pollset_fd
2016-12-13 11:09:01 +08:00
Constantin Rack
9052862619 Merge pull request #2250 from bluca/poll_regression
Problem: check for item.fd causes zloop_poller regression
2016-12-11 07:51:31 +01:00
Luca Boccassi
72176d5fbe Problem: check for item.fd causes zloop_poller regression
Solution: fix the check for the socket.
This regression happens when using zloop with zmq_pollitem_it with
only file descriptors registerted through zloop_poller.
2016-12-10 23:49:18 +00:00
Luca Boccassi
c47e017bdd Merge pull request #2249 from pavel-pimenov/fix-v817
"%" -> '%'
2016-12-10 16:01:38 +01:00
pavel.pimenov
4d6fbe17e0 "%" -> '%' 2016-12-10 17:27:42 +03:00
Luca Boccassi
39947d55c7 Merge pull request #2248 from pavel-pimenov/fix-precompiled
Add #include "precompiled.hpp"
2016-12-10 14:57:14 +01:00
pavel.pimenov
eff42fa321 Add #include "precompiled.hpp" 2016-12-10 16:44:51 +03:00
Constantin Rack
f64d3ad1e7 Merge pull request #2247 from bluca/trusty_unwind
Problem: there is no libunwind-dev on Ubuntu 14.04LTS
2016-12-09 20:57:01 +01:00
Luca Boccassi
379028fbd9 Problem: there is no libunwind-dev on Ubuntu 14.04LTS
Solution: depend on libunwind-dev | libunwind8-dev | libunwind7-dev
2016-12-09 18:42:19 +00:00
Luca Boccassi
ad4a1bd0f3 Merge pull request #2245 from anass-b/builds-vs2017
Build support for VS2017, Windows SDK 10.0.14393.0, toolset v141
2016-12-09 10:41:07 +01:00
Anass Bouassaba
ad045512b9 Build support for VS2017, Windows SDK 10.0.14393.0, toolset v141 2016-12-09 09:21:11 +01:00
Luca Boccassi
d4076578a3 Merge pull request #2244 from rotty/wip/fix-mstcpip-include
Fix #include case for <mstcpip.h>
2016-12-08 16:50:03 +01:00
Andreas Rottmann
365ca8595d Fix #include case for <mstcpip.h>
On native Windows, the file system is case-insensitive, so this this
doesn't matter there.

However, when compiling on a case-sensitive filesystem, such as when
cross-compiling from a Unixoid using mingw, we have to use the case
the file is supplied with, which is all lowercase.
2016-12-08 16:35:44 +01:00
Constantin Rack
519940d07c Merge pull request #2241 from bluca/aix_test
Problem: test_stream_exceeds_buffer fails to build on AIX
2016-12-07 05:46:34 +01:00
Luca Boccassi
dcec022358 Problem: test_stream_exceeds_buffer does not build on AIX
Solution: add missing includes
2016-12-06 20:34:10 +00:00
Luca Boccassi
8325355d73 Problem: test_stream_exceeds_buffer has redundant includes
Solution: remove them as they are already in testutil.hpp
2016-12-06 20:33:46 +00:00
Constantin Rack
5e03ad6d87 Merge pull request #2240 from bluca/aix_poll
Problem: 4.2.0 won't compile on AIX 7.1
2016-12-06 19:34:20 +01:00
Luca Boccassi
57db5f2a5c Problem: 4.2.0 won't compile on AIX 7.1
Solution: restore inclusion of poll.h if using poll before zmq.h as
it was originally, as AIX redefines the POSIX structures and provides
compatibility macros.
Also add alternative aliases for 32 bit AIX's pollitem struct:
  events -> reqevents
  revents -> rtnevents
2016-12-05 22:50:10 +00:00
Luca Boccassi
3f8e6c0812 Merge pull request #2239 from loachfish/master
avoid crashing in the multi-thread operation for std::vector
2016-12-05 14:22:28 +01:00
Justin.Hung
52ebffd715 avoid crashing in the multi-thread operation for std::vector
1. stl container is not thread safety
2. rm_fd() and loop() end to clear the retired event source will in multi-thread operation
3. may be crashed in reaper thread to delete the items in the std::vector as the source is nullptr
2016-12-05 09:28:05 +08:00
Constantin Rack
42c63368e6 Merge pull request #2238 from bluca/revert
Problem: PR #2236 breaks the build
2016-12-04 07:42:47 +01:00
Luca Boccassi
e46d91d41f Problem: PR #2236 breaks the build
Solution: Revert "avoid crashing in the multi-thread operation for std::vector"

This reverts commit e1368bdac804a49de101725ede1f900aebe82c10.
2016-12-03 22:10:19 +00:00
Constantin Rack
324f10494a Merge pull request #2236 from loachfish/master
avoid crashing in the multi-thread operation for std::vector
2016-12-03 16:09:56 +01:00
Justin.Hung
e1368bdac8 avoid crashing in the multi-thread operation for std::vector
1. stl container is not thread safety
2. rm_fd() and loop() end to clear the retired event source will in multi-thread operation
3. may be crashed in reaper thread to delete the items in the std::vector as the source is nullptr
2016-12-02 17:33:13 +08:00
Constantin Rack
9a20f42f62 Merge pull request #2235 from bluca/cmake_soversion
Problem: CMake build uses library version as the ABI version
2016-12-02 07:32:55 +01:00
Luca Boccassi
abeaba1557 Problem: CMake build uses library version as the ABI version
Solution: set SOVERSION in CMakeLists to match the SONAME generated
by libtool so that there is no mismatch between the output of the
*NIX build systems.

Before:
$ ls -l
total 2696
lrwxrwxrwx 1 luca luca      15 Dec  1 22:36 libzmq.so -> libzmq.so.4.2.0
lrwxrwxrwx 1 luca luca      15 Dec  1 22:36 libzmq.so.4.2.0 -> libzmq.so.4.2.1
-rwxr-xr-x 1 luca luca  906168 Dec  1 22:36 libzmq.so.4.2.1
$ readelf -d libzmq.so.4.2.1 | grep SONAME
 0x000000000000000e (SONAME)    Library soname: [libzmq.so.4.2.0]

After:
$ ls -l
total 2700
lrwxrwxrwx 1 luca luca      15 Dec  1 22:31 libzmq.so -> libzmq.so.5.1.0
-rwxr-xr-x 1 luca luca  906168 Dec  1 22:31 libzmq.so.4.2.1
lrwxrwxrwx 1 luca luca      15 Dec  1 22:31 libzmq.so.5.1.0 -> libzmq.so.4.2.1
$ readelf -d libzmq.so.4.2.1 | grep SONAME
 0x000000000000000e (SONAME)    Library soname: [libzmq.so.5.1.0]
2016-12-01 22:36:40 +00:00
Laughing
febf801584 bug fix: AIX pollset error (#2233)
* bug fix: AIX pollset error

buf fix:  AIX only, pollset 'rm_fd' set fd_table to null first then set pe->fd to retired_fd

* remove extra spaces

remove extra spaces
2016-12-01 11:59:23 +01:00
Constantin Rack
294bdb4eb6 Merge pull request #2231 from bluca/windows_ipv6_tos
Problem: Windows does not support IPV6_TCLASS
2016-11-30 21:07:32 +01:00
Luca Boccassi
33fcd2d6ca Problem: Windows does not support IPV6_TCLASS
Solution: don't use it on Windows.
There is a Windows-specific API for ToS, even IPv4 does not work and
it's just a silent no-op on that platform.
2016-11-30 11:09:12 +00:00
Constantin Rack
4a24805f70 Merge pull request #2225 from bluca/select_broken
Problem: select broken
2016-11-24 20:00:33 +01:00
Luca Boccassi
121c9d16f5 Problem: select.cpp/hpp build fails with reorder error
Solution: initialise class variables in the same order they are
declared
2016-11-24 13:07:47 +00:00
Luca Boccassi
ba74890f2f Problem: cannot pick select for poller
Solution: fix acinclude.m4 snippet that checks if select is
available to stop it erroring out.
2016-11-24 12:44:51 +00:00
Luca Boccassi
e6572fac80 Merge pull request #2222 from SuperFluffy/doc_explain_context
Add a single sentence explaining what a context is
2016-11-21 14:17:36 +01:00
Richard Janis Goldschmidt
ec25fd2ada Add a single sentence explaining what a context is 2016-11-21 14:11:33 +01:00
Luca Boccassi
53bf6dfcf0 Merge pull request #2221 from minrk/check-socket
only compare pollitem.fd if pollitem.socket is NULL
2016-11-21 12:17:01 +01:00
Min RK
f302d8a7b6 only compare pollitem.fd if pollitem.socket is NULL
item.fd should be ignored if item.socket is defined.

Failing to check .socket could cause false-matches, raising EINVAL in zmq_poller_modify_fd.
2016-11-21 11:47:50 +01:00
Constantin Rack
185fed3966 Merge pull request #2220 from bluca/zmq_msg_size
Problem: size of zmq_msg_t is not known to FFI wrappers
2016-11-20 14:59:45 +01:00
Luca Boccassi
8a286bb842 Problem: no documentation for ZMQ_MSG_T_SIZE ctx option
Solution: mention it in zmq_ctx_get manpage
2016-11-20 12:51:25 +00:00
Luca Boccassi
b480457283 Problem: ZMQ_MSG_T_SIZE is not mentioned in NEWS
Solution: mention it as it's a new public API (still draft until release)
2016-11-20 12:50:45 +00:00
Luca Boccassi
670bec56d8 Problem: size of zmq_msg_t is not known to FFI wrappers
Solution: add a ZMQ_MSG_T_SIZE context read-only option so that
wrappers can call zmq_ctx_get (ctx, ZMQ_MSG_T_SIZE) to get the
size at runtime.
2016-11-20 12:24:03 +00:00
Constantin Rack
3db69212b7 Merge pull request #2216 from rotty/master
Document terminating NUL behavior in API more explicitly
2016-11-16 20:03:18 +01:00
Andreas Rottmann
5d176cbe98 Document terminating NUL behavior in API more explicitly
This addresses #2169.
2016-11-16 19:56:18 +01:00
Constantin Rack
93ccb5a16d Merge pull request #2215 from Bklyn/udp-bugfix
Problem: inconsistent indentation and tabs in code
2016-11-15 20:41:32 +01:00
Caleb Epstein
10181d7641 Untabify 2016-11-15 14:33:47 -05:00
Luca Boccassi
5879f729dd Merge pull request #2214 from Bklyn/udp-bugfix
Problem: multicast is spelled incorrectly in udp_address class
2016-11-15 20:13:21 +01:00
Caleb Epstein
f577ceab4b Problem: multicast is spelled incorrectly in udp_address class
Solution: Fix typo of 'mutlicast' -> 'multicast'
2016-11-15 14:06:34 -05:00
Constantin Rack
ace95327a3 Merge pull request #2213 from Bklyn/udp-bugfix
Fix htons copy pasta
2016-11-15 19:55:54 +01:00
Caleb Epstein
cdac1ac9d3 Fix htons copy pasta 2016-11-15 13:51:49 -05:00
Constantin Rack
b9b0fd87a4 Merge pull request #2210 from bluca/ipv6_tos_v4_only
Problem: IPV6_TCLASS setsockopt fails on IPv4 socket
2016-11-14 13:58:28 +01:00
Luca Boccassi
90f091abf3 Problem: IPV6_TCLASS setsockopt fails on IPv4 socket
Solution: if setsockopt errors out and errno is set to ENOPROTOOPT
(or EINVAL on OSX) ignore it and carry on.
2016-11-14 12:52:31 +00:00
Luca Boccassi
bc1860430a Merge pull request #2209 from saifhhasan/master
Make ZMQ_TOS work with IPv6 sockets
2016-11-14 11:37:24 +01:00
Saif Hasan
fc8007e896 Make ZMQ_TOS work with IPv6 sockets
Summary:
To set `Type Of Service` for IP layer packets ZMQ provides `ZMQ_TOS` socket
option. However this only works for v4 sockets. Considering things are moving to
IPv6 heavily (especially within enterprise networks), ZMQ should support setting
`traffic class` for v6 based on `ZMQ_TOS`.

There is a subtle difference between v4 and v6 in terms of the positioning of
field but TOS has same meaning in both v4 and v6. Linux provides following APIs
for v4/v6 to set TOS field value.
```
// For v4
setsockopt(fd, IPPROTO_IP, IP_TOS, tos, sizeof(tos));

// For v6
setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, tos, sizeof(tos));
```

Test Plan:
Make sure Cmake works fine and all tests passes.
Imported this change to `OpenR` project and tested on our local testbed.
Captured some packets exchanged between PUB/SUB and ROUTER/ROUTER sockets
pairs. Verify that `TCLASS` value is set as per expectation.

Tasks: #2208
2016-11-14 02:19:55 -08:00
Constantin Rack
8ac7500f9d Merge pull request #2203 from bluca/bump_version
Problem: 4.2.0 is out, time to bump version for development
2016-11-12 21:01:11 +01:00
Constantin Rack
e50c6b6992 Merge pull request #2206 from bluca/dladdr
Problem: linker fails looking for dladdr
2016-11-12 21:00:04 +01:00
Luca Boccassi
1b3fcbd3ee Problem: linker fails looking for dladdr
Solution: search and add it via AC_CHECK_LIB when building with
libunwind, as the backtrace function uses dladdr. This problem
only appears on some distributions and with some compiler/toolchain
versions.
2016-11-10 23:10:01 +00:00
Luca Boccassi
8015794b81 Problem: 4.2.0 is out, time to bump version for development
Solution: update NEWS, include/zmq.h and packaging
2016-11-08 12:54:53 +00:00
Constantin Rack
065169a221 Merge pull request #2201 from bluca/news_blocky
Problem: NEWS says ZMQ_BLOCKY is a sock opt, but it's a ctx opt
2016-11-07 20:08:16 +01:00
Luca Boccassi
4b58b3735f Problem: NEWS says ZMQ_BLOCKY is a sock opt, but it's a ctx opt
Solution: fix it
2016-11-07 15:32:47 +00:00
Constantin Rack
067bfa13b8 Merge pull request #2198 from vyskocilm/master
Problem: linking fails on glibc 2.24 with dladdr missing
2016-11-06 11:40:47 +01:00
Michal Vyskocil
cab901c0a6 Problem: linking fails on glibc 2.24 with dladdr missing
Solution: try to find dladdr function on Linux - glibc systems provides
dlopen/dladdr in libdl and not in libc itseld.
2016-11-06 11:18:55 +01:00
Constantin Rack
ef3c2591fc Merge pull request #2197 from bluca/install_keygen_rpm
Problem: curve_keygen not packaged by RPM spec
2016-11-06 09:40:18 +01:00
Luca Boccassi
b73809c380 Problem: curve_keygen not packaged by RPM spec
Solution: add new libzmq-tools package to ship it
2016-11-06 08:20:02 +00:00
Constantin Rack
d9ff34891b Merge pull request #2196 from bluca/kfreebsd
Problem: some errors on Debian + kFreeBSD
2016-11-05 23:23:01 +01:00
Luca Boccassi
43f3cc5c78 Problem: kFreeBSD does not implement pthread_setschedparam
Solution: do not fail on kFreeBSD if this feature is not available
at runtime.
Thanks Steven Chamberlain <steven@pyro.eu.org> for the patch!
2016-11-05 18:14:22 +00:00
Luca Boccassi
361e99a906 Problem: kFreeBSD might return ECONNRESET under load when destroying engine
Solution: ignore it on kFreeBSD, as it is not an error
Thanks Steven Chamberlain <steven@pyro.eu.org> for the patch!
2016-11-05 18:13:01 +00:00
Luca Boccassi
6585aeaba2 Merge pull request #2195 from vyskocilm/master
Problem: curve_keygen not build unless --enable-curve is passed
2016-11-05 17:13:00 +01:00
Michal Vyskocil
213a7efe86 Problem: curve_keygen not build unless --enable-curve is passed
Solution: test ENABLE_CURVE_KEYGEN and enable it only if
zmq_enable_curve_keygen=yes nad enable_curve=yes. Additionally set
enable_curve=yes for libsodium and tweetnacl, so it is enabled
implicitly and fixes the problem.
2016-11-05 10:51:10 +01:00
Luca Boccassi
8f577248b7 Merge pull request #2193 from warriorkitty/patch-1
Fix small typo
2016-11-04 13:30:38 +00:00
Davor Lozic
a5ad378893 Fix small typo 2016-11-04 14:21:33 +01:00
Doron Somech
42d3ef5e06 Merge pull request #2192 from bluca/udp_news
Problem: NEWS says scatter/gather support UDP but they don't
2016-11-04 13:57:38 +02:00
Luca Boccassi
7ff6d57d47 Problem: NEWS says scatter/gather support UDP but they don't
Solution: fix NEWS
2016-11-04 11:55:50 +00:00
Doron Somech
18bd4d171a Merge pull request #2191 from bluca/news_multicast
Problem: NEWS does not mention UDP multicast transport
2016-11-04 13:34:30 +02:00
Luca Boccassi
127ca8b3f3 Problem: NEWS does not mention UDP multicast transport
Solution: add mention and point to doc/zmq_udp.txt
2016-11-04 11:29:55 +00:00
Luca Boccassi
097bf26e8d Finalize NEWS for 4.2.0 2016-11-04 10:20:02 +00:00
Lukas Geiger
785d9b5494 Merge pull request #2189 from bluca/changelog
Problem: NEWS out of date
2016-11-04 10:58:54 +01:00
Luca Boccassi
9e52806724 Problem: no NEWS for 4.2.0
Solution: add an overview of the new socket options, new APIs,
DRAFT mechanism (and DRAFT APIs). And a dedication.
2016-11-04 09:48:34 +00:00
Luca Boccassi
932cc8295b Problem: NEWS does not include previouos stable releases
Solution: add release notes from 4.0.x and 4.1.x releases to
capture all important solved bugs.
2016-11-02 17:33:24 +00:00
Doron Somech
7000e84aed Merge pull request #2187 from Dmitriy-GH/master
Add WinXP compatibility
2016-11-02 14:07:47 +02:00
Dmitriy-GH
488cb5a022 MSVC 2015 project for compile libzmq.dll in WinXP compatible mode 2016-11-02 15:51:58 +05:00
Dmitriy-GH
e7b12b3c2a Add WinXP compatibility
#define ZMQ_HAVE_WINDOWS_TARGET_XP  disable uncompatible WinAPI

1. Disable call if_indextoname()
2. Emulate windows Condition Variable API in class condition_variable_t with std::condition_variable
 	
This code can be compiled in MSVC 2015 with option "Platform toolset: Visual Studio 2015 - Windows XP (v140_xp)"
2016-11-02 15:44:27 +05:00
Constantin Rack
819bf785b7 Merge pull request #2186 from bluca/de-draft
Problem: socket option marked as draft for 4.2
2016-11-02 07:03:51 +01:00
Luca Boccassi
b5b5f75242 Problem: socket option marked as draft for 4.2
Solution: move comment further below to declare new socket
options as stable for the 4.2.0 release.
2016-11-01 18:49:42 +00:00
Doron Somech
8cf4832e01 Merge pull request #2184 from bluca/rc
Problems: need to bump NEWS and libtool version
2016-11-01 16:48:56 +02:00
Luca Boccassi
6da8385b2a Problem: new public symbols added
Solution: bump ABI version fromo 5:0:0 to 6:0:1 since 4.2 is backward
compatible with 4.1, but new symbols are there
2016-11-01 13:18:21 +00:00
Luca Boccassi
e0d6f4ea11 Problem: no NEWS entry for 4.2.0
Solution: add one, empty for now, fill in after RC release
2016-11-01 13:18:02 +00:00
Luca Boccassi
cc70c829cf Merge pull request #2183 from a4z/opmg_cmake
Problem: CMake build rejects to build with openpgm enabled
2016-11-01 11:47:30 +00:00
Harald
6f597d0bd3 Problem: CMake build rejects to build with openpgm enabled
Solution: add optional lookup for openpgm via pkg-config
2016-11-01 12:31:40 +01:00
Constantin Rack
50a6c117f1 Merge pull request #2182 from pmienk/master
Suppress warning on uninitialized variable use by initializing variable.
2016-10-31 20:31:15 +01:00
Phillip Mienk
28fbee74c8 Suppress warning on uninitialized variable use by initializing variable. 2016-10-31 12:25:30 -07:00
Constantin Rack
fb59cd1aad Merge pull request #2181 from jolting/patch-2
Remove an unnecessary while (true)
2016-10-31 19:50:11 +01:00
Hunter Laux
60b63ed518 Remove an unnecessary while (true)
This block of code will either return -1 or fall through.
The while (true) does nothing.
The braces limit the scope of int rc.
2016-10-31 11:46:57 -07:00
Luca Boccassi
2ece58acfd Merge pull request #2180 from cxreg/xpub-metadata-corruption
Increment metadata refcount while it's in pending_metadata
2016-10-29 23:51:28 +01:00
Dave Olszewski
b7f2c7e7ea Increment metadata refcount while it's in pending_metadata 2016-10-29 14:37:28 -07:00
Doron Somech
16f584745d Merge pull request #2179 from bluca/alignment_windoz
Problem: MS VC++ build broken
2016-10-29 12:32:09 +03:00
Luca Boccassi
2484d1c859 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-10-28 17:14:00 +01:00
Doron Somech
ac14981651 Merge pull request #2177 from bluca/alignment
Problem: pointer union for zmq_msg_t is a hack
2016-10-28 18:00:06 +03:00
Luca Boccassi
df367a6682 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-10-28 15:18:48 +01:00
Luca Boccassi
0d032c99a6 Merge pull request #2176 from robertcastle/master
clock_gettime is now defined in macOS 10.12 SDK
2016-10-28 11:29:58 +01:00
Robert Castle
0dfb32a259 Problem: clock_gettime is now defined in macOS 10.12 SDK
Solution: Rename the custom implementation of clock_gettime for macOS to
alt_clock_gettime and wrap all usage in preprocessor macros to only enable the
alternative version when using macOS <= 10.11.

This issue occurs when targeting macOS 10.11 or earlier but using the 10.12
or newer SDK.
2016-10-28 11:04:21 +01:00
Constantin Rack
2e9264354c Merge pull request #2173 from bluca/without_docs
Problem: build API incompatible with 4.1
2016-10-27 18:34:05 +02:00
Luca Boccassi
8345fe9e95 Problem: build API incompatible with 4.1
Solution: keep the new --without-docs option, but also keep the old
--without-documentation with an added deprecation warning.
We can then remove it in the next major release, to leave enough time
for users and maintainers to change it without disruptions.
2016-10-27 14:20:19 +01:00
Doron Somech
1e69309e21 Merge pull request #2171 from bluca/connect_reuse_addr
Problem: 2 connects with same sourceip:port to different destip:port fail
2016-10-24 00:52:03 +03:00
Luca Boccassi
25bf30bebe Problem: 2 connects with same sourceip:port to different destip:port fail
Solution: during a connect with a TCP endpoint if a source address is
passed set the SO_REUSEADDR flag on the socket before the bind system
call.
Add unit test to cover this case for both IPv4 and IPv6.
2016-10-23 22:31:45 +01:00
Luca Boccassi
669ff41d52 Merge pull request #2170 from vielmetti/patch-1
Update INSTALL to note issues with 'make -j check'
2016-10-23 20:15:26 +01:00
Edward Vielmetti
92b1b2b181 Update INSTALL to note issues with 'make -j check'
Some of the tests cannot be run in parallel; until the Makefile is fixed, note this in INSTALL.
2016-10-23 15:12:45 -04:00
Luca Boccassi
1a02b1b3f2 Merge pull request #2168 from outotec/fix-build-2
Problem: Does not build in Visual Studio 2013 / Win32
2016-10-21 22:23:24 +01:00
Juha Reunanen
bb7421dda2 Problem: Does not build in Visual Studio 2013 / Win32
Solution: #include <netioapi.h> and change some IP_ADAPTER_UNICAST_ADDRESS data types
2016-10-21 21:18:45 +03:00
Luca Boccassi
d8f55dde57 Merge pull request #2164 from reunanen/add-EHOSTUNREACH-to-errno_to_string
Add EHOSTUNREACH to errno_to_string
2016-10-18 08:48:35 +01:00
Juha Reunanen
57c765ef5a Add EHOSTUNREACH to errno_to_string 2016-10-18 06:46:50 +03:00
Luca Boccassi
6ce2fb2b06 Merge pull request #2162 from hnwyllmm/master
performance enhancement
2016-10-14 13:55:13 +01:00
Laughing
c5b528fdcd performance enhancement
use clock_gettime if there is no instruction to get cpu tick. It will take about 10% performance enhancement in AIX 7.1.
2016-10-14 20:33:27 +08:00
Jens Auer
b031325996 Fixed problems from previous PR for #2158 (#2160)
* - Fixed windows build errors
- Extended monitor lock scope to prevent race-condition between
  process_stop and monitor

* - Fixed windows build errors
- Extended monitor lock scope to prevent race-condition between
  process_stop and monitor
2016-10-12 10:34:22 +01:00
Luca Boccassi
398f256a5c Merge pull request #2159 from jens-auer/2158
#2158: Add mutex for monitor socket
2016-10-11 16:07:29 +01:00
Jens Auer
d1c7280d05 Add mutex for monitor socket 2016-10-11 13:28:45 +00:00
Constantin Rack
23be1dc0ec Merge pull request #2157 from athampy/master
Fixed issue #2155
2016-10-11 05:56:26 +02:00
Akhil Thampy
134f08b3ca Fixed issue #2155 2016-10-10 17:50:50 -05:00
Mário Kašuba
f6962903a7 Implemented network interface name resolution on Windows platform
Added fallback mechanism for specific socket binding on Windows platform with IPv6 enabled
2016-10-10 17:29:53 +02:00
Mário Kašuba
3996d4e20d Merge branch 'master' of github.com:zeromq/libzmq
# Conflicts:
#	builds/msvc/vs2012/libsodium.import.props
2016-10-10 11:02:32 +02:00
Doron Somech
c30da71735 Merge pull request #2156 from yasirs/patch-WSL
Patch for compatibility with Windows subsystem for linux
2016-10-09 09:01:24 +03:00
yasirs
36af3edee2 Update tcp_address.cpp 2016-10-09 00:48:35 -04:00
Doron Somech
9780945d7c Merge pull request #2152 from t-b/fix_socket_docu
Problem: Invalid markup in zmq_socket.txt
2016-10-07 17:40:37 +03:00
Thomas Braun
a151ac5936 Problem: Invalid markup in zmq_socket.txt
Solution: Fix it.
2016-10-07 16:37:30 +02:00
Doron Somech
7f8c17b124 Merge pull request #2150 from bluca/request
Problem: a request
2016-10-04 17:59:30 +03:00
Luca Boccassi
c592897f60
Problem: a request
Solution: honor it
2016-10-04 15:48:12 +01:00
Luca Boccassi
075dd6a003 Merge pull request #2148 from WGH-/doc-router-mandatory-block
doc/zmq_socket.txt: clarify that ROUTER can be blocking
2016-10-03 22:21:38 +01:00
WGH
eb0e0dda4e doc/zmq_socket.txt: clarify that ROUTER can be blocking 2016-10-03 23:39:34 +03:00
Luca Boccassi
88e4cff948 Merge pull request #2147 from goodfella/fix-zmq-poller-poll-return
Fix zmq poller poll return
2016-10-01 11:44:08 +01:00
Nick Guiffrida
ffdb44ad2c Fix zmq_poll return code assert in tests/test_radio_dish.cpp 2016-09-30 21:50:31 -07:00
Nick Guiffrida
1a2d58e4e7 Add #ifndef ZMQ_HAVE_WINDOWS guard around unistd.h include 2016-09-30 21:30:04 -07:00
Nick Guiffrida
f3de534897 Do not assign rc to zmq_poller_destroy in zmq_poller_poll
* Doing so was zmq_poller_poll to always return 0.
2016-09-30 21:10:25 -07:00
Nick Guiffrida
f46e45c263 Include unitstd.h in src/stream_engine.cpp for close system call 2016-09-30 21:10:05 -07:00
Luca Boccassi
6c1669371a Merge pull request #2145 from minrk/zmq-poll-repeat
allow duplicate entries in zmq_poller_poll
2016-09-29 15:36:55 +01:00
Min RK
fb5a04e21d allow duplicate entries in zmq_poller_poll
This should restore full compatibility with earlier zmq_poll behavior.

It complicates things a little bit, as collisions must be detected, and when collisions are found:

- event masks must be merged
- pollitems, events arrays are no longer co-ordered

Reverts the recent zmq_proxy patch to workaround the lack of repeat-item support in zmq_poll that is now fixed.
2016-09-29 16:33:02 +02:00
Luca Boccassi
ae0676e80d Merge pull request #2144 from minrk/fix-poller
Resolve issues with zmq_poll and zmq_poller working together
2016-09-29 15:07:18 +01:00
Min RK
310dafbc75 zmq_poll returns 0 on timeout
not -1, ETIMEDOUT like zmq_poller
2016-09-29 15:44:31 +02:00
Min RK
718608ce94 socket_poller::wait returns only triggered events
Return value is the number of events found. This also propagates to the return value of zmq_poller_wait_all.

zmq_poller_wait was only returning events on the first-registered socket.
2016-09-29 15:21:52 +02:00
Constantin Rack
872f1e5a9d Merge pull request #2143 from minrk/avoid-duplicate-poller-proxy
avoid passing duplicate entries to zmq_poll
2016-09-29 13:30:15 +02:00
Min RK
c636147c98 avoid duplicate entries in zmq_poll
zmq_poller doesn't allow a socket to appear twice
2016-09-29 12:59:53 +02:00
Luca Boccassi
b0df7f1f17 Merge pull request #2141 from minrk/heap-alloc-poll-events
heap-allocate events in zmq_poller_poll
2016-09-28 15:27:55 +01:00
Min RK
53fb120687 heap-allocate events in zmq_poller_poll
variable-size array allocation is not allowed by some compilers
2016-09-28 15:17:57 +02:00
Luca Boccassi
55930f5e42 Merge pull request #2140 from minrk/zmq_poll_poller
Support all sockets in zmq_poll
2016-09-28 13:00:20 +01:00
Doron Somech
c0b1114944 Merge pull request #2138 from minrk/darwin-clock
only define clock macros on darwin if not already defined
2016-09-28 14:54:25 +03:00
Doron Somech
91e121c9d3 Merge pull request #2139 from minrk/update-poll-based-on-poll
update socket_poller when ZMQ_POLL_BASED_ON_SELECT
2016-09-28 14:54:02 +03:00
Min RK
bdcaa935b9 zmq_poll calls zmq_poller if available
enables zmq_poll on threadsafe sockets only supported in zmq_poller (radio, dish, etc.)
2016-09-28 13:53:57 +02:00
Min RK
e50a987650 update socket_poller when ZMQ_POLL_BASED_ON_SELECT
previous patch updated only the branch for ZMQ_POLL_BASED_ON_POLL, causing failed builds on Windows.
2016-09-28 13:52:56 +02:00
Min RK
978c5c3499 only define clock macros on darwin if not already defined
clang from Xcode 8 has these already defined, causing duplicate macro warnings
2016-09-28 13:52:27 +02:00
Constantin Rack
c751899313 Merge pull request #2136 from bluca/copyright
Problem: Brocade has copyright but not in AUTHORS and RELICENSE
2016-09-28 05:49:56 +02:00
Constantin Rack
2768df845c Merge pull request #2135 from bluca/unbreak-pkg-config
Problem: pkg-config Requires.private is broken
2016-09-28 05:17:25 +02:00
Luca Boccassi
2204cb48dd
RELICENSE: Brocade Communications Systems Inc. MPLv2 grant 2016-09-27 23:43:02 +01:00
Luca Boccassi
00239414b3
Problem: Brocade has copyright but not in AUTHORS
Solution: add it. Some of the work that I do happens during working
hours and hence the copyright belongs to my employer, Brocade
Communications Systems Inc. Note this in the AUTHORS file.
2016-09-27 23:42:52 +01:00
Luca Boccassi
06d810b4c9 Problem: pkg-config Requires.private is broken
Solution: use only Libs.private to avoid breaking application builds.
Even though Requires.private are supposed to be parsed only if
pkg-config is called with --static, the --cflags parameter is enough
to trigger the parsing, causing build failures for applications that
do not (and should not) depend on libzmq's dependencies.
2016-09-27 23:34:35 +01:00
Constantin Rack
34a1292e96 Merge pull request #2134 from bluca/pkg-config-static
Problem: pkgconfig file does not support static link
2016-09-27 22:39:55 +02:00
Luca Boccassi
6d9411607d Problem: pkgconfig file does not support static link
Solution: add dependencies, if necessary, to the .private Libs and
Requires field of the pkgconfig file at build time.
This way pkg-config --static --libs libzmq will correctly print
dependencies if they were used to build the static libzmq.a library.
2016-09-27 18:39:07 +01:00
Doron Somech
131a2627b9 Merge pull request #2131 from minrk/poller-static-2
pass through poller events
2016-09-27 16:00:37 +03:00
Min RK
ec750732d4 pass through poller events
instead of allocating a new, identical array and copying the data.

This is only safe while zmq_poller_event_t and zmq::socket_poller_t::event_t are the same struct,
which they presumably will remain.
2016-09-27 14:59:07 +02:00
Doron Somech
06aeb47d73 Merge pull request #2130 from minrk/poller-static-alloc
add n_events argument to zmq_poller_wait_all
2016-09-27 15:39:33 +03:00
Min RK
de7fc1fcf8 add n_events argument to zmq_poller_wait_all
avoids unnecessary heap allocations, races on the number of items
2016-09-27 14:37:52 +02:00
Doron Somech
187b4bff48 Merge pull request #2128 from minrk/multi-event-poller
Problem: zmq_poller only signals one event
2016-09-27 14:45:03 +03:00
Min RK
2bc9796651 Problem: zmq_poller only signals one event
Solution: zmq_poller_wait_all signals all events

allows signaling multiple events with one call to zmq_poller_wait_all
rather than emitting only one event.

this prepares for zmq_poll being based on zmq_poller,
which requires events for all sockets rather than just one.
2016-09-27 13:39:16 +02:00
Laughing
555a087763 fix bugs of the pollset (#2127)
* fix bugs of the pollset

1. extend 'fd_table' when fd_ is greater or equal than the size of 'fd_table';
2. delete specific fd from pollset before reset pollin or pollout according the description of AIX document

* fix bugs of the pollset

edit error. remove extra spaces and paste fault

* fix bugs of pollset

remove character '-' at the end line.
2016-09-27 08:44:54 +01:00
Constantin Rack
113d3ffc0b Merge pull request #2126 from paddor/master
fix markup syntax on zmq_tipc(7) page
2016-09-25 19:23:36 +02:00
Patrik Wenger
7e07ff3e5b fix markup syntax on zmq_tipc(7) page 2016-09-25 19:19:13 +02:00
Luca Boccassi
2e55bc5838 Merge pull request #2125 from GreatFruitOmsk/master
Fix fd_entry may reference invalid object.
2016-09-25 11:07:26 +01:00
Ilya Kulakov
06614a394d Fix fd_entry may reference invalid object.
fd_entries (std::vector) can reallocate underlying storage
which will render reference invalid.
2016-09-24 21:17:32 -07:00
Constantin Rack
22dac19429 Merge pull request #2123 from bluca/dealer_router_async
Problem: zmq_ctx_term asserts with connect-before-bind and sockets with identity over inproc transport
2016-09-24 20:56:19 +02:00
Luca Boccassi
ab5c8c8dea Problem: zmq_ctx_term segfaults with too many pending inproc connects
Solution: add a zmq_assert to check if the ephemeral sockets created
to drain the queue of pending inproc connecting sockets was allocated
successfully.
2016-09-24 18:59:29 +01:00
Luca Boccassi
fab846a5e5 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 18:59:29 +01:00
Luca Boccassi
25402335fd Problem: no bind-after-connect TCP test
Solution: add one to increase coverage
2016-09-24 18:27:19 +01:00
Luca Boccassi
55244935c2 Merge pull request #2122 from gena-moscow/master
Problem: Pub socket crashes on client disconnect.
2016-09-23 13:53:55 +01:00
Gennady Makovetski
2e3888dd45 Problem: Pub socket crashes on client disconnect. family_entry.fd_entries [i] is modified in zmq::select_t::rm_fd()
Solution: do not copy family_entry.fd_entries [i]
2016-09-23 15:26:36 +03:00
Constantin Rack
e30ab69738 Merge pull request #2121 from paddor/master
Problem: documentation markup unrecognized
2016-09-21 21:50:20 +02:00
Patrik Wenger
18e0451092 Problem: documentation markup unrecognized
The effect can be seen on http://api.zeromq.org/4-2:zmq-getsockopt at
options ZMQ_USE_FD and ZMQ_RATE.

Solution: fix length of squiggly line under option title
2016-09-21 21:39:01 +02:00
Luca Boccassi
bacba21ef2 Merge pull request #2120 from hnwyllmm/pollset
Pollset-change the position of `pollset`
2016-09-21 07:57:36 +01:00
hnwyllmm@126.com
bdf887fd74 move macro define ZMQ_USE_POLLSET to the position between ZMQ_USE_DEVPOLL and ZMQ_USE_POLL 2016-09-21 11:41:35 +08:00
hnwyllmm@126.com
55442699ef replace tabs with space 2016-09-21 11:28:32 +08:00
hnwyllmm@126.com
eee7880752 move the pollset to the position between devpoll and poll 2016-09-21 11:24:26 +08:00
Luca Boccassi
861fcaf745 Merge pull request #2113 from hnwyllmm/pollset
remove pollset.hpp/.cpp to src directory
2016-09-20 13:16:57 +01:00
hnwyllmm@126.com
c964b7cfaf remove pollset.hpp/.cpp to src directory 2016-09-20 17:05:14 +08:00
Doron Somech
4039858754 Merge pull request #2112 from hnwyllmm/pollset
Pollset
2016-09-20 09:40:35 +02:00
Laughing
3a5971171f add pollset poller in AIX
add a new poller named pollset which will get benefit of performance in AIX platform.
2016-09-20 10:52:12 +08:00
Laughing
45286fa1fe add pollset poller in AIX
add a new poller named pollset which will get benefit of performance in AIX platform.
2016-09-20 10:50:50 +08:00
Laughing
38931b2d8b add pollset poller in AIX
add a new poller named pollset which will get benefit of performance in AIX platform.
2016-09-20 10:44:37 +08:00
Laughing
390e8f4d82 add pollset poller in AIX
add a new poller named pollset which will get benefit of performance in AIX platform.
2016-09-20 10:44:03 +08:00
Constantin Rack
50e277bd8f Merge pull request #2111 from bluca/ipv6_multi_endpoint
Problem: zmq_connect with IPv6 "source:port;dest:port" format is broken
2016-09-17 21:34:46 +02:00
Luca Boccassi
53e5a9a6f9 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:40 +01:00
Luca Boccassi
c1d07c6cd6 Problem: test_reqrep_tcp does not have IPv6 tests
Solution: add them
2016-09-17 20:04:40 +01:00
Luca Boccassi
896192ff42 Problem: test_reqrep_tcp does not test multiple endpoints
Solution: add a test for this use case
2016-09-17 19:30:59 +01:00
Luca Boccassi
75219e33a7 Problem: test_reqrep_tcp does not test disconnect/unbind
Solution: add disconnect and unbind calls to the test
2016-09-17 19:30:35 +01:00
Luca Boccassi
8d723fee3d Problem: test_reqrep_tcp is too limited
Solution: refactor it to allow for multiple functionalities to be
tested
2016-09-17 19:30:22 +01:00
Luca Boccassi
f0945c85ef Merge pull request #2110 from c-rack/remove-tabs
Problem: source conatins tabs and trailing spaces
2016-09-17 08:44:35 +01:00
Constantin Rack
8cd33339a1 Problem: source conatins trailing spaces
Solution: remove them
2016-09-17 08:46:54 +02:00
Constantin Rack
022cf2aeaa Problem: source code contains tabs
Solution: replace tabes with spaces
2016-09-17 08:44:00 +02:00
Luca Boccassi
e8d665c4e5 Merge pull request #2106 from kou/support-mingw-cross-compile
Problem: MinGW cross compile is failed on Linux
2016-09-14 16:15:12 +01:00
Kouhei Sutou
da9b9540f3 Problem: MinGW cross compile is failed on Linux
Solution: Use only lower case for header file name.

We can find "wincrypt.h" by "WinCrypt.h" on Windows because Windows uses
case insensitive file system. But we can't find "wincrypt.h" by
"WinCrypt.h" on Linux Because Linux uses case sensitive file system.
2016-09-15 00:07:37 +09:00
Constantin Rack
3683a96fcb Merge pull request #2105 from t-b/bugfix/missing_newline
Problem: Missing newline in printf statement
2016-09-12 19:52:11 +02:00
Thomas Braun
c9c49f3e9f Problem: Missing newline in printf statement
Solution: Add "\n" at end of format string.
2016-09-12 19:45:31 +02:00
Constantin Rack
cf34aeb298 Merge pull request #2100 from a4z/master
Problem: scoped optional mutex lock caused unit tests to fail
2016-09-04 16:45:09 +02:00
a4z
a43f6ce0a6 Problem: scoped optional mutex lock caused unit tests to fail
Solution: Add a scope that scopegurad unlocks the mutex
 before the object instance deletes itself and wants to unlock
a locked mutex
2016-09-04 16:18:07 +02:00
Luca Boccassi
3068f4762a Merge pull request #2099 from a4z/master
Problem: socket_base uses macros for mutex lock and unlock
2016-09-04 11:58:43 +01:00
a4z
9201009f17 Problem: socket_base uses macros for mutex lock and unlock
Solution: add a lock guard that takes optional a mutex and use it
2016-09-04 10:11:47 +02:00
Constantin Rack
fb34c3234d Merge pull request #2097 from bluca/cmake_dist
Problem: CMake build from dist tarball broken
2016-09-01 19:58:57 +02:00
Luca Boccassi
a4ae43e036 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:15:02 +01:00
Constantin Rack
ae31587e4d Merge pull request #2094 from bluca/obs_draft
Problem: cannot build packages with DRAFT APIs
2016-08-28 18:28:58 +02:00
Luca Boccassi
abd37423d3 Problem: cannot build rpm with drafts on OBS
Solution: if rpmbuild is called with --with drafts, which can be
triggered on OBS by adding:
  Macros:
  %_with_drafts 1
to the bottom of the prjconf, then enable draft APIs.
2016-08-28 15:44:55 +01:00
Luca Boccassi
a8a774e71b Problem: cannot build deb with drafts on OBS
Solution: parse the OBS prjconf and the user env variable
DEB_BUILD_OPTIONS. If either of those define "drafts" then build with
draft APIs enabled.
2016-08-28 15:44:55 +01:00
Luca Boccassi
493f17cc81 Merge pull request #2093 from t-b/fix_building_documentation
Fix building documentation
2016-08-28 12:33:15 +01:00
Thomas Braun
ae08099eb5 Problem: Documentation still has .txt suffix
Solution: The regular expression replacement expected a non-existing
space at the beginning of the input files.
2016-08-28 13:06:36 +02:00
Thomas Braun
1303eea508 Problem: Broken documentation build
Solution: The CMAKE module PythonInterp sets the variable
PYTHONINTERP_FOUND and not PYTHON_FOUND if it finds
a python interpreter.
2016-08-28 13:04:02 +02:00
Constantin Rack
81fd4044f0 Merge pull request #2092 from bluca/xp_testutils_ipv6
Problem: testutil.hpp fails to build on Windows XP
2016-08-27 18:15:11 +02:00
Luca Boccassi
a9343dbbc3 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 16:48:38 +01:00
Luca Boccassi
5d1c75f033 Merge pull request #2090 from jolting/patch-1
[gssapi] memory allocation mismatch on windows
2016-08-27 11:28:03 +01:00
Hunter Laux
fd758d7239 [gssapi] memory allocation mismatch on windows
The gssapi has some helper functions gssalloc_malloc()/gssalloc_free()
which on windows doesn't call malloc()/free(). Instead these are
wrappers around HeapAlloc() and HeapFree(). To complicate matters
gssapi doesn't export these helper functions, so you're left using
the allocation method of your choice.

See Here:
89683d1f13/src/lib/gssapi/generic/gssapi_alloc.h

The zmq gssapi implementation is calling malloc and then calling
gss_release_buffer() to free the memory. gss_release_buffer uses
gssalloc_free() to free this buffer which on windows calls HeapFree()
instead of free(). This causes an access violation on windows.
2016-08-26 18:23:31 -07:00
Constantin Rack
7f8a1da372 Merge pull request #2089 from bluca/ipv6_test_windows
Problem: tests should not create 2 ZMQ contexts
2016-08-24 08:04:36 +02:00
Luca Boccassi
0002824fc0 Problem: is_ipv6_available needs context to work on Windows
Solution: call the function after the zmq_ctx has been created, not
before, so that the relevant Windows system calls have been setup.
2016-08-23 21:48:57 +01:00
Luca Boccassi
f486176741 Revert "is_ipv6_available: Create a fake zmq context on windows"
This reverts commit 9adf20aaeb2abfcbdf6baa08e524207c5b8c4dfb.
2016-08-23 21:46:43 +01:00
Luca Boccassi
aab6ca787d Merge pull request #2088 from t-b/bugfix/initialize_network_stack_for_ipv6_test
is_ipv6_available: Create a fake zmq context on windows
2016-08-23 21:45:52 +01:00
Thomas Braun
9adf20aaeb is_ipv6_available: Create a fake zmq context on windows
This is required as zmq_ctx_new calls WSAStartup. Without that the IPV6
socket creation always fails.
2016-08-23 21:52:16 +02:00
Luca Boccassi
c9bc939705 Merge pull request #2084 from GreatFruitOmsk/cmake-fix
Fix compatibility with newer CMake.
2016-08-16 08:37:07 +01:00
Ilya Kulakov
8678fcce7c Fix compatibility with newer CMake. 2016-08-15 18:31:12 -07:00
Luca Boccassi
8d00cdd928 Merge pull request #2082 from pijyoi/fix_zmqstream_doc
Problem: zmq_stream doc is confusing regarding ZMQ_SNDMORE flag
2016-08-13 15:04:24 +02:00
KIU Shueng Chuan
5340215613 Problem: zmq_stream doc is confusing regarding ZMQ_SNDMORE flag
Solution: fix it.

The documentation first states that the ZMQ_SNDMORE flag is ignored on
data frames. Then it states that omitting the ZMQ_SNDMORE flag has
consequences. The example HTTP server code further muddies the situation
with a similar comment.

The implementation of ZMQ_STREAM only accepts two-part messages.
The first part is an identity frame while the second and last part is
the data frame.

As with any multipart message, all parts except the last need the
ZMQ_SNDMORE flag. The second and last part would normally omit the
ZMQ_SNDMORE flag to mark the end of the multipart message.

However, the ZMQ_STREAM implementation ignores the ZMQ_SNDMORE flag on
the data frame rather than requiring that it be omitted. The latter
behaviour would have been more consistent with the other ZeroMQ
sockets.
2016-08-13 20:37:24 +08:00
Kevin Sapper
2fc86bc3c6 Merge pull request #2074 from bluca/obs_compress
Problem: OBS compress not available on CentOS
2016-08-01 14:04:05 +00:00
Luca Boccassi
ae0ba5296f Problem: OBS service changes ver after compress
Solution: run the update version service before the recompress
service
2016-08-01 15:01:47 +01:00
Luca Boccassi
9029121eb4 Problem: OBS compress not available on CentOS
Solution: run the obs-service-compress at service time rather than
buildtime
2016-08-01 12:35:24 +01:00
Constantin Rack
845426710e Merge pull request #2073 from bluca/obs
Problem: no OBS _service and various packaging problems
2016-07-31 18:39:15 +02:00
Luca Boccassi
6822252f49 Problem: no OBS service file
Solution: add one similar to the one generated by zproject
2016-07-31 17:10:34 +01:00
Luca Boccassi
ce75606430 Problem: RPM package does not follow convention
Solution: name the binary package that ships the library libzmq5 to
adhere to the soname convention for RPMs
2016-07-31 17:10:34 +01:00
Luca Boccassi
202e7e03e3 Problem: RPM build targets outdated docs
Solution: update manpages list and use wildcard where possible in the
spec file
2016-07-31 17:10:34 +01:00
Luca Boccassi
faaa8e53fe Problem: RPM has hard-coded SONAME versions
Solution: target wildcard in the spec file to make maintenance
easier
2016-07-31 17:10:34 +01:00
Luca Boccassi
c4defc75c0 Problem: RPM does not support PGM
Solution: build-depend on the libraries and add parameters in the
spec file
2016-07-31 17:10:34 +01:00
Luca Boccassi
373b63de9e Problem: RPM build does not support automake
Solution: build-depend on the toolchain and call autoreconf in the
spec
2016-07-31 17:10:33 +01:00
Luca Boccassi
0372e5ce22 Problem: spec file needs version before build on OBS
Solution: stop autogenerating it and hard code version so that the
OBS build service can extract it and use it to build packages
automatically
2016-07-31 17:10:33 +01:00
Luca Boccassi
9c741c09a1 Problem: no Debian packaging
Solution: import and adapt Debian's packaging code from
https://packages.debian.org/source/unstable/zeromq3
As noted in packaging/debian/copyright, these files are licensed
under the LGPL2+ and the copyright belongs to the authors listed in
the same file.
2016-07-31 17:10:33 +01:00
Luca Boccassi
a7ccb35c1f Merge pull request #2072 from reza-ebrahimi/master
Fixing indentations related to commit #2071
2016-07-31 17:08:54 +01:00
reza-ebrahimi
a2db60e1b8 Fixing indentation related to commit #2071 2016-07-31 20:19:03 +03:30
Reza Ebrahimi
e5599de6c3 Convert manual (locking and unlocking) mutexes to scoped mutexes for the case of unlocking mutex even if the protected operation throws an exception (#2071) 2016-07-31 13:27:11 +01:00
hjp
bbece557c9 Fix copy/paste error (#2070) 2016-07-31 00:50:07 +01:00
Constantin Rack
61f9e71ee2 Merge pull request #2069 from hjp/master 2016-07-30 22:06:27 +02:00
Peter J. Holzer
e175fe21e5 Avoid race condition with accept4 where available
Linux provides accept4(2) which will return a socket with FD_CLOEXEC set
when called with the SOCK_CLOEXEC flag. So call this when available and
fall back to fcntl(..., FD_CLOEXEC) if not.
2016-07-30 21:45:30 +02:00
camachat
5e684172d6 Fix build with NORM enabled on FreeBSD. (#2066) 2016-07-27 19:42:35 +01:00
Constantin Rack
3814b87330 Merge pull request #2065 from bluca/osx_sed
Problem: Travis CI OSX builds are broken
2016-07-24 16:06:33 +02:00
Luca Boccassi
531b3bf7c3 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-07-24 14:24:24 +01:00
Luca Boccassi
b2e8a90a97 Merge pull request #2064 from garlick/issue_2051
Problem: getifaddrs can fail with ECONNREFUSED
2016-07-20 23:18:00 +01:00
Jim Garlick
d090a871bc 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 09:33:33 -07:00
Doron Somech
d44ef4fa5f Merge pull request #2061 from cowo78/master
Minor fixes/changes in Win32/MSVC build system
2016-07-12 17:46:49 +03:00
Giuseppe Corbelli
7fdb167732 [tests/testutil.hpp] Problem: wrong windows.hpp path
Solution: correct path is ../src/windows.hpp. Also added automatic linking
of iphlpapi library if required and using MSVC
2016-07-12 15:58:17 +02:00
Giuseppe Corbelli
0b01cc1ebc [tests/CMakeLists.txt] Problem: The libzmq.lib search path should be set
only if the library is found at a specific path

Solution: Search for libzmq.lib in ../bin/Win32/Debug/v120/dynamic, don't
know how to automatically search in correct path based on current build
configuration
2016-07-12 15:54:55 +02:00
Luca Boccassi
f9c86872e5 Merge pull request #2054 from BLangpap/master
Problem: parameter %1 set hard to build target and prevents the skipp…
2016-07-04 11:21:42 +01:00
Bernd Langpap
96c306cc54 Problem: parameter %1 set hard to build target and prevents the skipping of pause
Solution: removed Pause
2016-07-04 12:13:44 +02:00
Luca Boccassi
d51940a9f5 Merge pull request #2053 from BLangpap/master
modified build.bat for msvc to support non-pausing script-based instal…
2016-07-04 10:30:34 +01:00
Bernd Langpap
73631bf1c9 modified build.bat to support non-pausing installation 2016-07-04 11:06:56 +02:00
Bernd Langpap
5de974a036 modified build.bat for msvc to support no-pausing script-based installation
Signed-off-by: Bernd Langpap <Bernd.Langpap@airbus.com>
2016-07-04 10:31:11 +02:00
Luca Boccassi
9561cc8c24 Merge pull request #2046 from pijyoi/reduce_msvc_warnings
Problem: MSVC warns about event monitoring functions converting SOCKET to int
2016-06-20 16:10:07 +01:00
KIU Shueng Chuan
603cd1db88 change event monitoring functions to use zmq::fd_t 2016-06-20 22:27:52 +08:00
Doron Somech
5eb6fc3b08 Merge pull request #2045 from sheremetyev/update-ignores
Add missing Git ignores.
2016-06-20 16:08:55 +03:00
Fedor Sheremetyev
219f2ffa46 Add missing Git ignores. 2016-06-20 13:58:23 +01:00
Doron Somech
a1f691e799 Merge pull request #2042 from sheremetyev/xpub-unsubscribe-manual
Send manual unsubscriptions on pipe termination in XPUB
2016-06-17 16:01:42 +03:00
Fedor Sheremetyev
baea406683 Store manual subscriptions in XPUB and send them out on pipe termination. 2016-06-17 11:40:17 +01:00
Fedor Sheremetyev
813c738137 Add test for consistent unsubscription in XPUB manual mode.
Expect custom messages on both explicit unsubscription and pipe termination.
2016-06-17 11:36:13 +01:00
Luca Boccassi
a343059aad Merge pull request #2041 from packetstash/select-fix-rebased
Copy instead of reference to a vector that gets reallocated.
2016-06-16 22:48:36 +01:00
Douglas Cuthbertson
4019112a82 Copy instead of reference to a vector that gets reallocated. 2016-06-16 17:34:22 -04:00
Luca Boccassi
b3bfa420ea Merge pull request #2036 from aburgm/abort-flush
Flush stderr buffer before calling zmq_abort in assert macros
2016-06-13 20:17:55 +02:00
Armin Burgmeier
07a374357e Flush stderr buffer before calling zmq_abort in assert macros
On Windows, the written message does not seem to be guaranteed to be
written to stderr, in particular when stderr is redirected to a file. I
suppose this is because RaiseException terminates the process in a way
that does not give the CRT a chance to flush stdio buffers (or if it
does, there might be a problem when more than one CRT instance is linked
into the program and they overwrite each other's exception handler). Either
way, just make sure the assertion message ends up written to stderr to
ease diagnostics.
2016-06-13 09:26:45 -07:00
Luca Boccassi
95782450c7 Merge pull request #2035 from slishak/master
Problem: FD_SETSIZE not set to 16k for all build definitions
2016-06-13 11:55:31 +02:00
Sam Lishak
d49e43bbc8 Problem: FD_SETSIZE not set to 16k for all build definitions
Solution: Set FD_SETSIZE to 16k for all other build definitions.
2016-06-13 09:42:54 +01:00
Luca Boccassi
cb0eaf6bce Merge pull request #2034 from michicc/poll_windows
Poll() implementation for Windows Vista+
2016-06-11 19:31:37 +02:00
Michael Lutz
7a6ff07a01 Problem: Windows performance is not optimal due to select().
Solution: Provide poll() for Windows as well. This is a build option that
defaults to off as the resulting binary will only run on Windows Vista or
newer.

This is not tested with alternative Winsock service providers like VMCI,
but the documentation for WSAPoll does not mention limitations.

On my local machine, throughput improves by ~10 % (20 simultaneous
remote_thr workes to one local_thr, 10 byte messages), while latency
improves by ~30 % (measured with remote/local_lat).
2016-06-11 19:17:18 +02:00
Michael Lutz
8d8d32f4d0 Problem: Theoretical overflow when polling more than INT_MAX handles.
Solution: Always use fd_t when accessing the pollset.
2016-06-11 18:50:40 +02:00
Constantin Rack
7292de8de5 Merge pull request #2031 from bluca/vector_data
Problem: std:vector.data breaks compat with C++98
2016-06-11 14:43:10 +02:00
Luca Boccassi
0dede9b50b Problem: std:vector.data breaks compat with C++98
Solution: use buffer address instead
2016-06-09 23:54:29 +01:00
Luca Boccassi
4ea6df43bd Merge pull request #2032 from jlblancoc/patch-1
Fix build error in MSVC11
2016-06-10 00:51:49 +02:00
Jose Luis Blanco-Claraco
38d7bec19e Fix build error in MSVC11
(and probably other MSVC versions)
2016-06-10 00:42:43 +02:00
Joe Eli McIlvain
dc40c95c47 Merge pull request #2028 from bluca/update_ndk
Problem: Android CI NDK version and C++ ABI are outdated
2016-06-07 16:47:55 -07:00
Luca Boccassi
b4abaad269 Problem: Android CI uses outdated C++ ABI 4.8
Solution: switch to 4.9
2016-06-07 23:56:34 +01:00
Luca Boccassi
b872e7d9f7 Problem: Android CI NDK version out of date
Solution: update CI scripts to use newer r11c from r10e
2016-06-07 23:56:28 +01:00
Luca Boccassi
8be568916e Problem: Android CI script hardcodes ABI version
Solution: use a variable for easier maintenance, in sync with zproject
2016-06-07 23:18:21 +01:00
Luca Boccassi
33ed569289 Merge pull request #2024 from wbx-github/master
allow to build sparc (v8,leon)
2016-06-04 14:33:39 +01:00
Waldemar Brodkorb
492a035706 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 13:40:14 +02:00
Luca Boccassi
46912c4f2e Merge pull request #2023 from jimenezrick/patch-1
Problem: update zmq_setsockopt doc with new flag name
2016-06-03 14:11:04 +01:00
Ricardo Catalinas Jiménez
c86e07dbc8 Problem: update zmq_setsockopt doc with new flag name 2016-06-03 13:57:30 +01:00
Doron Somech
2b6200c49e Merge pull request #2018 from diorcety/mingw64
Fix compilation with mingw64 using autotools
2016-06-02 10:16:04 +03:00
Yann Diorcet
9835e18f64 Fix compilation with mingw64 using autotools 2016-06-01 15:07:16 +02:00
Constantin Rack
7b063a067c Merge pull request #2014 from GreatFruitOmsk/vmci
VMCI family does not support non-blocking sockets.
2016-05-28 08:34:09 +02:00
Ilya Kulakov
73e360fc49 VMCI family does not support non-blocking sockets.
It may even cause BSOD on Windows.
2016-05-27 19:46:03 -04:00
Doron Somech
184840cf37 Merge pull request #2013 from aseering/master
Windows Subsystem for Linux compatibility fix
2016-05-27 10:36:14 +03:00
Adam Seering
b1e2b87f0f On systems where getifaddrs() exists but isn't implemented, behave as if 'resolve_nic_name()' were entirely unsupported 2016-05-27 00:02:37 -04:00
Luca Boccassi
9a5036409d Merge pull request #2011 from evoskuil/master
Problem: msvc imports missing Rule.Category declarations.
2016-05-25 21:59:25 +01:00
evoskuil
96a66bab3b Problem: msvc imports missing Rule.Category declarations. 2016-05-25 13:52:49 -07:00
Luca Boccassi
570805119d Merge pull request #2008 from hitstergtd/x-fix-windowshpp-style
Problem: style broken in src/windows.hpp
2016-05-23 14:12:41 +01:00
hitstergtd
40a2ed9e87 Problem: style broken in src/windows.hpp
Solution:
Wrap to lte 80 chars and fix it.
2016-05-20 15:37:09 +01:00
Luca Boccassi
4cd630fed2 Merge pull request #2004 from evoskuil/master
Problem: no unit tests for base85 or public curve functions.
2016-05-19 11:57:53 +01:00
evoskuil
c050d95fcd Problem: no unit tests for base85 or public curve functions. 2016-05-19 03:46:15 -07:00
Doron Somech
5cae5bb5fe Merge pull request #2003 from evoskuil/master
Problem: no function to derive public key from curve secret.
2016-05-19 10:15:52 +03:00
evoskuil
460bc7525b Problem: no function to derive curve public key from secret key. 2016-05-18 23:51:18 -07:00
Constantin Rack
34164ec6f5 Merge pull request #2001 from evoskuil/master
Problem: unresolved dgram externals in msvc builds.
2016-05-18 21:55:31 +02:00
evoskuil
c7f167377c Problem: unresolved dgram externals in msvc builds. 2016-05-18 12:25:51 -07:00
evoskuil
6a99bb041d Problem: implicit integer narrowing cast warnings. 2016-05-18 12:02:30 -07:00
Luca Boccassi
d018029652 Merge pull request #2000 from Chris-P-Bacon/patch-1
Typo in define for libsodium
2016-05-18 14:19:47 +01:00
Chris-P-Bacon
874c346c20 Typo in define for libsodium
Since ZMQ_USE_SODIUM is nowhere defined i guess it's meant to be ZMQ_USE_LIBSODIUM?
2016-05-18 14:52:30 +02:00
Luca Boccassi
99373ff0b4 Merge pull request #1998 from hitstergtd/x-style-testsrcfd
Problem: Wrapping issue in test for SRCFD [style]
2016-05-16 22:22:58 +01:00
hitstergtd
fed17746c6 Problem: Wrapping issue in test for SRCFD [style]
Solution:
Wrap it.
2016-05-16 20:47:47 +01:00
Luca Boccassi
5f0ac2aebe Merge pull request #1997 from Bitiquinho/master
Problem: my name is not in the AUTHORS file
2016-05-16 15:03:26 +01:00
Bitiquinho
c1af4fd24b Add myself to the AUTHORS file 2016-05-16 10:46:45 -03:00
Luca Boccassi
d65d15fb63 Merge pull request #1996 from somdoron/udp_raw_sockets
problem: no way to send raw udp messages with zeromq
2016-05-16 14:16:09 +01:00
somdoron
bbfed6b8d0 problem: memory issues, access uninitiailized memory and leak 2016-05-16 15:51:08 +03:00
Luca Boccassi
c7effea912 Merge pull request #1995 from somdoron/udp_raw_sockets
problem: udp doesn't enforce correct usage of bind/connect
2016-05-16 11:49:19 +01:00
somdoron
c4d0146f2c problem: udp doesn't enforce correct usage of bind/connect
solution: enforce that dish and gram can only bind and radio can only
connect
2016-05-16 13:34:38 +03:00
Luca Boccassi
443176d5ef Merge pull request #1994 from somdoron/udp_raw_sockets
problem: no way to send raw udp messages with zeromq.
2016-05-16 11:07:58 +01:00
Doron Somech
0db70e247c problem: compilation error on windows 2016-05-16 12:48:47 +03:00
somdoron
d58eb54581 problem: test_dgram is missing in .gitignore 2016-05-16 12:19:38 +03:00
somdoron
55f0a5503e problem: dgram is not enforcing two-part message 2016-05-16 12:18:36 +03:00
somdoron
ded0e5a6d9 problem: udp_engine didn't work with dgram socket type 2016-05-16 12:18:36 +03:00
somdoron
6db8f1e74b problem: test is using connect with dgram, dgram only support bind 2016-05-16 12:18:30 +03:00
somdoron
eb80fa31ea problem: dgram more out logic was incorrect 2016-05-16 12:07:07 +03:00
somdoron
47c0b6ec25 problem: dgram doesn't need to prefetch messages 2016-05-16 10:31:38 +03:00
somdoron
d791932635 problem: terminating conn doesn't make sense in disconnected protocol 2016-05-16 10:28:42 +03:00
Bitiquinho
8cd64b76e4 Adapt to new draft header. Rebase dgram socket on pair socket 2016-05-15 16:16:09 -03:00
Bitiquinho
23b3403fa5 Remove printf and add asserts on test 2016-05-15 15:37:33 -03:00
Bitiquinho
977e700893 Fix Copyright range 2016-05-15 15:37:33 -03:00
Bitiquinho
a7399fab51 Fix Makefile.am 2016-05-15 15:37:33 -03:00
Bitiquinho
da14bb4bc2 Added ZMQ_DGRAM tests to build (Makefile.am and CMakeLists.txt) 2016-05-15 15:37:33 -03:00
Bitiquinho
94c53e541d Added test for ZMQ_DGRAM socket type (unicast and multicast) 2016-05-15 15:37:33 -03:00
Bitiquinho
cea473de59 Added ZMQ_DGRAM socket option to precmpiled.hpp 2016-05-15 15:37:33 -03:00
Bitiquinho
3e54ecd49c Added dgram.cpp to CMakeLists.txt sources 2016-05-15 15:35:35 -03:00
Bitiquinho
365c8eda72 Add dgram_t class (based on stream socket and udp engine) 2016-05-15 15:35:35 -03:00
Luca Boccassi
72f19648d1 Merge pull request #1992 from evoskuil/master
Problem: name confl from windows.h, draft API decl in pch.
2016-05-14 11:49:08 +01:00
evoskuil
8474dc3c53 Problem: precompiled.cpp/hpp required but excluded from non-msvc builds. 2016-05-14 03:29:11 -07:00
Constantin Rack
bd66cfe6f8 Merge pull request #1991 from hitstergtd/x-testcov-zmq-2
Problem: zmq_poller_destroy can segfault
2016-05-14 08:17:41 +02:00
evoskuil
5939debe41 Problem: incorrect file extension (.hpp) for zmq_draft.h in Makefile.am. 2016-05-13 20:55:17 -07:00
evoskuil
2b798e486a Problem: name conflicts from windows.h, draft API declared in pch. 2016-05-13 20:41:26 -07:00
evoskuil
bda9374864 Problem: inadvertently deployed nuget package without tweetnacl enabled. 2016-05-13 04:08:40 -07:00
evoskuil
a3aa10c06b Problem: nuget packaging script doesn't pause at the end. 2016-05-13 04:07:21 -07:00
Luca Boccassi
94774f6915 Merge pull request #1988 from evoskuil/master
Problem: msvc builds are misconfigured.
2016-05-13 11:48:19 +01:00
evoskuil
5e0fb27cc6 Problem: tab characters are poor for source readability. 2016-05-13 03:25:30 -07:00
evoskuil
af524aed6b Problem: msvc dist has redundancies and missing elements. 2016-05-13 03:22:01 -07:00
evoskuil
9e26bb1885 Problem: typo in platform.hpp comment. 2016-05-13 02:30:37 -07:00
evoskuil
1c9d02d700 Problem: mo current nuget package. 2016-05-13 02:24:45 -07:00
evoskuil
7684ce4fcd Problem: incorrect white spacing for standard vcxproj file. 2016-05-13 01:48:08 -07:00
evoskuil
9622a830d0 Problem: inapplicable, redundant and invalid references in msvc pch. 2016-05-13 01:40:14 -07:00
evoskuil
4b041ef67d Problem: nuget package using wrong symbol and configured for libsodium. 2016-05-13 01:05:42 -07:00
evoskuil
2113feec39 Problem: msvc precompiled header config is a mess, tweetnacl is missing. 2016-05-13 01:04:22 -07:00
evoskuil
0db07394d0 Problem: msvc configuration options are invalid and/or inconsistent. 2016-05-13 01:00:58 -07:00
evoskuil
01ab149b96 Problem: copy of libsodium import props is unnecessary. 2016-05-13 00:56:09 -07:00
evoskuil
7425fcca80 Problem: incorrect include guard symbol. 2016-05-13 00:47:03 -07:00
evoskuil
40d7a4c896 Problem: redundant copies of msvc .props and .xml files. 2016-05-13 00:46:06 -07:00
Joe Eli McIlvain
71ba7df781 Merge pull request #1987 from hitstergtd/x-reduce-cliserv-sends
Problem: test send count too high for AppVeyor CI environment
2016-05-12 20:15:08 -07:00
hitstergtd
e82e4ea13e Problem: test send count too high for AppVeyor
Solution:
Reduce send count so that the test does not timeout on AppVeyor CI
environment and older Windows boxes.
2016-05-13 04:04:08 +01:00
evoskuil
f25a13bc8a Problem: configure.bat is incomplete and conflicts with MSVC UI. 2016-05-12 15:36:18 -07:00
Constantin Rack
9e872d0269 Merge pull request #1984 from hitstergtd/x-testcov-zmq-ctx 2016-05-12 19:21:31 +02:00
hitstergtd
477cc1cb12 Problem: zmq_poller_destroy parameter checking
Solution:
- Add checks for **poller_p_ to ensure that we do not segfault when either it
  or the value within it are NULL
- Add tests for the above and increase error state coverage
2016-05-12 18:09:59 +01:00
hitstergtd
4842b6bd81 Problem: No coverage for ctx termination errors
Solution:
- Add error state coverage for zmq_ctx_term(), zmq_term() and
  zmq_ctx_shutdown(); zmq_ctx_destroy() is already covered since it only
  calls zmq_ctx_term()
- Add coverage for zmq_term()
2016-05-12 17:47:08 +01:00
Luca Boccassi
f8c93d508f Merge pull request #1983 from hitstergtd/x-unused-thread
Problem: scheduling parameters unused on OSX
2016-05-12 16:53:22 +01:00
hitstergtd
e946b0d1a6 Problem: scheduling parameters unused on OSX
Solution:
Mark them with LIBZMQ_UNUSED macro as per convention; although in future the
appropriate pthread code should be updated to support thread scheduling
priorities (for Mac OS X, et. al.)
2016-05-12 16:36:59 +01:00
evoskuil
bce1cf96d9 Problem: vc common props have platform specific conditions. 2016-05-12 03:36:39 -07:00
evoskuil
a3c3bcfe4a Problem: visual c++ invalid ToolsVersion warnings. 2016-05-12 03:31:52 -07:00
evoskuil
9cb7077e3d Problem: inconsistent msvc property sheet display name (vs2012). 2016-05-12 03:15:16 -07:00
evoskuil
b5342bc008 Problem: no tool for maintainers to build all vs solutions. 2016-05-12 03:14:37 -07:00
evoskuil
398a5fd454 Problem: vs2010/12 build breaks, exclude atomic & inttypes in msvc pch. 2016-05-12 03:14:30 -07:00
Hitster GTD
29c8e30fc0 Merge pull request #1982 from Hugne/bug_1968
tipc: add support for address domain suffix
2016-05-11 21:17:23 +01:00
Erik Hugne
f81ef1bc72 tipc: add support for address domain suffix
The TIPC protocol bindings in ZeroMQ defaults to a lookup domain
of 1.0.0 to prevent 'closest first' search, and instead always
do round robin if several sockets in the network or node have
the same name published. In retrospect, this might have been a
bad idea because it won't work on standalone configurations.
We solve this by allowing an optional domain suffix to be provided
in the address, and 0.0.0 should be used in that case, or if the
TIPC address range in the cluster configuration is defined to some
other value. Domain suffixes are only relevant for connecting
addresses.

Signed-off-by: Erik Hugne <erik.hugne@gmail.com>
2016-05-11 21:54:25 +02:00
Luca Boccassi
4ad68e0dfe Merge pull request #1981 from hitstergtd/x-unused-req
Problem: hint parameter throws unused warning
2016-05-11 15:57:12 +01:00
Luca Boccassi
10a84ac8b1 Merge pull request #1979 from dmillard/patch-1
Fix autotools for static MinGW builds
2016-05-10 22:11:59 +01:00
David Millard
9e6745c12e Fix autotools for static MinGW builds 2016-05-10 13:53:53 -07:00
Luca Boccassi
c7ecbedb0e Merge pull request #1977 from hitstergtd/x-unused-variables
Problem: sockfd_ parameter throws unused warning
2016-05-10 18:43:22 +01:00
hitstergtd
5efa11828c Problem: hint parameter throws unused warning
Solution:
Mark it with LIBZMQ_UNUSED macro as per convention.
2016-05-10 18:22:15 +01:00
hitstergtd
545e8e848e Problem: sockfd_ parameter throws unused warning
Solution:
Mark it with LIBZMQ_UNUSED as per our convention.
2016-05-10 18:12:44 +01:00
Luca Boccassi
dc7296537c Merge pull request #1976 from zeromq/revert-1975-master
Revert "problem:Socket try to access closed mutex"
2016-05-10 14:31:57 +01:00
Doron Somech
c41d514b8b Revert "problem:Socket try to access closed mutex" 2016-05-10 16:23:29 +03:00
Constantin Rack
f6ce1d764c Merge pull request #1975 from somdoron/master 2016-05-10 13:00:31 +02:00
Doron Somech
77d3d7b4dc problem:Socket try to access closed mutex 2016-05-10 13:49:57 +03:00
Luca Boccassi
a6e8d153cb Merge pull request #1974 from hitstergtd/master
Problem: style/typo issue
2016-05-09 14:59:19 +01:00
hitstergtd
8fc985a9b0 Problem: style/typo issue
Solution:
Fix it.
2016-05-09 14:24:12 +01:00
Luca Boccassi
a4a247cf57 Merge pull request #1973 from hitstergtd/x-fix-m4-llvm-gcov-coverage
Problem: Coverage option broken with LLVM GCOV Frontend
2016-05-09 14:10:50 +01:00
Constantin Rack
3eef0a7ba8 Merge pull request #1972 from hitstergtd/x-stylefix-udpengine
Problem: UDP engine code not indented properly [style]
2016-05-09 14:30:31 +02:00
hitstergtd
415af27395 Problem: Coverage option broken with LLVM GCOV
Solution:
This is an issue with the imported Autoconf M4 macro package for standardised
code coverage builds, i.e. using --enable-code-coverage.

The simplest way that I could find is to add a case statement that checks if
the output of running `gcov -version` contains the "LLVM" keyword; if that is
true then do not link with LIBGCOV as its neither required nor supported when
using the GCOV frontend for LLVM; least not on Mac OS X. The case statement
would also be the most portable.

Moreover, using the "-version" argument instead of "-v" seems to be the best
bet as that is supported by the normal GCOV and LLVM GCOV frontend.

Upstream candidate - this solution should be improved by Autoconf M4 macro
overlords and applied to the upstream M4 package; I could not find a suitable
way to detect if LLVM GCOV is being used, except for the solution herein; this
should also work on *BSD too.
2016-05-09 13:27:41 +01:00
Luca Boccassi
1f309d3a3d Merge pull request #1971 from sappo/master
Problem: Deploying release artifacts to github is a manual process
2016-05-09 10:15:13 +01:00
Kevin Sapper
b22558119d 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-05-09 10:30:13 +02:00
Luca Boccassi
c4ce6d9b1b Merge pull request #1970 from hitstergtd/x-add-ancillary-tests
Problem: Not all ancillary API methods tested
2016-05-08 18:36:03 +01:00
hitstergtd
124ebd2dd6 Problem: UDP engine code not indented properly
Solution:
Indent it.
2016-05-08 18:30:17 +01:00
hitstergtd
206771afd2 Problem: Not all ancillary API methods tested
Solution:
- Add file for testing ancillary API methods and any misc internal machinery
- Add tests for zmq_version(3) and zmq_strerror(3)
- Add test file into gitignore, Autotools and CMake build files
- Increase test coverage

Note:
MSVC solution files have not been updated.
2016-05-08 18:25:03 +01:00
Constantin Rack
d6aa6e71ec Merge pull request #1969 from pijyoi/fix_invalidsocket
problem: sockets are not signed int on Windows
2016-05-08 10:40:14 +02:00
KIU Shueng Chuan
bb4bcf8f45 fix: sockets are not signed int on Windows 2016-05-08 16:29:15 +08:00
Doron Somech
f88d129b50 Merge pull request #1966 from bluca/backtrace_assert
Problem: no backtrace is printed on assert
2016-05-06 23:45:47 +03:00
Luca Boccassi
bb5037e855 Problem: leftover commented out line in configure
Solution: clean up and remove it
2016-05-06 21:34:43 +01:00
Luca Boccassi
8045e9ae24 Problem: no backtrace is printed on assert
Solution: add an optional dependency on libunwind, and if present
use it to print the backtrace when zmq_abort is called.
2016-05-06 21:34:25 +01:00
Luca Boccassi
c1dc9d0244 Merge pull request #1967 from hitstergtd/x-add-militant-option
Problem: No CMake option to set ZMQ_ACT_MILITANT
2016-05-06 21:05:40 +01:00
hitstergtd
6ea9dbc9ce Problem: No CMake option to set ZMQ_ACT_MILITANT
Solution:
Add CMake option called WITH_MILITANT so that it aligns with the Autotools
build infrastructure; enabling this option defines ZMQ_ACT_MILITANT, which
enables assertions should malformed requests make their way into
zmq_setsockopt(3) or zmq_getsockopt(3).
2016-05-06 20:57:54 +01:00
Doron Somech
f98b5bb5cf Merge pull request #1964 from bluca/sock_close_read_after_free
Problem: read-after-free when closing socket
2016-05-05 23:33:04 +03:00
Luca Boccassi
17132f0387 Problem: read-after-free when closing socket
Solution: use socket object's mutex before the send_reap() call that
might deallocate it
2016-05-05 17:47:16 +01:00
Constantin Rack
e9380b5a1a Merge pull request #1962 from somdoron/master
problem: timers test is flapping on windows
2016-05-05 13:47:44 +02:00
Doron Somech
be741f604a problem: timers test is flapping on windows 2016-05-05 14:24:47 +03:00
Constantin Rack
5dadded0a1 Merge pull request #1961 from somdoron/Signaler
problem: closed poller still associated with socket
2016-05-05 12:57:24 +02:00
Doron Somech
a747f72450 problem:closed poller still associated with socket 2016-05-05 13:50:33 +03:00
Luca Boccassi
fb75b201c3 Merge pull request #1960 from hitstergtd/x-sort-AUTHORS
Problem: AUTHORS file is not sorted
2016-05-05 11:02:41 +01:00
Doron Somech
001ddd80cc Merge pull request #1958 from hitstergtd/x-deprecate-zmq-sendrecviov-fix
Problem: zmq_sendiov/zmq_recviov not Deprecated
2016-05-04 19:14:38 +03:00
KAPP Arnaud
a46d7b994f Merge pull request #1959 from hitstergtd/x-zmqpoll-fix
Problem: style issues with comment in zmq_poll
2016-05-04 17:55:55 +02:00
hitstergtd
b3bb0b7f1c Problem: zmq_sendiov/zmq_recviov not Deprecated
Solution:
As preparation for 4.2 release, move the zmq_sendiov and zmq_recviov API
methods under the Deprecated Methods section.

Note: the actual methods have NOT been deprecated yet, functionally speaking
however it is good to let API users know early. Moreover, these methods were
not ever considered stable, at least according to src/zmq.h, and have no
associated man pages.
2016-05-04 16:48:10 +01:00
hitstergtd
109122dd46 Problem: style issues with comment in zmq_poll
Solution:
Wrap and clean it.
2016-05-04 16:24:51 +01:00
Luca Boccassi
c33e96f2d2 Merge pull request #1957 from hitstergtd/x-TIPC-CMake-fix
Problem: ZMQ_HAVE_TIPC option for CMake is broken
2016-05-04 16:18:26 +01:00
hitstergtd
b470ed451f Problem: ZMQ_HAVE_TIPC option for CMake is broken
Solution:
Fix it - there was a typo in the source list variable; it should be
'cpp-sources' and not 'cpp-source'.
2016-05-04 16:15:28 +01:00
Luca Boccassi
00d7ee1646 Merge pull request #1956 from hitstergtd/x-addto-AUTHORS-file
Problem: Not shamelessly plugged into AUTHORS
2016-05-04 16:12:59 +01:00
Luca Boccassi
ad82bd1b1a Merge pull request #1955 from hitstergtd/x-remove-MAINTAINERS-file
Problem: MAINTAINERS file has no purpose anymore
2016-05-04 16:08:13 +01:00
hitstergtd
6ae2ff6446 Problem: MAINTAINERS file has no purpose anymore
Solution:
Remove until such time that a new and appropriate file can replace it should
it be deemed necessary.
2016-05-04 16:06:33 +01:00
Luca Boccassi
745e07d93c Merge pull request #1954 from somdoron/master
problem: compilation error on osx
2016-05-04 14:15:08 +01:00
Doron Somech
e15da4b38c problem: compilation error on osx 2016-05-04 16:09:31 +03:00
Luca Boccassi
feec47604f Merge pull request #1953 from somdoron/master
problem: src is broken and unneeded as we have metadata
2016-05-04 13:35:19 +01:00
Doron Somech
ba20f665ae problem: SRCFD is redundant as we have metadata 2016-05-04 15:33:20 +03:00
Doron Somech
4012538ce4 problem: srcfd is broken 2016-05-04 15:33:19 +03:00
Doron Somech
a192663ece Merge pull request #1951 from hitstergtd/x-monitorcomment-fix
Problem: supported protocols comment is stale
2016-05-04 09:56:46 +03:00
Luca Boccassi
372ab4b8fe Merge pull request #1949 from somdoron/master
problem: zeromq performance got worsen by some changes
2016-05-03 17:58:55 +01:00
somdoron
50c2f7af8f fix sndbuf/rcvbuf tests 2016-05-03 19:46:34 +03:00
somdoron
fca45921a8 problem: zeromq performance got worsen by some changes 2016-05-03 19:37:39 +03:00
Luca Boccassi
115e7de7d2 Merge pull request #1948 from hitstergtd/x-gitignore-fix
Problem: Not all GCOV extensions in .gitignore
2016-05-03 11:50:38 +01:00
hitstergtd
e68c8ae1eb Problem: Not all GCOV extensions in .gitignore
Solution:
Fix it.
2016-05-03 11:38:25 +01:00
Luca Boccassi
fc7d5e7fbb Merge pull request #1946 from somdoron/master
problem: no way to enable draft on windows
2016-05-03 09:05:24 +01:00
Doron Somech
b3667cccf9 mark zmq_msg new methods as draft 2016-05-03 10:44:00 +03:00
Doron Somech
fcc80d4ffb add draft option to windows configure 2016-05-03 10:18:46 +03:00
Doron Somech
91394d27c7 Merge pull request #1945 from bluca/draft_api
problem: no way to disable draft when compiling
2016-05-03 08:01:37 +03:00
Luca Boccassi
b741350745 Problem: test_pub_invert_matching not ignored
Solution: add it to .gitignore
2016-05-02 22:51:30 +01:00
Luca Boccassi
a782be73ac Problem: no CI tests with DRAFT enabled
Solution: do default test with DRAFT APIs enabled
2016-05-02 22:51:30 +01:00
Luca Boccassi
6de24c190a Problem: scatter/gather are not yet stable APIs
Solution: mark them as DRAFT APIs
2016-05-02 21:47:05 +01:00
Luca Boccassi
caaf66c32c Problem: radio/dish are not yet stable APIs
Solution: mark them as DRAFT APIs
2016-05-02 21:47:05 +01:00
Luca Boccassi
32a1ef85a8 Problem: zmq_timers* are not yet stable APIs
Solution: mark them as DRAFT APIs
2016-05-02 21:47:05 +01:00
Luca Boccassi
738968082b Problem: zmq_poller* are not yet stable APIs
Solution: mark them as DRAFT APIs
2016-05-02 21:47:05 +01:00
Luca Boccassi
7e700f1e73 Problem: client/server are not yet stable APIs
Solution: mark them as DRAFT APIs
2016-05-02 21:47:05 +01:00
Luca Boccassi
064cd1fbfb Problem: no support for DRAFT API in build systems
Solution: add support for --enable-drafts/ENABLE_DRAFTS=ON in
Autools and CMake.
2016-05-02 21:47:05 +01:00
Luca Boccassi
f0a34e0ff5 Problem: test_poller/use_fd_ipc/tcp use draft API
Solution: only use ZMQ_SERVER/CLIENT if the defines are available.
2016-05-02 21:46:47 +01:00
Luca Boccassi
c293618ae8 Problem: testutil.hpp includes platform.hpp last
Solution: before including internal headers, include platform.hpp
so that the build time options are correctly applied to the included
headers.
2016-05-02 20:00:53 +01:00
Luca Boccassi
b469832409 Problem: precompiled.hpp ifdef'd for windows
Solution: include platform.hpp and include/zmq.h outside of ifdef
for windows, in order to be able to use it for internal definitions.
2016-05-02 20:00:53 +01:00
Luca Boccassi
464d3fd3f8 Merge pull request #1944 from hitstergtd/x-testmonitor-fix
Problem: bounce() arguments reversed
2016-05-02 17:26:15 +01:00
Luca Boccassi
b65fc903cd Merge pull request #1943 from hitstergtd/x-style-tunetcpkeepalives-fix
Problem: tune_tcp* related code has style issues
2016-05-02 17:25:48 +01:00
Luca Boccassi
dc81aac195 Merge pull request #1940 from hitstergtd/x-update-autoconf-archive-m4-macros
Problem: autoconf-archive m4 macros out of date
2016-05-02 16:52:09 +01:00
hitstergtd
52871b0f3c Problem: autoconf-archive m4 macros out of date
Solution:
Update them from the latest archive located at:
git://git.savannah.gnu.org/autoconf-archive.git

Hat-tip:
@bluca
2016-05-02 16:12:27 +01:00
Luca Boccassi
a8f756173a Merge pull request #1941 from hitstergtd/x-doc-setsockopt-fix
Problem: zmq_setsockopt(3) man page formatting
2016-05-02 09:23:32 +01:00
hitstergtd
1ab7dd0122 Problem: supported protocols comment is stale
Solution:
Fix it and align with the documentation; zmq_socket_monitor(3) outlines
that ZMQ socket monitoring is supported for TCP, IPC and TIPC.
2016-05-01 22:00:20 +01:00
hitstergtd
40dbbe342e Problem: bounce() arguments reversed
Solution:
Put them in the right order to quiet Coverity.

Found by:
Coverity Scan
2016-05-01 21:40:08 +01:00
hitstergtd
4809926c10 Problem: zmq_setsockopt(3) man page formatting
Solution:
- Update formatting and remove redundant parts from ZMQ_PROBE_ROUTER,
ZMQ_USE_FD, ZMQ_TCP_MAXRT, ZMQ_TCP_TOS
- Only cosmetic changes to the content
- These changes already merged on api.zeromq.org by me
2016-05-01 20:32:22 +01:00
Luca Boccassi
b3ae7cfa0d Merge pull request #1937 from hitstergtd/test-add-sendiov
Problem: multiple issues with zmq_sendiov/recviov
2016-05-01 20:01:07 +01:00
hitstergtd
e4539778a4 Problem: multiple issues with sendiov/recviov
Solution:
- Add check for the [count] parameter in zmq_sendiov() and zmq_recviov()
- Use and add test for zmq_sendiov() in tests/test_iov.cpp
- Add error state tests for zmq_sendiov() in tests/test_iov.cpp
- Add error state tests for zmq_recviov() in tests/test_iov.cpp
- Cleanup tests/test_iov.cpp for style, consistency and clarity
- Generally improve test coverage for both API methods

Hat-tip:
@somdoron, @bluca
2016-05-01 19:41:50 +01:00
hitstergtd
a31c508979 Problem: tune_tcp* related code has style issues
Solution: fix it
2016-05-01 14:42:27 +01:00
Luca Boccassi
89ef8b38c0 Merge pull request #1938 from hitstergtd/decoder-fix
Problem: style issues in decoder.hpp
2016-05-01 12:30:10 +01:00
hitstergtd
d7038bf11b Problem: AUTHORS file is not sorted
Solution: sort it and strip trailing whitespaces
2016-04-30 21:51:02 +01:00
hitstergtd
56e83d0eb6 Problem: Not shamelessly plugged into AUTHORS
Solution: plug myself in
2016-04-30 21:34:54 +01:00
hitstergtd
8820e35a56 Problem: style issues in decoder.hpp
Solution: fix it
2016-04-30 21:20:31 +01:00
Luca Boccassi
95acb29bfb Merge pull request #1934 from somdoron/master
problem: no documentation for Radio-dish and UDP
2016-04-29 10:40:56 +01:00
somdoron
fee84134e7 UDP and Radio-dish documentation 2016-04-29 12:17:17 +03:00
somdoron
34d5028ea8 allow specify binding address on radio with udp 2016-04-29 12:17:17 +03:00
Doron Somech
9ec9c4ad0c Merge pull request #1933 from sappo/master
Problem: relicense statement from imatix is in the wrong place
2016-04-29 11:50:59 +03:00
Kevin Sapper
a1ee5e3136 Problem: relicense statement from imatix is in the wrong place
Solution: move the statement to the folder introduced in commit:
dd51cad082923a5973cdaff9c0418e5ab28de763
2016-04-29 09:47:39 +02:00
Kevin Sapper
5264a9afce Merge pull request #1917 from hintjens/master
Problem: need to collect grants to relicense under MPLv2
2016-04-29 09:39:23 +02:00
Kevin Sapper
c1155fad71 Merge pull request #1925 from ewen-naos-nz/ewen_mcneill_relicense_naos
Naos Ltd license grant/quitclaim
2016-04-29 09:38:56 +02:00
Kevin Sapper
f64c8429b9 Merge pull request #1924 from ewen-naos-nz/ewen_mcneill_relicense_readme
RELICENSE: Start collecting MPLv2 license grants
2016-04-29 09:38:18 +02:00
Doron Somech
f7cf246373 Merge pull request #1932 from hitstergtd/doxygen-libzmq
Problem: libzmq lacks a good doxygen config
2016-04-29 09:36:20 +03:00
hitstergtd
f950f2ba69 Problem: No default doxygen cfg for ZeroMQ project
Solution:
- Add Doxygen.cfg file to make it simpler for library users and interested
parties to view library internals/externals
- Add README.doxygen.md as an Overview for Doxygen-generated documentation

Notes:
This could later be added into CI for autogenerated documentation that could be
posted to the gh-pages branch.
2016-04-28 14:14:38 +01:00
Luca Boccassi
6712f6dd01 Merge pull request #1931 from hitstergtd/unistd-fix
Problem: unistd.h redundantly included twice
2016-04-27 11:15:14 +01:00
Ewen McNeill
e604bbcc13 RELICENSE: Link to 0MQ Licensing page 2016-04-27 20:27:09 +12:00
Doron Somech
3df0a4f7e4 Merge pull request #1929 from hitstergtd/autotools-fix
Problem: test_pub_invert_matching missing in autotools build
2016-04-26 19:01:36 +03:00
hitstergtd
9218441f97 Problem: unistd.h redundantly included twice
Solution: fix it
2016-04-26 16:57:30 +01:00
hitstergtd
876ee5d6b4 Problem: test_pub_invert_matching missing in autotools build
Solution:
- add it to Makefile.am
2016-04-26 16:29:06 +01:00
Doron Somech
4b3199fefa Merge pull request #1927 from hitstergtd/codespell-fixes
Problem: tune_tcp_keepalives signature more than 80 chars on a line
2016-04-25 16:02:11 +03:00
Luca Boccassi
af82d0641c Merge pull request #1926 from hitstergtd/codespell-fixes
Problem: typos and trailing whitespace in code/comments
2016-04-25 13:44:47 +01:00
hitstergtd
d3c800a237 Problem: tune_tcp_keepalives signature >80 chars
Solution: fix it
2016-04-25 13:43:10 +01:00
hitstergtd
b2d0ab18f2 Problem: trailing whitespace in code
Solution: fix them
2016-04-25 12:18:46 +01:00
hitstergtd
11311f9776 Problem: trailing spaces in code comments
Solution: fix them
2016-04-25 11:18:49 +01:00
hitstergtd
a4b426b18e Problem: typos/trailing spaces in code comments
Solution: fix them
2016-04-25 11:16:26 +01:00
Ewen McNeill
0e5ea0c8f0 RELICENSE: Naos Ltd MPLv2 grant 2016-04-25 11:28:04 +12:00
Ewen McNeill
dd51cad082 RELICENSE: Start collecting MPLv2 license grants 2016-04-25 11:24:50 +12:00
Luca Boccassi
7b9005a7a1 Merge pull request #1923 from hitstergtd/testxpubmanual-msvc-fix
Problem: XPUB test broken since #1566 on Windows
2016-04-24 17:04:40 +01:00
hitstergtd
8872809337 Problem: XPUB test broken since #1566 on Windows
Solution:
- Adjust test_xpub_proxy_unsubscribe_disconnect() to support different
  protocol types
- Exclude the IPC tests on Windows and OpenVMS

H/T: @somdoron
2016-04-24 16:56:06 +01:00
Constantin Rack
fb015569a2 Merge pull request #1921 from somdoron/master
problem: no way to detect in czmq if timers class available
2016-04-24 11:32:53 +02:00
somdoron
9798f74d17 add have timers define to detect if timers class available 2016-04-24 12:30:35 +03:00
Pieter Hintjens
a4d219c07a Problem: need to collect grants to relicense under MPLv2
Solution: kick off process with grant from iMatix
2016-04-24 08:23:24 +02:00
Luca Boccassi
230df282bd Merge pull request #1920 from somdoron/master
problem: Tests are failing on windows
2016-04-23 20:42:27 +01:00
Doron Somech
0655ed2e0e fix test unbind wildcard 2016-04-23 22:30:10 +03:00
Doron Somech
0934bc784d fix test term endpoint 2016-04-23 22:30:09 +03:00
Hitster GTD
6f1dc64ff3 Merge pull request #1919 from bluca/xpub_test_logic
Problem: assertion in test_xpub_manual is swapped
2016-04-23 18:29:48 +01:00
Luca Boccassi
a93600309f Problem: assertion in test_xpub_manual is swapped
Solution: check that both pointers passed as arguments to
test_missing_subscription are non-NULL, instead of the opposite.
2016-04-23 18:16:49 +01:00
Doron Somech
dd038ae38e Merge pull request #1918 from hitstergtd/hitstergtd-testxpubmanual-win
Problem: XPUB test broken on Windows since #1569
2016-04-23 18:46:15 +03:00
hitstergtd
ff02862171 Problem: XPUB test broken on Windows since #1569
Solution:
- Adjust test_subscriptions() to support different protocol types
- Run TCP and IPC tests everywhere but on Windows and OpenVMS
2016-04-23 16:18:38 +01:00
Luca Boccassi
4ae62dfc29 Merge pull request #1916 from linville/master
Fix unresolved external symbols for gather and scatter classes on MSVC 2010-2015.
2016-04-23 00:43:41 +01:00
Aaron Linville
a57fd70844 Fix issue with unresolved external symbols for the gather and scatter classes by adding them to the MSVC 2010, 2012, 2013 and 2015 projects. 2016-04-22 19:26:55 -04:00
Constantin Rack
ad4e091a5a Merge pull request #1915 from hitstergtd/checkproto-windows-fix
Problem: Windows IPC check broken (check_protocol)
2016-04-22 21:24:07 +02:00
hitstergtd
7feb1e49fc Problem: Windows IPC check broken (check_protocol)
Solution: Fix the preprocessor check from || to &&
2016-04-22 19:55:08 +01:00
Doron Somech
0ece425dca Merge pull request #1914 from hitstergtd/clang-testfiles-fix
Problem: LD search path warnings if using Clang
2016-04-22 15:37:48 +03:00
hitstergtd
7f0e380c05 Problem: LD search path warnings if using Clang
Solution: PR #1906 did not solve this problem properly; subsequent Travis CI
indicated that the issue happens with Clang/LLVM, so make sure to fix the
issue by detecting if Cmake CMake is using Clang for building the tests.
2016-04-21 22:32:15 +01:00
Hitster GTD
23e42526eb Merge pull request #1913 from bluca/ipc_windows
Problem: test_ipc_wildcard is ran on Windows
2016-04-21 14:39:13 +01:00
Luca Boccassi
5178251587 Problem: test_ipc_wildcard is ran on Windows
Solution: move it to the unix-only section of Makefile.am and
tests/CMakeLists.txt since it uses Unix IPC sockets.
2016-04-21 14:17:10 +01:00
Doron Somech
d6a57ad589 Merge pull request #1912 from hitstergtd/hitstergtd-testsrcfd-win-fix
Problem: ZMQ_SRCFD test does not work on Windows
2016-04-21 15:38:05 +03:00
hitstergtd
e8aeb3686d Problem: ZMQ_SRCFD test does not work on Windows
Solution: add Winsock specific assertions, since getpeername() should will
return SOCKET_ERROR (-1) and WSAGetLastError() will be set to WSAENOTSOCK
2016-04-21 13:24:02 +01:00
Hitster GTD
99763cce41 Merge pull request #1909 from somdoron/master
problem: push-pull socket types are not thread safe
2016-04-21 12:54:04 +01:00
somdoron
e6dae56c6e Scatter-Gather socket types 2016-04-21 14:50:58 +03:00
Constantin Rack
fae3a4e02a Merge pull request #1911 from somdoron/FixUDPWindows 2016-04-21 13:18:57 +02:00
Doron Somech
bf50f9fe75 Merge pull request #1910 from bluca/tipc
Problem: CMake CI does not run make test, and there is no checking for TIPC
2016-04-21 14:05:46 +03:00
Doron Somech
87e455f59b Fix UDP failing on windows 2016-04-21 14:00:02 +03:00
Luca Boccassi
a117c1f48d Problem: Travis CI CMake build does not run tests
Solution: add make test to the cmake/ci_build.sh script
2016-04-21 11:35:43 +01:00
Luca Boccassi
ea294afd8b Problem: CMake does not check for TIPC support
Solution: add macro in ZMQSourceRunChecks.cmake and optionally
include the TIPC sources if the support is available.
More importantly, only run the TIPC tests if the support is there.
2016-04-21 11:33:20 +01:00
Luca Boccassi
317499edae Merge pull request #1906 from hitstergtd/hitstergtd-cmake-tests-os-fix
Problem: Linker search path warnings on OS X
2016-04-19 13:00:32 +01:00
hitstergtd
846b2ba174 Problem: Linker search path warnings on OS X
Problem:
A per-test Linker search path was added in commit a911fa4 to CMakeLists.txt as
part of fixing Windows builds. Whilst this is silently ignored by ld(1) on
Linux, it doesn't settle well with OS X. Spurious warnings are generated about
missing directories leading to convoluted build logs.

Solution:
Make per-Test LINK_DIRECTORIES() conditional for non-Apple platforms.
2016-04-19 12:38:16 +01:00
Constantin Rack
136870f298 Merge pull request #1902 from bluca/zmq_unbind_api_breakage 2016-04-18 20:21:02 +02:00
Luca Boccassi
c8211bf320 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-18 18:43:36 +01:00
Luca Boccassi
58c4e7e6b6 Problem: IPv6 is disabled on Travis Precise/Trusty
Solution: add one test run in a docket container environment, which
is currently the only environment where it's possibile to bind a
socket to ::1.
2016-04-18 18:43:36 +01:00
Luca Boccassi
ac0e97e5dc 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-18 18:43:36 +01:00
Luca Boccassi
8d49650ac8 Merge pull request #1901 from hitstergtd/hitstergtd-testcmake-fix
Problem: comment not well formed in CMakeLists.txt
2016-04-18 16:44:03 +01:00
hitstergtd
e09eb0db6f Problem: comment not well formed in CMakeLists.txt
Solution: fix comment
2016-04-18 16:33:34 +01:00
Luca Boccassi
1d083a33fd Merge pull request #1900 from hitstergtd/hitstergtd-testudp-fix
Problem: test_udp does not release resources properly
2016-04-18 15:21:35 +01:00
hitstergtd
9a9bfb6443 Problem: test_udp does not release resources properly
Solution:
- call zmq_msg_close() if there is an error
- call free() to release resources if there is an error (CWE-404)
2016-04-18 14:44:54 +01:00
Constantin Rack
c354e0b371 Merge pull request #1898 from hitstergtd/checkprotocol-fixes-1
Problem: check_protocol() logic duplicated twice and needs cleanup
2016-04-15 19:48:59 +02:00
hitstergtd
8cb27316fa Problem: check_protocol() logic duplicated twice
Problem:
Conditional logic in check_protocol() that checks if a protocol is supported,
is duplicated twice. Moreover, the first set of checks to ascertain if a
protocol is supported is done regardless of whether the particular protocol
will be built into the library or not.

Solution:
* Simplify/collapse all supported protocol checks into one in check_protocol()
* Enclose pgm/epgm/norm socket+protocol match checks with requisite macros
2016-04-15 15:39:46 +01:00
Joe Eli McIlvain
a670e81e73 Merge pull request #1897 from hitstergtd/udp-errno-fix
Problem: errno not set if UDP is NOT used with ZMQ_RADIO or ZMQ_DISH
2016-04-14 17:29:18 -07:00
hitstergtd
362377948e Problem: errno not set if UDP is NOT used with ZMQ_RADIO or ZMQ_DISH
Solution: set errno to ENOCOMPATPROTO in check_protocol()
2016-04-15 01:23:34 +01:00
Luca Boccassi
c2a1be5c15 Merge pull request #1896 from hitstergtd/macosx-testfixes-1
Problem: Running Linux-only tests results in 10% of tests failing on non-Linux systems (OSX, et. al.)
2016-04-15 00:33:31 +01:00
hitstergtd
307bd952bc Make all Linux-specific tests conditional
Move tests specific to Linux under a platform conditional thereby eliminating
unnecessary builds and fixing "make test" on Mac OS X and possibly other
non-Linux systems.

Tests specific to Linux:
    - abstract namespace support for AF_UNIX sockets
    - TIPC support (AF_TIPC)

Test success rate jumps from 90% to 100% on Mac OS X after this change.
2016-04-14 23:44:17 +01:00
Constantin Rack
8c88297e63 Merge pull request #1895 from hitstergtd/libzmq-docfixes-2
Fix typos similar to #1894
2016-04-14 22:16:27 +02:00
hitstergtd
a17389eeb0 Fix typos similar to #1894 2016-04-14 21:10:12 +01:00
Constantin Rack
6a7eb2fbc1 Merge pull request #1894 from hitstergtd/libzmq-docfixes-1
Fix typo
2016-04-14 22:05:24 +02:00
hitstergtd
6c3129286d Fix typo 2016-04-14 21:02:53 +01:00
Constantin Rack
3f77cf5a2f Merge pull request #1892 from bluca/solaris_fixes 2016-04-13 05:18:12 +02:00
Constantin Rack
f6f89a84d9 Merge pull request #1893 from paddor/master 2016-04-13 05:16:07 +02:00
Patrik Wenger
ba9a559fe5 Problem: PR #1891 wasn't complete
Solution: make the same change for the ZMQ_POLL_BASED_ON_SELECT case
2016-04-13 03:01:14 +02:00
Patrik Wenger
1afed1d32e Problem: tabs instead of spaces used for indentation
Solution: correct it to spaces
2016-04-13 03:01:14 +02:00
Luca Boccassi
b1232a0fd8 Problem: Solaris build fails with libsodium
Solution: disable pedantic and Werror, as libsodium headers use
pragma diagnostic which are not available in gcc 3.4.
2016-04-13 00:32:19 +01:00
Luca Boccassi
a01baba38b Problem: test_use_fd_tcp does not work on Solaris
Solution: pass a struct addrinfo hint to getaddrinfo with a hint
about the address family to avoid a failure.
2016-04-13 00:32:19 +01:00
Luca Boccassi
edda1657fa Problem: pragma diagnostic is new in GCC 4.2
Solution: check for GCC version before using pragma diagnostic
in src/tweetnacl.c to avoid an additional warning.
2016-04-13 00:31:58 +01:00
Luca Boccassi
abe44500de Problem: tweetnacl does not build on Solaris 10
Solution: add Wnosign-compare to CPPFLAGS. GCC version is too old on
Solaris 10 to use pragma diagnostic (min 4.2 needed, but 3.4 is
available)
2016-04-13 00:31:58 +01:00
Constantin Rack
c54589daef Merge pull request #1891 from paddor/master
Fix return value of zmq_poller_wait when used on empty poller
2016-04-12 20:35:31 +02:00
Patrik Wenger
621c965fae Problem: tricky return value from zmq::socket_poller_t::wait when poller is empty
Solution: return -1 (no event) instead of 0 (event)

For some reason, this just returns 0 if there are no sockets registered
on the poller. Usually this would mean there has been an event. So the
caller would have to check the return value AND the event, or write code
that takes the number of registered sockets into consideration.

By returning -1 and setting errno = ETIMEDOUT like in the usual timeout
cases, it's more consistent and convenient.

Test case included.
2016-04-12 20:11:50 +02:00
Patrik Wenger
b5dc794202 Problem: zmq_poller_wait doesn't check *event arg
Solution: use zmq_assert to ensure it's not a nullpointer
2016-04-12 20:10:54 +02:00
Luca Boccassi
d570f57b6e Problem: ipc://* random dir created with USE_FD
Solution: if options.use_fd do not create temporary random
directory for ipc://*, since the socket is already created and
passed to the library by the user.
2016-04-11 00:18:51 +01:00
Luca Boccassi
f18463f323 Problem: mkdtemp not available on all platforms
Solution: check for availability in autoconf and cmake, and if not
available fall back to random file name rather than random directory.
2016-04-11 00:18:51 +01:00
Luca Boccassi
8028817f6b Problem: 1E9 is double but assigned to an int var
Solution: use the less nice but correct int constant 1000000000
instead of the shorter 1E9 to avoid a compiler warning when assigning
to timespec.tv_nsec, which is a long int.
2016-04-11 00:00:32 +01:00
Constantin Rack
32f2b784b9 Merge pull request #1889 from spadalkar/master 2016-04-08 06:09:27 +02:00
Satyajit Padalkar
e3016b66bd Fix tests/test_many_sockets.cpp 2016-04-07 23:41:09 -04:00
Pieter Hintjens
23d08c2024 Merge pull request #1888 from bluca/ipv6_downgrade
Problem: zmq_bind IPv4 fallback still tries IPv6
2016-04-07 17:53:48 +02:00
Luca Boccassi
9cf6f85a25 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 13:29:10 +01:00
Luca Boccassi
99a8795dfe 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 13:29:10 +01:00
Luca Boccassi
d169281a00 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 13:13:55 +01:00
Luca Boccassi
8251306012 Merge pull request #1885 from jimklimov/zmq_utils_header
Problem: including recent "zmq_utils.h" crashes gcc -pedantic jobs
2016-04-05 16:32:42 +01:00
Jim Klimov
d7d917139b Problem: including recent "zmq_utils.h" crashes gcc -pedantic jobs
Problem: Recent deprecation of the "zmq_utils.h" header file caused pedantic compilations (including czmq) to fail because non-portable #warning is used.
Solution: Limit the deprecation warnings to compilers known or assumed to support the "#pragma message" (GCC, MSVC, CLANG) and wrap with GCC directives to not treat these warnings as errors on paranoid builds.
2016-04-05 17:03:17 +02:00
Constantin Rack
fb4c226365 Merge pull request #1884 from hintjens/master 2016-04-04 13:18:43 +02:00
Pieter Hintjens
9eb74d4df4 Problem: ZMQ_SERVER man page is wrong
It says that ZMQ_SERVER never blocks; whereas it does block on
sending to a client whose pipe is full.

Solution: fix it.
2016-04-04 13:13:27 +02:00
Constantin Rack
aa13a49bc8 Merge pull request #1883 from yuvallanger/master
Fix NetBSD thread scheduling problem.
2016-04-03 10:50:11 +02:00
Yuval Langer
37a4a4075e Fix NetBSD thread scheduling problem.
Defining thread priority for SCHED_OTHER is implementation defined.
Some platforms like NetBSD cannot reassign it as they are dynamic.

<http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_getschedparam.html>

Credit goes to <kamil@netbsd.org> and <riastradh@netbsd.org> for finding this
solution.
2016-04-03 02:34:04 +03:00
Constantin Rack
7a563ebb2c Merge pull request #1882 from FredTreg/master
Fixed ZMQ_REQ_CORRELATE (see pull request #1730)
2016-04-02 21:57:22 +02:00
Frederic Tregon
625b618776 Fixed ZMQ_REQ_CORRELATE (see pull request #1730)
Problem: Since pull request #1730 was merged, protocol for REQ socket is
checked at the session level and this check does not take into account
the possibility of a request_id being part of the message. Thus the option
ZMQ_REQ_CORRELATE would no longer work.
This is now fixed: the possiblity of a 4 bytes integer being present
before the delimiter frame is taken into account (whether or not this
breaks the REQ/REP RFC is another issue).
2016-04-02 18:36:29 +02:00
Constantin Rack
0feec7a72e Merge pull request #1881 from camachat/master
Fixes #1419 segfault when using a XSUB/XPUB proxy.
2016-04-02 18:30:09 +02:00
Eric Camachat
023b34a144 Fix issue #1419 segfault when using a XSUB/XPUB proxy.
Ref. https://github.com/zeromq/libzmq/issues/1419
2016-04-02 09:08:40 -07:00
Constantin Rack
a7922e5fdd Merge pull request #1880 from MatthewPowley/fix-windows-xp-compatability
Windows XP compatability fixes
2016-03-31 21:09:28 +02:00
Matt Powley
f2018ab317 Fixes for Windows XP compatibility
A Visual Studio build from master (commit id: dac5b45dfb224ff184a7aed39c5859ae5bac3803) using the v140_xp toolset yields a binary that is not XP compatible.

Two libraries contain exports that cannot be found:
 -  IPHLPAPI.DLL : if_nametoindex
 - KERNEL32.DLL : InitializeConditionVariable

The latter export is already dealt with in the file './src/condition_variable.hpp'; however this requires setting the _WIN32_WINNT pre-processor definition.
I am not experienced enough to figure a work around for the 'if_nametoindex' method, so I have created a new pre-processor definition 'ZMQ_HAVE_WINDOWS_TARGET_XP' and removed the calling of the function with the limitation that these builds cannot handle a IPv6 address with an adapter name.

To make it easier for people targeting XP with an MSVC build I have modified the MSBuild property file to add/modify the pre-processor definitions if they are building using a XP targeting tool set; such as v140_xp.
2016-03-31 15:45:00 +01:00
Constantin Rack
dac5b45dfb Merge pull request #1879 from MatthewPowley/improve-msvc-builds
Improve MSVC builds
2016-03-31 16:11:24 +02:00
Matt Powley
260860dea1 Add .gitignore for Visual Studio builds in the 'builds/msvc' folder
* Added a new .gitignore file for excluding Visual Studio build output any popular plug-in generated content. (This was copied from the GitHub project https://github.com/github/gitignore).
* Removed the basic ignore settings from the root folder in favour of more precision within the subfolder's .gitignore file
* Added the new VC compiler's experimental Intellisense database file
2016-03-31 14:51:36 +01:00
Matt Powley
0e405a5a77 Use vs2015 MSBuild property sheets in older projects
All the older (vs2010 -> vs2013) projects had copies of the Visual Studio 2015 MSBuild applied to them when running the 'configure.bat' batch file. Any modifications to a property sheet was not applied to the other Visual Studio versions' projects unless the batch file was re-executed.

* Modified the older projects to reference the Visual Studio 2015 property sheets so changes are immediately applied
* Removed the batch file copy steps (which left the repository very dirty after execution)
2016-03-31 14:51:23 +01:00
Luca Boccassi
cddfda2aed Merge pull request #1875 from hintjens/master
Tweaks to building libzmq
2016-03-30 13:44:00 +01:00
Pieter Hintjens
e70e39be49 Problem: ctx.cpp still uses old HAVE_LIBSODIUM
I changed this to ZMQ_USE_SODIUM to be consistent with other
configuration options (especially ZMQ_USE_TWEETNACL).

Solution: fix it.
2016-03-30 14:39:34 +02:00
Luca Boccassi
d6354c64ea Merge pull request #1874 from hintjens/master
Tweaks to building libzmq
2016-03-30 13:34:40 +01:00
Pieter Hintjens
396237f871 Problem: MSVC builds instructions aren't entirely clear
Solution: update them.
2016-03-30 14:19:20 +02:00
Pieter Hintjens
6a78b3ec19 Problem: HAVE_LIBSODIUM macro is inconsistent
Solution: use ZMQ_USE_LIBSODIUM to match ZMQ_USE_TWEETNACL
2016-03-30 14:19:20 +02:00
Luca Boccassi
6630a7ceaf Merge pull request #1873 from edigaryev/fix-urandom-chroot
Problem: build fails when CURVE security is disabled
2016-03-30 00:36:18 +01:00
Nikolay Edigaryev
8673fa7b03 Problem: build fails when CURVE security is disabled
Solution: use proper preprocessor macro
2016-03-30 04:23:59 +05:00
Joe Eli McIlvain
c71bb5fd1f Merge pull request #1872 from edigaryev/fix-urandom-chroot
Problem: CURVE mechanism is unusable with chroot()
2016-03-29 15:49:19 -07:00
Nikolay Edigaryev
884e00cb4a Problem: CURVE mechanism is unusable with chroot()
libsodium calls abort() when /dev/urandom can't be found
even if one creates ZeroMQ context before calling chroot()[1].

This happens because crypto gets initialized on handshake,
and at that moment the process is already chroot'ed.

Solution: initialize cryptographic libraries in ctx

randombytes_close() is already there in the destructor.

[1] https://download.libsodium.org/doc/usage/index.html
2016-03-30 03:45:12 +05:00
Constantin Rack
c39741dd33 Merge pull request #1871 from gnieboer/gnieboer-patch-1
Update zmq_utils.h
2016-03-29 23:07:38 +02:00
Geof Nieboer
8c7b19b1b7 Update zmq_utils.h
Previous change broke MSVC b/c MSVC doesn't support #warning
2016-03-30 00:00:49 +03:00
Luca Boccassi
05c8de7928 Merge pull request #1869 from jimklimov/fix-tcp_address
zeromq-4.1.4/src/tcp_address.cpp : fix relaxed use of sizeof() without parenthesis
2016-03-29 18:01:10 +01:00
Jim Klimov
e9c8557e92 zeromq-4.1.4/src/tcp_address.cpp : fix relaxed use of sizeof() without parenthesis 2016-03-29 18:43:26 +02:00
Pieter Hintjens
b8ae850d78 Merge pull request #1862 from FredTreg/master
Fixed issue #1695 (ZMQ_REQ_CORRELATE)
2016-03-24 11:45:56 +01:00
Frederic Tregon
e45dfe3bc7 Fixed issue #1695 (ZMQ_REQ_CORRELATE)
Problem: when using ZMQ_REQ_RELAXED + ZMQ_REQ_CORRELATE and two 'send' are
executed in a row and no server is available at the time of the sends,
then the internal request_id used to identify messages gets corrupted and
the two messages end up with the same request_id. The correlation no
longer works in that case and you may end up with the wrong message.

Solution: make a copy of the request_id instance member before sending it
down the pipe.
2016-03-20 20:38:18 +01:00
Pieter Hintjens
98ab7f4164 Merge pull request #1860 from bluca/valgrind
Add Valgrind make target and CI run
2016-03-19 23:03:38 +01:00
Luca Boccassi
dc27ad41d2 Problem: coveralls uses wrong path on Trusty
Solution: pass built-root when calling coveralls, to help it find the
right path to the source code.
2016-03-19 21:55:03 +00:00
Luca Boccassi
0eca822b8f Problem: Valgrind in Ubuntu Precise is too old
Solution: run Travis CI in newer Trusty (14.04 LTS) release.
2016-03-19 21:55:03 +00:00
Luca Boccassi
9d94eb11b3 Problem: test_fork causes valgrind false positive
Solution: do not run test_fork if --enable-valgrind is set. Note that
later versions of Valgrind (3.11) not yet available in all
distributions fix this problem, so we might revert in the future.
2016-03-19 21:54:55 +00:00
Luca Boccassi
00e0957640 Problem: false positive on valgrind 3.10
Solution: update builds/valgrind/valgrind.supp to ignore glibc's
__libc_freeres calls. This code runs after the program exits, and
tries to de-allocate memory allocated internally by glibc, so it has
nothing to do with libzmq code. This suppression is added by default
in newer versions of Valgrind, not yet available on older
distributions.
2016-03-19 21:54:52 +00:00
Luca Boccassi
ebc7316069 Problem: CI doesn't run Valgrind
Solution: run Valgrind only on the default Linux build to avoid
increasing the runtime.
2016-03-19 21:54:52 +00:00
Luca Boccassi
2b2f9046d4 Problem: no Makefile target for Valgrind
Solution: import ax_valgrind_check.m4 macro file to provide a
conveniente automake hook to run Valgrind on all tests.
Add --enable-valgrind to ./configure call and then run make
check-valgrind to run memcheck, helgrind, drd and sgcheck on all
tests. Run check-valgrind-memcheck to run only memcheck.
2016-03-19 21:54:29 +00:00
Luca Boccassi
d5aaaeb888 Merge pull request #1859 from soulik/master
Fix usage of IPv6 addresses
2016-03-19 14:15:34 +00:00
Mário Kašuba
75579fe7d9 Added comment to sockaddr_storage 2016-03-19 14:49:22 +01:00
Mário Kašuba
e38166cc1b Use sockaddr_storage instead of sockaddr to support IPv6 addresses 2016-03-19 14:37:10 +01:00
Constantin Rack
3777309b67 Merge pull request #1858 from zoobab/master 2016-03-18 14:18:59 +01:00
Benjamin Henrion
516efa46c0 add some doc for docker android compilation 2016-03-18 13:54:20 +01:00
Pieter Hintjens
340eb52165 Merge pull request #1847 from bluca/test_large_msg
Problem: test_large_msg requires 2GB of free RAM
2016-03-18 09:41:42 +01:00
Constantin Rack
9a3c9ff864 Merge pull request #1857 from Suudy/master
Use FILENAME_MAX to determine BUFSIZE when getting socket path.
2016-03-17 23:30:15 +01:00
Pete LaDow
075de03d1c Use FILENAME_MAX to determine BUFSIZE when getting socket path. 2016-03-17 15:12:57 -07:00
Luca Boccassi
15fd419f22 Problem: test_large_msg requires 2GB of free RAM
Solution: remove temporarily until proper message limits have been
implemented, then a more granular test case can be added without
such high requirements which are problematic in embedded environment,
build systems, VMs and CI systems
2016-03-16 21:47:58 +00:00
Joe Eli McIlvain
de56bc2729 Merge pull request #1853 from bluca/osx_ipc_wildcard
Problem: IPC wildcard test broken on OSX
2016-03-14 17:02:39 -07:00
Luca Boccassi
11917f850a Problem: IPC wildcard test broken on OSX
Solution: increase path buffer length to 73
2016-03-14 22:39:34 +00:00
Luca Boccassi
5ce6bc5f6d Merge pull request #1852 from Suudy/master
Update Unix Domain Socket creation/handling
2016-03-14 19:58:01 +00:00
Suudy
b6080a798c Updated handling of Unix Domain Sockets, make use of temporary directories, and cleanup afterward. Fix test_term_endpoint handling of optvallen 2016-03-14 12:17:49 -07:00
Constantin Rack
96c9e4aabd Merge pull request #1851 from bluca/gcov
Add code coverage to build system and CI
2016-03-13 23:36:11 +01:00
Luca Boccassi
1ac71c3c24 Problem: no coveralls.io badge in README.md
Solution: add it
2016-03-13 22:23:56 +00:00
Luca Boccassi
0cd7c0f807 Problem: no code coverage in CI
Solution: add new coverage build, and upload results to coveralls.io
2016-03-13 22:23:56 +00:00
Luca Boccassi
6df753c55a Problem: no code coverage integration
Solution: import ax_code_coverage.m4 from autoconf-archive and use it
in configure.ac and Makefile.am in order to provide a make
check-code-coverage target behind a --enable-code-coverage configure
flag, that can be used to generate a gcov/lcov code coverage report.
Depends on having gcov and lcov installed.
2016-03-13 19:28:23 +00:00
Luca Boccassi
22cb66d832 Merge pull request #1849 from opedroso/WINPDB
Problem: Windows PDB not created for RELEASE targets
2016-03-11 22:40:11 +00:00
Osiris
a6392b9e74 Problem: Windows PDB not created for RELEASE targets
Solution: Modified projects to create PDB file for RELEASE targets
	- also spread precompiled settings to all DevStudio solution versions

This change affects Windows builds only
2016-03-11 14:48:30 -06:00
Pieter Hintjens
dbb6b019e6 Merge pull request #1848 from benjamg/benjamg-patch-1
parameter naming consistency [aesthetic]
2016-03-11 11:49:54 +01:00
Ben Gray
7cc50d0005 parameter naming consistency [aesthetic] 2016-03-11 09:15:58 +00:00
Pieter Hintjens
24d12dc30a Merge pull request #1827 from bluca/make_dist_missing_files
Problem: make dist does not tar up macros.hpp
2016-03-09 10:40:37 +01:00
Pieter Hintjens
6aa581980a Merge pull request #1845 from claudioscordino/master
Better comments for understanding the classes array_t<> and array_ite…
2016-03-08 11:27:37 +01:00
Claudio Scordino
cb1b6bc9ae Better comments for understanding the classes array_t<> and array_item_t<> 2016-03-08 11:24:58 +01:00
Luca Boccassi
6024dd5dfa Problem: ci_build does not fully test build system
Solution: run make dist-check, which will run additional tests,
including making sure that the library is installable and the
distributable tarball is buildable, along with the usual make and
make check.
2016-03-06 19:39:44 +00:00
Luca Boccassi
ff1ebf6ff0 Problem: ci_build.sh make check is overly complex
Solution: simply run make VERBOSE=1 check instead of manually
checking for return value and cat'ing the log file. With VERBOSE, on
error the log file will be automatically printed.
2016-03-06 18:34:25 +00:00
Luca Boccassi
4366d7edf9 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-03-06 18:34:25 +00:00
Luca Boccassi
2d9e7b57f9 Problem: make dist does not tar up macros.hpp
Solution: add it to Makefile.am file list
2016-03-06 17:56:24 +00:00
Luca Boccassi
8a0a18a527 Merge pull request #1844 from opedroso/CMAKELIST_PRECOMP
Problem: CMakelist missing support for Windows Precompiled headers
2016-03-06 12:45:48 +00:00
Osiris
cd1dfb4092 Problem: CMakelist missing support for Windows Precompiled headers
Solution: Add precompiled flags to CMakeList.txt for faster compiles
+ bonus - removed compilation warning on Windows by adding
	 add_definitions (-D_WINSOCK_DEPRECATED_NO_WARNINGS)
2016-03-06 06:23:26 -06:00
Pieter Hintjens
2cd4c38b80 Merge pull request #1843 from opedroso/WINDOWS_MAKE_TEST
Problem: Tests do no build in Windows environment
2016-03-05 22:12:26 +02:00
Osiris
1c9cec227d Problem: Tests do no build in Windows environment
Solution: Modified CMakelist.txt to build correctly for Windows
- corrected CMake required version to make sure it builds in
  Ubuntu 14.04 LTS with no warnings.
2016-03-05 14:01:21 -06:00
Osiris
a911fa41b8 Problem: Tests do no build in Windows environment
Solution: Modified CMakelist.txt to build correctly for Windows
2016-03-05 11:23:23 -06:00
Pieter Hintjens
0916c17b3a Merge pull request #1842 from opedroso/PRECOMPILED
Problem: Windows Build not using precompiled headers for all targets
2016-03-05 12:59:51 +02:00
Constantin Rack
72898a0ecc Merge pull request #1841 from opedroso/MAKE_CLEAN
Problem: Added "make clean" to Windows build scripts
2016-03-05 11:51:06 +01:00
Osiris
224c0670ee Problem: Windows Build not using precompiled headers for all targets
Solution: Enabled precompiled header settings in all targets
Before build time: ~6min 49 secs
Stop  Time: Fri 03/04/2016  8:29:50.13
Start Time: Fri 03/04/2016  8:23:00.28

After build time: ~4min 19 secs
Stop  Time: Fri 03/04/2016 12:12:10.24
Start Time: Fri 03/04/2016 12:07:51.78
2016-03-05 04:47:08 -06:00
Osiris
09d003aac0 Problem: Added "make clean" to Windows build scripts
Solution: Added ability to do equivalent of a "make clean" by executing:

O:\git\libzmq\builds\msvc\build>buildall.bat clean
Start Time: Fri 03/04/2016 14:33:56.50
Cleaning without libsodium
Cleaning ..\vs2013\libzmq.sln... ()
Platform=x86
Configuration=DynDebug
Configuration=DynRelease
Configuration=LtcgDebug
Configuration=LtcgRelease
Configuration=StaticDebug
Configuration=StaticRelease
Platform=x64
Configuration=DynDebug
Configuration=DynRelease
Configuration=LtcgDebug
Configuration=LtcgRelease
Configuration=StaticDebug
Configuration=StaticRelease
Cleaning complete: ..\vs2013\libzmq.sln

Stop  Time: Fri 03/04/2016 14:34:01.84
Start Time: Fri 03/04/2016 14:33:56.50

A clean takes ~5 secs to complete.
2016-03-05 04:37:01 -06:00
Constantin Rack
d315eea707 Merge pull request #1839 from opedroso/master
Problem: Visual Studio Toolset was incorrectly set in VCXPROJ files
2016-03-04 21:18:30 +01:00
Luca Boccassi
ee31ea1348 Merge pull request #1838 from obache/neatsrc/fix-c-comment-style
Problem: Fix C++ style comment usage in C source
2016-03-04 09:41:29 +00:00
Luca Boccassi
693d6384b6 Merge pull request #1837 from obache/neatsrc/fix-test-portability
Problem: Fix unportable `==` operator for `test`
2016-03-04 09:41:15 +00:00
Luca Boccassi
3c4377b11d Merge pull request #1836 from obache/neatsrc/heimdal
Problem: Fix build with Heimdal krb5
2016-03-04 09:40:44 +00:00
OBATA Akio
8c7c8ece2d Problem: Fix C++ style comment usage in C source 2016-03-04 17:26:02 +09:00
OBATA Akio
55dad06cce Problem: Fix unportable == operator for test 2016-03-04 17:17:04 +09:00
OBATA Akio
09e868b743 Problem: Fix build with Heimdal krb5
Solution:
* Check gssapi/gssapi_generic.h header file, it is not in Heimdal.
* Check libgssapi too, libgssapi_krb5 is not separated in Heimdal.
2016-03-04 16:38:57 +09:00
Pieter Hintjens
36abdf7bd5 Merge pull request #1834 from garlick/config_nacl
minor automake fixes plus tweetnacl logic change
2016-03-02 23:16:25 +01:00
Jim Garlick
54389fefb5 Problem: AS_HELP_STRING improperly quoted
Brackets around defaults in configure --help strings for
--with-libsodium and --disable-curve were not displayed.

Solution:  Add m4 quotes.
2016-03-02 12:11:08 -08:00
Jim Garlick
9d75a9c27d Problem: AM_CONDITIONAL is used incorrectly
Move AM_CONDITIONAL for --disable-curve outside of shell
conditional (per sec 20.1 of automake manual) and fix its
second argument to be a test rather than a literal zero.
2016-03-02 11:28:42 -08:00
Luca Boccassi
ec6209737e Merge pull request #1832 from hintjens/master
Problem: can't be sure crypto_box always returns 0
2016-03-01 15:53:26 +00:00
Pieter Hintjens
5b7bf7509f 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 15:01:23 +01:00
Joe Eli McIlvain
708c2060ee Merge pull request #1830 from stevenc99/master
include sys/ucred.h for struct ucred
2016-02-28 13:50:58 -08:00
Steven Chamberlain
dd8ccd5e0f include sys/ucred.h for struct ucred
Platforms that have struct ucred, typically declare it in sys/ucred.h
2016-02-28 20:42:54 +00:00
Pieter Hintjens
d7691756e2 Merge pull request #1829 from dflupu/master
update Makefile.mingw32
2016-02-28 08:25:59 +01:00
Daniel Lupu
3190de8045 update Makefile.mingw32 2016-02-28 06:26:35 +02:00
Pieter Hintjens
8b32073c7b Merge pull request #1826 from bluca/make_dist
Problem: make dist is borken
2016-02-22 13:36:21 +01:00
Luca Boccassi
b3b9cfd92e Problem: packaging/redhat/zeromq.spec not ignored
Solution: add it to .gitignore
2016-02-22 11:59:51 +00:00
Luca Boccassi
f3686e34ff Problem: make dist broken due to builds/msvc
Solution: change builds/msvc/Makefile.am to reference vcxproj files
instead of props files.
2016-02-22 11:58:36 +00:00
Luca Boccassi
391397571b Problem: make dist broken due to builds/android
Solution: change builds/Makefile.am to reference builds/android
instead of builds/qt-android.
2016-02-22 11:58:00 +00:00
Luca Boccassi
8d811474d4 Problem: make dist broken due to builds/cmake
Solution: remove references to builds/cmake/Makefile* since they no
longer exist.
2016-02-22 11:57:09 +00:00
Constantin Rack
232094a09d Merge pull request #1825 from bluca/whitespace_and_werror 2016-02-22 07:27:36 +01:00
Luca Boccassi
80e529a16a Problem: all tests fail with assert in in_event
Solution: socket_base_t::in_event cannot do anything useful with
return status of process_commands. Asserting is the wrong solution,
as it is entirely valid to be interrupted or for the context to be
terminated, so discard the value.
2016-02-22 00:05:52 +00:00
Luca Boccassi
ae8efc21e8 Problem: nullptr is a reserved keyword in C++0x
Solution: use NULL instead to avoid build failure with older
compilers.
2016-02-21 23:54:18 +00:00
Luca Boccassi
7187169619 Problem: socket_poller_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:50:34 +00:00
Luca Boccassi
c84a52b11e Problem: udp_engine_t fd cannot be init to NULL
Solution: initialize to -1, since fd is a file descriptor (int).
2016-02-21 23:47:44 +00:00
Luca Boccassi
1046f35930 Problem: udp_engine_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:46:51 +00:00
Luca Boccassi
24b84081be Problem: socks_connecter_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:45:02 +00:00
Luca Boccassi
a6e49860f5 Problem: tcp_connecter_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:43:09 +00:00
Luca Boccassi
645c2be487 Problem: stream_engine_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:42:12 +00:00
Luca Boccassi
c21dd8d6a2 Problem: socket_base_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:41:02 +00:00
Luca Boccassi
acbf021a7c Problem: reaper_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:39:09 +00:00
Luca Boccassi
779bed6315 Problem: encoder_base_t initialization reorder
Solution: initialize class variable in the same order as they are
defined.
2016-02-21 23:37:10 +00:00
Luca Boccassi
de46fc6ac9 Problem: can't do anything with load.sub ret val
Solution: don't store it in zmq::poller_base_t::adjust_load, as the
build with Werror=unused=variable will fail otherwise.
2016-02-21 23:28:54 +00:00
Luca Boccassi
14054d28ed Problem: can't statically initialized pthread_t
Solution: remove statc initialization to NULL of thread.hpp pthread_t
descriptor. There is no portable way to statically initialize a
pthread_t variable.
2016-02-21 23:26:01 +00:00
Luca Boccassi
cf309a4e8c Problem: maxfd definition depends on ifdef
Solution: initialise it inside an ifdef too
2016-02-21 23:17:28 +00:00
Luca Boccassi
d4c0716473 Problem: indentation should be 4 spaces, no tabs
Solution: fix it
2016-02-21 23:16:44 +00:00
Constantin Rack
406b5738b6 Merge pull request #1823 from opedroso/COVERITY
Problem: Several problems found by Coverity Static Analyzer
2016-02-21 22:56:46 +01:00
Osiris
b3d5fa63a0 Problem: Several problems found by Coverity Static Analyzer
Solution: The Coverity Static Code Analyzer was used on libzmq code and found
many issues with uninitialized member variables, some redefinition of variables
hidding previous instances of same variable name and a couple of functions
where return values were not checked, even though all other occurrences were
checked (e.g. init_size() return).
2016-02-21 15:49:47 -06:00
Osiris
4fca95a557 Problem: Visual Studio Toolset was incorrectly set in VCXPROJ files
Solution: Corrected Toolset setting where needed and inprove compilation speed
by adding defintion of WIN32_LEAN_AND_MEAN prior to any Windows specific
include files, which skips non-essential definitions during compilation.
2016-02-21 14:46:53 -06:00
Luca Boccassi
1ffd87453b Merge pull request #1822 from opedroso/VS_TOOLSET
Problem: Visual Studio Toolset was incorrectly set in VCXPROJ files
2016-02-21 20:42:18 +00:00
Osiris
b4784d95bb roblem: Visual Studio Toolset was incorrectly set in VCXPROJ files
Solution: Corrected Toolset setting where needed and inprove compilation speed
by adding defintion of WIN32_LEAN_AND_MEAN prior to any Windows specific
include files, which skips non-essential definitions during compilation.
2016-02-21 14:23:18 -06:00
Pieter Hintjens
c5d8353429 Merge pull request #1819 from bluca/C++11
Bump C/C++ standard version support to C11/C++11
2016-02-21 11:17:26 +01:00
Constantin Rack
15945dc59b Merge pull request #1820 from obache/neatsrc/fix-netbsd-build 2016-02-20 10:04:24 +01:00
OBATA Akio
8eaa43d9d3 Problem: pgm/in.h is required on NetBSD too for struct group_req 2016-02-20 17:38:43 +09:00
Luca Boccassi
0782b58d9c Problem: tweetnacl warnings override not needed
Solution: remove it
2016-02-19 21:52:01 +00:00
Luca Boccassi
7dfbab3f97 Problem: it's 2016 and we are building with C++98
Solution: bump to C++11 and C11 in autoconf
2016-02-19 21:49:38 +00:00
Luca Boccassi
80650ecfe2 Problem: need to check for C++ standard in cmake
Solution: use CheckCXXCompilerFlag to check for support for
-std=gnu++11
2016-02-19 21:49:38 +00:00
Luca Boccassi
b9f1e3ed61 Problem: writing autoconf macros is boring
Solution: import macros to check for compiler options from
autoconf-archive into the m4 subdir.
2016-02-19 21:41:24 +00:00
Luca Boccassi
266500a9ff Merge pull request #1818 from opedroso/PRECOMPILED
Precompiled
2016-02-19 13:45:03 +00:00
Luca Boccassi
afdf27765e Merge pull request #1817 from hintjens/master
Problem: tweetnacl gives many warnings on MSVC
2016-02-19 10:48:54 +00:00
Pieter Hintjens
8ae3671e88 Problem: tweetnacl gives many warnings on MSVC
Solution: disable the warnings on this file only

We use pragmas wrapped in compiler conditionals. This will need
extending to non-gcc/msvc compilers. We could also fix the warnings
in the code, though I suspect it's not really possible.
2016-02-19 10:52:31 +01:00
Osiris
79538ed651 Problem: Windows build not using precompiled header
Solution: Phase II - made compile using precompiled header
2016-02-18 11:35:35 -06:00
Osiris
4a5af9d58b Problem: Precompiled headers not being used
Solution: Phase I - make precompiled.hpp be first file included in every source file
2016-02-18 10:56:52 -06:00
Luca Boccassi
325eb693a9 Merge pull request #1815 from hintjens/master
Problem: VC++ gives warnings on inet_addr
2016-02-18 10:51:23 +00:00
Pieter Hintjens
27fe489843 Problem: VC++ gives warnings on inet_addr
Solution: in project.gyp, define _WINSOCK_DEPRECATED_NO_WARNINGS
2016-02-18 11:46:43 +01:00
Pieter Hintjens
1c43aaa39a Merge pull request #1814 from minrk/deprecate-zmq_utils.h
Deprecate zmq_utils.h
2016-02-18 10:38:31 +01:00
Min RK
d5b66295d4 Deprecate zmq_utils.h
instead of removing it, which breaks downstream builds.
2016-02-18 10:28:07 +01:00
Luca Boccassi
b20259809d Merge pull request #1811 from somdoron/master
problem: dynamic cast is causing issue when compiling for nodejs
2016-02-17 17:41:26 +00:00
somdoron
352ae1468f remove using of dynamic cast 2016-02-17 19:33:17 +02:00
Luca Boccassi
b168e1044b Merge pull request #1810 from opedroso/IMPROVE_WINDOWS_BUILD
Problem:  Windows build script requires edit for DevStudio version
2016-02-17 15:49:15 +00:00
Osiris
80024eca8c Problem: Windows build script requires edit for DevStudio version
Solution: Use CMD.EXE environment variable to extract DevStudio version
number and build using it. This even supports machines with multiple
DevStudio versions installed, as long as the build for each version is
done on a separate window with the correct environment.
If multiple version builds are desired from a single CMD.EXE, edit the
buildall.bat file to uncomment the build statements for each specific
version desired.
2016-02-17 09:42:53 -06:00
Constantin Rack
7200f473ad Merge pull request #1809 from hintjens/master
Number of fixes for gyp builds
2016-02-17 12:41:59 +01:00
Pieter Hintjens
94c7087e36 Problem: piece of garbage ended up in configure.ac
Solution: remove it
2016-02-17 12:40:44 +01:00
Pieter Hintjens
7129187f87 Problem: getting various warnings in tweetnacl
libzmq used to switch off pedantic checks when using tweetnacl. As
this is now the default, that means pedantic checks are always off.
This is not good.

Solution: in tweetnacl.c alone, use a GCC pragma to disable sign
comparison warnings. We could also clean the code up yet this is
simpler. In other code, we still want those warnings, hence I've
used a pragma rather than global compile option.

Second, use -Wno-long-long all the time, as this warning does not
work with a pragma.

I removed code that set -wno-long-long, for MinGW and Solaris.

Related problem 2: --with-relaxed is badly named

This option switches off pedantic checks, so should be called
--disable-pedantic. 'with' is for optional packages.
2016-02-17 12:06:45 +01:00
Pieter Hintjens
3443da216f Problem: node-gyp defaults to -fno-rtti, which breaks libzmq
Solution: override in project.gyp, for Linux and OS/X.
2016-02-17 12:06:45 +01:00
Pieter Hintjens
c78e4f33a3 Problem: if src/platform.hpp still exists, gyp uses this
Gyp needs its own platform.hpp; there is no way to delete this
file automatically.

Solution: copy gyp's platform.hpp into src, so that things build
properly no matter what the starting state. If you build with gyp
and then try to build using autotools' makefile, you'll get an
error from the platform.hpp.
2016-02-17 12:06:45 +01:00
Pieter Hintjens
9bebd4dce9 Problem: local build should do its own .gitignore
Solution: add .gitignore in builds/gyp
2016-02-17 12:06:45 +01:00
Pieter Hintjens
8559770cf3 Problem: in builds/gyp, socket limit is 4K on Windows
Solution: raise to 16K
2016-02-17 12:06:45 +01:00
Pieter Hintjens
4a481c857f Problem: socket limit is still 4K on Windows
Solution: fix in CMakeLists.txt (already fixed in builds/msvc)
2016-02-17 12:06:45 +01:00
Pieter Hintjens
df6876abde Merge pull request #1805 from bluca/uninitialised_sockopt
Problem: curve keys getsockopt uninitialised read
2016-02-16 14:05:07 +01:00
Luca Boccassi
f86795350d 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.
2016-02-16 12:00:55 +00:00
Pieter Hintjens
93f99d09f4 Merge pull request #1804 from bluca/test_fixes
Various test fixes
2016-02-13 19:37:08 +01:00
Luca Boccassi
facb512105 Problem: SETTLE_TIME is too short on slow systems
Solution: increase SETTLE_TIME from 50ms to 300ms to avoid failing on
slower environments like through Valgrind on slow VMs.
2016-02-13 18:17:36 +00:00
Luca Boccassi
217f6c438e Problem: tests README does not document msleep
Solution: suggest to use the common approach of msleep (SETTLE_TIME)
after a connect if necessary, rather than reimplementing a different
way.
2016-02-13 18:04:25 +00:00
Luca Boccassi
706c3b7c4b Problem: test_shutdown_stress_tipc broken on OSX/Cmake
Solution: include pthread.h in testutil.hpp, removed from
test_shutdown_stress_tipc in an earlier commit
2016-02-13 18:01:03 +00:00
Luca Boccassi
63a0924484 Problem: test_sockopt_hwm not renamed in gitignore
Solution: rename from test_socketopt_hwm to test_sockopt_hwm in
.gitignore too
2016-02-13 18:01:03 +00:00
Luca Boccassi
cb41201880 Problem: various tests fail in slow environments
Solution: add msleep (SETTLE_TIME) to test_immediate, test_spec_rep
and test_spec_router after the sockets are created and connected to
avoid failing when running in slower environment like through
Valgrind in underpowered VMs.
2016-02-13 18:01:03 +00:00
Luca Boccassi
4a84f8a02e Problem: tests use various sleep patterns to wait
Solution: use msleep (SETTLE_TIME) everywhere when waiting for the
connections/sockets to be settled instead of a variety of patterns
and functions to make tests more coherent.
2016-02-13 18:01:03 +00:00
Luca Boccassi
955b51dfd2 Problem: test_msg_ffn uses unitialised memory
Solution: memset temporary buffer before use to reduce Valgrind noise
2016-02-13 16:28:48 +00:00
Luca Boccassi
240190131c Problem: test_srcfd uses unitialised memory
Solution: memset temporary buffer before use to reduce Valgrind noise
2016-02-13 15:39:30 +00:00
Luca Boccassi
302c7bee50 Problem: test_fork does not clean up at exit
Solution: close socket and destroy context to reduce Valgrind noise
2016-02-13 11:35:51 +00:00
Luca Boccassi
f87888f80c Problem: test_router_mandatory_hwm uses unitialised memory
Solution: memset temporary buffer before use to reduce Valgrind noise
2016-02-13 11:35:51 +00:00
Luca Boccassi
cffc653535 Problem: test_pre_allocated_fd_tcp leaks addrinfo
Solution: free addrinfo to reduce Valgrind noise
2016-02-13 11:35:51 +00:00
Luca Boccassi
05ad915265 Problem: test_term_endpoint does not clean up at exit
Solution: close socket and destroy context to reduce Valgrind noise
2016-02-13 11:35:51 +00:00
Luca Boccassi
f8f8043222 Problem: test_msg_ffn uses unitialised memory
Solution: pass correct size to memcmp to avoid reading uninitialised
areas of the buffer.
2016-02-13 11:35:51 +00:00
Luca Boccassi
e177512c82 Problem: test_system does not clean up at exit
Solution: close socket and destroy context to reduce Valgrind noise
2016-02-13 11:35:51 +00:00
Constantin Rack
18dcc32ac3 Merge pull request #1803 from bluca/ci_default_only_on_secondary
Problem: too many CI builds
2016-02-13 01:18:47 +01:00
Luca Boccassi
9a6e10406d Problem: too many CI builds
Solution: remove libsodium and no curve builds from cmake and android
2016-02-12 23:22:51 +00:00
Luca Boccassi
930a24425c Merge pull request #1802 from hintjens/master
Problem: tests don't build on Windows
2016-02-12 15:28:09 +00:00
Pieter Hintjens
9c0d176d68 Problem: tests don't build on Windows
There were numerous small issues with test cases:

- some lacked the right source file header
- some were not portable at all
- some were using internal libzmq APIs (headers)

Solution: fixed and cleaned up.
2016-02-12 16:12:44 +01:00
Luca Boccassi
0dbb918244 Merge pull request #1800 from hintjens/master
Cleaning up Windows build for gyp
2016-02-12 15:00:24 +00:00
Pieter Hintjens
bbcc79d188 Problem: tests don't build on Windows
There were numerous small issues with test cases:

- some lacked the right source file header
- some were not portable at all
- some were using internal libzmq APIs (headers)

Solution: fixed and cleaned up.
2016-02-12 15:48:37 +01:00
Pieter Hintjens
06acd76a21 Problem: people don't know how to write test cases
Solution: document the minimum rules in README.md
2016-02-12 15:48:37 +01:00
Pieter Hintjens
d148c3ea5d Problem: no clue how to run gyp on Windows
Solution: offer a build.bat to help the user.
2016-02-12 15:48:37 +01:00
Luca Boccassi
8bee4e2547 Merge pull request #1799 from hintjens/master
Making gyp builds work
2016-02-12 10:40:43 +00:00
Pieter Hintjens
8230c0d396 Problem: gyp does not build tests
Solution: it's a lot of work to define the tests in project.gyp
so I did this using gsl to generate the JSON, from a small XML
list of the test cases.

To keep this, and the hundreds of .mk files, away from the root
directory, I've moved the gyp files into builds/gyp, where you
would run them.

It all seems to work now. Next up, OS/X and Windows :)
2016-02-12 11:31:38 +01:00
Pieter Hintjens
44c3859073 Problem: minor glitch, test_socketopt_hwm <> test_sockopt_hwm
Doesn't affect building, just potentially confusing.

Solution: fix it.
2016-02-12 11:24:35 +01:00
Pieter Hintjens
25ce52e449 Problem: tcp_address.cpp has messy include usage
It's all over the place.

Solution: remove duplicates and try to move main includes to start
of source. Also, include net/if.h always, so that the code will
compile if ZMQ_HAVE_IFADDRS isn't defined.
2016-02-12 11:01:52 +01:00
Pieter Hintjens
a682f94a32 Problem: tcp_address.cpp won't compile on OS/X w/o ZMQ_HAVE_IFADDRS
This is rather insane since the code knows well enough what systems
support if_nametoindex. I blame this on over-use of autotools early
in libzmq's days.

Anyhow, this breaks gyp builds on OS/X.

Solution: add ZMQ_HAVE_IFADDRS to build/gyp/platform.hpp for OS/X.
2016-02-12 10:49:19 +01:00
Constantin Rack
22e830bece Merge pull request #1798 from hintjens/master
Getting gyp build working
2016-02-12 10:07:14 +01:00
Pieter Hintjens
6bef3fe9ad Problem: can't build libzmq.a using gyp
Solution: add necessary macros into builds/gyp/platform.hpp

Work for Linux now, other platforms to test.
2016-02-12 09:58:44 +01:00
Joe Eli McIlvain
781ddd6758 Merge pull request #1797 from bluca/ci_matrix
Problem: CI use of sodium or nacl is confusing
2016-02-11 15:31:21 -08:00
Luca Boccassi
9393f06381 Problem: CI use of sodium or nacl is confusing
Solution: establish a matrix of CI options. On one axis we have the
build system (autotools, cmake, android) and on the other axis we
have the encryption options (tweetnacl, libsodium or none).
2016-02-11 22:39:36 +00:00
Pieter Hintjens
05f382d290 Merge pull request #1796 from bluca/cmake_build
Problem: typo in CMake platform.hpp breaks build
2016-02-11 23:06:07 +01:00
Luca Boccassi
01eb580739 Problem: typo in CMake platform.hpp breaks build
Solution: use ZMQ_USE_TWEETNACL as a define as expected instead of
HAVE_TWEETNACL
2016-02-11 21:41:21 +00:00
Pieter Hintjens
fde81d7e07 Problem: can't build using gyp
I'm adding gyp support so that we can easily pull in libzmq
and other C/C++ projects into gyp packages, especially via
node-gyp.

Solution: add gyp definition

This works only for Windows, OS/X, and Linux. We set a single
macro in project.gyp according to the system, and the rest is
done in builds/gyp/platform.hpp. The values in that file are
not dynamic. Your mileage will vary.
2016-02-11 22:41:01 +01:00
Pieter Hintjens
db77fc9ced Merge pull request #1795 from bluca/ci_tweetnacl
Problem: CI is borken
2016-02-11 22:18:52 +01:00
Luca Boccassi
0afac59018 Problem: empty files are against ISO C++
Solution: if not building with tweetnacl, do not include its sources
in Makefile.am. CMake already includes them optionally.
2016-02-11 21:05:10 +00:00
Luca Boccassi
f1c4416e20 Problem: typo in CMakeLists "matches" keyword
Solution: must be upper case
2016-02-11 20:41:18 +00:00
Luca Boccassi
1e6915039f Problem: typo in CMakeLists.txt, can't use sodium
Solution: check for WITH_LIBSODIUM configure option instead of
WITH_SODIUM
2016-02-11 20:40:34 +00:00
Luca Boccassi
f777ad8b91 Problem: typo in configure.ac, can't use libsodium
Solution: set the curve_library variable to the expected value if
libsodium is selected
2016-02-11 20:30:07 +00:00
Luca Boccassi
0bdc5d0457 Problem: CMake CI build still clones libsodium
Solution: avoid cloning libsodium, default build is tweetnacl
2016-02-11 20:27:06 +00:00
Luca Boccassi
4f5594c2ce Problem: Android CI build uses unstable libsodium
Solution: checkout stable branch before building
2016-02-11 20:25:21 +00:00
Luca Boccassi
3420e6e0dd Problem: CI still thinks libsodium is default
Solution: build by default with tweetnacl, and add sub-build project
to test libsodium
2016-02-11 20:16:17 +00:00
Luca Boccassi
1fb4840955 Merge pull request #1794 from hintjens/master
Problem: tweetnacl sources are a mess
2016-02-11 17:19:16 +00:00
Pieter Hintjens
f8ed793f76 Problem: tweetnacl sources are a mess
- they have no copyright / license statement
- they are in some randomish directory structure
- they are a mix of postable and non-portable files
- they do not conform to conditional compile environment

Overall, it makes it rather more work than needed, in build scripts.

Solution: clean up tweetnacl sauce.

- merged code into single tweetnacl.c and .h
- standard copyright header, DJB to AUTHORS
- moved into src/ along with all other source files
- all system and conditional compilation hidden in these files
- thus, they can be compiled and packaged in all cases
- ZMQ_USE_TWEETNACL is set when we're using built-in tweetnacl
- HAVE_LIBSODIUM is set when we're using external libsodium
2016-02-11 18:06:07 +01:00
Constantin Rack
a460e5abd2 Merge pull request #1793 from hintjens/master 2016-02-11 17:13:03 +01:00
Pieter Hintjens
e65367ea2d Problem: some configure options are confusing
It's especially annoying to see this:

  --enable-perf           Build performance measurement tools [default=yes].
  --disable-eventfd       disable eventfd [default=no]
  --enable-curve-keygen   Build curve key-generation tool [default=yes].

Solution: all options should explain the non-default case. Also
the language should be enable/disable, with/without, rather than
yes/no. E.g. '--without-docs'.
2016-02-11 16:52:41 +01:00
Pieter Hintjens
8e40e67d29 Merge pull request #1792 from bluca/fix_gitignore
Problem: old filenames in .gitignore
2016-02-11 16:36:30 +01:00
Luca Boccassi
700de65a37 Merge pull request #1791 from hintjens/master
Problem: autotools platform.hpp is not compatible with CMake
2016-02-11 15:30:37 +00:00
Luca Boccassi
2e3a0db5f9 Problem: old filenames in .gitignore
Solution: remove them
2016-02-11 15:29:14 +00:00
Pieter Hintjens
9f8ced3f65 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-02-11 16:14:12 +01:00
Constantin Rack
dd4b93ddd8 Merge pull request #1790 from hintjens/master
Problem: use of libsodium vs. tweetnacl is confused
2016-02-11 14:00:09 +01:00
Pieter Hintjens
ddbbe3b47c Problem: cmake fails with #error None of the ZMQ_USE_* macros defined
This happens if you first configure with autotools, and then run
cmake. The problem is that the compiler finds the old src/platform.hpp
before looking for the one generated by CMake. Further, there are a
set of macros that configure passes via the command line, yet CMake
passes via platform.hpp. (HAVE_xxx for pollers, at least.) This means
you can't do a CMake build using the autotools platform.hpp.

Solution: remove any src/platform.hpp when running cmake. This is a
workaround. I'll fix the inconsistent macros separately.
2016-02-11 13:38:02 +01:00
Pieter Hintjens
b49a60410a Problem: use of libsodium vs. tweetnacl is confused
It's unclear which we need and in the source code, conditional code
treats tweetnacl as a subclass of libsodium, which is inaccurate.

Solution: redesign the configure/cmake API for this:

* tweetnacl is present by default and cannot be enabled
* libsodium can be enabled using --with-libsodium, which replaces
  the built-in tweetnacl
* CURVE encryption can be disabled entirely using --enable-curve=no

The macros we define in platform.hpp are:

    ZMQ_HAVE_CURVE    1        //  When CURVE is enabled
    HAVE_LIBSODIUM    1        //  When we are using libsodium
    HAVE_TWEETNACL    1        //  When we're using tweetnacl (default)

As of this patch, the default build of libzmq always has CURVE
security, and always uses tweetnacl.
2016-02-11 13:32:01 +01:00
Min RK
42ab88e486 Merge pull request #1786 from hintjens/master
Cleaning up recent option names
2016-02-09 12:50:30 +01:00
Pieter Hintjens
62c66ae7f7 Problem: test_large_msg kills my system temporarily
And I'm on a reasonably sized laptop. I think allocating INT_MAX
memory is dangerous in a test case.

Solution: expose this as a context option. I've used ZMQ_MAX_MSGSZ
and documented it and implemented the API. However I don't know how
to get the parent context for a socket, so the code in zmq.cpp is
still unfinished.
2016-02-09 10:55:09 +01:00
Pieter Hintjens
7470c00d4d Problem: ZMQ_TCP_RECV_BUFFER/SEND_BUFFER are redundant
These options are confusing and redundant. Their names suggest
they apply to the tcp:// transport, yet they are used for all
stream protocols. The methods zmq::set_tcp_receive_buffer and
zmq::set_tcp_send_buffer don't use these values at all, they use
ZMQ_SNDBUF and ZMQ_RCVBUF.

Solution: merge these new options into ZMQ_SNDBUF and ZMQ_RCVBUF.

This means defaulting these two options to 8192, and removing the
new options. We now have ZMQ_SNDBUF and ZMQ_RCVBUF being used both
for TCP socket control, and for input/output buffering.

Note: the default for SNDBUF and RCVBUF are otherwise 4096.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
884c7f78e9 Problem: zmq_getsockopt wrongly referred to ZMQ_THREADSAFE
The proper name is ZMQ_THREAD_SAFE

Solution: fix in the documentation.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
7f6ed167fc Problem: ZMQ_XPUB_VERBOSE_UNSUBSCRIBE is clumsy
This option has a few issues. The name is long and clumsy. The
functonality is not smooth: one must set both this and
ZMQ_XPUB_VERBOSE at the same time, or things will break mysteriously.

Solution: rename to ZMQ_XPUB_VERBOSER and make an atomic option.

That is, implicitly does ZMQ_XPUB_VERBOSE.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
da8ce55a14 Problem: ZMQ_TCP_RETRANSMIT_TIMEOUT is a clumsy name
Solution: rename to ZMQ_MAXRT

This is the option name used on Windows, so easier to use and
remember.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
5eccd874d6 Merge pull request #1785 from bluca/one_more_rename
Problem: ZMQ_USEFD does not follow conventions
2016-02-09 10:40:39 +01:00
Luca Boccassi
edc4ee03e8 Problem: ZMQ_USEFD does not follow conventions
Solution: rename socket option (and variables and files) from usefd
to use_fd.
2016-02-09 09:36:14 +00:00
Constantin Rack
15846f2fe4 Merge pull request #1784 from bluca/rename_pre_allocated_fd
Problem: ZMQ_PRE_ALLOCATED_FD is too long
2016-02-09 00:10:47 +01:00
Luca Boccassi
c158178798 Problem: ZMQ_PRE_ALLOCATED_FD is too long
Solution: rename socket option (and variables and files) from
pre_allocated_fd to usefd.
2016-02-08 22:46:34 +00:00
Pieter Hintjens
66d9a5f5ae Merge pull request #1783 from bluca/travis_tweetnacl
CMake and tweetnacl CI
2016-02-08 14:46:02 +01:00
Luca Boccassi
c23cc65735 Problem: no CMake Travis CI build
Solution: add builds/cmake/ci_build.sh and call it from travis.yml
2016-02-08 13:30:25 +00:00
Luca Boccassi
918c1ec620 Problem: CMake uses command added in 2.8.12
Solution: bump CMake required version to 2.8.12 to avoid:

CMake Error at tests/CMakeLists.txt:110 (target_include_directories):
  Unknown CMake command "target_include_directories".
2016-02-08 13:13:55 +00:00
Luca Boccassi
84544ca6e2 Problem: no CI build with tweetnacl
Solution: add builds/tweetnacl/ci_build.sh and add it in travis.yml
2016-02-08 12:31:05 +00:00
Luca Boccassi
6681bcf08c Problem: tweetnacl/contrib/randombytes need C++0x
Solution: disable -pedantic when building with tweetnacl to avoid
warning about "long long" not existing in ISO C++ 98
2016-02-08 12:31:05 +00:00
Pieter Hintjens
c59670dbc2 Merge pull request #1782 from minrk/configure-with-tweetnacl
fallback on tweetnacl if libsodium is not found and not explicitly requested
2016-02-08 12:00:40 +01:00
Min RK
e86650794f fallback on tweetnacl if libsodium is not found and not explicitly requested 2016-02-08 11:58:30 +01:00
Min RK
2902fd60b9 add --with-tweetnacl to configure
allows building with tweetnacl without cmake
2016-02-08 11:40:50 +01:00
Luca Boccassi
135c4112c8 Merge pull request #1780 from hintjens/master
Fixes to Windows builds
2016-02-07 11:33:43 +00:00
Pieter Hintjens
58059939fc Problem: compile warnings on Windows in new radio/dish code
Solution: fix these.
2016-02-07 12:27:23 +01:00
Pieter Hintjens
e0f02bdfb8 Problem: libzmq uses different build.bat style than zproject
Solution: at least for vs2015, add vs2015/build.bat to work the
same was as zproject.
2016-02-07 10:36:17 +01:00
Pieter Hintjens
07cba2307d Merge pull request #1779 from obache/neatsrc/fix-a-typo-for-ZMTP-heartbeats
Fix a typo in "Add ZMTP heartbeats" changes
2016-02-07 10:31:33 +01:00
Pieter Hintjens
8a1dcca8c2 Merge pull request #1778 from obache/neatsrc/fix1768
Change to detect POSIX Thread priority support properly
2016-02-07 10:31:19 +01:00
Pieter Hintjens
4c6753346b Merge pull request #1777 from brian-peloton/master
Use memcpy instead of assuming option values are aligned
2016-02-07 10:31:06 +01:00
OBATA Akio
99495bbab8 Fix a typo in "Add ZMTP heartbeats" changes 2016-02-07 17:09:19 +09:00
OBATA Akio
7cd60fae59 Change to detect POSIX Thread priority support properly 2016-02-07 16:43:46 +09:00
Brian Silverman
273b54715e Use memcpy instead of assuming option values are aligned
Otherwise, it's undefined behavior. ubsan catches alignment issues in
the libzmq test suite without this.
2016-02-06 22:22:51 -05:00
Constantin Rack
ffe4a1c615 Merge pull request #1776 from hintjens/master
Refinement of #f4fe375
2016-02-06 14:26:03 +01:00
Pieter Hintjens
a1f51b695f Problem: unclear rules for passing null arguments
Solution: be more explicit in the code, and in the zmq_recv man
page (which is the most unobvious case). Assert if length is not
zero and buffer is nonetheless null.
2016-02-06 14:13:13 +01:00
Pieter Hintjens
27a8961c37 Problem: resolution of int optval_ was made more verbose
There's no value in this as the same pattern is repeated in several
places and it's fair to expect people to understand it.

Solution: revert to the old, one-liner style.
2016-02-06 14:12:43 +01:00
Pieter Hintjens
c8318912f5 Problem: test case is using internal API
It is poor style for test cases to use the internal API (i.e.
libzmq classes or header files), as this code serves the purpose
of teaching developers how to use the library (it doesn't do this
very well, it's an ambition).

Also, including headers in src/ creates problems when compiling.

Solution: remove use of src/macros.hpp.
2016-02-06 14:12:43 +01:00
Pieter Hintjens
0d7e7bfac0 Problem: MSVC project filters were out of date
Solution: update (with correct one from VS2015)
2016-02-06 14:12:43 +01:00
Pieter Hintjens
39563d70c5 Merge pull request #1775 from CommanderBubble/patch-2
updates for bumped _WIN32_WINNT version with mingw builds
2016-02-06 13:56:45 +01:00
Michael
7270d4de65 windows.hpp needs to be included before zmq.h
windows.hpp must be included first due to increases _WIN32_WINNT version
2016-02-06 23:31:56 +11:00
Pieter Hintjens
a9666d7f0c Merge pull request #1774 from brian-peloton/master
Don't call memcpy with 0 size and NULL pointer(s)
2016-02-06 13:19:31 +01:00
Michael
d06314df84 added windows includes as well as unix includes
added conditional includes for unix / windows
2016-02-06 23:19:10 +11:00
Michael
75bea4bc13 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-06 23:03:12 +11:00
Michael
05b5633b8d 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-06 23:01:26 +11:00
Michael
596fd2408a added ZMQ_HAVE_WINDOWS check to _WIN32_WINNT usage 2016-02-06 22:59:58 +11:00
Michael
b98b1495af added ZMQ_HAVE_WINDOWS check to _WIN32_WINNT usage 2016-02-06 22:59:13 +11:00
Michael
595181d301 added ZMQ_HAVE_WINDOWS check to _WIN32_WINNT usage 2016-02-06 22:58:38 +11:00
Michael
56efddd182 remove c++11 requirement and -Werror=sign-compare
used static_cast<signed int> around WSA_WAIT_FAILED as it is an unsigned implicitly defined as (0xFFFFFFFF ion winbase.h) and causes a comparison error.

removed use of c++11 style initialiser list for 'sockaddr addr { 0 }' and changed it to 'sockaddr addr = { 0 }'
2016-02-06 22:55:24 +11:00
Michael
988d33bcf8 added windows.hpp with include check
includes windows.hpp if on windows build for mingw build errors from including zmq.h before windows.h
2016-02-06 22:39:53 +11:00
Michael
f472893da1 changed order of includes 2016-02-06 22:37:45 +11:00
Michael
3cdc9218c2 remove include that is already in header 2016-02-06 22:36:37 +11:00
Michael
def0336e9a increase mingw's minimum _WIN32_WINNT version 2016-02-06 22:26:50 +11:00
Brian Silverman
f4fe375bd1 Don't call memcpy with 0 size and NULL pointer(s)
It's undefined behavior, and ubsan flags it.
2016-02-05 14:04:22 -05:00
Joe Eli McIlvain
c9c9a777d6 Merge pull request #1773 from bluca/libsodium_stable
Problem: CI builds libsodium from dev branch
2016-02-04 16:45:27 -08:00
Luca Boccassi
3641f705e1 Problem: CI builds libsodium from dev branch
Solution: checkout stable branch instead.
Several warnings are printed when building from the master branch,
and developers recommend using the stable branch instead.
2016-02-04 23:47:16 +00:00
Joe Eli McIlvain
b9e4fa82a2 Merge pull request #1772 from hintjens/master
Problem: commit a464eec7 really broke VS2015 builds
2016-02-04 15:40:39 -08:00
Pieter Hintjens
86aa7bb1bc Problem: commit a464eec7 really broke VS2015 builds
Took me over 8 hours to track down the cause of bizarre link
errors when building with libsodium. The VS project files are
not simple things.

Note to self and other maintainers: when someone is obviously
out of their depth, do not merge their changes to build scripts
without cynical appraisal.

Solution: undo the damage.
2016-02-05 00:25:59 +01:00
Joe Eli McIlvain
02120203b2 Merge pull request #1771 from bluca/valgrind_iterator
Problem: Valgrind reports read of freed memory
2016-02-04 14:36:59 -08:00
Luca Boccassi
a9aeb492dc Problem: Valgrind reports read of freed memory
Solution: when iterating over a map and conditionally deleting
elements, an erased iterator gets invalidated. Call erase using postfix
increment on iterator to avoid using an invalid element in the next
iteration.
2016-02-04 22:21:29 +00:00
Pieter Hintjens
c5bf0dc0a4 Merge pull request #1770 from bluca/systemd
Problem: no support for pre-allocated file descriptors [systemd | upstart socket-based activation]
2016-02-04 18:51:28 +01:00
Luca Boccassi
84ad4bf0ff Problem: cannot use new pre-allocated FD with TCP
Solution: parse the value set by the ZMQ_PRE_ALLOCATED_FD sockopt
when creating a new TCP socket and use it if valid.
Add new tests/test_pre_allocated_fd_tcp.cpp unit test.
2016-02-04 16:57:26 +00:00
Luca Boccassi
9b885b7c00 Problem: cannot use new pre-allocated FD with IPC
Solution: parse the value set by the ZMQ_PRE_ALLOCATED_FD sockopt
when creating a new IPC socket and use it if valid.
Add new tests/test_pre_allocated_fd_ipc.cpp unit test.
2016-02-04 16:57:26 +00:00
Luca Boccassi
4bcbb3055e Problem: cannot use pre-allocated FDs. Fixes #777
Solution: add new [set|get]sockopt ZMQ_PRE_ALLOCATED_FD to allow
users to let ZMQ use a pre-allocated file descriptor instead of
allocating a new one. Update [set|get]sockopt documentation and
test accordingly.

The main use case for this feature is a socket-activated systemd
service. For more information about this feature see:
http://0pointer.de/blog/projects/socket-activation.html
2016-02-04 16:57:26 +00:00
Constantin Rack
8b0fdd94d3 Merge pull request #1767 from hintjens/master
Problem: Android build is slow and noisy
2016-02-04 11:59:12 +01:00
Pieter Hintjens
a3d9b46a60 Problem: Android build is slow and noisy
Solution: use --without-docs (changed from --without-documentation)
and also --quiet.
2016-02-04 11:24:25 +01:00
Joe Eli McIlvain
08cfbdef7d Merge pull request #1766 from hintjens/master
Problem: MSVC build does not detect libsodium
2016-02-03 15:12:02 -08:00
Pieter Hintjens
31d181effb Problem: MSVC build does not detect libsodium
Caused by error in last commit which used HAVE_LIBSODIUM instead
of HAVE_SODIUM.

Solution: use HAVE_LIBSODIUM as we do in other configure scripts.

The project is called 'libsodium' and not 'sodium'.
2016-02-03 23:45:01 +01:00
Constantin Rack
8fad51c270 Merge pull request #1765 from hintjens/master
Windows command-line build is now configurable
2016-02-03 22:52:02 +01:00
Pieter Hintjens
6a9af8ed62 Problem: can't build without libsodium from command line (MSVC)
There is an option to enable/disable libsodium via the Visual Studio
UI. This is not practical for command-line usage (via msbuild).

Solution: add configure.bat that searches for libsodium in sibling
directory to libzmq; if it finds it, defines HAVE_LIBSODIUM 1.

This is consistent with zproject, which has the same problem and
is getting the same solution for all dependency resolution on
Windows.

Note that this approach also provides a way to support tweetnacl
via a configure option.

Also, removed duplicate props files and re-copy in configure.bat
as it was an insane nightmare to update these by hand. (and not
clear that they were identical. Now it's forced.)
2016-02-03 22:44:06 +01:00
Pieter Hintjens
984699c427 Problem: was ignoring directories with build files
Solution: fix .gitignore
2016-02-03 21:13:54 +01:00
Luca Boccassi
d7a7f48918 Problem: my name is not in the AUTHORS file
Solution: add myself to the list
2016-02-03 17:32:02 +00:00
Pieter Hintjens
3d9984efe2 Merge pull request #1764 from GreatFruitOmsk/master
Make VMCI work on Windows
2016-02-03 16:21:53 +01:00
Constantin Rack
ad286d9442 Merge pull request #1763 from CommanderBubble/patch-1
configure doesn't correctly determine mingw64
2016-02-03 15:05:09 +01:00
Michael
bfc42d47ec Merge pull request #4 from zeromq/master
update fork to master
2016-02-04 00:21:02 +11:00
Ilya Kulakov
538e5d4742 Make VMCI to work on Windows.
select was improved to support multiple service providers on Windows.
it should be slightly faster because of optimized iteration
over selected sockets.
2016-02-03 19:12:11 +06:00
Ilya Kulakov
d7e59d6188 Fix integer overflow error when calculating throughput. 2016-02-03 19:00:51 +06:00
Michael
f38062e6e3 fix configure errors for 64bit mingw
changes the search pattern for host_os from *mingw32* to *mingw* so that mingw64 can be used, and any mingw32 variable name change to mingw.
2016-02-03 23:54:22 +11:00
Michael
0463926db8 change references from mingw32 to mingw
conformity update for mingw32 variables to mingw
2016-02-03 23:51:52 +11:00
Michael
bdda5189f0 fix configure errors for 64bit mingw
changes the search pattern for host_os from *mingw32* to *mingw* so that mingw64 can be used
2016-02-03 23:38:33 +11:00
Constantin Rack
0329402d0a Merge pull request #1762 from hintjens/master
Fixed VS2015 build
2016-02-02 23:19:53 +01:00
Pieter Hintjens
d218e03884 Problem: project files have tool version in two places
Leading to extra work when copying between versions of VS.

Solution: remove second unnecessary definition.
2016-02-02 22:49:15 +01:00
Pieter Hintjens
4ce9c7c742 Problem: does not build on VS2015
Solution: add missing project files

(Also, updated FD_SETSIZE to 16K as a bonus.)
2016-02-02 22:31:18 +01:00
Constantin Rack
963dffb54a Merge pull request #1760 from hintjens/master
Problem: not building on VS2015
2016-02-02 22:30:18 +01:00
Pieter Hintjens
b92055fa56 Problem: not building on VS2015
Solution: fixed project files, and warning in timers.cpp
2016-02-02 22:05:56 +01:00
Constantin Rack
c6b11ae4a7 Merge pull request #1758 from zeromq/revert-1757-revert-1756-replace-zmq-term
Revert "Revert "Problem: deprecated use and reference of `zmq_term`""
2016-02-01 23:02:32 +01:00
Pieter Hintjens
44c6b0484e Revert "Revert "Problem: deprecated use and reference of zmq_term"" 2016-02-01 23:00:06 +01:00
Constantin Rack
c143a7d397 Merge pull request #1757 from zeromq/revert-1756-replace-zmq-term
Revert "Problem: deprecated use and reference of `zmq_term`"
2016-02-01 22:46:54 +01:00
Pieter Hintjens
1708bfefb7 Revert "Problem: deprecated use and reference of zmq_term" 2016-02-01 22:41:51 +01:00
Joe Eli McIlvain
d44a8ccddb Merge pull request #1756 from c-rack/replace-zmq-term
Problem: deprecated use and reference of `zmq_term`
2016-02-01 13:35:33 -08:00
Constantin Rack
a26bb743d4 Problem: docs are still referring to deprecated zmq_term
Solution: Replace with `zmq_ctx_term`
2016-02-01 22:00:35 +01:00
Constantin Rack
589464ced9 Problem: comments still refer to deprecated zmq_term.
Solution: replace with `zmq_ctx_term`

Also fix whitespace (tabs instead of spaces)
2016-02-01 21:51:54 +01:00
Constantin Rack
10d9ef8a5f Problem: perf use deprecated zmq_term
Solution: replace all occurrences with `zmq_ctx_term`
2016-02-01 21:44:01 +01:00
Constantin Rack
0d171563d0 Problem: tests use deprecated zmq_term function
Solution: replace all occurrences with `zmq_ctx_term`
2016-02-01 21:40:24 +01:00
Constantin Rack
d92e40901d Merge pull request #1755 from UsamaMehboob/master
fixed issue #1754
2016-02-01 21:30:08 +01:00
Usama Mehboob
a72cb5d43d added #include<unistd.h> in udp_engine.cpp to solve error 'close was not declared in scope' 2016-02-02 01:17:12 +05:00
Pieter Hintjens
e1254e100e Merge pull request #1751 from c-rack/remove-zmq-utils-includes
Problem: deprecated `zmq_utils.h` is still included
2016-02-01 12:05:01 +01:00
Constantin Rack
7da3ee138e Problem: deprecated zmq_utils.h is still included
Solution: remove all remaining references to `zmq_utils.h`
2016-02-01 11:34:36 +01:00
Constantin Rack
435535ce92 Merge pull request #1750 from hintjens/master
Problem: various errors in build scripts
2016-02-01 11:22:13 +01:00
Pieter Hintjens
6f94af8cca Problem: various errors in build scripts
- zmq_utils.h was removed
- udp_address.cpp and udp_engine.cpp were added

Solution: patch all affected build scripts
2016-02-01 11:18:08 +01:00
Pieter Hintjens
3cf6c33132 Merge pull request #1748 from sunkin351/master
Added "udp_address" and "udp_engine" to VS2015 project
2016-02-01 10:25:17 +01:00
sunkin351
9b01ae826e Restoring zmq_utils.h from previous version
I hope restoring this from a previous version doesn't do any damage, it
is missing in the current version of this repository and is vital for
the lib to compile anywhere.
2016-01-31 20:19:04 -08:00
sunkin351
a464eec7df Added "udp_address" and "udp_engine" to enable windows build
Altered VS2015 files to enable building of the library.
2016-01-31 17:54:31 -08:00
Joe Eli McIlvain
d7ef68d6b7 Merge pull request #1747 from c-rack/remove-zmq-utils-h
Problem: `zmq_utils.h` is deprecated since 2014-07-09
2016-01-31 17:31:47 -08:00
Constantin Rack
af775c0c8b Problem: zmq_utils.h is deprecated since 2014-07-09
Solution: remove this file
2016-02-01 00:54:53 +01:00
Constantin Rack
8dbda15e21 Merge pull request #1745 from somdoron/master 2016-01-30 22:23:35 +01:00
Constantin Rack
4f4e475331 Merge pull request #1746 from minrk/allow-underscore-dns 2016-01-30 22:23:09 +01:00
Min RK
cdec4dc9ee allow underscores in domain names
Since they are allowed

(They are not, however, allowed in hostnames)
2016-01-30 21:30:30 +01:00
somdoron
389e853c6d Fix compilation errors on windows 2016-01-30 13:29:41 +02:00
Doron Somech
add4e7675f Merge pull request #1744 from jcfr/fix-gcc-warnings
Fix unused-parameter/unused-but-set-variable/missing-field-initializers warnings
2016-01-30 09:08:09 +01:00
Doron Somech
318dd7c717 Merge pull request #1743 from jcfr/add-missing-ctest-tests
ctest: Add missing test_udp and test_large_msg
2016-01-30 09:06:57 +01:00
Doron Somech
73f73ddaa9 Merge pull request #1742 from jemc/master
Problem: `udp_address::interface` conflicts with VS2015 build.
2016-01-30 09:06:40 +01:00
Jean-Christophe Fillion-Robin
2cb8da3bfd Style: Fix -Wmissing-field-initializers in socket_poller.cpp
This commit addresses the following warnings reported on gcc 5.2.1. In
the future, this will help reduce the "noise" and help catch warnings
revealing a serious problem.

It was originally introduce in the refactoring associated with
zeromq/libzmq@da2bc60 (Removing zmq_pollfd as it is replaced by zmq_poller).

8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
/path/to/libzmq/src/socket_poller.cpp: In member function ‘int zmq::socket_poller_t::add(zmq::socket_base_t*, void*, short int)’:
/path/to/libzmq/src/socket_poller.cpp:92:51: warning: missing initializer for member ‘zmq::socket_poller_t::item_t::pollfd_index’ [-Wmissing-field-initializers]
     item_t item = {socket_, 0, user_data_, events_};
                                                   ^
/path/to/libzmq/src/socket_poller.cpp: In member function ‘int zmq::socket_poller_t::add_fd(zmq::fd_t, void*, short int)’:
/path/to/libzmq/src/socket_poller.cpp:108:50: warning: missing initializer for member ‘zmq::socket_poller_t::item_t::pollfd_index’ [-Wmissing-field-initializers]
     item_t item = {NULL, fd_, user_data_, events_};
                                                  ^
8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
2016-01-30 02:56:03 -05:00
Jean-Christophe Fillion-Robin
46b02338e3 Style: Fix -Wunused-but-set-variable in test_stream_exceeds_buffer.cpp
This commit addresses the following warnings reported on gcc 5.2.1. In
the future, this will help reduce the "noise" and help catch warnings
revealing a serious problem.

8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
/path/to/libzmq/tests/test_stream_exceeds_buffer.cpp: In function ‘int main()’:
/path/to/libzmq/tests/test_stream_exceeds_buffer.cpp:19:9: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
     int rc = setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable));
         ^
8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
2016-01-30 02:56:03 -05:00
Jean-Christophe Fillion-Robin
f329252dcb Style: Fix unused parameter compilation warnings
This commit addresses the following warnings reported on gcc 5.2.1. In
the future, this will help reduce the "noise" and help catch warnings
revealing a serious problem.

8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
/path/to/libzmq/src/options.cpp:1048:36: warning: unused parameter ‘option_’ [-Wunused-parameter]
 bool zmq::options_t::is_valid (int option_) const
                                    ^

/path/to/libzmq/src/plain_client.cpp:146:30: warning: unused parameter ‘cmd_data’ [-Wunused-parameter]
         const unsigned char *cmd_data, size_t data_size)
                              ^

/path/to/libzmq/src/plain_client.cpp:146:30: warning: unused parameter ‘cmd_data’ [-Wunused-parameter]
         const unsigned char *cmd_data, size_t data_size)
                              ^

/path/to/libzmq/src/socket_base.cpp:1445:44: warning: unused parameter ‘group_’ [-Wunused-parameter]
 int zmq::socket_base_t::xjoin (const char *group_)
                                            ^
/path/to/libzmq/src/socket_base.cpp:1451:45: warning: unused parameter ‘group_’ [-Wunused-parameter]
 int zmq::socket_base_t::xleave (const char *group_)
                                             ^

/path/to/libzmq/src/radio.cpp:145:33: warning: unused parameter ‘msg_’ [-Wunused-parameter]
 int zmq::radio_t::xrecv (msg_t *msg_)
                                 ^
/path/to/libzmq/src/dish.cpp:164:32: warning: unused parameter ‘msg_’ [-Wunused-parameter]
 int zmq::dish_t::xsend (msg_t *msg_)
                                ^

/path/to/libzmq/tests/test_msg_ffn.cpp:32:16: warning: unused parameter ‘data’ [-Wunused-parameter]
 void ffn(void *data, void *hint) {
                ^

/path/to/libzmq/tests/test_timers.cpp:50:19: warning: unused parameter ‘timer_id’ [-Wunused-parameter]
 void handler (int timer_id, void* arg)
                   ^
8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
2016-01-30 02:56:03 -05:00
Jean-Christophe Fillion-Robin
05e48cc6a9 ctest: Add missing test_udp and test_large_msg
This commit fixes the author warnings reported below. These tests
have originally been introduced in zeromq/libzmq@5ebfd17 and
zeromq/libzmq@5fe75f0.

8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
CMake Warning (dev) at tests/CMakeLists.txt:133 (message):
  Test 'test_udp' is not known to CTest.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at tests/CMakeLists.txt:133 (message):
  Test 'test_large_msg' is not known to CTest.
This warning is for project developers.  Use -Wno-dev to suppress it.
8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
2016-01-30 02:10:01 -05:00
Joe Eli McIlvain
cf5c288dda Rename udp_address::interface to iface for VS2015 build.
Resolves #1739.
2016-01-29 19:50:04 -08:00
Pieter Hintjens
b784943f90 Merge pull request #1737 from somdoron/radio-dish
Problem: no udp/multicast support in zeromq
2016-01-29 20:23:10 +01:00
somdoron
5ebfd1728f make udp support for radio-dish 2016-01-29 21:17:11 +02:00
Constantin Rack
a2b9d826e4 Merge pull request #1735 from hintjens/master
Problem: radio/dish class broke Windows builds
2016-01-29 11:24:33 +01:00
Pieter Hintjens
2ae4c55bf5 Problem: radio/dish class broke Windows builds
Solution: add these new classes to MSVC project files
2016-01-29 11:07:21 +01:00
Constantin Rack
1bcb0a737e Merge pull request #1734 from somdoron/radio-dish
problem: radio-dish is still hacky
2016-01-29 10:17:54 +01:00
somdoron
1960b4e8a9 Filtering messages on dish side 2016-01-29 10:53:47 +02:00
somdoron
c7d52ec260 radio-dish join/leave are ZMTP commands 2016-01-29 10:53:47 +02:00
somdoron
5054f2eb61 radio-dish is sending the group as first frame 2016-01-29 10:53:47 +02:00
somdoron
68675e23d9 adds group to zmq_msg 2016-01-29 10:53:42 +02:00
somdoron
b2718149e0 msg external storage is using content_t 2016-01-29 10:46:42 +02:00
Constantin Rack
e424388608 Merge pull request #1730 from somdoron/master
problem: request socket state machine check is not running
2016-01-28 19:11:27 +01:00
somdoron
15ad6f8051 save some bytes in msg class 2016-01-28 18:53:35 +02:00
somdoron
dc945998a4 missing virtual modifier or session_base 2016-01-28 18:31:05 +02:00
Pieter Hintjens
16f1be9de3 Merge pull request #1729 from c-rack/update-copyright-year
Problem: copyright year is still 2015
2016-01-28 15:26:45 +01:00
Constantin Rack
a539b0c6e8 Problem: copyright year is still 2015
Solution: update to 2016
2016-01-28 15:07:31 +01:00
Constantin Rack
a7b7f3e6c2 Merge pull request #1727 from somdoron/master
problem: pub/sub pattern in zeromq is complicated and not thread safe
2016-01-27 17:28:59 +01:00
somdoron
b8425a25cf radio-dish pattern 2016-01-27 18:22:48 +02:00
Constantin Rack
511d701de3 Merge pull request #1725 from GreatFruitOmsk/master 2016-01-22 16:00:33 +01:00
Ilya Kulakov
77f5344ff7 Fix VMCI compilation errors on Windows. 2016-01-22 20:34:23 +06:00
Pieter Hintjens
1c7d59a58a Merge pull request #1724 from minrk/multi-monitor
stop previous monitor socket before starting new one
2016-01-22 13:50:06 +01:00
Min RK
f0dce000b2 stop previous monitor socket before starting new one
avoids leaking sockets due to multiple monitor calls on one socket

Alternative: raise error (not sure what errno; EADDRINUSE?) if collision detected; force manual stop.
2016-01-21 16:21:07 +01:00
Constantin Rack
f25a9c83f5 Merge pull request #1723 from GreatFruitOmsk/master
Family is not set when resolving NIC on android.
2016-01-21 15:56:26 +01:00
Ilya Kulakov
6c9974770b Family is not set when resolving NIC on android.
Make it ready to enable ipv6 for AIX or HP/UX
2016-01-21 19:53:35 +06:00
Pieter Hintjens
cfbeac6ad1 Merge pull request #1722 from GreatFruitOmsk/master
Fix missing headers.
2016-01-21 08:46:14 +01:00
Ilya Kulakov
e7850410f8 Fix trailing spaces. 2016-01-21 13:44:15 +06:00
Ilya Kulakov
e5894d5197 Fix missing headers which makes compilation fail on Android. 2016-01-21 13:44:01 +06:00
Joe Eli McIlvain
55e8191ac5 Merge pull request #1721 from c-rack/fix-issue-1720
Problem: build fails due to undefined INT_MAX
2016-01-20 14:56:20 -06:00
Constantin Rack
5c9bd5f0cb Problem: SIZE_MAX is not defined in all stdint.h includes
Solution: remove debug printf line completely
2016-01-20 19:30:21 +01:00
Constantin Rack
b7d42a4c4b Problem: SIZE_MAX is not defined
Solution: include stdint.h
2016-01-20 19:18:00 +01:00
Constantin Rack
924bce6478 Problem: build fails due to undefined INT_MAX
Solution: include climits

Fixes #1720
2016-01-20 19:16:54 +01:00
Constantin Rack
a40dd50da1 Merge pull request #1719 from minrk/rc-int-max
truncate rc to INT_MAX for send/recv
2016-01-20 13:53:33 +01:00
Min RK
5fe75f0e43 truncate rc to INT_MAX
to avoid overflow for large messages

send/recv still succeed for large messages,
but `zmq_msg_size` must be used to get the true size.
2016-01-20 13:43:51 +01:00
Constantin Rack
90f9f5ff91 Merge pull request #1718 from gcsideal/master
Last bits of Hurd support
2016-01-20 11:28:18 +01:00
Laszlo Boszormenyi (GCS)
be387d5e56 Last bits of Hurd support 2016-01-20 07:18:22 +01:00
Joe Eli McIlvain
c42bf873bb Merge pull request #1717 from c-rack/fix-typo
Problem: typo
2016-01-19 14:27:15 -06:00
Constantin Rack
e6edc4729e Problem: typo
Solution: fix it
2016-01-19 21:23:42 +01:00
Constantin Rack
cc29578088 Merge pull request #1716 from somdoron/master
Problem: client over inproc receives the msg with routing id set
2016-01-19 19:30:38 +01:00
somdoron
669c5697c2 fixing a bug: client over inproc receives msg with routing id set 2016-01-19 20:18:04 +02:00
Constantin Rack
e0fc5841cd Merge pull request #1715 from hintjens/master
Problem: configure --without-documentation is clumsy
2016-01-18 22:55:22 +01:00
Pieter Hintjens
88949694db Problem: configure --without-documentation is clumsy
It's inconsistent, and should be --with-something=yes/no. Also the
term 'documentation' is long and clumy.

Solution: use --with-docs instead.
2016-01-18 21:25:22 +01:00
Pieter Hintjens
9ebb5cc911 Merge pull request #1714 from somdoron/master
problem: condition variable setting invalid timeout
2016-01-18 14:45:05 +01:00
somdoron
4bfe2ec686 fix bug in condition variable using invalid timeout 2016-01-18 15:32:49 +02:00
Pieter Hintjens
d906e815bc Merge pull request #1713 from minrk/stdint
restore check for MSC 1600 before including stdint.h
2016-01-18 12:47:45 +01:00
Min RK
6ee78707c6 restore check for MSC 1600 before including stdint.h 2016-01-18 12:33:51 +01:00
Pieter Hintjens
1a502cc190 Merge pull request #1709 from gcsideal/master
GNU/Hurd support
2016-01-16 08:05:46 +01:00
Laszlo Boszormenyi (GCS)
be5ab6d5c9 GNU/Hurd support 2016-01-16 02:26:20 +01:00
Constantin Rack
6d491a4289 Merge pull request #1707 from minrk/tweetnacl
include tweetnacl in dists
2016-01-15 16:04:30 +01:00
Min RK
cf57a88d49 include tweetnacl in dists 2016-01-15 16:01:48 +01:00
Constantin Rack
93bb756298 Merge pull request #1706 from zoobab/master
Problem: OpenWRT Makefile still uses tarballs, now using GIT HEAD master
2016-01-15 11:40:48 +01:00
Benjamin Henrion
e19454e388 Problem: OpenWRT Makefile still uses tarballs, now using GIT HEAD master 2016-01-15 11:19:24 +01:00
Constantin Rack
d8941f599a Merge pull request #1705 from hintjens/master
Problem: no support for OpenWRT
2016-01-15 10:54:02 +01:00
Pieter Hintjens
055995e535 Problem: builds directory contains packaging scripts
Specifically, the RedHat tools.

Solution: move this into packaging/
2016-01-15 10:25:38 +01:00
Pieter Hintjens
d8d9ee3243 Problem: no support for OpenWRT
Solution: copy ZeroMQ packaging script from
https://github.com/vperron/openwrt-zmq-packages

Note: this is not usable as-such, needs fixing.
2016-01-15 10:10:06 +01:00
Pieter Hintjens
b9167df916 Merge pull request #1702 from GreatFruitOmsk/greatfruit-master
Add support for the RelWithDebInfo CMake configuration.
2016-01-14 15:16:14 +01:00
Ilya Kulakov
bfbb655491 Add support for the RelWithDebInfo CMake configuration.
It's now possible to build Release version with pdb file.
2016-01-14 18:20:00 +06:00
Constantin Rack
47d9caa49a Merge pull request #1701 from madebr/cmake_test_include_source_dir
Problem: On Windows CI, in tests/test_timers.c, "Windows.hpp" could not be found.
2016-01-14 10:04:12 +01:00
Anonymous Maarten
be36423bc2 Problem: On Windows CI, the included file Windows.hpp could not be
found.
Solution: Include the source directory

Problem: _sleep is a library function of Windows.
Solution: use sleep_
2016-01-14 02:53:24 +01:00
Constantin Rack
8f4574f8d0 Merge pull request #1700 from madebr/stable_sodium
Problem: Windows CI fails due to libsodium build failure
2016-01-14 01:02:46 +01:00
Anonymous Maarten
e7afed0655 Problem: Windows CI fails due to libsodium build failure
Solution: Use stable branch of libsodium
2016-01-14 00:59:57 +01:00
Pieter Hintjens
b9d831695f Merge pull request #1699 from somdoron/master
problem: when socket is destroyed before zmq_poller is the zmq_poller is accessing a dead socket
2016-01-13 14:27:22 +01:00
somdoron
6bbca7cf4a fix case when zmq_poller access a dead socket 2016-01-13 15:12:47 +02:00
KAPP Arnaud
714988e6c5 Merge pull request #1694 from hintjens/master
Problem: Android build is too slow
2016-01-05 17:34:32 +01:00
Pieter Hintjens
c49eef46ec Problem: Android build is too slow
Solution: use parallel make (-j 4) and don't build man pages.
2016-01-05 17:31:17 +01:00
Constantin Rack
f64c38583f Merge pull request #1692 from FredTreg/master
Test for issue #1690 (ZMQ_REQ_RELAXED)
2016-01-03 15:37:06 +01:00
Frederic Tregon
9bdb60577c Test for issue #1690 (ZMQ_REQ_RELAXED)
Current ZMQ_REQ_RELAXED test improvement to check that pipes are not closed
after executing two send() in a row with no recv() in between.
2016-01-03 15:28:07 +01:00
Constantin Rack
c30676fe52 Merge pull request #1691 from FredTreg/master
Fixed issue #1690 (ZMQ_REQ_RELAXED)
2016-01-01 20:04:34 +01:00
Frederic Tregon
89417ddb9f Fixed issue #1690 (ZMQ_REQ_RELAXED)
When using ZMQ_REQ_RELAXED and a 'send' is executed after another 'send' the
previous code would terminate the 'reply_pipe' if any.
This is incorrect as terminating the reply pipe also terminates the send pipe
as they are the same (a pipe associated with a socket is bidirectional).
Doing a terminate on the pipe sets an internal flag called out_active to false
and the pipe can no longer send messages.
Removing the 'terminate' solves the problem. Removing this call is not an issue
as the incorrect ordering of messages that could be incurred is taken care of
by the ZMQ_REQ_CORRELATE option if needed.
2016-01-01 19:19:33 +01:00
Constantin Rack
06402f4f28 Merge pull request #1687 from hintjens/master 2015-12-29 18:03:12 +01:00
Pieter Hintjens
2566c02a9e Problem: CLIENT and SERVER don't check SNDMORE
These sockets don't handle multipart data, so if callers send it,
they drop frames, and things break silently.

Solution: if the caller tries to use ZMQ_SNDMORE, return -1 and
set errno to EINVAL.
2015-12-29 17:00:06 +01:00
Constantin Rack
ae3b2734df Merge pull request #1684 from hintjens/master
Problem: still one error in vcxproj files
2015-12-21 19:13:27 +01:00
Pieter Hintjens
6bb0cc1fd5 Problem: still one error in vcxproj files
Solution: fix and try again.

(We could start to think of using zproject to generate these build
scripts as the only difference is C/C++)
2015-12-21 18:57:31 +01:00
Constantin Rack
6164e3d913 Merge pull request #1683 from hintjens/master
Problem: includes timer.cpp/hpp instead of timers.cpp/hpp
2015-12-21 18:42:32 +01:00
Pieter Hintjens
137afd5610 Problem: includes timer.cpp/hpp instead of timers.cpp/hpp
Solution: fix it.
2015-12-21 18:36:49 +01:00
Constantin Rack
1c874876ff Merge pull request #1682 from hintjens/master
Problem: performance tests don't link on Windows/MSVC
2015-12-21 13:24:00 +01:00
Pieter Hintjens
065fbcdc8f Problem: performance tests don't link on Windows/MSVC
Solution: add Iphlpapi.lib to libraries to link against
2015-12-21 13:07:13 +01:00
Constantin Rack
114f2b464f Merge pull request #1681 from hintjens/master
Problem: MSVC projects don't include timers.cpp/hpp
2015-12-21 11:17:37 +01:00
Constantin Rack
bf14b1f906 Merge pull request #1680 from hintjens/master
Fixes for Windows, and poller API
2015-12-21 11:09:28 +01:00
Pieter Hintjens
6665bffe11 Problem: MSVC projects don't include timers.cpp/hpp
Solution: add these
2015-12-21 11:09:11 +01:00
Pieter Hintjens
7893a6ac26 Problem: zmq poller API is not CLASS conformant
Solution: change zmq_poller_close(p) to zmq_poller_destroy(&p)
2015-12-21 11:01:16 +01:00
Pieter Hintjens
f8b9ca5f42 Problem: zmq timers API is not CLASS conformant
If we're going to add CLASS-like APIs we should use the proper
syntax; specifically 'destroy' instead of 'close', which is a
hangover from the 'ZeroMQ is like sockets' model we're slowly
moving away from.

Solution: change zmq_timers_close(p) to zmq_timers_destroy(&p)
2015-12-21 10:56:37 +01:00
Pieter Hintjens
627809568b Problem: on Windows, link fails on missing Iphlpapi.lib
Solution: add to project dependencies
2015-12-21 10:52:40 +01:00
Pieter Hintjens
78c3ba0dc5 Merge pull request #1677 from c-rack/faster-git-clone
Problem: build scripts don't need full git history
2015-12-20 19:36:07 +01:00
Constantin Rack
d32cb1ae6f Merge pull request #1679 from hintjens/master
Problem: Windows build gives warning on v2_decoder.cpp:130
2015-12-20 19:30:11 +01:00
Pieter Hintjens
97092d994d Problem: Windows build gives warning on v2_decoder.cpp:130
Solution: add explicit cast
2015-12-20 19:13:49 +01:00
Constantin Rack
33c5985eb2 Problem: build scripts don't need full git history
Solution: add `--depth 1` parameter to `git clone` commands
2015-12-19 13:17:22 +01:00
Pieter Hintjens
4705feb2f4 Merge pull request #1676 from GreatFruitOmsk/master
CMAKE_VS_PLATFORM_TOOLSET may not be set.
2015-12-18 16:07:11 +01:00
Ilya Kulakov
0475c6dfd8 CMAKE_VS_PLATFORM_TOOLSET may not be set.
E.g. for nmake.
2015-12-18 20:50:41 +06:00
Constantin Rack
c19470ece1 Merge pull request #1675 from somdoron/Timers
Problem: no way to schedule timers with zmq_poll or zmq_poller
2015-12-18 11:34:39 +01:00
somdoron
aadaf99011 add timers API to libzmq 2015-12-18 12:23:22 +02:00
Pieter Hintjens
9ce8fe8f66 Merge pull request #1674 from GreatFruitOmsk/master
Add missing header for the if_nametoindex on Windows.
2015-12-18 10:57:46 +01:00
Ilya Kulakov
b76ccb8b1a Add missing header for the if_nametoindex on Windows. 2015-12-18 15:54:18 +06:00
Constantin Rack
066ff133f0 Merge pull request #1672 from GreatFruitOmsk/master
Fix redirecting location of pdb via CMAKE_PDB_OUTPUT_DIRECTORY.
2015-12-18 09:58:32 +01:00
Ilya Kulakov
923645060a Fix redirecting location of pdb via CMAKE_PDB_OUTPUT_DIRECTORY. 2015-12-18 14:52:17 +06:00
Constantin Rack
b67cdcfd0b Merge pull request #1670 from hintjens/master
CI was broken by #54799c (reverted)
2015-12-18 09:06:12 +01:00
Pieter Hintjens
987eb6ddc3 Merge pull request #1671 from brian-peloton/master
Fix alignment of initial chunk in yqueue
2015-12-17 21:10:35 +01:00
Brian Silverman
700b91d102 Fix alignment of initial chunk in yqueue
Clang's UndefinedBehaviorSanitizer catches this in the tests.
2015-12-17 14:28:15 -05:00
Pieter Hintjens
f3bcb73f02 Fixed old path to qt-android 2015-12-17 16:24:35 +01:00
Pieter Hintjens
31c35498af Revert "fixes #1565: Allow session to flush commands on an engine error"
This reverts commit 54799c8c6fa605f7272e966912f6e93161f9d11d.

This change broke the tests/test_shutdown_stress testcase.
2015-12-17 16:20:48 +01:00
KAPP Arnaud
768fc7699e Merge pull request #1668 from zoobab/master
Build success message + Build zmq for android with a Dockerfile
2015-12-17 14:12:26 +01:00
Benjamin Henrion
8f1810d1e2 Add a Dockerfile to build libzmq for android 2015-12-17 00:11:26 +01:00
Pieter Hintjens
819a879ff2 Merge pull request #1669 from bluca/travis_android
Problem: travis CI tries to build "qt-android"
2015-12-16 14:20:47 +01:00
Luca Boccassi
bd222d9206 Problem: travis CI tries to build "qt-android"
Solution: change .travis.yml to build "android" instead of "qt-android"
2015-12-16 13:11:45 +00:00
Constantin Rack
a9bad3bc13 Merge pull request #1665 from hintjens/master
Problem: builds/qt-android name is inaccurate
2015-12-14 19:59:51 +01:00
Pieter Hintjens
9b45ba7067 Problem: builds/qt-android name is inaccurate
Solution: rename to simple builds/android.
2015-12-14 19:01:13 +01:00
Constantin Rack
f00eb5aae6 Merge pull request #1664 from Kentzo/vmci
Add special interface to represent local VMCI context.
2015-12-14 14:31:05 +01:00
Ilya Kulakov
3caa637e1b Add special interface to represent local VMCI context. 2015-12-14 19:20:27 +06:00
Constantin Rack
301989614f Merge pull request #1663 from hurtonm/master 2015-12-11 15:36:12 +01:00
Martin Hurton
3ae5c55e46 Fix mailmap entry for Max Skaller 2015-12-11 15:26:42 +01:00
Martin Hurton
86efa67d97 Add mailmap entry for Chuck Remes 2015-12-11 15:26:19 +01:00
Pieter Hintjens
7eeb7d5e74 Merge pull request #1662 from hurtonm/master
Add mailmap file
2015-12-10 17:08:01 +01:00
Martin Hurton
d8af708ad9 Add mailmap file 2015-12-10 15:44:22 +01:00
Joe Eli McIlvain
c18904cbd2 Merge pull request #1659 from syenna/master
Add missing support for IPv6 link local addresses
2015-12-09 14:37:22 -08:00
Sathish Yenna
7cfa93352e Add missing support for IPv6 link local addresses (which include % followed by the interface name) 2015-12-09 16:26:34 -06:00
Constantin Rack
6eeef5eb7c Merge pull request #1658 from hintjens/master
Problem: zmq_vmci man page claims to be zmq_ipc man page
2015-12-09 10:47:36 +01:00
Constantin Rack
3cc7cfc015 Merge pull request #1657 from Kentzo/vmci
Don't build VMCI by default.
2015-12-09 10:47:19 +01:00
Ilya Kulakov
6ae70a9428 Remove unnecessray comment and unnecessary include. 2015-12-09 15:45:15 +06:00
Ilya Kulakov
141de87085 Fix a typo in reference to with_norm_ext. 2015-12-09 15:45:15 +06:00
Pieter Hintjens
4dcfb23e2e Problem: zmq_vmci man page claims to be zmq_ipc man page
Solution: fix this.
2015-12-09 10:45:12 +01:00
Constantin Rack
765fd20937 Merge pull request #1656 from bluca/vmci_include 2015-12-08 19:21:10 +01:00
Luca Boccassi
64ce6ca772 Problem: build fails, vmci enabled by default
Solution: disable vmci by default
Fixes issue #1655
2015-12-08 17:58:31 +00:00
Luca Boccassi
a556b500da Problem: build failure, vmci include out of IFDEF
Solution: do not include vmci header outside of vmci IFDEF
Fixes issue #1655
2015-12-08 17:53:31 +00:00
Pieter Hintjens
fc7e3bc3a4 Merge pull request #1654 from Kentzo/vmci
Add the VMCI transport.
2015-12-08 08:50:24 +01:00
Ilya Kulakov
68b13fbddb Add the VMCI transport.
VMCI transport allows fast communication between the Host
and a virtual machine, between virtual machines on the same host,
and within a virtual machine (like IPC).

It requires VMware to be installed on the host and Guest Additions
to be installed on a guest.
2015-12-08 13:16:09 +06:00
Pieter Hintjens
61f74e2dfc Merge pull request #1652 from chrisstaite/master
Adjust start of heartbeat timer
2015-11-30 21:32:37 +01:00
Chris
ba3cf3c006 Only start the heartbeat timer when the underlying mechanism is ready to stop cipher streams from trying to encrypt a heartbeat before the handshake has completed. Addresses issue #1601. 2015-11-30 20:18:25 +00:00
Pieter Hintjens
f6018e81d8 Merge pull request #1651 from wcs1only/master
fixes #1565: Allow session to flush commands on an engine error
2015-11-30 16:14:30 +01:00
Charles Stanley
54799c8c6f fixes #1565: Allow session to flush commands on an engine error 2015-11-30 10:05:47 -05:00
Pieter Hintjens
e56b486735 Merge pull request #1650 from c-rack/show-log-on-build-error
Solution: print test-suite.log if "make check" fails
2015-11-27 08:47:53 +01:00
Constantin Rack
dfaa92cd1e Problem: test-suite.log is not accessible on failing CI build
Currently, a test fails on Travis-CI but that can not be reproduced locally.
Without the contents of the test-suite.log, this is difficult to analyze.

Solution: print test-suite.log if "make check" fails

This is based on the following answer on SO:
http://stackoverflow.com/a/32597140
2015-11-25 09:17:53 +01:00
Constantin Rack
782fbe5bef Merge pull request #1649 from sheremetyev/fix-pipe-activation-race
Fix pipe activation race
2015-11-24 19:02:36 +01:00
Fedor Sheremetyev
bad93c536a Set LWM to half of HWL.
This reduces chances of race between writer deactivation and activation.

Reader sends activation command to writer when number or messages is
multiple of LWM. In situation with high throughput (millions of messages
per second) and correspondingly large HWM (e.g. 10M) the difference
between HWM needs to be large enough - so that activation command is
received before pipe becomes full.
2015-11-24 17:33:38 +00:00
Fedor Sheremetyev
234018d749 Add test demostrating that HWM applies to messages that have been already consumed. 2015-11-24 17:33:19 +00:00
Pieter Hintjens
6e064f9f75 Merge pull request #1648 from c-rack/remove-out-batch-size
Solution: remove `out_batch_size` from src/config.hpp
2015-11-24 10:13:52 +02:00
Constantin Rack
f9b8a94c90 Problem: out_batch_size has been replaced by ZMQ_TCP_SEND_BUFFER option in cdeec4c1
Solution: remove `out_batch_size` from src/config.hpp
2015-11-24 09:04:07 +01:00
Constantin Rack
b407b54b44 Merge pull request #1647 from banburybill/master
Add new option ZMQ_MULTICAST_MAXTPDU to set PGM_MTU.
2015-11-23 21:31:42 +01:00
Jim Hague
e71471b2e8 Add new option ZMQ_MULTICAST_MAXTPDU to set PGM_MTU.
Fixes #1646
2015-11-23 19:35:02 +00:00
Constantin Rack
5d04dc354e Merge pull request #1645 from somdoron/master
Problem: router socket can do pipe handover while reading multipart message
2015-11-21 18:12:42 +01:00
somdoron
804bce8294 Fix pipe terimation in router while reading message 2015-11-20 21:27:56 +02:00
Pieter Hintjens
4f7dc49642 Merge pull request #1643 from somdoron/master
Problem: when STREAM socket HWM is reached an assert will happen as metadata is trying to set twice
2015-11-19 13:47:28 +02:00
somdoron
210572201d Fix a bug when stream_engine try to set alreadt set metadata 2015-11-18 15:02:19 +02:00
Pieter Hintjens
afc7c5c745 Merge pull request #1641 from c-rack/fix-recv-send-buffer
Solution: change behaviour of tcp_send/recv_buffer_size option
2015-11-13 12:29:09 +01:00
Constantin Rack
fc1099ffd1 Problem: documentation shows wrong default value
Solution: fix documentation
2015-11-13 11:08:23 +01:00
Constantin Rack
ec41f6540f Problem: tcp_recv/send_buffer should be byte value instead of scale factor
Solution: change option behaviour and adopt documentation
2015-11-13 10:47:15 +01:00
Constantin Rack
5ba328d7f3 Problem: there is no test for setsockopt ZMQ_TCP_SEND/RECV_BUFFER
Solution: add test case
2015-11-13 10:44:00 +01:00
Pieter Hintjens
f80faeca29 Merge pull request #1640 from c-rack/fix-setsockopt
Solution: fix compilation errors
2015-11-13 10:27:31 +01:00
Constantin Rack
a992d9aca0 Problem: comparison between signed and unsigned integer expressions
Solution: make tcp_recv_buffer_size and tcp_send_buffer_size unsigned
2015-11-13 10:08:30 +01:00
Constantin Rack
98d5d4d7f0 Problem: call of overloaded ‘pow()’ is ambiguous
Solution: make base a double value
2015-11-13 09:47:03 +01:00
Mário Kašuba
86714959da Merge branch 'master' of github.com:zeromq/libzmq 2015-11-13 03:53:37 +01:00
Constantin Rack
18c517020b Merge pull request #1638 from jens-auer/tcp_buffer_options
Tcp buffer options to set RECV/SEND buffer
2015-11-12 23:17:14 +01:00
Jens Auer
908d6b6740 Update options.cpp
Fixed ZMQ_TCP_RECV_BUFFER set case.
2015-11-08 21:48:36 +01:00
Jens Auer
d2516a9c42 Merge branch 'tcp_buffer_options' of github.com:jens-auer/libzmq into tcp_buffer_options 2015-11-08 19:01:04 +01:00
Jens Auer
cdeec4c115 New options to set send/recv buffer size for TCP sockets. 2015-11-08 19:00:29 +01:00
Constantin Rack
c41fe88df6 Merge pull request #1636 from roalz/feature-add-msvc2015-build
Added solution and project files to build with Microsoft VS2015
2015-11-05 17:22:17 +01:00
roalz
5f5fb5e5ad Added solution and project files to build with Microsoft Visual Studio 2015 2015-11-05 16:08:33 +01:00
Mário Kašuba
4444361503 Merge branch 'master' of github.com:zeromq/libzmq 2015-11-05 05:27:52 +01:00
Pieter Hintjens
c775c509da Merge pull request #1631 from swansontec/master
Do not crash on unusual connection-failure cases
2015-11-03 00:08:00 +01:00
William Swanson
b2010432c7 Do not crash on unusual connection-failure cases
Only assert on errors we know are our fault,
instead of trying to whitelist every possible network-related failure.
This makes ZeroMQ more portable to other platforms
where the possible errors are different.

In particular, the previous code would often die under iOS.
2015-11-02 14:59:15 -08:00
Mário Kašuba
9a8c822aa2 Merge branch 'master' of github.com:zeromq/libzmq
# Conflicts:
#	CMakeLists.txt
2015-11-01 20:59:03 +01:00
Constantin Rack
22179afaba Merge pull request #1629 from hintjens/master
Problem: Windows 7 TCP slow start
2015-11-01 13:16:55 +01:00
Pieter Hintjens
54e2e2a7ad 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
2015-11-01 12:57:53 +01:00
Constantin Rack
ac46e6da96 Merge pull request #1628 from hintjens/master
Fix for #1399
2015-11-01 10:47:33 +01:00
Pieter Hintjens
ba1515fe07 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 08:56:50 +01:00
Pieter Hintjens
f38c11c063 Whitespace fixes 2015-10-30 10:22:05 +01:00
Pieter Hintjens
ab2c009d0d Merge pull request #1626 from ahmetkakici/master
Added missing socket_poller.cpp file to msvc solutions.
2015-10-27 12:23:03 +01:00
ahmet
7c8e65e2cd Added missing socket_poller.cpp file to msvc solutions.
also fixes issue https://github.com/zeromq/libzmq/issues/1624
2015-10-27 14:16:36 +02:00
Pieter Hintjens
182688d431 Merge pull request #1625 from lytboris/master
Acutally allow specifying interfaces as source address
2015-10-26 23:02:05 +01:00
Boris Lytochkin
a4baa36ba4 acutally allow specifying interfaces as source address 2015-10-27 00:37:53 +03:00
Constantin Rack
9b1432256d Merge pull request #1623 from zeromq/sappo-patch-1
Problem: libzmq appveyor build status is not visible
2015-10-26 09:28:35 +01:00
Kevin Sapper
64ffb3fc92 Problem: libzmq appveyor build status is not visible
Solution: Add a travis like badge to the README

fixes #1622
2015-10-26 08:59:22 +01:00
Pieter Hintjens
dc04c5bbd6 Merge pull request #1621 from madebr/cmake_winci_fixes
Cmake winci fixes
2015-10-25 09:54:00 +01:00
Anonymous Maarten
0a0b9fd760 tweetNaCL: fix winrandom
problem: random byte generation on windows got stuck in an infinite loop
solution: the failure test is incorrect. Change it
2015-10-25 03:43:24 +01:00
Anonymous Maarten
571ee21eef appveyor: build all relevant combinations
problem: not all configurations were built (and some were duplicated) in
Windows CI
solution: add all correct combinations to appveyor.yml
2015-10-25 01:14:27 +02:00
Anonymous Maarten
89338f43d5 CMake: fix library name on linux
problem: cmake added a prefix of lib to libzmq, resulting in
liblibzmq.so
solution: set an empty prefix
2015-10-25 01:14:27 +02:00
Pieter Hintjens
c5572211e7 Merge pull request #1620 from madebr/ctest_missing_tests
CTest: add all sources in tests folder to CTest
2015-10-24 12:19:10 +02:00
Anonymous Maarten
9930f1fc20 CTest: add missing tests + check for unknown tests 2015-10-24 00:17:52 +02:00
Anonymous Maarten
2f63231860 cmake: libzmq can now be built with both sodium and TweetNaCL 2015-10-24 00:16:01 +02:00
Constantin Rack
7fe032180a Merge pull request #1619 from madebr/winrandombytes
TweetNaCL: add windows randombytes implementation
2015-10-24 00:01:55 +02:00
Anonymous Maarten
b2c87b9a70 TweetNaCL: add windows randombytes implementation 2015-10-23 23:34:53 +02:00
Pieter Hintjens
e182438ad6 Merge pull request #1618 from madebr/cmake_sodium
CMake: use libsodium + add Windows CI
2015-10-23 09:20:18 +02:00
Anonymous Maarten
35d723ce5b Add Windows Continuous Integration (appveyor) 2015-10-23 04:07:12 +02:00
Anonymous Maarten
55ca9c5654 CMake: use libsodium if available, else use tweet_nacl 2015-10-23 04:06:57 +02:00
Constantin Rack
5d98e602c9 Merge pull request #1617 from somdoron/removing_pollfd
problem: zmq_pollfd is not needed anymore when zmq_poller in place.
2015-10-22 11:21:16 +02:00
somdoron
da2bc60abe Removing zmq_pollfd as it is replaced by zmq_poller 2015-10-22 11:52:24 +03:00
Richard Newton
0650b59b10 Merge pull request #1616 from somdoron/ZMQ_POLLER
problem: ZMQ_POLLER doesn't support polling on out
2015-10-21 12:42:44 +01:00
somdoron
24fc0d4e89 drop the socket postfix from poller methods 2015-10-21 14:04:33 +03:00
somdoron
5c71fe6538 Fix socket_poller windows compiling issue 2015-10-21 10:34:00 +03:00
somdoron
024819b491 add ZMQ_HAVE_POLLER define to check if ZMQ_POLLER exist 2015-10-21 10:17:33 +03:00
somdoron
476ba22e0a ZMQ_Poller support more event types 2015-10-21 10:14:36 +03:00
somdoron
544d1e3499 Change the error of zmq_poller from EAGAIN to ETIMEDOUT 2015-10-21 09:37:52 +03:00
Mário Kašuba
c22f9f3633 Merge branch 'master' of github.com:zeromq/libzmq 2015-10-20 15:16:07 +02:00
Pieter Hintjens
a7ea57fb68 Merge pull request #1615 from jeroenooms/master
enable static libraries on mingw
2015-10-20 13:50:07 +02:00
Jeroen Ooms
9114d39577 enable static libraries on mingw 2015-10-20 13:10:38 +02:00
Pieter Hintjens
979e6bb45c Merge pull request #1613 from maxkozlovsky/master
honor buffer reference count in zmq::shared_message_memory_allocator:…
2015-10-19 23:08:11 +02:00
Max Kozlovsky
06e882f8ea honor buffer reference count in zmq::shared_message_memory_allocator::deallocate 2015-10-19 13:29:26 -07:00
Constantin Rack
f1e6cb8ba9 Merge pull request #1611 from somdoron/zpoller-port
problem: polling on multiple sockets is complicated
2015-10-18 21:13:31 +02:00
somdoron
e387ce1571 remove pollfd from sockets when destroying poller 2015-10-18 21:50:24 +03:00
somdoron
6501b8089f port zpoller to libzmq as zmq_poller 2015-10-18 21:07:23 +03:00
Pieter Hintjens
500269955d Merge pull request #1604 from wcs1only/master
Fixed for issue  #1315
2015-10-09 15:56:27 +02:00
Charles Stanley
516b440e0d fixes #1315 socket monitor hangs if zmq_bind fails 2015-10-09 09:02:09 -04:00
Constantin Rack
a28398a4e8 Merge pull request #1603 from jizhilong/fix/typo
fix a typo in ypipe.hpp
2015-10-09 05:48:39 +02:00
Zhilong.JI
9a7858245c fix a typo in ypipe.hpp 2015-10-09 10:52:36 +08:00
Jens Auer
ea26e68b9d New options to set send/recv buffer size for TCP sockets. 2015-10-08 22:06:33 +02:00
Constantin Rack
ca52520944 Merge pull request #1602 from scemama/master
Fixes issue #1556
2015-10-07 22:30:53 +02:00
Anthony Scemama
aefc5d120b Default behavior is --with-libsodium=yes 2015-10-07 22:18:08 +02:00
Anthony Scemama
73a0eed75d Fixes issue #1556 2015-10-07 21:45:49 +02:00
Pieter Hintjens
96014ee7ed Merge pull request #1600 from lsniks/master
Issue 1588 : Rollback in case send fails for multipart msg
2015-10-05 20:57:51 +02:00
Nikhil Mishra
8ec747e14a Issue 1588 : Rollback in case send fails for multipart msg 2015-10-05 11:46:48 -07:00
Constantin Rack
cca67fdd1b Merge pull request #1595 from pijyoi/signaler_failable
create signaler::recv_failable()
2015-09-29 06:01:51 +02:00
KIU Shueng Chuan
596d6e5b1c create signaler::recv_failable()
In real world usage, there have been reported signaler failures where the
eventfd read() or socket recv() system call in signaler::recv() fails,
despite having made a prior successful signaler::wait() call.

this patch creates a signaler::recv_failable() method that allows
unreadable eventfd / socket to return an error without asserting.
2015-09-29 09:14:02 +08:00
Richard Newton
52ee724144 Merge pull request #1593 from meox/master
fix error with gcc 5.2
2015-09-27 13:34:48 +01:00
meox
992ac3baa8 fix error with gcc 5.2 2015-09-27 14:24:08 +02:00
Pieter Hintjens
79daac119a Merge pull request #1592 from c-rack/fix-test
Solution: full is if number of msg is greater than hwm, not greater than hwm - 1
2015-09-25 12:26:33 +02:00
Constantin Rack
e4c06bef18 Problem: check_hwm() has different semantic of 'full' 2015-09-25 11:56:54 +02:00
Pieter Hintjens
a8605f576e Merge pull request #1591 from c-rack/check-hwm
Solution: use existing check_hwm() method
2015-09-25 11:36:41 +02:00
Constantin Rack
f1358c1243 Problem: duplicate code for hwm check 2015-09-25 11:24:48 +02:00
Constantin Rack
dd6bb9ae0c Merge pull request #1586 from ricnewton/master
Update cmake to support Visual Studio 2015
2015-09-19 15:51:47 +02:00
Richard Newton
05d0451e29 Update cmake to support Visual Studio 2015 2015-09-19 14:39:18 +01:00
Pieter Hintjens
d89753cbf0 Merge pull request #1585 from msb-at-yahoo/fix-send-doc-typo
Fix typo on send documentation re: nullification
2015-09-18 20:28:50 +02:00
maurice barnum
b12b8ca23b Fix typo on send documentation re: nullification 2015-09-18 11:22:12 -07:00
Constantin Rack
ed1009b3a5 Merge pull request #1584 from ymax/master
fixed zmq assertion in signaler.cpp under ubuntu
2015-09-18 16:57:19 +02:00
Maxim Yakhontov
e9e03f5ade fixed zmq assertion in signaler.cpp under ubuntu 2015-09-18 20:48:08 +06:00
Constantin Rack
2452c598b7 Merge pull request #1582 from pengweichu/master
Fixed the bug which cause the application crashed when use TCP connec…
Fixes #1581
2015-09-17 11:31:10 +02:00
PP
5dc8b51ceb Fixed the bug which cause the application crashed when use TCP connect to an invalid address(such as 192.168.1.255). 2015-09-17 16:59:25 +08:00
Pieter Hintjens
0f51190c27 Merge pull request #1580 from ricnewton/master
Fix windows cmake build
2015-09-14 14:24:37 +02:00
Richard Newton
3f4f3c1137 Fix windows cmake build 2015-09-14 13:21:20 +01:00
Constantin Rack
ee7f2a278a Merge pull request #1579 from staticfloat/patch-2 2015-09-14 07:59:12 +02:00
Elliot Saba
1fbc67a40a Fix pointer indirection precedence issue in docs
Without this change, a segmentation fault is likely to occur when using the proposed snippet of code, as `*address[size]` is equivalent to `*(address[size])`, not `(*address)[size]` as clearly intended.
2015-09-13 20:46:14 -07:00
Constantin Rack
2c94bb42c5 Merge pull request #1578 from hintjens/master
Problem: drop tests on CLIENT/SERVER are misleading
2015-09-13 14:18:49 +02:00
Pieter Hintjens
3f9255019b Problem: description of ZMQ_CLIENT/SERVER has inaccuracies
- both are thread safe
- they do not accept ZMQ_SNDMORE nor ZMQ_RCVMORE
2015-09-13 12:28:43 +02:00
Pieter Hintjens
50859e40b9 Problem: drop tests on CLIENT/SERVER are misleading
These sockets deal only with single part data (at present), so the
drop tests are misleading / inappropriate.

Solution: remove them.
2015-09-13 12:17:53 +02:00
Joe Eli McIlvain
fb57110b94 Merge pull request #1577 from hintjens/master
Various cleanups for CLIENT-SERVER sockets
2015-09-11 14:24:51 -07:00
Pieter Hintjens
f3ee8c69db Problem: request-reply pattern is lousy
REQ-REP barely work, and DEALER-ROUTER are misnamed. As we move to
formalizing CLIENT-SERVER, we can deprecate request-reply.

Solution: move this section to the end of the man page, and mark as
"will be deprecated".
2015-09-11 17:22:37 -04:00
Pieter Hintjens
e7da0ea07b Problem: client/server pattern is not documented
Solution: add man pages/sections for:

 * ZMQ_SERVER
 * ZMQ_CLIENT
 * ZMQ_THREADSAFE
 * zmq_msg_routing_id
 * zmq_msg_set_routing_id
2015-09-11 17:12:58 -04:00
Pieter Hintjens
4db73fc18b Problem: msg.cpp:set_routing_id accepts a zero routing ID
Solution: check/reject a zero routing ID with EINVAL.
2015-09-11 17:09:24 -04:00
Pieter Hintjens
6b00f40f74 Problem: test_client/server_drop_more are invalid
These tests connected CLIENT and SERVER to DEALER... this isn't
allowed. I changed to CLIENT-to-SERVER in both cases. The result
was aborts in client.cpp and server.cpp which cannot handle
invalid multipart data.

I removed the asserts in each of these in xsend.

Solution: fix the test cases and remove the (unwanted?) asserts
in client.cpp:xsend and server.cpp:xsend.
2015-09-11 17:07:50 -04:00
Pieter Hintjens
c2dffb9908 Problem: threadsafe test uses CLIENT-to-CLIENT
Solution: fix to use CLIENT-to-SERVER and increase number of messages
sent to 100K per thread, to better stress thread safety.
2015-09-11 17:01:27 -04:00
Pieter Hintjens
d416ffcec5 Problem: cannot build single test case in tests
This is due to the mangled include of platform.h, which was to make
CMake happy.

Solution: in CMakeLists.txt, define USING_CMAKE and then look for
platform.h in current directory if that is defined, else look in
../src/ as one would expect.
2015-09-11 16:42:26 -04:00
Pieter Hintjens
5e936fe955 Problem: routing ID cycles back to zero
It should never be zero.

Solution: if rid cycles back to zero, bump to 1.
2015-09-11 14:30:27 -04:00
Pieter Hintjens
60fdfd9a1b Problem: whitespace at end of lines, removed 2015-09-11 14:30:20 -04:00
Pieter Hintjens
c5b1de368a Problem: code lets CLIENT connect to CLIENT
This has no sense IMO; people who need this can still use DEALER-DEALER.

Solution: let CLIENT talk only to SERVER.
2015-09-11 13:46:02 -04:00
Pieter Hintjens
87f2dff38c Problem: zmq_msg_get_routing_id () is not consistent with API
We do not use 'get' for getters.

Solution: rename to zmq_msg_routing_id () for public API.
2015-09-11 13:15:00 -04:00
Pieter Hintjens
7be6ad0504 Replaced tabs in some files, with spaces 2015-09-11 13:03:31 -04:00
Constantin Rack
d0ffb91323 Merge pull request #1574 from pijyoi/master
avoid dereferencing uint32_t on unaligned address
2015-09-08 11:40:04 +02:00
KIU Shueng Chuan
25a50ca0d5 avoid dereferencing uint32_t on unaligned address 2015-09-08 17:26:31 +08:00
Pieter Hintjens
734a73c63d Merge pull request #1571 from c-rack/fix-typos
Solution: fix typos
2015-09-06 19:00:56 +02:00
Constantin Rack
bd923f0fbb Problem: some comments contain typos 2015-09-06 18:46:32 +02:00
Pieter Hintjens
3e43258769 Merge pull request #1570 from djelenc/deque_bug
Problem: Tests in Travis are failing randomly
2015-09-06 02:01:02 +02:00
David Jelenc
64ffda90d2 Problem: Tests in Travis are failing randomly
Tests were failing, because some deque calls were causing undefined
behavior: calling front() or pop_front() on an empty deque. Such
calls are now safeguarded.
2015-09-06 01:49:50 +02:00
Constantin Rack
39a0d33912 Merge pull request #1569 from djelenc/xpub_manual_lost_subscriptions
Fixed missing subscriptions on XPUB with manual subscriptions
2015-09-05 16:30:36 +02:00
David Jelenc
8fd71d631d Fixed missing subscriptions on XPUB with manual subscriptions
The patch fixes the issue #1568.
2015-09-05 15:56:26 +02:00
Pieter Hintjens
47e1216e1e Merge pull request #1567 from djelenc/xpub_manual_proxy_disconnect_unsubscribe
Problem: lingering subscriptions on XPUB sockets (#1566)
2015-09-05 12:14:27 +02:00
David Jelenc
dd35e1db0f Problem: lingering subscriptions on XPUB sockets (#1566)
The patch fixes lingering subscriptions that occur upon disconnection
on XPUB sockets with option XPUB_MANUAL when used in a XPUB-XSUB
proxies.
2015-09-05 12:07:50 +02:00
Pieter Hintjens
9e8e81cf9a Merge pull request #1564 from c-rack/issue-1558-2
Solution: do not call poller->add_fd() with -1. Fixes #1558
2015-09-03 12:41:55 +02:00
Constantin Rack
5dad00ebdc Problem: do not call poller->add_fd() with -1. Fixes #1558 2015-09-03 12:31:55 +02:00
Pieter Hintjens
23c55612e4 Merge pull request #1563 from zeromq/revert-1561-issue-1558
Revert "Solution: check return code of make_fdpair() with zmq_assert"
2015-09-03 12:15:42 +02:00
Constantin Rack
2159618b56 Revert "Solution: check return code of make_fdpair() with zmq_assert" 2015-09-03 10:56:26 +02:00
Constantin Rack
13db11c6ae Merge pull request #1562 from markuspf/fix-dragonfly-compile-2
Make DragonFly a first class citizen in terms of compilation
2015-09-03 10:19:42 +02:00
Markus Pfeiffer
ee984b1fe6 Make DragonFly a first class citizen in terms of compilation 2015-09-03 09:00:12 +01:00
Pieter Hintjens
32d7da1103 Merge pull request #1561 from c-rack/issue-1558
Solution: check return code of make_fdpair() with zmq_assert
2015-09-02 23:25:51 +02:00
Constantin Rack
bb9788867f Problem: return code of make_fdpair() is not checked. Fixes #1558 2015-09-02 23:19:27 +02:00
Constantin Rack
801f39dbef Merge pull request #1557 from hintjens/master
Cleaned up test case
2015-09-02 10:02:56 +02:00
Pieter Hintjens
1fdf8f78e4 Cleaned up test case 2015-09-02 09:55:19 +02:00
Constantin Rack
146be48495 Merge pull request #1553 from flub/master
Update zmq_inproc manpage for bind/connect order
2015-08-27 12:50:17 +02:00
Floris Bruynooghe
f86264db3e Update zmq_inproc manpage for bind/connect order
The order of zmq_bind() and zmq_connect() is no longer important
for the inproc transport since libzmq 4.0.  This updates this
in the zmq_inproc manpage.
2015-08-27 10:40:21 +01:00
Constantin Rack
0e1448a26f Merge pull request #1550 from xaqq/master
Problem: Identity frame from router has no metadata
2015-08-24 22:35:31 +02:00
Pieter Hintjens
bc513b6381 Merge pull request #1547 from jemc/master
Problem: Private/internal macros defined in public header.
2015-08-22 09:09:56 +02:00
Joe Eli McIlvain
33419425eb Problem: Private/internal macros defined in public header.
Solution: Move the macros to a private header.
2015-08-21 16:12:22 -07:00
Pieter Hintjens
735c02ed5e Merge pull request #1546 from reza-ebrahimi/master
rename ZMQ_UNUSED macro to LIBZMQ_UNUSED
2015-08-21 23:57:18 +02:00
reza.ebrahimi
63260d8701 rename ZMQ_UNUSED macro to LIBZMQ_UNUSED 2015-08-22 00:31:25 +04:30
Constantin Rack
b07b1e270e Merge pull request #1545 from ricnewton/master
Fix zmq crash when calling shutdown with a pending inproc socket connect
2015-08-21 11:25:45 +02:00
Richard Newton
096007c574 Fix zmq crash when calling shutdown with a pending inproc socket connect 2015-08-21 10:06:54 +01:00
Constantin Rack
4e5843b8ff Merge pull request #1543 from csiro-workspace/master
Set signaler_port to 0 which allows the OS to find a free port
2015-08-21 08:12:09 +02:00
Matt Bolger
7e09306cb3 -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
2015-08-21 13:45:59 +10:00
Constantin Rack
ec98916e82 Merge pull request #1541 from jemc/master
Problem: Source files contain mixed tabs and spaces.
2015-08-20 16:54:03 +02:00
Joe Eli McIlvain
61217a2686 Problem: Source files contain mixed tabs and spaces.
Solution: Convert to spaces and remove trailing whitespace in these files.
2015-08-20 07:46:34 -07:00
Richard Newton
6aa5c20b3d Merge pull request #1540 from djelenc/fix_failing_tests
Fixes failing tests regarding XPUB sockets.
2015-08-20 14:44:45 +01:00
David Jelenc
1240d7ac83 Fixes failing tests regarding XPUB sockets.
Fixes tests that were introduced in a previous pull request. See
https://github.com/zeromq/libzmq/pull/1539#issuecomment-132968987
2015-08-20 15:32:23 +02:00
Constantin Rack
391bc12d17 Merge pull request #1539 from djelenc/issue1116
Addresses zeromq/libzmq#1116.
2015-08-20 12:34:19 +02:00
David Jelenc
b9634e11a3 Addresses zeromq/libzmq#1116.
This patch  adds a new member of type deque to the
xpub class that contains pointers to metadata_t.
This deque is then used (alongside pending_data
and pending_flags) to preserve metadata when
copying messages.
2015-08-20 12:09:56 +02:00
Kapp Arnaud
370b8c9bb1 Problem: Identity frame from router has no metadata
The routing id (identity) frame return when reading from
a router doesn't have the same metadata as the "real"
message that follows.
For example, The ZAP "User-Id" property is missing.

This patch attach the "data message"'s metadata
to the "identity message" when it is read from the router.
2015-08-20 01:15:18 +02:00
Constantin Rack
3f326b10d6 Merge pull request #1536 from bluca/ci-osx-missing-dependency
CI run on OSX needs binutils
2015-08-17 18:17:20 +02:00
Constantin Rack
709a1e9a2d Merge pull request #1535 from somdoron/master
problem: trying to support polling on thread safe sockets with zmq_poll failed
2015-08-17 18:11:52 +02:00
Luca Boccassi
0c4032b5af CI run on OSX needs binutils
OSX does not ship with binutils, need to install it before the script
run via brew in order to be able to use greadelf, needed by the
qt-android CI script.
2015-08-17 17:06:56 +01:00
somdoron
4da5ff6a7d revert to original zmq_polland creating zmq_pollfd_poll for polling on pollfd 2015-08-17 18:57:47 +03:00
Constantin Rack
a96f16e3fa Merge pull request #1534 from somdoron/master
problem: new poller field in zmq_pollitem_t is changing the api
2015-08-17 13:40:26 +02:00
somdoron
d83b045347 rename poller to pollfd 2015-08-17 14:20:49 +03:00
Pieter Hintjens
7d42aac0c5 Merge pull request #1533 from c-rack/fix-tests
Problem: tests fail after PR #1531
2015-08-17 13:17:53 +02:00
Constantin Rack
34fe5eaf26 Solution: explicitly set u.base.metadata to null 2015-08-17 12:41:27 +02:00
somdoron
5bae6911af remove poller field, using fd instead 2015-08-17 11:56:23 +03:00
Constantin Rack
87e7ed054b Merge pull request #1531 from reza-ebrahimi/master
apply a change to LIBZMQ_DELETE macro (related to issue #1524)
2015-08-16 22:54:01 +02:00
reza.ebrahimi
7058c54672 apply a change to LIBZMQ_DELETE macro (related to issue #1524) 2015-08-17 01:00:55 +04:30
Constantin Rack
6d9eb184b5 Merge pull request #1530 from reza-ebrahimi/master
define a macro for heap object deletion in a unified manner (related …
2015-08-16 22:21:19 +02:00
reza.ebrahimi
1621c25ef0 define a macro for heap object deletion in a unified manner (related to issue #1524) 2015-08-17 00:35:11 +04:30
Constantin Rack
9bf88bcc03 Merge pull request #1529 from bluca/container
Container-based CI build
2015-08-16 21:32:39 +02:00
Luca Boccassi
1ab4667412 Set -x in ci_build.sh to show commands in log 2015-08-16 20:20:59 +01:00
Luca Boccassi
f6b0eaddb5 Set sudo: false to force container build 2015-08-16 20:20:59 +01:00
Luca Boccassi
1afc30a6c4 CI build/install in local directory 2015-08-16 20:20:59 +01:00
Constantin Rack
9ebd54a9e5 Merge pull request #1528 from bluca/fix-travis-check
CI build does not fail when tests fail. Fix #1527
2015-08-16 17:45:57 +02:00
Luca Boccassi
f4e9e6f062 CI build does not fail when tests fail. Fix #1527 2015-08-16 16:41:17 +01:00
taotetek
eb1d72f81d Merge pull request #1526 from somdoron/master
problem: new field is breaking existing code
2015-08-16 11:09:28 -04:00
somdoron
9d829f72f4 moving new poller field to the end of the struct 2015-08-16 18:00:32 +03:00
Constantin Rack
e74e36def1 Merge pull request #1525 from somdoron/master
problem: user cannot poll on thread safe sockets
2015-08-16 13:10:16 +02:00
somdoron
6eddbd98bc polling on thread safe sockets 2015-08-16 13:57:28 +03:00
somdoron
1653d3c093 add new tests to gitignore 2015-08-16 13:57:28 +03:00
somdoron
1aaa893e02 add tests for polling on thread safe sockets 2015-08-16 13:57:28 +03:00
somdoron
a63818904d add methods to handle poller 2015-08-16 13:57:28 +03:00
somdoron
34968771ca add an option to check if the socket is thread safe 2015-08-16 11:50:50 +03:00
Constantin Rack
de018e8766 Merge pull request #1522 from reza-ebrahimi/master
fixed issue with ticket #1517 (wrong lib output name in MSVC CMake bu…
2015-08-14 16:13:41 +02:00
reza.ebrahimi
a50834cbec fixed issue with ticket #1517 (wrong lib output name in MSVC CMake build) and apply some improvements in CMake build system 2015-08-14 18:04:54 +04:30
Constantin Rack
eb2eec646f Merge pull request #1521 from reza-ebrahimi/master
changing some camelCase variable names to snake_case in previous commit
2015-08-14 14:42:54 +02:00
reza.ebrahimi
8e6ef4616e changing some camelCase variable names to snake_case in previous commit 2015-08-14 16:56:07 +04:30
Constantin Rack
003ae1bfc6 Merge pull request #1520 from reza-ebrahimi/master
remove unnecessary multiple WSAGetLastError() calls
2015-08-14 14:14:04 +02:00
reza.ebrahimi
d7b74d1f57 remove unnecessary multiple WSAGetLastError() calls 2015-08-14 16:29:18 +04:30
Constantin Rack
6d217aa919 Merge pull request #1519 from reza-ebrahimi/master
place a ZMQ_UNUSED macro and replace all unused variables with ZMQ_UNUSED macro
2015-08-14 13:28:53 +02:00
reza.ebrahimi
bff2284a50 place a ZMQ_UNUSED macro and replace all unused variables with ZMQ_UNUSED macro 2015-08-14 15:40:39 +04:30
Constantin Rack
bf27d58b7a Merge pull request #1518 from sappo/master
Problem: Missing src/ prefix for libzmq library in Makefile.am ...
2015-08-13 08:51:45 +02:00
sappo
8bf4d1eaaf Problem: Missing src/ prefix for libzmq library in Makefile.am for test_getsockopt_memset
Solution: Add prefix to fix test compilation
2015-08-13 07:13:00 +02:00
Constantin Rack
effc26c695 Merge pull request #1476 from hintjens/master
Problem: lack test case for large stream messages
2015-08-12 10:03:45 +02:00
Constantin Rack
08c2a9274e Merge pull request #1514 from rikvdh/master
Merge fix for zeromq/zeromq4-1#52, getsockopt ZMQ_RCVMORE now resets all bits
2015-08-11 23:30:59 +02:00
Constantin Rack
de55e3a355 Merge pull request #1515 from rikvdh/test-proxy-return
Check proxy return values in tests
2015-08-11 23:30:22 +02:00
Rik van der Heijden
5485d6e371 Check proxy return values in tests 2015-08-11 21:44:41 +02:00
Rik van der Heijden
c68e9a39bf Merge fix for zeromq/zeromq4-1#52, getsockopt ZMQ_RCVMORE now resets all bits 2015-08-11 21:37:50 +02:00
Pieter Hintjens
fd9bd1b2a5 Problem: broke Cmake build 2015-08-11 19:35:48 +02:00
Pieter Hintjens
5d5cdac161 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
2015-08-11 19:34:25 +02:00
Pieter Hintjens
2b45e38b7b Problem: documentation for ZMQ_CTX_BLOCKY is wrong
Solution: fix it. Default is true, not false.
2015-08-11 19:34:25 +02:00
Pieter Hintjens
11fba2b813 Fixed compile errors in test_stream 2015-08-11 19:34:25 +02:00
Pieter Hintjens
92c4decb69 Problem: lack test case for large stream messages
Solution: added to test_stream.cpp
2015-08-11 19:34:25 +02:00
Constantin Rack
b791031423 Merge pull request #1512 from pijyoi/retransmit_fix
fix: ZMQ_TCP_RETRANSMIT_TIMEOUT not applied to bind socket
2015-08-07 10:02:52 +02:00
KIU Shueng Chuan
e129640471 fix: ZMQ_TCP_RETRANSMIT_TIMEOUT not applied to bind socket 2015-08-07 06:43:31 +08:00
Constantin Rack
84a93d4251 Merge pull request #1511 from sorenh/linger_fix
Avoid terminating connections prematurely
2015-08-06 20:45:45 +02:00
Soren Hansen
abc845d1af 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.
2015-08-06 20:09:37 +02:00
Richard Newton
ba6e1337a3 Merge pull request #1510 from pijyoi/retransmit_timeout
add ZMQ_TCP_RETRANSMIT_TIMEOUT socket option
2015-08-06 17:26:13 +01:00
KIU Shueng Chuan
c7f2cdd699 fix: Windows setsockopt needs char* cast 2015-08-07 00:05:13 +08:00
KIU Shueng Chuan
ca9215de1e add ZMQ_TCP_RETRANSMIT_TIMEOUT socket option 2015-08-06 23:36:27 +08:00
Constantin Rack
064c2e0836 Merge pull request #1508 from pijyoi/connect_timeout
add ZMQ_CONNECT_TIMEOUT option
2015-08-04 16:54:56 +02:00
KIU Shueng Chuan
c9971e08a0 write man pages 2015-08-04 22:17:02 +08:00
KIU Shueng Chuan
eeb697b5ac add connect timeout logic 2015-08-04 22:17:02 +08:00
KIU Shueng Chuan
c0ca2be642 add ZMQ_CONNECT_TIMEOUT socket option 2015-08-04 22:17:02 +08:00
KIU Shueng Chuan
4a0bde8130 rename timer_started to reconnect_timer_started 2015-08-04 22:17:02 +08:00
KAPP Arnaud
5724b55f7b Merge pull request #1507 from pijyoi/fixdoc
ZMQ_TCP_KEEPALIVE_IDLE doc wrongly mentions TCP_KEEPCNT
2015-08-04 15:52:53 +02:00
KIU Shueng Chuan
2d9c7f3a1f ZMQ_TCP_KEEPALIVE_IDLE doc wrongly mentions TCP_KEEPCNT
was fixed in zmq_setsockopt.txt but not in zmq_getsockopt.txt
2015-08-04 21:43:44 +08:00
Richard Newton
d65dab2039 Merge pull request #1504 from bluca/travis-file-limit
Increase file limit in travis config
2015-08-02 19:22:53 +01:00
Luca Boccassi
85da2ea42f Increase file limit in travis config
Test cases occasionally fail, especially on OSX, due to socket limit.
Part of fix for #1502
2015-08-02 19:20:34 +01:00
Constantin Rack
23655c5c56 Merge pull request #1503 from bluca/travis-ci-osx
Travis ci osx
2015-08-02 20:08:34 +02:00
Luca Boccassi
270a1ac577 Add OSX build to travis config. Fixes #1502 2015-08-02 18:59:34 +01:00
Luca Boccassi
20ba661019 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:38:35 +01:00
Luca Boccassi
40e2befbbe Update NDK version to r10e, OSX support 2015-08-02 18:38:35 +01:00
Luca Boccassi
102d1b14d0 Check for [g]readelf availability in qt-android helper
readelf is not available on OSX, greadelf is available on homebrew
2015-08-02 18:38:35 +01:00
Richard Newton
57ef59352b Merge pull request #1501 from jemc/fix/issue-1500
Remove type-pun in zmq.cpp to resolve issue #1500.
2015-08-02 16:35:10 +01:00
Joe Eli McIlvain
438b5207f6 Remove type-pun in zmq.cpp to resolve issue #1500. 2015-08-02 08:27:07 -07:00
Mário Kašuba
7604e1f7d5 Merge branch 'master' of github.com:zeromq/libzmq 2015-08-02 04:56:55 +02:00
Constantin Rack
67640557de Merge pull request #1499 from jemc/docfix/setsockopt
Documentation fixes for socket options.
2015-08-01 18:41:44 +02:00
Joe Eli McIlvain
6d0cea54aa Fix alphabetical order of non-deprecated setsockopt docs. 2015-07-31 22:37:36 -07:00
Joe Eli McIlvain
94c579a6c0 Fix title of docs for ZMQ_XPUB_WELCOME_MSG socket option. 2015-07-31 22:36:57 -07:00
Constantin Rack
7b5bf4aefe Merge pull request #1498 from pijyoi/master
ZMQ_TCP_KEEPALIVE_IDLE doc wrongly says it overrides TCP_KEEPCNT
2015-08-01 00:35:41 +02:00
KIU Shueng Chuan
d9f32611ad ZMQ_TCP_KEEPALIVE_IDLE doc wrongly says it overrides TCP_KEEPCNT 2015-08-01 06:29:06 +08:00
Joe Eli McIlvain
2d8b1a78b3 Merge pull request #1497 from bluca/fix-autogen-libtool-detection
Check for libtoolize instead of libtool on Linux
2015-07-30 16:55:35 -07:00
Luca Boccassi
89fa904b2d Check for libtoolize instead of libtool on Linux
autogen.sh has a check for the libtool binary as a mean to
check if libtool is available. But distributions like Debian and
Ubuntu are splitting the libtool package, and the libtool binary is now
in a separate package. What autoconf actually need is not the libtool
binary, but libtoolize and other macro files. So check for libtoolize
instead. On the other hand, OSX only ships libtool, not libtoolize,
and uses a pre-generated libtool script to build. So check for
libtoolize first and then for libtool, and fail if neither can be
found.
2015-07-31 00:47:51 +01:00
Pieter Hintjens
a656b399cc Merge pull request #1496 from brian-peloton/macro-to-disable-test-timeout
Add a way to disable libzmq's internal test timeout.
2015-07-28 22:57:58 +02:00
Pieter Hintjens
94b6fca406 Merge pull request #1495 from brian-peloton/fix-test-flakiness
Increase sleep in test to fix flakiness under CPU load.
2015-07-28 22:57:46 +02:00
Pieter Hintjens
5dee46052d Merge pull request #1494 from brian-peloton/fix-partial-recv-in-test
Retry recv if it only returns part of a message during tests.
2015-07-28 22:57:35 +02:00
Pieter Hintjens
4152023854 Merge pull request #1493 from brian-peloton/fix-other-test-flakiness
Fix test flakiness.
2015-07-28 22:57:22 +02:00
Pieter Hintjens
6dfe8f20e2 Merge pull request #1492 from brian-peloton/fix-memory-leak
Fix a documented memory leak.
2015-07-28 22:57:11 +02:00
Constantin Rack
80adc135c7 Merge pull request #1491 from brian-peloton/fix-eventfd-under-load
Fix eventfd read handling under heavy load.
2015-07-28 22:56:36 +02:00
Brian Silverman
c4c5135db6 Retry recv if it only returns part of a message during tests.
Under linux 3.16.0-4-amd64, I was getting occasional test failures
before fixing this.
2015-07-28 13:48:48 -07:00
Brian Silverman
62a0e45089 Fix eventfd read handling under heavy load.
I had the assertion below fail occasionally when running the libzmq
tests under heavy CPU load on linux 3.16.0-4-amd64.
2015-07-28 13:48:36 -07:00
Brian Silverman
e449d7bfbd Fix test flakiness.
I'm pretty sure this is an issue with the test being too picky and not a
bug, but the behavior in this situation is not well documented.
2015-07-28 13:48:23 -07:00
Brian Silverman
97969808f6 Fix a documented memory leak.
Despite the old comments, re-initing the msg_t leaks a refcount to
metadata in some situations.

v1_decoder looks like it isn't tested any more, but it seems like a good
idea to fix it because it has the exact same piece of buggy code
v2_decoder does.
2015-07-28 13:48:13 -07:00
Brian Silverman
f86bded783 Increase sleep in test to fix flakiness under CPU load. 2015-07-28 13:47:56 -07:00
Brian Silverman
cb0491ca18 Add a way to disable libzmq's internal test timeout.
It's nice to be able to disable libzmq's internal timeout when there's
another timeout in the test runner being used which gives nicer error
messages.
2015-07-28 13:47:19 -07:00
Joe Eli McIlvain
7b2e37dc90 Merge pull request #1490 from evoskuil/master
Problem: VS builds missing files, have warnings.
2015-07-26 21:46:44 -07:00
evoskuil
81aa6f45a4 Style and explicitness. 2015-07-26 17:37:38 -07:00
evoskuil
6f0efc092c Make lossy cast explicit. 2015-07-26 17:37:28 -07:00
evoskuil
342c417f9d Add decoder_allocators to VS builds. 2015-07-26 17:37:18 -07:00
Constantin Rack
0917eceb6d Merge pull request #1489 from pijyoi/fix_1488
fix #1488 Heap buffer overflow in decoder
2015-07-25 11:53:56 +02:00
KIU Shueng Chuan
2182bc963d check for potential unsigned integer wraparound before adding 2015-07-25 17:46:46 +08:00
Pieter Hintjens
7701a8f936 Merge pull request #1487 from pijyoi/stream_notify
don't break STREAM socket ABI from 4.1.x to 4.2.0
2015-07-24 00:11:23 +02:00
KIU Shueng Chuan
fd51b0e508 update test that relied on connect notifications to be disabled 2015-07-24 05:39:47 +08:00
KIU Shueng Chuan
3e7d737360 change ZMQ_STREAM_NOTIFY to default to 1 2015-07-24 05:21:53 +08:00
KIU Shueng Chuan
518b939f31 make ZMQ_STREAM_NOTIFY also control disconnect notificatons 2015-07-24 05:21:53 +08:00
Pieter Hintjens
588e0d2d86 Merge pull request #1486 from jimenezrick/fix-1478
Fix 1478: receive unsubscriptions in XPUB when verbose
2015-07-23 13:07:01 +02:00
Ricardo Catalinas Jiménez
ec5592db1f Fix 1478: receive unsubscriptions in XPUB when verbose
Fixes not receiving unsubscription messages in XPUB socket with
ZMQ_XPUB_VERBOSE and using a XSUB-XPUB proxy in front.

This adds two modifications:

- It adds a new flag, ZMQ_XPUB_VERBOSE_UNSUBSCRIBE, to enable verbose
  unsubscription messages, necessary when using a XSUB/XPUB proxy.

- It adds a boolean switch to zmq::mtrie_t::rm () to control if the
  callback is invoked every time or only in the last removal. Necessary
  when a pipe is terminated and the verbose mode for unsubscriptions is
  enabled.
2015-07-23 12:02:34 +01:00
KAPP Arnaud
305c07583d Merge pull request #1485 from ricnewton/master
Fix windows build
2015-07-23 10:14:57 +02:00
Richard Newton
91877a22d7 Fix windows build 2015-07-23 08:49:03 +01:00
Richard Newton
a4509d8f88 Merge pull request #1484 from pijyoi/fixsmash
fix #1447 Segfault or Abort after PR #1441
2015-07-23 08:26:15 +01:00
Joe Eli McIlvain
93218a60ae Merge pull request #1483 from ktf/master
Fix compilation on mac.
2015-07-22 12:58:35 -07:00
Giulio Eulisse
e2be0d25bd Fix compilation on mac. 2015-07-22 21:31:48 +02:00
Joe Eli McIlvain
5fead473a4 Merge pull request #1482 from brian-peloton/master
Fix memory leak when creating a socket fails.
2015-07-22 11:39:39 -07:00
Brian Silverman
773a06fc23 Fix memory leak when creating a socket fails.
Previously, AddressSanitizer flagged leaks when running
tests/test_many_sockets.cpp.
2015-07-22 11:18:48 -07:00
KIU Shueng Chuan
708353a1b9 advance refcnt only if it was used 2015-07-22 21:19:22 +08:00
Joe Eli McIlvain
c05a475bf7 Merge pull request #1481 from brian-peloton/master
Fix several missing msg_t::close calls.
2015-07-21 20:45:31 -07:00
Brian Silverman
18791f2bfb Fix several missing msg_t::close calls.
I traced memory leaks found using AddressSanitizer down to these.
2015-07-21 19:42:20 -07:00
Constantin Rack
3f70aca749 Merge pull request #1480 from brian-peloton/master
Fix test_proxy hanging occasionally by setting ZMQ_LINGER to 0.
2015-07-21 08:04:54 +02:00
Brian Silverman
a88524d388 Fix test_proxy hanging occasionally by setting ZMQ_LINGER to 0. 2015-07-20 19:41:23 -07:00
Joe Eli McIlvain
b71f720cdc Merge pull request #1479 from jens-auer/issue1477
Fixed #1477  corruption in "zero-copy" raw_decoder for payloads large…
2015-07-20 16:39:53 -04:00
Jens Auer
6b9b13be6c Fixed whitespace error. 2015-07-20 22:34:22 +02:00
Jens Auer
23797120ff Fixed #1477 corruption in "zero-copy" raw_decoder for payloads larger than 8192 bytes #1477
Fixed wrong message::init arguments.
2015-07-20 22:22:13 +02:00
Pieter Hintjens
15e35c52e7 Merge pull request #1475 from jimenezrick/fix-doc-setsockopt
Fix doc formatting issues in zmq_setsockopt page
2015-07-19 14:19:57 +02:00
Ricardo Catalinas Jiménez
7030bc429a Fix doc formatting issues in zmq_setsockopt page 2015-07-19 12:20:45 +01:00
Pieter Hintjens
6653775a31 Merge pull request #1474 from leonarf/patch-1
THREAD PRIORITY option documentation
2015-07-16 12:51:56 +02:00
leonarf
4a5998382c THREAD PRIORITY option documentation
Added documentation about context's options ZMQ_THREAD_SCHED_POLICY and ZMQ_THREAD_PRIORITY
2015-07-16 08:59:19 +02:00
Constantin Rack
311f4d00e4 Merge pull request #1472 from reunanen/allow-explicitly-setting-buf-sizes-to-0
Allow explicitly setting buf sizes to 0
2015-07-08 11:20:45 +02:00
Juha Reunanen
7362f3af0f update documentation regarding the rcvbuf parameter 2015-07-08 11:59:47 +03:00
Juha Reunanen
8096990e45 update documentation regarding the sndbuf and rcvbuf parameters 2015-07-08 11:41:42 +03:00
Juha Reunanen
f7b933f570 LIBZMQ-195 allow explicitly setting sndbuf and rcvbuf to 0 (see https://support.microsoft.com/en-us/kb/201213) 2015-07-08 11:31:34 +03:00
Pieter Hintjens
72a94881de Merge pull request #1471 from reunanen/retry-on-WSAENOBUFS
on Windows, handle WSAENOBUFS like WSAEWOULDBLOCK
2015-07-07 21:51:36 +02:00
Pieter Hintjens
adafdb8f4f Merge pull request #1470 from reunanen/check-msg-type-in-rm_refs
add message type sanity check in msg_t::rm_refs
2015-07-07 21:50:35 +02:00
Juha Reunanen
ccb13e1732 add sanity check in msg_t::rm_refs in order to avoid invalid memory access with u.zclmsg.refcnt 2015-07-07 19:31:46 +03:00
Juha Reunanen
8339271a3e LIBZMQ-195 on Windows, handle WSAENOBUFS like WSAEWOULDBLOCK 2015-07-07 13:38:10 +03:00
Pieter Hintjens
db898deb09 Merge pull request #1469 from tkoeppe/master
[decoder.hpp] Fix misspelled inclusion
2015-07-06 01:23:52 +02:00
Thomas Köppe
29b45489fa [decoder.hpp] Fix misspelled inclusion 2015-07-06 00:20:59 +01:00
Pieter Hintjens
d60040ddea Merge pull request #1468 from tkoeppe/master
[decoder*] Style fixes for consistency
2015-07-06 01:12:58 +02:00
Thomas Köppe
5b4b8a063b [decoder*] Style fixes for consistency 2015-07-06 00:01:52 +01:00
Pieter Hintjens
e83bad14cd Merge pull request #1467 from jens-auer/upstream
Addressed comments from T. Köppe
2015-07-06 00:06:54 +02:00
Jens Auer
ef365151ca - Replaced C-style casts with C++-casts
- Replaced stdlib.h with cstdlib
- Made single-argument constructors explicit
2015-07-05 23:19:41 +02:00
Pieter Hintjens
f541ac9612 Merge pull request #1466 from jens-auer/upstream
"zero-copy" raw_decoder
2015-07-05 16:18:04 +02:00
Jens Auer
3679793601 "zero-copy" raw_decoder
A memcpy is eliminated when receiving data on a ZMQ_STREAM socket. Instead
of receiving into a static buffer and then copying the data into the
buffer malloced in msg_t::init_size, the raw_decoder allocates the memory
for together with the reference-counter and creates a msg_t object
on top of that memory. This saves the memcpy operation.

For small messages, data is still copied and the receive buffer is reused.
2015-07-05 16:05:46 +02:00
Joe Eli McIlvain
d83220e92e Merge pull request #1465 from tkoeppe/master
Clean-up: Rename internal macros consistently.
2015-07-02 12:59:39 -04:00
Thomas Köppe
14d69a312d Clean-up: Rename internal macros consistently. 2015-07-02 17:41:09 +01:00
Pieter Hintjens
6059e8eea7 Merge pull request #1461 from tkoeppe/master
Add C++11 atomic support also to atomic_counter_t.
2015-07-01 18:30:49 +02:00
Thomas Köppe
ddb82a546b atomic_counter.hpp: clean up the clean-up 2015-07-01 09:55:43 +01:00
Thomas Köppe
26e3873f70 Add C++11 support to atomic_counter_t. 2015-07-01 09:55:25 +01:00
Pieter Hintjens
010f93b34c Merge pull request #1460 from tkoeppe/master
atomic_ptr.h: clean up the clean-up
2015-07-01 00:11:07 +02:00
Thomas Köppe
73e6a3808f atomic_ptr.h: clean up the clean-up 2015-06-30 22:57:13 +01:00
Pieter Hintjens
80b1e67e45 Merge pull request #1459 from tkoeppe/master
Add missing relaxed memory ordering.
2015-06-30 23:35:29 +02:00
Thomas Köppe
08f9bf589e Add missing relaxed memory ordering. 2015-06-30 22:26:35 +01:00
Pieter Hintjens
f448dcde35 Merge pull request #1458 from tkoeppe/master
Add support for <atomic> in C++11
2015-06-30 22:39:40 +02:00
Thomas Köppe
68f5926ec6 Add support for <atomic> in C++11 2015-06-30 20:57:38 +01:00
KAPP Arnaud
f3ef027e87 Merge pull request #1457 from calid/ignore-unbind-tests
ignore unbind tests
2015-06-30 10:56:52 +02:00
Dylan Cali
ee787664bb ignore unbind tests 2015-06-29 03:19:24 -05:00
Pieter Hintjens
818491e7ee Merge pull request #1455 from calid/update-gitignore
update gitignore with additional tests
2015-06-29 08:08:57 +02:00
Pieter Hintjens
9802dd5933 Merge pull request #1456 from calid/issue-949-tests
add tests for #949
2015-06-29 08:04:53 +02:00
Dylan Cali
0f208c122d be pedantic and call zmq_close in tests 2015-06-28 22:32:15 -05:00
Dylan Cali
d14f419743 another errant comment 2015-06-28 21:29:23 -05:00
Dylan Cali
6dac5092ad fix errant comments 2015-06-28 21:27:06 -05:00
Dylan Cali
a9fd750e1c add tests for #949 2015-06-28 21:23:25 -05:00
Dylan Cali
34129593f0 update gitignore with additional tests 2015-06-28 21:13:02 -05:00
Pieter Hintjens
6ab66ca51a Merge pull request #1451 from jbreams/heartbeat-defaults
Fix units and default values for heartbeats options
2015-06-26 20:31:46 +02:00
Jonathan Reams
e9a5bc8d1e Fix units and default values for heartbeats options
Set the ZMQ_HEARTBEAT_TIMEOUT to default to the value of
ZMQ_HEARTBEAT_IVL if it's not explicitly set.
Change the units of ZMQ_HEARTBEAT_TTL to milliseconds in the API
and round down to the nearest decisecond so that all the options
are using the same units.
Make the maximum heartbeat TTL match the spec (6553 seconds)
2015-06-26 14:25:58 -04:00
Pieter Hintjens
2e5435e38f Merge pull request #1449 from jbreams/heartbeats-docswindows
Add documentation for ZMTP heartbeats/fix test
2015-06-24 21:13:32 +02:00
Jonathan Reams
85417ba2fc Add documentation for ZMTP heartbeat socket options 2015-06-24 15:02:53 -04:00
Jonathan Reams
df0c7076bd Fix test_heartbeats compile in VS2013 2015-06-24 14:28:36 -04:00
Pieter Hintjens
3a27be3b6c Merge pull request #1448 from jbreams/heartbeats
Add ZMTP connection heartbeats
2015-06-24 19:42:41 +02:00
Jonathan Reams
cbb3b176a6 Add ZMTP heartbeats
This commit adds ZMTP connection heartbeats described in
http://rfc.zeromq.org/spec:37/ZMTP.
2015-06-24 13:24:53 -04:00
Constantin Rack
4b4e00bde0 Merge pull request #1446 from dnaeon/typo-fix
Typo fix
2015-06-23 10:47:31 +02:00
Marin Atanasov Nikolov
fa3b5d8b03 Typo fix 2015-06-23 14:45:51 +03:00
Richard Newton
f9d0dab630 Merge pull request #1445 from c-rack/fix-resolve-ipv6
Problem: zmq::socket_base_t::connect fails on tcp ipv6 address
2015-06-23 08:10:48 +01:00
Constantin Rack
15f9ee19cb Solution: allow brackets in tcp ipv6 address 2015-06-23 08:54:49 +02:00
Pieter Hintjens
d33fb6a2af Merge pull request #1441 from jens-auer/rebase3
Rebase3
2015-06-14 14:13:49 +02:00
Jens Auer
e70b5efa0b Reuse buffer when no messages depend on it. 2015-06-14 14:01:04 +02:00
Jens Auer
51cb57e2c9 Fixed wrong handling of shared messages
The shared reference count was not shared but copied. msg_t cannot
store the refcnt itsef but has to store a pointer to an externally
allocated (shared) refcnter. The changes to lmsg are reverted to
use content_t again. Howver, this introduces an allocation in v2_decoder
when creating the message which can be avoided. When allocating the reception
buffer, space is allocated for the maximum number of reference counts
(8192 / max_vsm_size = 8192/64 = 128 zmq:atomic_counter objects). This
increases the buffer by 128*sizeof(atomic_counter) = 128*4 = 512 bytes only.
When creating a message, the refcnt member is set to the address of one of the
pre-allocated atomic_counter_t objects. To do so, a new msg_t type zcmsg
is introduced because msg::copy must discriminate between the message types
when releasing memory.
2015-06-14 13:35:33 +02:00
Jens Auer
dfe1908008 Fixed wrong buffer end detection in v2_decoder.
zero-copy msg_t::init cannot be used when the message exceeds either
the buffer end or the last received byte. To detect this, the buffer
is now resized to the numnber of received bytes.
2015-06-14 13:35:23 +02:00
Constantin Rack
b3f2acf7d6 Merge pull request #1440 from xaqq/fix_solaris_build
Probably fix build issue on Solaris.
2015-06-13 22:20:23 +02:00
Kapp Arnaud
8ffd723271 Probably fix build issue on Solaris.
See #1220 recent comments. This change is untested yet seems
safe.
2015-06-13 22:08:14 +02:00
KAPP Arnaud
6d4d7a5820 Merge pull request #1439 from hintjens/master
Problem: 4.1 broke the ABI yet did not bump ABI number
2015-06-12 01:32:22 +02:00
Pieter Hintjens
6f1d1142d1 Problem: 4.1 broke the ABI yet did not bump ABI number
Solution: bump to ABI version 5
2015-06-11 23:53:23 +02:00
Pieter Hintjens
8fb5590ba8 Merge pull request #1437 from ricnewton/master
Fix windows build
2015-06-10 18:17:56 +02:00
Richard Newton
f696d0399c Fix tabbing 2015-06-10 16:47:23 +01:00
Richard Newton
8484e1606d Fix windows build 2015-06-10 16:43:59 +01:00
Pieter Hintjens
52191af60e Merge pull request #1435 from minrk/test-ffn
test zmq_msg custom free-function
2015-06-09 00:26:58 +02:00
Min RK
fdb7d68056 test zmq_msg custom free-function
new allocation caused reference counters to lose track on copy
2015-06-08 15:18:53 -07:00
Pieter Hintjens
426733469d Merge pull request #1433 from minrk/single-socket-proxy
don't check POLLOUT for single-socket proxies
2015-06-07 08:10:17 +02:00
Min RK
f34cc24bd7 test proxy with single REP socket 2015-06-06 21:05:55 -07:00
Min RK
158d77d63e don't check POLLOUT for single-socket proxies 2015-06-06 21:05:32 -07:00
Thomas Rodgers
d3bb450892 Merge pull request #1432 from xaqq/fix_init_order
Fix initialization order.
2015-06-06 20:06:07 -05:00
Kapp Arnaud
c35971a603 Fix initialization order.
Fixes #1431.
2015-06-07 02:21:32 +02:00
KAPP Arnaud
5cbd197d10 Merge pull request #1430 from junovitch/fix-man-install-without-doc-build
Enable install of man pages when BUILD_DOC is not set by shifting INS…
2015-06-06 04:23:58 +02:00
Jason Unovitch
45610c354d Enable install of man pages when BUILD_DOC is not set by shifting INSTALL_MAN outside of BUILD_DOC's if/endif 2015-06-05 21:43:39 -04:00
Pieter Hintjens
f4da5442ba Merge pull request #1427 from xaqq/doc-patch
Update documentation for zmq_setsockopt.
2015-06-05 22:15:44 +02:00
Kapp Arnaud
4ad9a5e570 Update documentation for zmq_setsockopt.
Pull request #1426 now allow for changing the watermark
after and connect() or a bind(). This patch reflect the
change in the documentation.

Also closes #1416.
2015-06-05 22:14:40 +02:00
Constantin Rack
c0cda2e699 Merge pull request #1426 from ricnewton/master
Allow changing of high water marks after connection is established
2015-06-05 20:34:21 +02:00
Richard Newton
dc949624e1 Handle infinite hwms properly 2015-06-05 19:06:36 +01:00
Richard Newton
15eecf4cf4 Update high water marking to allow changing high water mark after connection established. 2015-06-05 17:14:55 +01:00
KAPP Arnaud
a3b8f80fe5 Merge pull request #1425 from mipaaa/master
Fixed executable name in the usage string
2015-06-05 15:19:03 +02:00
Mipa
b0296bc66f Fixed executable name in the usage string 2015-06-05 16:01:42 +03:00
Constantin Rack
bc2f5f76f8 Merge pull request #1424 from ricnewton/master
Fix xpub test to set hwm before bind.
2015-06-05 13:48:20 +02:00
Richard Newton
dc105ffc78 Fix xpub test to set hwm before bind. 2015-06-05 12:19:48 +01:00
Pieter Hintjens
d4b11b0d17 Merge pull request #1423 from ricnewton/master
Fail ZMQ_SNDHWM and ZMQ_RCVHWM setsockopt if already connected.
2015-06-05 12:24:17 +02:00
Richard Newton
32770d2e60 Remove accidentally committed appveyor file. 2015-06-05 10:50:02 +01:00
Richard Newton
9f8b8af926 Fail ZMQ_SNDHWM and ZMQ_RCVHWM setsockopt if already connected. 2015-06-05 10:43:40 +01:00
Richard Newton
64e711eb50 Merge branch 'master' of https://github.com/zeromq/libzmq 2015-06-05 08:47:20 +01:00
Constantin Rack
383f67a5cc Merge pull request #1422 from hintjens/master
Problem: tests/test_socketopt_hwm fails and breaks CI
2015-06-05 00:00:50 +02:00
Pieter Hintjens
e37d715702 Problem: tests/test_socketopt_hwm fails and breaks CI
Solution: mark this as XFAIL
2015-06-04 23:57:50 +02:00
Richard Newton
1540737561 Merge branch 'master' of https://github.com/zeromq/libzmq 2015-06-04 08:24:05 +01:00
Pieter Hintjens
bfb0ac1cc4 Merge pull request #1418 from xaqq/setsockopt
Introduce a failing test against zmq_setsockpt().
2015-06-04 06:41:35 +02:00
Kapp Arnaud
fb960147ca Introduce a failing test against zmq_setsockpt().
Problem: zmq_setsockpt() returns success when changing the
HWM after a bind or connect() even though the call has no effect.

Solution: Introduce a failing test a reminder we need to patch it.
2015-06-04 01:38:45 +02:00
Pieter Hintjens
9e80f07a8d Merge pull request #1417 from jens-auer/zero_copy
Zero copy message receive in v2_decoder
2015-06-03 23:09:03 +02:00
Jens Auer
e9b403a7b1 zero-copy message receive
Construct messages from a reference-counted buffer allocated once
per receive instead of copying the data.
2015-06-03 23:03:14 +02:00
Jens Auer
611e96c701 Allocation-free msg::init_data
With a msg_t size of 64 bytes, it becomes possible to embedd the content_t's members
struct for large messages directly in the msg_t. This saves the dynamic allocation
of content_t obejcts when using msg_t::init_data.

content_t contains a zmq::atomic_counter_t object which is not a POD in C++98
and thus it cannot be used as a member of the union u. To bypass this, C++11
is used which has relaxed rules for POD and atomic_counter is a C++11-POD. An
alternative would have been to make atomic_counter a classical POD by removing
constructors and all private member functions, i.e. have a struct and free functions
to manipulate it.

A new msg_t::init function is added which decides to either to copy the data for size<64 bytes
or use msg_t::init_data to do zero-copy initialization.
2015-06-03 22:44:33 +02:00
KAPP Arnaud
03d6a7341b Merge pull request #1415 from hintjens/master
Fixes to README
2015-06-03 00:40:42 +02:00
Pieter Hintjens
3e330d6e2b Fixes to README 2015-06-02 23:44:12 +02:00
Pieter Hintjens
a07244cda2 Merge pull request #1414 from hintjens/master
Problem: source file headers are somewhat confusing about LGPLv3
2015-06-02 23:40:52 +02:00
Pieter Hintjens
8620c3e032 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:33:55 +02:00
Constantin Rack
1e10222b8f Merge pull request #1413 from malexzx/master
HPUX build and gmake check issues solution. Fixes #1412
2015-06-02 17:41:36 +02:00
ALEKSANDR MELNIKOV
1eb8e2a69f HPUX build and gmake check issues solution (#1412) 2015-06-02 20:17:15 +06:00
Constantin Rack
4676e6551f Merge pull request #1411 from jens-auer/address-sanitizer
Fixed out-of-bounds access when releasing socket handles.
2015-05-31 17:50:32 +02:00
Jens Auer
d337cf5a96 Fixed out-of-bounds access when releasing socket handles. 2015-05-31 17:42:26 +02:00
Constantin Rack
a146503d30 Merge pull request #1409 from rikvdh/master
Fix another degradation, CPU maxes out when POLLOUT is set
2015-05-27 14:50:24 +02:00
Rik van der Heijden
aa2e74c2a2 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:27:53 +02:00
Pieter Hintjens
d8077bb3da Merge pull request #1406 from rikvdh/master
Fix degradation from #1382, POLLOUT was tested but not requested
2015-05-24 22:58:46 +02:00
Rik van der Heijden
ae630cf3eb Fix degradation from #1382, POLLOUT was tested but not requested 2015-05-24 22:39:36 +02:00
Pieter Hintjens
099fd43836 Merge pull request #1405 from c-rack/fix-brackets
Problem: missing brackets
2015-05-23 23:20:29 +02:00
Constantin Rack
8a3296c1aa Solution: add missing brackets 2015-05-23 23:18:10 +02:00
Constantin Rack
f9315e1980 Merge pull request #1403 from dfons/master
doc/zmq_socket.txt: Remove note about ZMQ_PAIR being experimental.
2015-05-22 21:07:44 +02:00
Diego Fons
fcf7b22b92 doc/zmq_socket.txt: Remove note about ZMQ_PAIR being experimental. 2015-05-22 15:46:28 -03:00
Richard Newton
dfaa55fa7b Merge branch 'master' of https://github.com/zeromq/libzmq 2015-05-21 15:00:05 +01:00
Pieter Hintjens
f03a78bbfc Merge pull request #1401 from taotetek/master
Problem: libzmq has temp debug printf
2015-05-19 17:48:20 +02:00
Brian Knox
537626258f remove temp printf from stream_engine 2015-05-19 09:38:53 -04:00
Constantin Rack
d35473ecae Merge pull request #1398 from jacmet/pkgconfig-static-linking
libzmq: Fix pkg-config files for static linking
2015-05-13 08:34:51 +02:00
Peter Korsgaard
e89577d30c libzmq: Fix pkg-config files for static linking
Libzmq uses C++ standard library features, so users of it should link
against that as well when statically linking.

Add it to Libs.private so users using pkg-config automatically gets the
correct linker flags.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-05-13 08:01:34 +02:00
Pieter Hintjens
4c36c93a31 Merge pull request #1397 from danriegsecker/master
Some test fail to build targeting less that Windows Vista
2015-05-07 22:56:40 +02:00
Dan Riegsecker
f4f918ba73 Some test fail to build targeting less that Windows Vista
When targeting a version of Windows less than Windows Vista, the
security tests fail to build. Added a check for Windows version
and substituted inet_pton for inet_addr. Fixes libzmq issue #1396.
2015-05-07 16:52:37 -04:00
Constantin Rack
59add707cd Merge pull request #1395 from anton-sergeev/master
Add CMake option for perf-tools
2015-05-06 18:23:57 +02:00
Anton Sergeev
5f9b258295 Make CMake option for perf-tools
This allow disable making perf-tools in Release build type

Signed-off-by: Anton Sergeev <Anton.Sergeev@elecard.ru>
2015-05-06 21:25:26 +06:00
Pieter Hintjens
3699242c4e Merge pull request #1394 from BurningEnlightenment/master
REPLACE CMAKE MSVC VERSION SUFFIX VARIABLE
2015-05-05 22:05:55 +02:00
Henrik S. Gaßmann
f0a76318f4 REPLACE MSVC VERSION SUFFIX VARIABLE
Replace _zmq_COMPILER with CMAKE_VS_PLATFORM_TOOLSET; so the suffix can
be automagically generated for every MSVC compiler supported by cmake.
2015-05-05 21:39:50 +02:00
Pieter Hintjens
959ab527f4 Merge pull request #1391 from CommanderBubble/master
FD_SETSIZE Increase to 1024
2015-05-01 18:21:11 +02:00
Michael
1bfff06b8d Merge pull request #3 from CommanderBubble/FD-SETSIZE-update
FD_SETSIZE Increase to 1024
2015-05-02 01:17:56 +10:00
Michael
166a14c4a5 Update configure.ac 2015-05-02 01:13:33 +10:00
Michael
bd795d6f7a Update configure.ac 2015-05-02 01:12:22 +10:00
Michael
095741cd9c set FD_SETSIZE to 1024 on mingw
Sets FD_SETSIZE to 1024 under mingw systems, increasing it from the default of 64, and brings it into line with the previous limit for CMake builds on mingw.
2015-05-02 01:11:54 +10:00
Michael
235a1dbf7d Merge pull request #2 from zeromq/master
update to current master
2015-05-02 00:54:49 +10:00
Richard Newton
43a1192ca4 Merge pull request #1390 from hintjens/master
Problem: incomplete specs for test_proxy_terminate
2015-05-01 10:52:05 +01:00
Pieter Hintjens
74888769d6 Problem: incomplete specs for test_proxy_terminate
Solution: fixed this in Makefile.am
2015-05-01 11:31:45 +02:00
Pieter Hintjens
eead3bc661 Merge pull request #1388 from rikvdh/issue-1382
Fix for issue #1382
2015-05-01 11:18:56 +02:00
Rik van der Heijden
7b9e9b838d Issue #1382: Do not send data to backend when there are no listeners (+ tests) 2015-05-01 10:39:29 +02:00
Pieter Hintjens
e1e9fb3629 Merge pull request #1387 from c-rack/1386-libsodium-checkout
Solution: Build libsodium from latest master branch. Fixes 1386.
2015-04-28 14:02:54 +03:00
Constantin Rack
7e8ba0ecff Solution: Build libsodium from latest master branch. Fixes 1386. 2015-04-28 10:42:56 +02:00
Constantin Rack
3ec0e770b5 Merge pull request #1384 from hurtonm/master
Release memory on connection termination for pub, push sockets
2015-04-28 08:22:47 +02:00
Martin Hurton
2e06737bf4 pub: Don't delay pipe termination 2015-04-28 07:48:54 +02:00
Martin Hurton
09a65c5598 push: Don't delay pipe termination 2015-04-28 07:48:04 +02:00
Richard Newton
aabbe3f33a Merge pull request #1383 from somdoron/master
change minimum version to windows vista
2015-04-27 13:33:55 +01:00
somdoron
c2dcc80602 change minimum version to windows vista and implement dummy condition variable for lower versions 2015-04-26 09:16:01 +03:00
Pieter Hintjens
dbacc34238 Merge pull request #1379 from evoskuil/master
Problem: integer narrowing issues.
2015-04-22 08:45:19 +03:00
evoskuil
30bd7c481e Fix integer narrowing issues. 2015-04-21 22:26:32 -07:00
Constantin Rack
cd830dd203 Merge pull request #1378 from CommanderBubble/master
Allow configure to support mingw64
2015-04-21 14:15:14 +02:00
Michael
a53404f2f9 Merge pull request #1 from CommanderBubble/CommanderBubble-configure.ac-adds_mingw64_support
allow host_os to accept mingw64
2015-04-21 22:03:59 +10:00
Richard Newton
88ac63189c Merge pull request #1341 from hintjens/master
Problem: issue #1144, 1377
2015-04-20 12:28:54 +01:00
Pieter Hintjens
594e3dcceb 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-20 12:53:37 +02:00
Pieter Hintjens
0673cd4e69 Problem: test_disconnect_inproc sometimes fails
Solution: add settle pause after zmq_connect

Fixes #1340
2015-04-20 12:53:37 +02:00
Constantin Rack
9a4c4da265 Merge pull request #1375 from natano/configure_bitrig
Add Bitrig to OS detection in configure.ac.
2015-04-18 08:48:50 +02:00
Martin Natano
8957ad5edf Add Bitrig to OS detection in configure.ac. 2015-04-17 22:14:53 +02:00
Richard Newton
f9fe77f421 Merge branch 'master' of https://github.com/zeromq/libzmq 2015-04-16 15:00:32 +01:00
Michael
c9bdcfc584 allow host_os to accept mingw64
Changes the pattern for the host_os matches to *mingw* from *mingw32* to accept both mingw32 and mingw64 versions.
2015-04-16 00:40:32 +10:00
Constantin Rack
04a9d582fd Merge pull request #1374 from kreuzberger/master
Fix for issue #1287: ZMQ_XPUB_NODROP documentation
2015-04-14 18:36:45 +02:00
Jörg Kreuzberger
d4a5803495 Update zmq_setsockopt.txt
#1287
2015-04-14 18:32:06 +02:00
Jörg Kreuzberger
18b6e6803b Add documenation for ZMQ_XPUP_NODROP
fix for issue #1287
2015-04-14 18:30:27 +02:00
Richard Newton
a756eee30b Merge branch 'master' of https://github.com/zeromq/libzmq 2015-04-14 10:36:54 +01:00
Mário Kašuba
41d85f52d2 Merge branch 'master' of github.com:zeromq/libzmq 2015-03-17 21:26:34 +01:00
Mário Kašuba
89bf2af128 Add libsodium directory path hints for cmake 2015-03-17 21:26:24 +01:00
Constantin Rack
6b4d9bca0c Merge pull request #1370 from calid/unbind-enoent
doc: add ENOENT to list of zmq_unbind error codes
2015-03-15 14:14:20 +01:00
Dylan Cali
edc0640206 doc: add ENOENT to list of zmq_unbind error codes
Resolves zeromq/libzmq#1353
2015-03-15 08:07:13 -05:00
Constantin Rack
2d435eb692 Merge pull request #1369 from calid/ctx-term-vs-destroy
update zmq_ctx_term description for consistency
2015-03-15 12:53:26 +01:00
Dylan Cali
023505aced update zmq_ctx_term description for consistency
zmq_term and zmq_ctx_destroy are just aliases for zmq_ctx_term. that
being the case use 'terminate' in the description for all three so there
isn't any confusion about behavior.

also update the deprecates list in zmq_ctx_term to include
zmq_ctx_destroy.
2015-03-15 06:29:21 -05:00
Pieter Hintjens
4820d493b0 Merge pull request #1368 from calid/docfix-zmq-msg-init
doc: zmq_msg_init does not set errno
2015-03-15 09:51:40 +01:00
Dylan Cali
4c92fefe1b doc: zmq_msg_init does not set errno
In fact it always returns zero.
2015-03-15 02:12:02 -05:00
Constantin Rack
eb34533728 Merge pull request #1367 from evoskuil/master
Problem: wrong default VC rt lib for release dynamic exe.
2015-03-14 13:18:06 +01:00
evoskuil
1e27b364a4 Fix default VC rt lib for release dynamic exe. 2015-03-14 05:10:40 -07:00
Constantin Rack
6b06bc310f Merge pull request #1366 from xantares/patch-1
fix CMP0053 warning with cmake 3.1
2015-03-11 10:46:06 +01:00
xantares
032c5eda3d fix CMP0053 warning with cmake 3.1 2015-03-11 10:35:59 +01:00
Constantin Rack
ec4200a9d3 Merge pull request #1365 from xantares/master
fix cmake build system
2015-03-11 10:25:45 +01:00
xantares
0f24f675f5 set soversion without ZMQ_BUILD_FRAMEWORK 2015-03-11 09:15:40 +00:00
xantares
80044c9ed6 mutualize win32 flags 2015-03-11 09:10:23 +00:00
xantares
7dfa7b7a5d do not mix DLL_EXPORT & ZMQ_STATIC definitions 2015-03-11 09:03:21 +00:00
xantares
1d2b34dbe4 install *.txt in share/zmq 2015-03-11 08:51:59 +00:00
xantares
866e752b04 do not install sources 2015-03-11 08:50:39 +00:00
Constantin Rack
1a5ced9f47 Merge pull request #1361 from rodgert/master
Allow zmq_msg_gets checks to assert rather than segfault
2015-02-20 05:59:31 +01:00
Thomas Rodgers
d47980a6ed Allow zmq_msg_gets checks to assert rather than segfault 2015-02-19 20:28:10 -06:00
Pieter Hintjens
f053854e51 Merge pull request #1360 from hurtonm/master
Adjust number of sent messages on hiccups
2015-02-19 22:09:58 +01:00
Martin Hurton
5ed6ac60e2 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-19 21:47:26 +01:00
Constantin Rack
b7e52755e4 Merge pull request #1359 from rodgert/master
resolve #1347 addresses issue of no metadata on identity frame
2015-02-19 20:33:32 +01:00
Thomas Rodgers
700f7bfede resolve #1347 addresses issue of no metadata on identity frame 2015-02-19 13:22:32 -06:00
Pieter Hintjens
1e6e5b1c0a Merge pull request #1357 from rodgert/master
Support limited metadata for STREAM sockets
2015-02-19 09:25:53 +01:00
Thomas Rodgers
4b948b1f3b Code cleanup 2015-02-18 21:24:57 -06:00
Thomas Rodgers
cf0804bb7c Remove unused include 2015-02-18 21:10:50 -06:00
Thomas Rodgers
8daa74dc77 Fix comment from prior commit 2015-02-18 13:05:05 -06:00
Thomas Rodgers
fefe0d42fa Update gitignore to include recently added tests for server sockets 2015-02-18 12:30:05 -06:00
Thomas Rodgers
638ddeb404 resolve #1347 Support limited metadata for STREAM sockets 2015-02-18 12:28:58 -06:00
Joe Eli McIlvain
8a526874ab Merge pull request #1356 from rodgert/master
Fix autogen.sh warning about trailing whitespace
2015-02-18 09:07:58 -09:00
Thomas Rodgers
39338e2fe4 Fix autogen.sh warning about trailing whitespace 2015-02-18 12:02:24 -06:00
Mário Kašuba
2ae7ae698a Merge branch 'master' of github.com:zeromq/libzmq 2015-02-15 16:58:44 +01:00
Pieter Hintjens
fe2ce47a44 Merge pull request #1355 from evoskuil/master
Fix error return for clock_gettime.
2015-02-14 08:18:46 +01:00
evoskuil
bc53d710ff Fix error return for clock_gettime. 2015-02-13 23:10:39 -08:00
Pieter Hintjens
759c3e314c Merge pull request #1354 from evoskuil/master
Problem: build break in OSX, VS2010, VS2012
2015-02-14 07:59:24 +01:00
evoskuil
a8f11b3c3d Add clock_gettime implementation for OSX. 2015-02-13 22:50:28 -08:00
evoskuil
6630f19686 Apply VS2013 changes to VS2010 and VS2012. 2015-02-13 15:08:17 -08:00
Pieter Hintjens
55886b8b46 Merge pull request #1352 from somdoron/master
thread safety bug - lock when sending
2015-02-13 09:10:18 +01:00
somdoron
deaa89656f thread safety bug - lock when sending 2015-02-13 09:30:29 +02:00
Pieter Hintjens
cac4d7aa10 Merge pull request #1350 from zeromq/revert-1345-bzimmerman_CMAKE
Revert "Bzimmerman cmake"
2015-02-12 20:35:29 +01:00
Doron Somech
a4de3df73e Revert "Bzimmerman cmake" 2015-02-12 21:29:09 +02:00
Pieter Hintjens
5d42fe1bf7 Merge pull request #1349 from somdoron/master
problem: client and server sockets are not thread safe
2015-02-12 20:06:08 +01:00
somdoron
5a897f7509 allocate reaper_signal only when needed 2015-02-12 20:42:31 +02:00
somdoron
bbdd8662ba thread safety - supporting windows 2015-02-12 18:54:23 +02:00
somdoron
6749c9b3eb thread safety 2015-02-12 18:54:22 +02:00
Pieter Hintjens
88c6e696ab Merge pull request #1348 from evoskuil/master
Problem: VS projects missing client/server.
2015-02-11 23:02:08 +01:00
evoskuil
6bf1609a10 Update VS DLL and NuGet versioning to 4.2.0. 2015-02-11 13:23:58 -08:00
evoskuil
91eead1d20 Add client.cpp/hpp and server.cpp/hpp to VS projects. 2015-02-11 13:17:13 -08:00
evoskuil
2fd2fca531 Make implicit cast explicit. 2015-02-11 13:10:55 -08:00
evoskuil
6724f41427 Fix forcing to bool. 2015-02-11 13:09:25 -08:00
Pieter Hintjens
405a749525 Merge pull request #1345 from QbaseLLC/bzimmerman_CMAKE
Bzimmerman cmake
2015-02-09 22:38:28 +01:00
Bryan Zimmerman
c743bd95b4 changed test tools to compile statically 2015-02-09 13:32:29 -05:00
Bryan Zimmerman
caf4276710 removed packaged export
added version to builds
other cleanup
2015-02-09 10:47:05 -05:00
Bryan Zimmerman
fef20b1c83 Merge remote-tracking branch 'remotes/origin/HEAD' into bzimmerman_CMAKE 2015-02-09 08:46:00 -05:00
Mário Kašuba
eacbd0c5df Merge branch 'master' of github.com:zeromq/libzmq 2015-02-08 16:56:32 +01:00
Constantin Rack
c9418db684 Merge pull request #1344 from febeling/cond-build-tools
Problem: Cross compile for iOS isn't working for auxiliary tools
2015-02-07 16:17:50 +01:00
Florian Ebeling
54b56210ad Problem: curve keygen build cannot be switched off 2015-02-07 15:36:14 +01:00
Florian Ebeling
2d59594a3a Problem: perf tools build cannot be switched off 2015-02-07 15:36:14 +01:00
Telford Berkey
49f58c0021 Merge remote-tracking branch 'remotes/upstream/master' 2015-02-06 11:27:46 -05:00
Telford Berkey
702008666c Adding Bryan's changes. 2015-02-06 11:27:11 -05:00
Bryan Zimmerman
2bb72add49 update to use new find_program syntax 2015-02-06 11:03:14 -05:00
Bryan Zimmerman
552c13616e replace check_library and check_include with find_file and find_library 2015-02-06 10:42:23 -05:00
Pieter Hintjens
e05c805688 Merge pull request #1342 from chickenkiller/master
acinclude.m4: make kernel-specific flags cacheable
2015-02-06 15:22:12 +01:00
Lionel Orry
9daf6dd7c4 acinclude.m4: make kernel-specific flags cacheable
Specifically when cross-compiling, one can be willing to force these
variable values using the environment of a config.cache file. This
commit makes this possible.

The affected variables are:

* libzmq_cv_sock_cloexec
* libzmq_cv_so_keepalive
* libzmq_cv_tcp_keepcnt
* libzmq_cv_tcp_keepidle
* libzmq_cv_tcp_keepintvl
* libzmq_cv_tcp_keepalive

Signed-off-by: Lionel Orry <lionel.orry@gmail.com>
2015-02-06 15:11:07 +01:00
Telford Berkey
ade54d72e7 Merge remote-tracking branch 'remotes/upstream/master' 2015-02-05 10:52:05 -05:00
Joe Eli McIlvain
8e89d11628 Merge pull request #1339 from evoskuil/master
Add missing EOL at EOF.
2015-02-04 15:42:03 -09:00
evoskuil
1a0d134666 Add missing EOL at EOF. 2015-02-04 16:27:57 -08:00
Richard Newton
ca94cf568b Add appveyor support for building on windows. 2015-02-04 17:54:26 +00:00
Telford Berkey
05df7072d6 Merge remote-tracking branch 'remotes/upstream/master' 2015-02-02 10:27:25 -05:00
Richard Newton
34cd718e0f Merge pull request #1337 from somdoron/JenkinsFix
problem: jenkins build failed
2015-02-02 14:52:45 +00:00
somdoron
ee962117ef fix jenkins build 2015-02-02 16:42:50 +02:00
Pieter Hintjens
edb3a13fd4 Merge pull request #1336 from somdoron/ClientSocket
problem: client socket is missing
2015-02-02 15:23:18 +01:00
somdoron
79f162aa7b test the client socket can drop multi frame messages that being sent to it 2015-02-02 16:12:21 +02:00
somdoron
14a19cd5d4 test the server socket can drop multi frame messages that being sent to it 2015-02-02 15:57:30 +02:00
somdoron
862cd41c65 implement client socket type and drop messages when more flag is set on client and server 2015-02-02 11:59:13 +02:00
Pieter Hintjens
a6362a454f Merge pull request #1334 from somdoron/ServerSocket
Problem: sockets are not thread safe
2015-02-02 10:23:58 +01:00
somdoron
5632b57b4a adds server socket type and routing id to msg 2015-02-02 01:17:37 +02:00
Telford Berkey
d5e7922d41 Merge remote-tracking branch 'remotes/upstream/master' 2015-01-30 08:39:44 -05:00
taotetek
9826a7b19d Merge pull request #1333 from hintjens/master
Problem: test cases are failing on slower PCs (eee PC)
2015-01-30 12:12:16 +01:00
Pieter Hintjens
a7a512ab3d Problem: test cases are failing on slower PCs (eee PC)
Solution: raise timeouts from 100-150 msec to 250 msec
2015-01-30 11:57:31 +01:00
Telford Berkey
e351cbdd8f Merge remote-tracking branch 'remotes/upstream/master' 2015-01-29 10:16:56 -05:00
Constantin Rack
9fc0d2f1a3 Merge pull request #1331 from jemc/master
Problem: qt-android build script out of date
2015-01-29 07:45:56 +01:00
Joe Eli McIlvain
2894634829 Problem: qt-android build script out of date
Solution: copy changes from latest zproject
2015-01-28 17:30:35 -08:00
Joe Eli McIlvain
153e0487de Merge pull request #1330 from rodgert/master
Use GCC/Clang compiler intrinsics for atomic operations
2015-01-28 14:55:13 -08:00
Thomas Rodgers
937d485e74 Add cast to make Clang happy 2015-01-28 16:38:14 -06:00
Telford Berkey
be8cdc2bf6 Merge branch 'master' of https://github.com/zeromq/libzmq 2015-01-28 12:49:38 -05:00
Thomas Rodgers
e6c45f5376 Support using compielr intrinsics for atomic operations
Works with GCC and most likely clang
2015-01-28 10:27:15 -06:00
Pieter Hintjens
8c8d23c761 Merge pull request #1328 from rodgert/master
Code cleanup - removing unused local
2015-01-27 19:41:45 +01:00
Thomas Rodgers
d8c15cf43b Code cleanup - removing unused local 2015-01-27 12:40:35 -06:00
Pieter Hintjens
0303131390 Merge pull request #1327 from rodgert/master
Clean up of metadata_t
2015-01-27 16:51:46 +01:00
Pieter Hintjens
bccf0bc813 Merge pull request #1326 from rodgert/master
resolve #1325 Alignment issue with zmq_msg_t on SPARC CPU
2015-01-27 16:39:02 +01:00
Thomas Rodgers
1c72bf4e55 Clean up of metadata_t
* There is no clear reason why the map should hold const std::strings
* This class is never derived, there doesn't seem to be a compelling
  reason to ever do so, so no need to make virtual members
* In general const member data is an anti-pattern, the *only* reason
  is to prevent assignability, and the accepted idiom for that is to
  to declare the assigment operator private. This change does so, and
  also prevents copy construction.
2015-01-27 09:33:47 -06:00
Thomas Rodgers
d9fb1d36ff resolve #1325 Alignment issue with zmq_msg_t on SPARC CPU
should be backported probably
2015-01-27 09:20:39 -06:00
Pieter Hintjens
96a27d11c9 Merge pull request #1324 from jruffin/invert-matching
Added socket option ZMQ_INVERT_MATCHING.
2015-01-26 18:08:28 +01:00
Julien Ruffin
cf2238f80e Added socket option ZMQ_INVERT_MATCHING.
ZMQ_INVERT_MATCHING reverses the PUB/SUB prefix matching. The subscription
list becomes a rejection list. The PUB socket sends messages to all
connected (X)SUB sockets that do not have any matching subscription.

Whenever the option is used on a PUB/XPUB socket, any connecting SUB
sockets must also set it or they will reject everything the publisher
sends them. XSUB sockets are unaffected because they do not filter out
incoming messages.
2015-01-26 17:59:43 +01:00
Constantin Rack
148cec0a52 Merge pull request #1323 from ricnewton/master
Fix Windows build
2015-01-26 10:38:46 +01:00
Richard Newton
415b49ba0d Fix Windows build 2015-01-26 09:12:07 +00:00
Constantin Rack
4ad2edff38 Merge pull request #1322 from hintjens/master
Problem: commit afb24b53 broke ZMQ_STREAM contract
2015-01-23 18:03:10 +01:00
Pieter Hintjens
6ced7027a0 Problem: commit afb24b53 broke ZMQ_STREAM contract
Symptom is that ZMQ_STREAM sockets in 4.1.0 and 4.1.1 generate zero
sized messages on each new connection, unlike 4.0.x which did not do
this.

Person who made this commit also changed test cases so that contract
breakage did not show. Same person was later banned for persistently
poor form in CZMQ contributions.

Solution: enable connect notifications on ZMQ_STREAM sockets using a
new ZMQ_STREAM_NOTIFY setting. By default, socket does not deliver
notifications, and behaves as in 4.0.x.

Fixes #1316
2015-01-23 15:25:40 +01:00
Constantin Rack
0d9852a2a5 Merge pull request #1321 from hintjens/master
Problem: copyright statements are out of date
2015-01-22 10:49:56 +01:00
Pieter Hintjens
94d9a4ffdf Problem: copyright statements are out of date
Solution: update for 2015

Fixes #1320
2015-01-22 10:32:37 +01:00
Joe Eli McIlvain
fd560b489c Merge pull request #1319 from rodgert/master
Remove more test_id2fd cruft
2015-01-21 14:46:15 -08:00
Thomas Rodgers
73bf0fb1a3 Remoe more test_id2fd cruft 2015-01-21 16:44:41 -06:00
Constantin Rack
3d440507ea Merge pull request #1317 from topher200/master
documentation clarification on pipe::write failure
2015-01-20 21:20:09 +01:00
Topher Brown
708298eaf1 documentation clarification on pipe::write failure
When pipe::write succeeds, it takes control of the message's data buffer.
When it fails, it has not taken control. The caller should clean up the
message appropriately (msg::close).
2015-01-20 15:06:58 -05:00
Joe Eli McIlvain
be23e699c9 Merge pull request #1314 from topher200/master
Close messages that failed to send
2015-01-19 18:10:11 -08:00
Topher Brown
866a04656e Close messages that failed to send
pipe_t.write only takes control of the underlying message memory when it
succeeds. When it returns failure, we must close the message ourselves to
clean up that memory.

This patch is sponsored by FarSounder, Inc (farsounder.com)
2015-01-19 19:46:26 -05:00
Telford Berkey
03a1b0e296 Merge remote-tracking branch 'upstream/master' 2015-01-19 15:19:56 -05:00
KAPP Arnaud
94b0ad3eaa Merge pull request #1312 from rodgert/master
fix typo in zmq_msg_gets documentation
2015-01-18 03:48:29 +01:00
Thomas Rodgers
40d2f9ad5d fix typo in zmq_msg_gets documentation 2015-01-17 20:15:31 -06:00
Constantin Rack
53431a5583 Merge pull request #1310 from rodgert/master
Fix typo in zmq_msg_gets documentation
2015-01-16 22:54:17 +01:00
Thomas Rodgers
4e89ae616a Fix typo in zmq_msg_gets documentation 2015-01-16 15:45:09 -06:00
KAPP Arnaud
0e404ec844 Merge pull request #1309 from rodgert/master
Add 'Peer-Address' property to connection metadata
2015-01-16 22:43:04 +01:00
Thomas Rodgers
cf2bd3b6ae Expand on 'Peer-Address' property documentation 2015-01-16 15:37:22 -06:00
Thomas Rodgers
97f3126175 Formatting cleanup 2015-01-16 15:04:19 -06:00
Thomas Rodgers
b443618333 Code cleanup
std::map::insert() has always had range based insertion, removed
explicit loops.
2015-01-16 15:03:13 -06:00
Thomas Rodgers
7d224d7871 Add 'Peer-Address' property to connection metadata
Allows non-C/C++ based clients easy access to the peer's IP address via
zmq_msg_gets(&msg, "Peer-Address") instead of zmq_msg_get(&msg, ZMQ_SRCFD)
followed by calls to getpeername and getnameinfo
2015-01-16 14:52:16 -06:00
Constantin Rack
2e76bbe4f6 Merge pull request #1308 from rodgert/master
Try to clarify the intent of zmq_msg_gets() in documentation
2015-01-16 18:27:40 +01:00
Thomas Rodgers
39285cb969 Try to clarify the intent of zmq_msg_gets() in documentation 2015-01-16 10:50:04 -06:00
Pieter Hintjens
10466626be Merge pull request #1301 from rodgert/master
Make alignment compiler directive
2015-01-13 23:54:25 +01:00
Thomas Rodgers
413f835bc8 Make alignment compiler directive 2015-01-13 16:47:00 -06:00
Pieter Hintjens
b6b990f5f9 Merge pull request #1300 from moteus/master
Fix. Use C++03 compatible way to align struct. (Build on MSVC)
2015-01-13 17:07:19 +01:00
Alexey Melnichuk
57cb34f123 Fix. Use C++03 compatible way to align struct. (Build on MSVC)
#1299 break compiling with MSVC 2010.
2015-01-13 19:09:49 +04:00
Pieter Hintjens
3503fdad33 Merge pull request #1299 from rodgert/master
Align inter-thread shared structures on cache-line granularity
2015-01-12 20:43:29 +01:00
Thomas Rodgers
6372fc2e56 Align inter-thread shared structers on cache-line granularity
Specifically ypipe_t specializations for msg_t and command_t.

Currently only supports platforms where posix_memalign is available.
2015-01-12 13:37:32 -06:00
Pieter Hintjens
c816e42266 Merge pull request #1298 from rodgert/master
Increase size of zmq_msg_t to 64 bytes
2015-01-10 23:58:57 +01:00
Thomas Rodgers
90194036bf Increase size of zmq_msg_t to 64 bytes
Increasing it would have at least two benefits -

* More messages would be 'VSM' messages, so it would reduce allocation
overhead a bit.
* Remove any chance of false sharing of things that are, by design,
pushed by value onto a ypipe_t<msg_t> which is shared between two threads.

The only downside I see is slightly increased memory consumption on memory
constrained applications.

- Full discussion of this rationale is part of issue #1295
2015-01-10 16:44:55 -06:00
Constantin Rack
95e7611471 Merge pull request #1297 from rodgert/master
Remove ZMQ_IDENTITY_FD socket option
2015-01-10 00:44:45 +01:00
Thomas Rodgers
a55005feb1 Remove documentation for ZMQ_IDENTITY_FD 2015-01-09 17:32:05 -06:00
Thomas Rodgers
7c0a644625 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 17:28:50 -06:00
Thomas Rodgers
a450bdefec Revert "resolve #1292 ZMQ_IDENTITY_FD does not validate option_len"
This reverts commit 45c68154460b5cc828cb7ac027e5407776bff2ca.
2015-01-09 16:44:35 -06:00
Pieter Hintjens
1ae98c7422 Merge pull request #1293 from rodgert/master
resolve #1292 ZMQ_IDENTITY_FD does not validate option_len
2015-01-08 16:39:18 +01:00
Thomas Rodgers
45c6815446 resolve #1292 ZMQ_IDENTITY_FD does not validate option_len 2015-01-08 08:37:28 -06:00
Telford Berkey
fa1f676ce5 Merge remote-tracking branch 'upstream/master' 2015-01-05 12:56:35 -05:00
Pieter Hintjens
4e9e719ff3 Merge pull request #1286 from ricnewton/master
Remove int typedefs and use stdint.h for windows.
2015-01-05 15:01:06 +01:00
Richard Newton
b1305bbec3 Remove int typedefs and use stdint.h for windows. 2015-01-05 13:45:39 +00:00
Pieter Hintjens
25f153980b Merge pull request #1283 from DaiyuHurst/master
Implement a definitive cygwin target for libzmq.
2015-01-05 11:47:09 +01:00
Joe Eli McIlvain
c993ac88ae Merge pull request #1284 from hintjens/master
Problem: incomplete definition of integer types
2014-12-31 06:26:49 -08:00
Pieter Hintjens
89a2041755 Problem: incomplete definition of integer types
Firstly, only a few types are defined, leaving it hard for higher layers
to complete the set. Secondly, the code incorrectly tries to use ifndef
to avoid re-defining typedefs, which does not work in C.

Solution: define all types, unconditionally for all MSVC compilers.
Additionally, define ZMQ_DEFINED_STDINT that tells higher layers that we
already defined these integer types.
2014-12-31 13:26:48 +01:00
DaiyuHurst
5d084cdfdd Implement a definitive cygwin target for libzmq. 2014-12-29 17:39:19 -05:00
Mário Kašuba
4b4adbbc1d Merge branch 'master' of github.com:zeromq/libzmq 2014-12-26 19:21:37 +01:00
Joe Eli McIlvain
d2bacdf591 Merge pull request #1282 from hintjens/master
Fixed atomic API, which used 'bool'
2014-12-23 09:30:46 -05:00
Pieter Hintjens
eacd4d9cba Problem: test cases were sporadically failing
Solution: increase settle time for bind/unbind tests
2014-12-23 15:21:22 +01:00
Pieter Hintjens
04664f0ef7 Problem: 'bool' is not defined by default
zmq_atomic_counter_dec returned a 'bool' value, yet this isn't
defined by standard, so causes compile errors in upstream code.

Solution: return an int that can be safely converted to bool if
needed by bindings.
2014-12-23 15:20:10 +01:00
Constantin Rack
ae53b27b70 Merge pull request #1281 from hintjens/master
Problem: need atomic reference counting in several projects
2014-12-23 09:43:01 +01:00
Pieter Hintjens
2de940b422 Problem: need atomic reference counting in several projects
Solution: as libzmq already provides this across all platforms,
expose an atomic counter API. I've not wrapped atomic pointers,
though someone who needs this may want to do so.
2014-12-23 01:14:38 +01:00
Joe Eli McIlvain
07229c72ba Merge pull request #1280 from hintjens/master
Problem: very hard to debug security mechanism mismatch
2014-12-19 16:45:07 -08:00
Pieter Hintjens
17937ffcf0 Problem: very hard to debug security mechanism mismatch
E.g. when server is not configured, and client tries PLAIN security,
there is no hint of why this does not work.

Solution: add debugging output for this case. Note that the various
debugging outputs for security failures should probably be sent to
an inproc monitor of some kind.
2014-12-19 22:17:14 +01:00
Telford Berkey
f78f4e3f73 Changed library name to zmq.lib. 2014-12-12 16:45:29 -05:00
Telford Berkey
5b1b3b56d3 Updated Cmake file to remove ascii doc. 2014-12-09 10:33:15 -05:00
Pieter Hintjens
187c743841 Merge pull request #1276 from hintjens/master
Problem: zmq_epgm is duplicate of zmq_pgm
2014-12-07 17:08:29 +01:00
Pieter Hintjens
f5f4d27354 Problem: zmq_epgm is duplicate of zmq_pgm
There is zero benefit to this, and some confusion due to the special
case nature of this man page.

Solution: delete the zmq_epgm man page.
2014-12-07 17:04:52 +01:00
Pieter Hintjens
ffb7cab4b3 Merge pull request #1275 from pmienk/master
Fix #1274
2014-12-04 23:22:13 +01:00
Phillip Mienk
510eabaec8 Alter --with-libsodium default. 2014-12-04 14:09:14 -08:00
Pieter Hintjens
4494286e92 Merge pull request #1272 from minrk/security-old-zmtp
reject old ZMTP connections if auth enabled
2014-12-04 13:30:59 +01:00
Min RK
5385a51527 craft vanilla socket security test messages
use explicit ZMTP/1.0 anonymous greeting
rather than HTTP request that just happened to work
2014-12-03 14:52:39 -08:00
Min RK
5a8b46e375 allow vanilla socket security tests to run on Windows
- add ws2tcpip.h
- alias close->closesocket
- increment port in sec_null test
2014-12-03 14:07:07 -08:00
Min RK
efed3d010d add session->zap_enabled()
checks mechanism != NULL, or NULL + non-empty zap_domain
2014-12-03 13:46:28 -08:00
Min RK
6cf120eaad 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-03 12:47:31 -08:00
Min RK
c35c0ca1bb test unauthenticated messages from vanilla sockets
fails on all auth mechanisms
2014-12-03 10:34:34 -08:00
Constantin Rack
c57d557460 Merge pull request #1269 from somdoron/manual_and_welcome
Manual and welcome documentation
2014-11-27 05:20:31 +01:00
Doron Somech
dd809de6ff add to authors 2014-11-26 22:49:15 +02:00
Doron Somech
cdf4a1211d documentation for welcome msg and xpub manual 2014-11-26 22:47:42 +02:00
Constantin Rack
bcaae7de01 Merge pull request #1268 from somdoron/manual_and_welcome
remove debug printf in test_xpub_welcome_msg
2014-11-26 14:56:53 +01:00
Doron Somech
0ac0b04755 remove debug printf in test_xpub_welcome_msg 2014-11-26 15:53:50 +02:00
Constantin Rack
9bd34100b1 Merge pull request #1267 from somdoron/manual_and_welcome
Manual and welcome
2014-11-26 13:31:38 +01:00
somdoron
768b62eb9d xpub welcome msg 2014-11-26 14:20:55 +02:00
somdoron
96e29f1455 Add manual control over subscriptions to Pub 2014-11-26 13:08:39 +02:00
Constantin Rack
cefce68a97 Merge pull request #1262 from hurtonm/master
Fix issue #1257
2014-11-24 15:17:14 +01:00
Martin Hurton
905b1683c7 Fix issue #1257 2014-11-24 15:07:59 +01:00
Pieter Hintjens
1680a3cea1 Merge pull request #1260 from abbradar/master
Fix test_filter_ipc for cleared supplementary groups
2014-11-20 05:28:13 +02:00
Nikolay Amiantov
32b2d3034b Fix test_filter_ipc for cleared supplementary groups
This should fix part of [https://github.com/zeromq/libzmq/issues/1129].
2014-11-20 05:08:45 +03:00
Constantin Rack
cb5eebd8b7 Merge pull request #1258 from hintjens/master
Problem: linger values other than -1 or 0 are unsafe
2014-11-17 15:29:25 +01:00
Pieter Hintjens
b6e61d72b2 Problem: linger values other than -1 or 0 are unsafe
Solution: set defaults back to infinity, and add new context
option, ZMQ_BLOCKY that the user can set to false to get a
less surprising behavior on context termination. Eg.

    zmq_ctx_set (ctx, ZMQ_BLOCKY, false);
2014-11-17 11:56:59 +01:00
Constantin Rack
f448af948d Merge pull request #1255 from klaussfreire/master
Fix busy-polling when reaching the rate limit
2014-11-10 18:13:20 +01:00
Claudio Freire
6a227b2ee4 Re-enable pollout before cancelling tx timeout 2014-11-10 14:00:34 -03:00
Claudio Freire
3de1163369 Fix busy-polling bug in pgm_sender causing it to consume CPU cycles 2014-11-10 13:22:54 -03:00
Pieter Hintjens
fca34e5e5a Merge pull request #1253 from minrk/linger-timeout
use more conservative 30 second default timeout for LINGER
2014-11-09 20:00:47 +01:00
Min RK
35dd85a1db use more conservative 30 second default timeout for LINGER
Regression in #1248 can cause lost messages at exit.
2014-11-09 10:05:04 -08:00
Pieter Hintjens
ed4f342633 Merge pull request #1252 from c-rack/master
Problem: return code of sodium_init() is not checked.
2014-11-08 12:07:04 +01:00
Constantin Rack
479db21136 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
2014-11-08 10:50:17 +01:00
Constantin Rack
6dc9db1ede Merge pull request #1251 from johntconklin/master
Use consistent spelling, fix typos.
2014-11-08 08:16:14 +01:00
J.T. Conklin
bc718b5307 Merge remote-tracking branch 'upstream/master' 2014-11-07 22:36:37 -08:00
J.T. Conklin
ea011a33de Fix typos. 2014-11-07 22:30:15 -08:00
J.T. Conklin
afec8440ae Use consistant spelling in documentation
behavior -> behaviour
initialize -> initialse
initialization -> initialisation
2014-11-07 22:27:41 -08:00
Constantin Rack
7b6e310b47 Merge pull request #1248 from hintjens/master
Problem: default LINGER value is insane
2014-11-07 23:52:00 +01:00
Pieter Hintjens
661bccb5bc Merge pull request #1250 from c-rack/master
No error-checking of setsockopt ZMQ_CURVE_* z85 keys. Solves #1094.
2014-11-07 21:01:39 +01:00
Constantin Rack
e00ea532df Add tests for issue #1094. 2014-11-07 17:35:41 +01:00
Constantin Rack
1844fc3284 Problem: No error-checking of setsockopt ZMQ_CURVE_* z85 keys. Solves #1094. 2014-11-07 16:56:49 +01:00
Pieter Hintjens
7781375adf Problem: default LINGER value is insane
Solution: use a sane value, e.g. 2 seconds

Fixes #1247
2014-11-06 15:32:31 +01:00
Martin Hurton
6d9f97ad60 Merge pull request #1246 from hintjens/master
Documentation fix for zmq_ctx_term
2014-11-06 11:51:38 +01:00
Pieter Hintjens
ea9f7acce3 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:55:26 +01:00
Pieter Hintjens
e3817a160a Merge pull request #1244 from johntconklin/master
Fix typo: addres -> address
2014-11-05 16:20:31 +01:00
J.T. Conklin
7176b854bc Fix typo: endpoind -> endpoint 2014-11-05 06:24:22 -08:00
J.T. Conklin
b6ae984b11 Fix typo: addres -> address 2014-11-05 06:18:25 -08:00
Pieter Hintjens
eda042d610 Merge pull request #1243 from jemc/master
Problem: qt-android build doesn't fully work for downstream builds
2014-11-05 07:32:00 +01:00
Joe McIlvain
5b6293c57e Problem: qt-android build doesn't fully work for downstream builds
Solution: Fix the qt-android build
2014-11-04 13:55:48 -08:00
Pieter Hintjens
57eff1bec0 Merge pull request #1242 from pmienk/master
Restore structure to targets lost during nonrecursive refactor.
2014-11-04 07:29:39 +01:00
Phillip Mienk
384fbbeca5 Restore structure to targets lost during nonrecursive refactor. 2014-11-03 14:14:18 -08:00
Pieter Hintjens
be55c5ac3d Fixed .gitignore for mains in root 2014-11-03 17:28:18 +01:00
Pieter Hintjens
4a79f095b3 Merge pull request #1241 from jemc/builds-qt-android
Problem: No builtin way to build for qt-android
2014-11-03 06:08:19 +01:00
Joe McIlvain
aeec276b85 Problem: Travis ci logs are too long
Solution: Don't print tar extraction verbosely
2014-11-02 17:39:01 -08:00
Joe McIlvain
eae679718e Problem: No builtin way to build for qt-android
Solution: Add qt-android build system and add to travis-ci
2014-11-02 17:33:23 -08:00
Richard Newton
98e22da1ee Merge pull request #1234 from lysyloren/master
Disable IPC testing on ipc-incapable systems in test_term_endpoint.cpp
2014-10-29 09:20:19 +00:00
lysyloren
87c22364d6 Disable IPC testing on ipc-incapable systems in test_term_endpoint.cpp 2014-10-29 10:10:14 +01:00
Pieter Hintjens
b863709eda Merge pull request #1233 from lysyloren/master
Added test and updated documentation for unbind wild-card * binded socke...
2014-10-29 09:47:51 +01:00
lysyloren
f47960e4bc Added test and updated documentation for unbind wild-card * binded socket 2014-10-29 09:43:47 +01:00
Pieter Hintjens
c9eb7b8a7b Merge pull request #1229 from lysyloren/master
Unbind socket with real endpoint when binding by wild-card * address
2014-10-28 19:08:58 +01:00
Pieter Hintjens
4c6ea1252e Merge pull request #1232 from johntconklin/master
Support both --enable-eventfd and --disable-eventfd options.
2014-10-28 13:38:32 +01:00
J.T. Conklin
10c18f7408 Support both --enable-eventfd and --disable-eventfd options. 2014-10-28 05:03:31 -07:00
Pieter Hintjens
3ac1925dcc Merge pull request #1231 from johntconklin/master
Pass --with/--without-libgssapi_krb5 to configure.
2014-10-28 08:23:03 +01:00
J.T. Conklin
f78cbc50eb Correct libgssapi_krb5 packages. 2014-10-27 21:19:03 -07:00
J.T. Conklin
0fe9cec92e Pass --with/--without-libgssapi_krb5 to configure. 2014-10-27 20:36:45 -07:00
lysyloren
09e7416ee9 Unbind socket with real endpoint when binding by wild-card * address 2014-10-27 14:16:36 +01:00
Pieter Hintjens
d6c4750d26 Merge pull request #1226 from pmienk/master
Standardize optional libgssapi_krb5 dependency
2014-10-25 14:59:39 +02:00
Phillip Mienk
2153043614 Add support for --with/--without libgssapi_krb5 2014-10-25 01:31:30 -07:00
Phillip Mienk
1735c1e462 Add --with-libgssapi_krb5 to match libsodium and pgm. 2014-10-25 01:10:53 -07:00
Pieter Hintjens
9b2700cad2 Merge pull request #1225 from hurtonm/master
Fix issue #1224
2014-10-23 10:27:30 +02:00
Martin Hurton
1fd1d519a8 Fix issue #1224 2014-10-23 10:25:12 +02:00
Pieter Hintjens
e9b9860752 Merge pull request #1223 from xaqq/build-script
Improve build script error checking.
2014-10-21 22:32:18 +02:00
Arnaud Kapp
216caee1b3 Improve build script error checking.
This commit adds a check to make sure pkg-config is present on the
computer building libzmq.
This particular line was stolen from the debian mailing list.
See https://lists.debian.org/debian-dpkg/2011/04/msg00054.html
2014-10-21 22:27:38 +02:00
Pieter Hintjens
e74b10bc8c Merge pull request #1222 from zeromq/revert-1183-size_fix
Revert "ZMQ API diverges from POSIX"
2014-10-21 08:23:51 +02:00
Pieter Hintjens
0d459318e3 Revert "ZMQ API diverges from POSIX" 2014-10-20 23:18:18 +02:00
Pieter Hintjens
527eddc90d Merge pull request #1183 from mschneider/size_fix
ZMQ API diverges from POSIX
2014-10-20 23:17:47 +02:00
Pieter Hintjens
b1d766a39a Merge pull request #1219 from pmienk/master
Update travis script to configure with libsodium.
2014-10-19 09:08:30 +02:00
Pieter Hintjens
607fa58b7f Merge pull request #1218 from johntconklin/master
Support --with and --without options for libsodium and pgm
2014-10-19 09:08:12 +02:00
Phillip Mienk
7c33d91a78 Update travis script to configure with libsodium. 2014-10-18 19:23:37 -07:00
J.T. Conklin
9078a7a4a5 Add support for --with/--without libsodium and --with/--without pgm
command line options.
2014-10-18 17:08:53 -07:00
J.T. Conklin
64a92cce49 Support both --with-* and --without-* options for libsodium and pgm 2014-10-18 16:49:46 -07:00
Pieter Hintjens
39b8ac303a Merge pull request #1217 from johntconklin/master
Append to libzmq_la_CPPFLAGS and libzmq_la_LIBADD.
2014-10-18 08:54:01 +02:00
Pieter Hintjens
ebfe6354e0 Merge pull request #1214 from johntconklin/master
Remove build and runtime dependencies on e2fsprogs and e2fsprogs-devel.
2014-10-18 00:34:35 +02:00
Pieter Hintjens
0e7458daf3 Merge pull request #1216 from xaqq/pollpri
Add support for POLLPRI flag.
2014-10-18 00:33:20 +02:00
Kapp Arnaud
779c37abc4 Add support for POLLPRI flag.
This commit adds a ZMQ_POLLPRI flag that maps to poll()'s POLLPRI
flag.
This flags does nothing for OMQ sockets. It's only useful for raw
file descriptor (be it socket or file).
This flag does nothing if poll() is not the underlying polling
function. So it is Linux only.
2014-10-17 17:21:41 +02:00
KAPP Arnaud
a109723b17 Merge pull request #1207 from hintjens/master
Releasing 4.1.0 rc1 and moving development master to 4.2.0.
2014-10-17 17:16:24 +02:00
J.T. Conklin
2e0c1a9883 Append to libzmq_la_CPPFLAGS and libzmq_la_LIBADD. 2014-10-16 20:11:33 -07:00
Pieter Hintjens
359933ae8f Merge pull request #1213 from dmick/master
Fix builds/msvc/Makefile.am to include all properties files in the build
2014-10-17 01:40:36 +02:00
Pieter Hintjens
983eaecc4c Merge pull request #1212 from dstftw/fix-typos
Fix some typos
2014-10-17 01:40:09 +02:00
Dan Mick
c22bcf4f65 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-10-16 14:18:23 -07:00
Sergey M․
76d86c3fc3 Fix some typos 2014-10-17 04:10:33 +07:00
J.T. Conklin
9289845c83 Remove build and runtime dependencies on e2fsprogs and e2fsprogs-devel. 2014-10-16 06:13:36 -07:00
Pieter Hintjens
08d90e8a05 Merge pull request #1210 from pmienk/master
Correct libsodium inclusion.
2014-10-16 14:48:21 +02:00
Phillip Mienk
8cf5e9fd48 Correct declaration of HAVE_LIBSODIUM. 2014-10-16 04:44:21 -07:00
Pieter Hintjens
eb89555a24 Merge pull request #1209 from pmienk/master
Simplify libsodium inclusion
2014-10-16 12:05:36 +02:00
Phillip Mienk
c8ee16940f Require pkg-config, use pkg-config to pull seek libsodium. 2014-10-16 00:37:57 -07:00
Pieter Hintjens
b6762a6a8b Marked TCP and IPC filters as deprecated (ZAP) 2014-10-14 16:30:20 +02:00
Pieter Hintjens
bc0f8d5168 Updated development master to 4.2.x 2014-10-14 16:30:20 +02:00
Pieter Hintjens
7f849b844b Updated NEWS for 4.0.x releases 2014-10-14 16:30:20 +02:00
Pieter Hintjens
3f10e401c3 Merge pull request #1208 from pmienk/master
Reduce automake recursion; simplify pgm dependency
2014-10-14 11:34:14 +02:00
Phillip Mienk
00b3bfab10 Remove local pgm configuration option, cleanup configure.ac, remove unused Makefile.am instances. 2014-10-13 19:10:36 -07:00
Phillip Mienk
c6aedc3837 Partial migration to nonrecursive make. 2014-10-10 14:36:12 -07:00
Mário Kašuba
610d64dd9e Merge branch 'master' of github.com:zeromq/libzmq 2014-10-05 14:17:11 +02:00
Mário Kašuba
053b14e6c1 Merge branch 'master' of github.com:zeromq/libzmq 2014-09-24 15:07:09 +02:00
Mário Kašuba
7da40124b8 Merge branch 'master' of github.com:zeromq/libzmq 2014-09-21 10:41:25 +02:00
Mário Kašuba
8fbf810fd1 Local changes of libsodium path 2014-09-18 03:39:25 +02:00
Maximilian Schneider
b55288fdf3 return values of socket functions are ssize_t (not int) in compliance with POSIX
deprecated API (zmq_msg_recv/zmq_msg_send) still returns int
2014-09-17 02:44:48 -04:00
834 changed files with 96714 additions and 38082 deletions

53
.clang-format Normal file
View File

@ -0,0 +1,53 @@
BasedOnStyle: LLVM
IndentWidth: 4
UseTab: Never
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: false
IndentBraces: false
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: true
BinPackArguments: true
BinPackParameters: false
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: InlineOnly
AlwaysBreakTemplateDeclarations: false
ColumnLimit: 80
MaxEmptyLinesToKeep: 2
KeepEmptyLinesAtTheStartOfBlocks: false
ContinuationIndentWidth: 2
PointerAlignment: Right
ReflowComments: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: Always
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp03
SortIncludes: false
FixNamespaceComments: false
BreakBeforeBinaryOperators: NonAssignment
SpaceAfterTemplateKeyword: true
AlignAfterOpenBracket: Align
AlignOperands: true
BreakConstructorInitializers: AfterColon
ConstructorInitializerAllOnOneLineOrOnePerLine: true
SpaceAfterCStyleCast: true
BreakBeforeTernaryOperators: true

429
.clang-tidy Executable file
View File

@ -0,0 +1,429 @@
Checks: "*,\
# not currently a coding convention, but conceivable,\
-llvm-include-order,\
# currently the coding convention deliberately produces violations of these,\
# rules, but it may make sense to reconsider,\
-readability-implicit-bool-conversion,\
-readability-braces-around-statements,\
-readability-named-parameter,\
-fuchsia-default-arguments,\
-google-readability-todo,\
-google-runtime-int,\
-cppcoreguidelines-avoid-goto,\
-hicpp-avoid-goto, \
-cppcoreguidelines-pro-type-member-init,\
-cppcoreguidelines-pro-type-static-cast-downcast,\
-readability-identifier-naming,\
# not applicable,\
-fuchsia-default-arguments-calls,\
-fuchsia-overloaded-operator,\
-fuchsia-statically-constructed-objects,\
# not currently a coding convention, C++11-specific, but conceivable,\
-modernize-use-nullptr,\
-modernize-use-equals-default,\
-modernize-deprecated-headers,\
# not currently a coding convention, C++11-specific and hard to implement,\
-hicpp-no-malloc,\
-hicpp-avoid-c-arrays,\
-modernize-avoid-c-arrays,\
-modernize-pass-by-value,\
-modernize-loop-convert,\
-modernize-use-auto,\
-modernize-use-trailing-return-type,\
-modernize-use-using,\
-modernize-return-braced-init-list,\
-cppcoreguidelines-avoid-c-arrays,\
-cppcoreguidelines-no-malloc,\
-cppcoreguidelines-owning-memory,\
-cppcoreguidelines-pro-type-union-access,\
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,\
-cppcoreguidelines-pro-bounds-constant-array-index,\
-cppcoreguidelines-pro-bounds-pointer-arithmetic,\
# not easily possible to implement (maybe replace by specific exclusions),\
-cppcoreguidelines-pro-type-vararg,\
-cppcoreguidelines-pro-type-reinterpret-cast,\
-hicpp-signed-bitwise,\
# duplicates,\
-google-readability-braces-around-statements,\
-cppcoreguidelines-pro-type-cstyle-cast,\
-cppcoreguidelines-avoid-magic-numbers,\
-readability-magic-numbers,\
-hicpp-braces-around-statements,\
-hicpp-use-equals-default,\
-hicpp-deprecated-headers,\
-hicpp-no-assembler,\
-hicpp-vararg,\
-hicpp-use-auto,\
-hicpp-use-nullptr,\
-hicpp-no-array-decay,\
-hicpp-member-init"
WarningsAsErrors: ''
HeaderFilterRegex: ''
# AnalyzeTemporaryDtors: false
CheckOptions:
# - key: cert-dcl59-cpp.HeaderFileExtensions
# value: h,hh,hpp,hxx
# - key: cert-err61-cpp.CheckThrowTemporaries
# value: '1'
# - key: cert-oop11-cpp.IncludeStyle
# value: llvm
# - key: cert-oop11-cpp.UseCERTSemantics
# value: '1'
# - key: cppcoreguidelines-pro-bounds-constant-array-index.GslHeader
# value: ''
# - key: cppcoreguidelines-pro-bounds-constant-array-index.IncludeStyle
# value: '0'
# - key: cppcoreguidelines-pro-type-member-init.IgnoreArrays
# value: '0'
# - key: google-build-namespaces.HeaderFileExtensions
# value: h,hh,hpp,hxx
# - key: google-global-names-in-headers.HeaderFileExtensions
# value: h
# - key: google-readability-braces-around-statements.ShortStatementLines
# value: '1'
# - key: google-readability-function-size.BranchThreshold
# value: '4294967295'
# - key: google-readability-function-size.LineThreshold
# value: '4294967295'
# - key: google-readability-function-size.StatementThreshold
# value: '800'
# - key: google-readability-namespace-comments.ShortNamespaceLines
# value: '10'
# - key: google-readability-namespace-comments.SpacesBeforeComments
# value: '2'
# - key: google-runtime-int.SignedTypePrefix
# value: int
# - key: google-runtime-int.TypeSuffix
# value: ''
# - key: google-runtime-int.UnsignedTypePrefix
# value: uint
# - key: llvm-namespace-comment.ShortNamespaceLines
# value: '1'
# - key: llvm-namespace-comment.SpacesBeforeComments
# value: '1'
# - key: misc-assert-side-effect.AssertMacros
# value: assert
# - key: misc-assert-side-effect.CheckFunctionCalls
# value: '0'
# - key: misc-dangling-handle.HandleClasses
# value: 'std::basic_string_view;std::experimental::basic_string_view'
# - key: misc-definitions-in-headers.HeaderFileExtensions
# value: ',h,hh,hpp,hxx'
# - key: misc-definitions-in-headers.UseHeaderFileExtension
# value: '1'
# - key: misc-misplaced-widening-cast.CheckImplicitCasts
# value: '1'
# - key: misc-move-constructor-init.IncludeStyle
# value: llvm
# - key: misc-move-constructor-init.UseCERTSemantics
# value: '0'
# - key: misc-sizeof-expression.WarnOnSizeOfCompareToConstant
# value: '1'
# - key: misc-sizeof-expression.WarnOnSizeOfConstant
# value: '1'
# - key: misc-sizeof-expression.WarnOnSizeOfThis
# value: '1'
# - key: misc-string-constructor.LargeLengthThreshold
# value: '8388608'
# - key: misc-string-constructor.WarnOnLargeLength
# value: '1'
# - key: misc-suspicious-missing-comma.MaxConcatenatedTokens
# value: '5'
# - key: misc-suspicious-missing-comma.RatioThreshold
# value: '0.200000'
# - key: misc-suspicious-missing-comma.SizeThreshold
# value: '5'
# - key: misc-suspicious-string-compare.StringCompareLikeFunctions
# value: ''
# - key: misc-suspicious-string-compare.WarnOnImplicitComparison
# value: '1'
# - key: misc-suspicious-string-compare.WarnOnLogicalNotComparison
# value: '0'
# - key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries
# value: '1'
# - key: modernize-loop-convert.MaxCopySize
# value: '16'
# - key: modernize-loop-convert.MinConfidence
# value: reasonable
# - key: modernize-loop-convert.NamingStyle
# value: CamelCase
# - key: modernize-pass-by-value.IncludeStyle
# value: llvm
# - key: modernize-replace-auto-ptr.IncludeStyle
# value: llvm
# - key: modernize-use-nullptr.NullMacros
# value: 'NULL'
# - key: performance-faster-string-find.StringLikeClasses
# value: 'std::basic_string'
# - key: performance-for-range-copy.WarnOnAllAutoCopies
# value: '0'
# - key: readability-braces-around-statements.ShortStatementLines
# value: '1'
# - key: readability-function-size.BranchThreshold
# value: '4294967295'
# - key: readability-function-size.LineThreshold
# value: '4294967295'
# - key: readability-function-size.StatementThreshold
# value: '800'
# - key: readability-identifier-naming.AbstractClassCase
# value: aNy_CasE
# - key: readability-identifier-naming.AbstractClassPrefix
# value: ''
# - key: readability-identifier-naming.AbstractClassSuffix
# value: ''
# - key: readability-identifier-naming.ClassCase
# value: aNy_CasE
# - key: readability-identifier-naming.ClassConstantCase
# value: aNy_CasE
# - key: readability-identifier-naming.ClassConstantPrefix
# value: ''
# - key: readability-identifier-naming.ClassConstantSuffix
# value: ''
# - key: readability-identifier-naming.ClassMemberCase
# value: aNy_CasE
# - key: readability-identifier-naming.ClassMemberPrefix
# value: ''
# - key: readability-identifier-naming.ClassMemberSuffix
# value: ''
# - key: readability-identifier-naming.ClassMethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.ClassMethodPrefix
# value: ''
# - key: readability-identifier-naming.ClassMethodSuffix
# value: ''
# - key: readability-identifier-naming.ClassPrefix
# value: ''
# - key: readability-identifier-naming.ClassSuffix
# value: ''
# - key: readability-identifier-naming.ConstantCase
# value: aNy_CasE
# - key: readability-identifier-naming.ConstantMemberCase
# value: aNy_CasE
# - key: readability-identifier-naming.ConstantMemberPrefix
# value: ''
# - key: readability-identifier-naming.ConstantMemberSuffix
# value: ''
# - key: readability-identifier-naming.ConstantParameterCase
# value: aNy_CasE
# - key: readability-identifier-naming.ConstantParameterPrefix
# value: ''
# - key: readability-identifier-naming.ConstantParameterSuffix
# value: ''
# - key: readability-identifier-naming.ConstantPrefix
# value: ''
# - key: readability-identifier-naming.ConstantSuffix
# value: ''
# - key: readability-identifier-naming.ConstexprFunctionCase
# value: aNy_CasE
# - key: readability-identifier-naming.ConstexprFunctionPrefix
# value: ''
# - key: readability-identifier-naming.ConstexprFunctionSuffix
# value: ''
# - key: readability-identifier-naming.ConstexprMethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.ConstexprMethodPrefix
# value: ''
# - key: readability-identifier-naming.ConstexprMethodSuffix
# value: ''
# - key: readability-identifier-naming.ConstexprVariableCase
# value: aNy_CasE
# - key: readability-identifier-naming.ConstexprVariablePrefix
# value: ''
# - key: readability-identifier-naming.ConstexprVariableSuffix
# value: ''
# - key: readability-identifier-naming.EnumCase
# value: aNy_CasE
# - key: readability-identifier-naming.EnumConstantCase
# value: aNy_CasE
# - key: readability-identifier-naming.EnumConstantPrefix
# value: ''
# - key: readability-identifier-naming.EnumConstantSuffix
# value: ''
# - key: readability-identifier-naming.EnumPrefix
# value: ''
# - key: readability-identifier-naming.EnumSuffix
# value: ''
# - key: readability-identifier-naming.FunctionCase
# value: aNy_CasE
# - key: readability-identifier-naming.FunctionPrefix
# value: ''
# - key: readability-identifier-naming.FunctionSuffix
# value: ''
# - key: readability-identifier-naming.GlobalConstantCase
# value: aNy_CasE
# - key: readability-identifier-naming.GlobalConstantPrefix
# value: ''
# - key: readability-identifier-naming.GlobalConstantSuffix
# value: ''
# - key: readability-identifier-naming.GlobalFunctionCase
# value: aNy_CasE
# - key: readability-identifier-naming.GlobalFunctionPrefix
# value: ''
# - key: readability-identifier-naming.GlobalFunctionSuffix
# value: ''
# - key: readability-identifier-naming.GlobalVariableCase
# value: aNy_CasE
# - key: readability-identifier-naming.GlobalVariablePrefix
# value: ''
# - key: readability-identifier-naming.GlobalVariableSuffix
# value: ''
# - key: readability-identifier-naming.IgnoreFailedSplit
# value: '0'
# - key: readability-identifier-naming.InlineNamespaceCase
# value: aNy_CasE
# - key: readability-identifier-naming.InlineNamespacePrefix
# value: ''
# - key: readability-identifier-naming.InlineNamespaceSuffix
# value: ''
- key: readability-identifier-naming.LocalConstantCase
value: lower_case
- key: readability-identifier-naming.LocalConstantPrefix
value: ''
- key: readability-identifier-naming.LocalConstantSuffix
value: ''
- key: readability-identifier-naming.LocalVariableCase
value: lower_case
- key: readability-identifier-naming.LocalVariablePrefix
value: ''
- key: readability-identifier-naming.LocalVariableSuffix
value: ''
# - key: readability-identifier-naming.MemberCase
# value: lower_case
# - key: readability-identifier-naming.MemberPrefix
# value: '_'
# - key: readability-identifier-naming.MemberSuffix
# value: ''
# - key: readability-identifier-naming.MethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.MethodPrefix
# value: ''
# - key: readability-identifier-naming.MethodSuffix
# value: ''
# - key: readability-identifier-naming.NamespaceCase
# value: aNy_CasE
# - key: readability-identifier-naming.NamespacePrefix
# value: ''
# - key: readability-identifier-naming.NamespaceSuffix
# value: ''
- key: readability-identifier-naming.ParameterCase
value: lower_case
# - key: readability-identifier-naming.ParameterPackCase
# value: aNy_CasE
# - key: readability-identifier-naming.ParameterPackPrefix
# value: ''
# - key: readability-identifier-naming.ParameterPackSuffix
# value: ''
# - key: readability-identifier-naming.ParameterPrefix
# value: ''
- key: readability-identifier-naming.ParameterSuffix
value: '_'
- key: readability-identifier-naming.PrivateMemberCase
value: lower_case
- key: readability-identifier-naming.PrivateMemberPrefix
value: '_'
- key: readability-identifier-naming.PrivateMemberSuffix
value: ''
# - key: readability-identifier-naming.PrivateMethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.PrivateMethodPrefix
# value: ''
# - key: readability-identifier-naming.PrivateMethodSuffix
# value: ''
# - key: readability-identifier-naming.ProtectedMemberCase
# value: aNy_CasE
# - key: readability-identifier-naming.ProtectedMemberPrefix
# value: ''
# - key: readability-identifier-naming.ProtectedMemberSuffix
# value: ''
# - key: readability-identifier-naming.ProtectedMethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.ProtectedMethodPrefix
# value: ''
# - key: readability-identifier-naming.ProtectedMethodSuffix
# value: ''
# - key: readability-identifier-naming.PublicMemberCase
# value: aNy_CasE
# - key: readability-identifier-naming.PublicMemberPrefix
# value: ''
# - key: readability-identifier-naming.PublicMemberSuffix
# value: ''
# - key: readability-identifier-naming.PublicMethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.PublicMethodPrefix
# value: ''
# - key: readability-identifier-naming.PublicMethodSuffix
# value: ''
# - key: readability-identifier-naming.StaticConstantCase
# value: aNy_CasE
# - key: readability-identifier-naming.StaticConstantPrefix
# value: ''
# - key: readability-identifier-naming.StaticConstantSuffix
# value: ''
# - key: readability-identifier-naming.StaticVariableCase
# value: aNy_CasE
# - key: readability-identifier-naming.StaticVariablePrefix
# value: ''
# - key: readability-identifier-naming.StaticVariableSuffix
# value: ''
# - key: readability-identifier-naming.StructCase
# value: aNy_CasE
# - key: readability-identifier-naming.StructPrefix
# value: ''
# - key: readability-identifier-naming.StructSuffix
# value: ''
# - key: readability-identifier-naming.TemplateParameterCase
# value: aNy_CasE
# - key: readability-identifier-naming.TemplateParameterPrefix
# value: ''
# - key: readability-identifier-naming.TemplateParameterSuffix
# value: ''
# - key: readability-identifier-naming.TemplateTemplateParameterCase
# value: aNy_CasE
# - key: readability-identifier-naming.TemplateTemplateParameterPrefix
# value: ''
# - key: readability-identifier-naming.TemplateTemplateParameterSuffix
# value: ''
# - key: readability-identifier-naming.TypeTemplateParameterCase
# value: aNy_CasE
# - key: readability-identifier-naming.TypeTemplateParameterPrefix
# value: ''
# - key: readability-identifier-naming.TypeTemplateParameterSuffix
# value: ''
# - key: readability-identifier-naming.TypedefCase
# value: aNy_CasE
# - key: readability-identifier-naming.TypedefPrefix
# value: ''
# - key: readability-identifier-naming.TypedefSuffix
# value: ''
# - key: readability-identifier-naming.UnionCase
# value: aNy_CasE
# - key: readability-identifier-naming.UnionPrefix
# value: ''
# - key: readability-identifier-naming.UnionSuffix
# value: ''
# - key: readability-identifier-naming.ValueTemplateParameterCase
# value: aNy_CasE
# - key: readability-identifier-naming.ValueTemplateParameterPrefix
# value: ''
# - key: readability-identifier-naming.ValueTemplateParameterSuffix
# value: ''
# - key: readability-identifier-naming.VariableCase
# value: aNy_CasE
# - key: readability-identifier-naming.VariablePrefix
# value: ''
# - key: readability-identifier-naming.VariableSuffix
# value: ''
# - key: readability-identifier-naming.VirtualMethodCase
# value: aNy_CasE
# - key: readability-identifier-naming.VirtualMethodPrefix
# value: ''
# - key: readability-identifier-naming.VirtualMethodSuffix
# value: ''
# - key: readability-simplify-boolean-expr.ChainedConditionalAssignment
# value: '0'
# - key: readability-simplify-boolean-expr.ChainedConditionalReturn
# value: '0'
- key: modernize-use-override.OverrideSpelling
value: 'ZMQ_OVERRIDE'
- key: modernize-use-override.FinalSpelling
value: 'ZMQ_FINAL'

2
.git-blame-ignore-revs Normal file
View File

@ -0,0 +1,2 @@
# tree-wide clang format
41f459e1dc6f7cdedd1268298153c970e290b2ce

48
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,48 @@
# Pull Request Notice
Before sending a pull request make sure each commit solves one clear, minimal,
plausible problem. Further each commit should have the following format:
```
Problem: X is broken
Solution: do Y and Z to fix X
```
Please try to have the code changes conform to our coding style. For your
convenience, you can install clang-format (at least version 5.0) and then
run ```make clang-format-check```. Don't fix existing issues, if any - just
make sure your changes are compliant. ```make clang-format-diff``` will
automatically apply the required changes.
To set a specific clang-format binary with autotools, you can for example
run: ```./configure CLANG_FORMAT=clang-format-5.0```
Please avoid sending a pull request with recursive merge nodes, as they
are impossible to fix once merged. Please rebase your branch on
zeromq/libzmq master instead of merging it.
```
git remote add upstream git@github.com:zeromq/libzmq.git
git fetch upstream
git rebase upstream/master
git push -f
```
In case you already merged instead of rebasing you can drop the merge commit.
```
git rebase -i HEAD~10
```
Now, find your merge commit and mark it as drop and save. Finally rebase!
If you are a new contributor please have a look at our contributing guidelines:
[CONTRIBUTING](http://zeromq.org/docs:contributing)
# FIRST TIME CONTRIBUTORS PLEASE NOTE
Please add an additional commit with a relicensing grant.
[Example](https://github.com/zeromq/libzmq/commit/fecbd42dbe45455fff3b6456350ceca047b82050)
[More information on RELICENSING effort](https://github.com/zeromq/libzmq/tree/master/RELICENSE/README.md)

22
.github/issue_template.md vendored Normal file
View File

@ -0,0 +1,22 @@
*Please use this template for reporting suspected bugs or requests for help.*
# Issue description
# Environment
* libzmq version (commit hash if unreleased):
* OS:
# Minimal test code / Steps to reproduce the issue
1.
# What's the actual result? (include assertion message & call stack if applicable)
# What's the expected result?

19
.github/stale.yml vendored Normal file
View File

@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 365
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 56
# Issues with these labels will never be considered stale
exemptLabels:
- "Help Request"
- "Feature Request"
- "Problem reproduced"
- Critical
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
activity for 365 days. It will be closed if no further activity occurs within
56 days. Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

230
.github/workflows/CI.yaml vendored Normal file
View File

@ -0,0 +1,230 @@
name: CI
on:
push:
pull_request:
schedule:
- cron: "0 9 * * 5"
jobs:
build:
if: github.event_name == 'pull_request' || github.event_name == 'push'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- platform: x64
configuration: release
os: windows-2019
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
CMAKE_GENERATOR: Visual Studio 16 2019
MSVCVERSION: v142
MSVCYEAR: vs2019
ARTIFACT_NAME: v142-x64
ENABLE_DRAFTS: ON
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: asciidoctor
DRAFT: disabled
POLLER: select
- os: ubuntu-latest
BUILD_TYPE: default
DRAFT: disabled
POLLER: poll
- os: ubuntu-latest
BUILD_TYPE: android
NDK_VERSION: android-ndk-r25
DRAFT: disabled
- os: ubuntu-latest
BUILD_TYPE: coverage
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev lcov
DRAFT: enabled
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
TLS: enabled
VMCI: enabled
- os: ubuntu-latest
BUILD_TYPE: valgrind
PACKAGES: valgrind libgnutls28-dev
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
CURVE: libsodium
DRAFT: enabled
PACKAGES: cmake libsodium-dev
TLS: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
CURVE: libsodium
DRAFT: enabled
GSSAPI: enabled
PACKAGES: cmake libsodium-dev libkrb5-dev
TLS: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
DRAFT: enabled
PACKAGES: cmake clang-format-18
DO_CLANG_FORMAT_CHECK: 1
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev libbsd-dev
CURVE: libsodium
ADDRESS_SANITIZER: enabled
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev libbsd-dev
CURVE: libsodium
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
IPv6: ON
TLS: enabled
USE_NSS: yes
VMCI: enabled
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev
CURVE: libsodium
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
IPv6: ON
TLS: enabled
USE_NSS: yes
VMCI: enabled
DRAFT: enabled
FORCE_98: enabled
CXX: clang++
- os: ubuntu-latest
BUILD_TYPE: abi-compliance-checker
PACKAGES: abi-dumper abi-compliance-checker
DRAFT: disabled
- os: ubuntu-latest
BUILD_TYPE: cmake
PACKAGES: clang-tidy clang-tools
DRAFT: enabled
CXX: clang++
- os: macos-latest
BUILD_TYPE: default
PACKAGES: automake autoconf libtool
DRAFT: enabled
- os: macos-latest
BUILD_TYPE: default
PACKAGES: automake autoconf libtool libsodium
CURVE: libsodium
DRAFT: disabled
env:
platform: ${{ matrix.platform }}
configuration: ${{ matrix.configuration }}
WITH_LIBSODIUM: ${{ matrix.WITH_LIBSODIUM }}
ENABLE_CURVE: ${{ matrix.ENABLE_CURVE }}
CMAKE_GENERATOR: ${{ matrix.CMAKE_GENERATOR }}
MSVCVERSION: ${{ matrix.MSVCVERSION }}
MSVCYEAR: ${{ matrix.MSVCYEAR }}
ARTIFACT_NAME: ${{ matrix.ARTIFACT_NAME }}
ENABLE_DRAFTS: ${{ matrix.ENABLE_DRAFTS }}
SODIUM_INCLUDE_DIR: ${{ github.workspace }}\libsodium\src\libsodium\include"
SODIUM_LIBRARY_DIR: ${{ github.workspace }}\libsodium\bin\${{ matrix.platform }}\${{ matrix.configuration }}\${{ matrix.MSVCVERSION }}\dynamic"
LIBZMQ_SRCDIR: ${{ github.workspace }}\libzmq
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
CURVE: ${{ matrix.CURVE }}
DRAFT: ${{ matrix.DRAFT }}
ADDRESS_SANITIZER: ${{ matrix.ADDRESS_SANITIZER }}
DO_CLANG_FORMAT_CHECK: ${{ matrix.DO_CLANG_FORMAT_CHECK }}
FORCE_98: ${{ matrix.FORCE_98 }}
CXX: ${{ matrix.CXX }}
GSSAPI: ${{ matrix.GSSAPI }}
PGM: ${{ matrix.PGM }}
NORM: ${{ matrix.NORM }}
TIPC: ${{ matrix.TIPC }}
IPv6: ${{ matrix.IPv6 }}
TLS: ${{ matrix.TLS }}
USE_NSS: ${{ matrix.USE_NSS }}
VMCI: ${{ matrix.VMCI }}
POLLER: ${{ matrix.POLLER }}
NDK_VERSION: ${{ matrix.NDK_VERSION }}
ANDROID_NDK_ROOT: /tmp/${{ matrix.NDK_VERSION }}
steps:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
if: matrix.os == 'windows-2019'
- uses: actions/checkout@v2
if: matrix.WITH_LIBSODIUM == 'ON'
with:
repository: jedisct1/libsodium
ref: stable
path: libsodium
- name: Compile libsodium
if: matrix.WITH_LIBSODIUM == 'ON' && matrix.os == 'windows-2019'
shell: cmd
working-directory: libsodium
run: msbuild /v:minimal /p:Configuration=%Configuration%DLL builds\msvc\%MSVCYEAR%\libsodium\libsodium.vcxproj
- name: Copy libsodium
if: matrix.WITH_LIBSODIUM == 'ON' && matrix.os == 'windows-2019'
shell: powershell
working-directory: libsodium
run: Copy-Item "bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\libsodium.lib" -Destination "bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\sodium.lib"
- uses: actions/checkout@v2
with:
path: libzmq
- run: md build_libzmq
shell: cmd
if: matrix.os == 'windows-2019'
- name: build-win
if: matrix.os == 'windows-2019'
shell: cmd
working-directory: build_libzmq
run: |
cmake -D CMAKE_INCLUDE_PATH="%SODIUM_INCLUDE_DIR%" -D CMAKE_LIBRARY_PATH="%SODIUM_LIBRARY_DIR%" -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D ENABLE_DRAFTS="%ENABLE_DRAFTS%" -D ENABLE_ANALYSIS="%ENABLE_ANALYSIS%" -D ENABLE_CURVE="%ENABLE_CURVE%" -D API_POLLER="%API_POLLER%" -D POLLER="%POLLER%" %EXTRA_FLAGS% -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D LIBZMQ_WERROR="%LIBZMQ_WERROR%" -G "%CMAKE_GENERATOR%" "%LIBZMQ_SRCDIR%"
cmake --build . --config %configuration% --target install -- -verbosity:Minimal -maxcpucount
- name: test
if: matrix.os == 'windows-2019'
shell: cmd
working-directory: build_libzmq
run: ctest -C "%Configuration%"
- name: Add debian packages
if: matrix.os == 'ubuntu-latest' && (matrix.BUILD_TYPE != 'coverage' || github.repository == 'zeromq/libzmq')
uses: myci-actions/add-deb-repo@10
with:
repo-name: obs
repo: deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_20.04/ ./
keys-asc: https://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_20.04/Release.key
install: ${{ matrix.PACKAGES }}
- name: Add brew packages
if: matrix.os == 'macos-latest'
shell: bash
run: brew install ${{ matrix.PACKAGES }}
- name: build
if: (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') && (matrix.BUILD_TYPE != 'coverage' || github.repository == 'zeromq/libzmq')
shell: bash
working-directory: libzmq
run: ./ci_build.sh
- name: coveralls
if: matrix.BUILD_TYPE == 'coverage' && github.repository == 'zeromq/libzmq'
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: /home/runner/work/libzmq/libzmq/libzmq/lcov.info
cron:
runs-on: ubuntu-latest
if: github.event_name == 'schedule'
strategy:
fail-fast: false
env:
BUILD_TYPE: cmake
CXX: clang++
CLANG_TIDY: clang-tidy
steps:
- name: Add debian packages
run: sudo apt-get install --yes clang-tidy clang-tools
- name: build
shell: bash
working-directory: libzmq
run: ./ci_build.sh

50
.github/workflows/Docs.yaml vendored Normal file
View File

@ -0,0 +1,50 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy API docs content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
## libzmq-specific CI/CD ##
- name: Install AsciiDoctor
run: sudo apt install -y asciidoctor
- name: Convert AsciiDoc with AsciiDoctor into HTML
run: ./autogen.sh && ./configure && make --directory=doc
## boilerplate steps to publish github Pages ##
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: 'doc/'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2

35
.github/workflows/Fuzzers.yaml vendored Normal file
View File

@ -0,0 +1,35 @@
name: Fuzzers
on:
push:
branches:
- master
pull_request:
paths:
- '.github/workflows/Fuzzers.yaml'
- 'src/*'
- 'tests/*fuzzer.cpp'
jobs:
Fuzzing:
runs-on: ubuntu-latest
if: github.repository == 'zeromq/libzmq'
strategy:
matrix:
san: [address, memory, undefined]
steps:
- name: Build Fuzzers (${{ matrix.san }})
id: build
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with:
sanitizer: ${{ matrix.san }}
oss-fuzz-project-name: 'libzmq'
allowed-broken-targets-percentage: 0
dry-run: false
- name: Run Fuzzers (${{ matrix.san }})
id: run
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
sanitizer: ${{ matrix.san }}
oss-fuzz-project-name: 'libzmq'
allowed-broken-targets-percentage: 0
dry-run: false
fuzz-seconds: 300

223
.gitignore vendored
View File

@ -1,15 +1,52 @@
syntax: glob # for hg-git users
Makefile
Makefile.in
configure
# Generated build scripts and IDE generating files
## autotools
/Makefile
builds/Makefile
builds/deprecated-msvc/Makefile
doc/Makefile
doc/__pagelist
libtool
### automake
Makefile.in
.deps/
.dirstamp
### autoconf
autom4te.cache
aclocal.m4
config
config.status
config.log
aclocal.m4
autom4te.cache
configure
stamp-h1
## CMake
cmake-build-debug/
build/
## Android
builds/android/prefix
## IntelliJ
.idea/
## Visual Code
.vscode/
## other results-like folders
bin/
lib/
obj/
## Doxygen
doxygen/
## Packaging
packaging/nuget/*.nupkg
# Test related build files
libtestutil.a
libunity.a
# Some build outputs and temporal files
*.o
*.gcno
*.gcda
*.gcov
*.ncb
*.lo
*.loT
@ -18,118 +55,69 @@ autom4te.cache
*.html
*.pdf
*.ps
.*
*~
.*~
tools/curve_keygen
test_resource
test_ipc_wildcard
test_stream_empty
test_stream_timeout
test_issue_566
test_ctx_destroy
test_term_endpoint
test_system
test_monitor
test_last_endpoint
test_pair_inproc
test_pair_ipc
test_pair_tcp
test_reqrep_inproc
test_reqrep_ipc
test_reqrep_tcp
test_shutdown_stress
test_hwm
test_timeo
test_reqrep_device
test_reqrep_drop
test_sub_forward
test_invalid_rep
test_msg_flags
test_ts_context
test_connect_resolve
test_immediate
test_term_endpoint
test_router_mandatory
test_disconnect_inproc
test_unbind_inproc
test_unbind_wildcard
test_raw_sock
test_disconnect_inproc
test_ctx_options
test_iov
test_security
test_security_curve
test_probe_router
test_stream
test_spec_dealer
test_spec_pushpull
test_spec_rep
test_spec_req
test_spec_router
test_req_correlate
test_req_relaxed
test_fork
test_conflate
test_inproc_connect
test_linger
test_security_null
test_security_plain
test_proxy
test_proxy_single_socket
test_proxy_terminate
test_abstract_ipc
test_filter_ipc
test_connect_delay_tipc
test_pair_tipc
test_reqrep_device_tipc
test_reqrep_tipc
test_router_handover
test_router_mandatory_tipc
test_shutdown_stress_tipc
test_sub_forward_tipc
test_term_endpoint_tipc
test_many_sockets
test_diffserv
test_connect_rid
test_srcfd
test_stream_disconnect
test_proxy_chain
test_bind_src_address
test_metadata
test_id2fd
test_capabilities
test_hwm_pubsub
test_router_mandatory_hwm
test_xpub_nodrop
test_getsockopt_memset
test*.log
test*.trs
.libs
# /src
## Ignore generated files in configuration process
src/platform.hpp*
src/stamp-h1
perf/local_lat
perf/local_thr
perf/remote_lat
perf/remote_thr
perf/inproc_lat
perf/inproc_thr
doc/*.1
doc/*.3
doc/*.7
src/libzmq.pc
# /tools
## Executable binaries are ignored
tools/curve_keygen
## Executable source files must be tracked
!tools/*.[ch]
!tools/*.[ch]pp
# /tests
## Test binaries and logs are ignored
tests/test*
tests/test*.log
tests/test*.trs
## Test source files must be tracked
!tests/test*.[ch]
!tests/test*.[ch]pp
## Build script and documentations must be tracked
!tests/CMakeLists.txt
!tests/README.md
# /unittests
## Unit test binaries and logs are ignored
unittests/unittest_*
unittests/unittest*.log
unittests/unittest*.trs
## Unit test source files must be tracked
!unittests/unittest*.[ch]
!unittests/unittest*.[ch]pp
## Build script and documentations must be tracked
!unittests/CMakeLists.txt
!unittests/README.md
# check test log files
test-suite*.log
# /perf
## Benchmarking binaries and result files are ignored
perf/*_lat
perf/*_thr
perf/benchmark_*
perf/results
## Benchmarking source files must be tracked
!perf/*.[ch]
!perf/*.[ch]pp
## Benchmarking tool scripts must be tracked
!perf/*.py
!perf/*.sh
# /doc
## Generated document files
doc/*.[137]
doc/*.html
doc/*.xml
src/libzmq.pc
bin/
lib/
obj/
builds/msvc/**/*.opensdf
builds/msvc/**/*.suo
builds/msvc/**/*.sdf
builds/msvc/**/*.user
builds/msvc/**/*Debug
builds/msvc/**/*Release
builds/redhat/zeromq.spec
packaging/nuget/*.nupkg
# external libraries and release archive files
foreign/openpgm/*
!foreign/openpgm/*.tar.bz2
!foreign/openpgm/*.tar.gz
@ -137,12 +125,5 @@ foreign/openpgm/*
zeromq-*.tar.gz
zeromq-*.zip
core
build
test-suite.log
curve_keygen
inproc_lat
inproc_thr
local_lat
local_thr
remote_lat
remote_thr
mybuild

81
.mailmap Normal file
View File

@ -0,0 +1,81 @@
Ahmet Kakici <ahmet.kakici@pro-line.com.tr> ahmet <ahmet.kakici@pro-line.com.tr>
Andrey Sibiryov <me@kobology.ru> Kobolog <me@kobology.ru>
Brian Knox <taotetek@gmail.com> taotetek <taotetek@users.noreply.github.com>
Chernyshev Vyacheslav <astellar@ro.ru> Astellar <astellar@ro.ru>
Chris Laws <clawsicus@gmail.com> Chris Laws <claws@localhost>
Chris Staite <chris@yourdreamnet.co.uk> Chris <chris@yourdreamnet.co.uk>
Christoph Zach <czach@rst-automation.com> czach <czach@rst-automation.com>
Chuck Remes <git@chuckremes.com> Chuck Remes <cremes@mac.com>
Chuck Remes <git@chuckremes.com> Chuck Remes <cremes.devlist@mac.com>
Constantin Rack <constantin.rack@gmail.com> Constantin Rack <constantin@rack.li>
Constantin Rack <constantin.rack@gmail.com> Constantin Rack <c-rack@users.noreply.github.com>
Daniel Krikun <krikun.daniel@gmail.com> danielkr <krikun.daniel@gmail.com>
Daiyu Hurst <daiyu.hurst@gmail.com> DaiyuHurst <daiyu.hurst@gmail.com>
Diego Rodriguez-Losada <diego.rlosada@gmail.com> Diego <diego.rlosada@gmail.com>
Dongmin Yu <miniway@gmail.com> Min(Dongmin Yu) <miniway@gmail.com>
Doron Somech <somdoron@gmail.com> somdoron <somdoron@gmail.com>
Elliot Saba <staticfloat@gmail.com> staticfloat <staticfloat@gmail.com>
Eric Voskuil <eric@voskuil.org> evoskuil <eric@voskuil.org>
Eric Voskuil <eric@voskuil.org> anonymous <eric@voskuil.org>
Felipe Farinon <felipe.farinon@powersyslab.com> psl-felipefarinon <felipe.farinon@powersyslab.com>
Frank Hartmann <soundart@gmx.net> Frank <soundart@gmx.net>
Gian Lorenzo Meocci <glmeocci@gmail.com> meox <glmeocci@gmail.com>
Hardeep Singh <hshardeesi@gmail.com> Hardeep <hshardeesi@gmail.com>
Henrik Feldt <henrik@haf.se> Henrik <henrik@haf.se>
Huang Xin <chrox.huang@gmail.com> chrox <chrox.huang@gmail.com>
Ian Barber <ian.barber@gmail.com> Ian Barber <ianbarber@google.com>
Jens Auer <jens.auer@cgi.com> Jens Auer <jens-auer@users.noreply.github.com>
Jens Auer <jens.auer@cgi.com> Jens Auer <jens.auer@betaversion.net>
Joe Eli McIlvain <joe.eli.mac@gmail.com> Joe McIlvain <joe.eli.mac@gmail.com>
Jos Decoster <jos.decoster@gmail.com> jdc8 <jos.decoster@gmail.com>
Jos Decoster <jos.decoster@gmail.com> Jos Decoster <jos.decoster@retarget.com>
Joshua Gao <jmg116@gmail.com> Josh Gao <jgao@mobileiron.com>
Jörg Kreuzberger <joerg@kreuzberger.eu> kreuzberger <joerg@kreuzberger.eu>
Arnaud Kapp <kapp.arno@gmail.com> Kapp Arnaud <kapp.arno@gmail.com>
Arnaud Kapp <kapp.arno@gmail.com> KAPP Arnaud <kapp.arno@gmail.com>
Arnaud Kapp <kapp.arno@gmail.com> KAPP Arnaud <xaqq@users.noreply.github.com>
Kenneth Wilke <kenneth.wilke@rackspace.com> KennethWilke <kenneth.wilke@rackspace.com>
Kevin Sapper <mail@kevinsapper.de> sappo <mail@kevinsapper.de>
Kevin Sapper <mail@kevinsapper.de> Kevin Sapper <sappo@users.noreply.github.com>
Leonard Michelet <leonard.michelet@openwide.fr> leonarf <leonard.michelet@openwide.fr>
Martijn Jasperse <m.jasperse@gmail.com> mjasperse <m.jasperse@gmail.com>
Martin Hurton <hurtonm@gmail.com> Martin Hurtoň <hurtonm@gmail.com>
Martin Lucina <martin@lucina.net> Martin Lucina <mato@kotelna.sk>
Martin Sustrik <sustrik@250bpm.com> Martin Sustrik <sustrik@fastmq.commkdir>
Martin Sustrik <sustrik@250bpm.com> Martin Sustrik <sustrik@fastmq.com>
Martin Sustrik <sustrik@250bpm.com> sustrik <sustrik@250bpm.com>
Martin Sustrik <sustrik@250bpm.com> Martin Sustrik <sustrik@jozsi.(none)>
Martin Sustrik <sustrik@250bpm.com> unknown <sustrik@.(none)>
Martin Sustrik <sustrik@250bpm.com> Martin Sustrik <sustrik@turist.(none)>
Maurice Barnum <msb@yahoo-inc.com> maurice barnum <msb@yahoo-inc.com>
Maurizio Melato <maurizio.melato@nice-software.com> unknown <mauri@okinawa.(none)>
Max Skaller <Max.Skaller@gmail.com> skaller <Max.Skaller@gmail.com>
Michael Fox <415fox@gmail.com> m <415fox@gmail.com>
Michael Hand <mipa@matrix.by> Mipa <mipa@matrix.by>
Michel Zou <xantares10@hotmail.com> xantares <xantares09@hotmail.com>
Mikael Helbo Kjaer <mhk@designtech.dk> Mikael Helbo Kjær <mhk@designtech.dk>
Mike Gatny <mgatny@gmail.com> Mike Gatny <mgatny@connamara.com>
Mikko Koppanen <mikko.koppanen@gmail.com> Mikko Koppanen <mkoppanen@php.net>
Mikko Koppanen <mikko.koppanen@gmail.com> Mikko Koppanen <mikko@kuut.io>
Mikko Koppanen <mikko.koppanen@gmail.com> Mikko Koppanen <mkoppanen@gameboy.config>
Min RK <benjaminrk@gmail.com> MinRK <benjaminrk@gmail.com>
Min RK <benjaminrk@gmail.com> Min Ragan-Kelley <benjaminrk@gmail.com>
Montoya Edu <montoya.edu@gmail.com> montoyaedu <montoya.edu@gmail.com>
Nikita Kozlov <nikita@elyzion.net> nikita kozlov <nikita@elyzion.net>
Pavol Malosek <malosek@fastmq.com> malosek <malosek@fastmq.com>
Pieter Hintjens <ph@imatix.com> Pieter Hintjens <ph@itmatix.com>
Reza Ebrahimi <reza.ebrahimi.dev@gmail.com> reza.ebrahimi <reza.ebrahimi.dev@gmail.com>
Ricardo Catalinas Jiménez <r@untroubled.be> Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
Rohan Bedarkar <rohanb@cs.uchicago.edu> rohanbedarkar <rohanb@cs.uchicago.edu>
Rohan Bedarkar <rohanb@cs.uchicago.edu> Rohan <rbe@ws5-34-chi.rtsgroup.net>
Sergey KHripchenko <shripchenko@intermedia.net> root <root@ast-pbx-mt-3.intermedia.net>
Sergey KHripchenko <shripchenko@intermedia.net> shripchenko <shripchenko@intermedia.net>
Sergey M. <dstftw@gmail.com> Sergey M <dstftw@gmail.com>
Steven McCoy <steven.mccoy@miru.hk> Steve-o <fnjordy@gmail.com>
Tamara Kustarova <kustarova@fastmq.com> tamara <tamara@jozsi.(none)>
Timothee Besset <ttimo@ttimo.net> Timothee "TTimo" Besset <ttimo@ttimo.net>
Timothy Mossbarger <tim@ent.net> Tim M <tim@ent.net>
Trevor Bernard <trevor.bernard@gmail.com> Trevor Bernard <tbernard@liveops.com>
Trevor Bernard <trevor.bernard@gmail.com> Trevor Bernard <trevor.bernard@userevents.com>
Volodymyr Korniichuk <VolodymyrKorn@gmail.com> Volodymyr Korniichuk <9173519@gmail.com>
lysyloren <lysy_loren@gmail.com> lysyloren <lysy.loren@gmail.com>

26
.obs/workflows.yml Normal file
View File

@ -0,0 +1,26 @@
workflow:
steps:
- branch_package:
source_project: network:messaging:zeromq:git-draft
source_package: libzmq
target_project: network:messaging:zeromq:ci
rebuild:
steps:
- trigger_services:
project: network:messaging:zeromq:git-stable
package: libzmq
- trigger_services:
project: network:messaging:zeromq:git-draft
package: libzmq
filters:
event: push
release:
steps:
- trigger_services:
project: network:messaging:zeromq:release-stable
package: libzmq
- trigger_services:
project: network:messaging:zeromq:release-draft
package: libzmq
filters:
event: tag_push

38
.readthedocs.yaml Normal file
View File

@ -0,0 +1,38 @@
#
# libzmq readthedocs.io integration
#
# This configuration file is processed by readthedocs.io to rebuild the
# libzmq documentation using Asciidoctor, see
# https://docs.readthedocs.io/en/stable/build-customization.html#asciidoc
version: "2"
formats:
- htmlzip
build:
os: "ubuntu-22.04"
tools:
nodejs: "20"
# NOTE: as of Nov 2023, build.apt_packages is NOT considered when using build.commands
#apt_packages:
# - automake
# - autoconf
# - cmake
# - libtool
commands:
# install required tools
- npm install -g asciidoctor
# HTML docs
# ---------
- doc/create_page_list.sh "$(pwd)/doc/__pagelist" "$(pwd)/doc"
- asciidoctor --backend html --destination-dir $READTHEDOCS_OUTPUT/html --attribute stylesheet=asciidoctor.css --attribute zmq_version='4.3.6' --attribute zmq_pagelist_dir=$(pwd)/doc doc/*.adoc
# HTMLZIP docs
# ------------
# Note that for usability we make sure zip will create a zipfile containing just a flat list of HTML files;
# to achieve that it's important to avoid storing absolute paths when invoking "zip", thus we use -j
# Also note that the archive name should match exactly the project slug, "libzmq" in this case.
- mkdir -p $READTHEDOCS_OUTPUT/htmlzip/
- cd $READTHEDOCS_OUTPUT/html && zip -j ../htmlzip/libzmq.zip *.html

View File

@ -4,39 +4,27 @@ language: c
os:
- linux
- osx
sudo: false
dist: bionic
cache: ccache
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}"
matrix:
- BUILD_TYPE=default
# tokens to deploy releases on OBS and create/delete temporary branch on Github.
# 1) Create a token on https://github.com/settings/tokens/new with "public_repo"
# capability and encrypt it with travis encrypt --org -r zeromq/libzmq GH_TOKEN="<token>"
# 2) Create 2 OBS tokens with osc token --create network:messaging:zeromq:release-<stable|draft> libzmq
# encrypt them with travis encrypt --org -r zeromq/libzmq OBS_<STABLE|DRAFT>_TOKEN="<token>"
global:
- secure: aaIs9Y44FYp9VFCqa6LLD4illBH4aUfbS0zzzbAQ5xJvD6NfBsMiKEIhf/kRNCHAtP+1VfQVOejTD6/i08ALsVr3cZD9oB/t7874tz2/jeZUIhRNo+1KwyaVqNg0yUSV6ASIoq4aOfuGnjBlezNQ8LQ2bjQB2m4Enl5wxoYcYdA=
- secure: YFrcedBIKe0NR1WC6qQi9phZgtnzOiBIXm40TirvCtstV4eVnSouKgtQfLLArZ4o2tjflq4grQQNo1rJatvyi5YPOXsMcndsni18S+4Ffu8qbECdtPrK52vBweuf7q9oV9Ydax0Fm4bEqEMOZ2/mRBy3nK+mgsE3upeMwyWR0Zw=
- secure: lbZSzmqN39QdJwewKOZgq/1ijPKuyx9MFrGzMqXj2+eOSlaZS/tNavHMdKJOev+qJGK9wxmwzxOxS10AiH+AvN7WBacXX4ZtudjScz2HKJRDWTKyzMbzyScq51afniItzrsm+Vo8NHkenNFkux0sSbh0aHlpkLwrGQu+WZWcDN4=
- secure: "ZFL7hLJlGwYix8fF835OnQYakBt/o5iS7IfSW7el44ejEvGAOM9O5/ufxCcqSqn8Np7nOaM3RriAVTqWPZD6S7tMeflGTSGYHPYwWUc83z4rUPyG2FWVKXdB8ufpebAwu3hCgLiSmVeoQG47dl6xNk1oKCd+3UIjgz33u1Ecfps="
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
before_script:
- mkdir tmp
# libsodium
- git clone --depth 1 -b stable git://github.com/jedisct1/libsodium.git
- ( 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
script:
- ./autogen.sh && ./configure --with-libsodium --prefix=${BUILD_PREFIX} && make distcheck
# Build and check this project according to the BUILD_TYPE
script: ./ci_build.sh
# Deploy tags
before_deploy:
@ -44,12 +32,12 @@ before_deploy:
deploy:
provider: releases
api_key:
secure: "C+hbVQQL62twHIit4vjExT908acpjQzxPvCgnKKVdEYm58+rXVvQ4HzOlNve7py522m/2iazwnJDX5bPskES5Kof3jqTJ2hZI9rcFXh1KuEjUojiPwix/mUnxFYcxS4PhgmyqG3z5YUsEXnDhwkOwsAVnQIJUFV1XAWMWwDCilI="
secure: vGB5E+A8wxm2J1GJZzmIgT9PrjEzvd9gE8iui8FyxSbxAsW9vFZFGZC/21sTtpVcmRarwQCHH1UEbtg+nJwN2iD9YzMRnSVks8xqP+b709YW+VXaMuhZgTzWa74IorQku7NuvLibvQk72/OSgdwPGaNJ6f5AX9pnWVWbEoW1svE=
file_glob: true
file: ${ZEROMQ41_DEPLOYMENT}
file: ${LIBZMQ_DEPLOYMENT}
skip_cleanup: true
on:
repo: zeromq/zeromq4-1
repo: zeromq/libzmq
branch: master
tags: true
condition: "$TRAVIS_OS_NAME =~ (linux)"
condition: "$TRAVIS_OS_NAME =~ (linux) && $BUILD_TYPE =~ (default) && $CURVE =~ (libsodium) && -z $DRAFT"

30
AUTHORS
View File

@ -1,13 +1,15 @@
Corporate Contributors
======================
Copyright (c) 2007-2015 iMatix Corporation
Copyright (c) 2007-2014 iMatix Corporation
Copyright (c) 2009-2011 250bpm s.r.o.
Copyright (c) 2010-2011 Miru Limited
Copyright (c) 2011 VMware, Inc.
Copyright (c) 2012 Spotify AB
Copyright (c) 2013 Ericsson AB
Copyright (c) 2014 AppDynamics Inc.
Copyright (c) 2015 Google, Inc.
Copyright (c) 2015-2016 Brocade Communications Systems Inc.
Individual Contributors
=======================
@ -15,16 +17,18 @@ Individual Contributors
AJ Lewis
Alexej Lotz
Andrew Thompson
André Caron
Asko Kauppi
Attila Mark
Barak Amar
Ben Gray
Bernd Prager
Bernd Melchers
Bernd Prager
Bob Beaty
Brandon Carpenter
Brian Buchanan
Brett Cameron
Brett Viren
Brian Buchanan
Burak Arslan
Carl Clemens
Chia-liang Kao
@ -35,9 +39,12 @@ Christian Gudrian
Christian Kamm
Chuck Remes
Conrad D. Steenberg
Constantin Rack
Daniel J. Bernstein
Dhammika Pathirana
Dhruva Krishnamurthy
Dirk O. Kaar
Doron Somech
Douglas Creager
Drew Crawford
Erich Heine
@ -50,15 +57,22 @@ Gerard Toonstra
Ghislain Putois
Gonzalo Diethelm
Guido Goldstein
Harald Achitz
Hardeep Singh
Hiten Pandya
Ian Barber
Ilja Golshtein
Ilya Kulakov
Ivo Danihelka
Jacob Rideout
Joe Thornber
Jon Dyte
Kamil Shakirov
Ken Steele
Laurent Alebarde
Kouhei Sutou
Leonardo J. Consoni
Lionel Flandrin
Lourens Naudé
Luca Boccassi
Marc Rossi
Mark Barbisan
@ -77,6 +91,7 @@ Mikko Koppanen
Min Ragan-Kelley
Neale Ferguson
Nir Soffer
Osiris Pedroso
Paul Betts
Paul Colomiets
Pavel Gushcha
@ -86,6 +101,7 @@ Peter Bourgon
Philip Kovacs
Pieter Hintjens
Piotr Trojanek
Reza Ebrahimi
Richard Newton
Rik van der Heijden
Robert G. Jakabosky
@ -99,14 +115,12 @@ Tero Marttila
Terry Wilson
Thijs Terlouw
Thomas Rodgers
Tim Mossbarger
Toralf Wittner
Tore Halvorsen
Trevor Bernard
Vitaly Mayatskikh
Lourens Naudé
Hardeep Singh
André Caron
Tim Mossbarger
Yacheng Zhou
Credits
=======

File diff suppressed because it is too large Load Diff

674
COPYING
View File

@ -1,674 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@ -1,181 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
--------------------------------------------------------------------------------
SPECIAL EXCEPTION GRANTED BY COPYRIGHT HOLDERS
As a special exception, copyright holders 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.
Note: this exception relieves you of any obligations under sections 4 and 5
of this license, and section 6 of the GNU General Public License.

View File

@ -1,11 +1,32 @@
FROM ubuntu:14.04
FROM debian:buster-slim AS builder
LABEL maintainer="ZeroMQ Project <zeromq@imatix.com>"
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq \
&& apt-get install -qq --yes --no-install-recommends \
autoconf \
automake \
build-essential \
git \
libkrb5-dev \
libsodium-dev \
libtool \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/libzmq
COPY . .
RUN ./autogen.sh \
&& ./configure --prefix=/usr/local --with-libsodium --with-libgssapi_krb5 \
&& make \
&& make check \
&& make install
MAINTAINER ZeroMQ Project <zeromq@imatix.com>
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y git build-essential libtool autoconf automake pkg-config unzip libkrb5-dev
RUN cd /tmp && git clone git://github.com/jedisct1/libsodium.git && cd libsodium && git checkout e2a30a && ./autogen.sh && ./configure && make check && make install && ldconfig
RUN cd /tmp && git clone --depth 1 git://github.com/zeromq/libzmq.git && cd libzmq && ./autogen.sh && ./configure && make
# RUN cd /tmp/libzmq && make check
RUN cd /tmp/libzmq && make install && ldconfig
RUN rm /tmp/* -rf
FROM debian:buster-slim
LABEL maintainer="ZeroMQ Project <zeromq@imatix.com>"
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq \
&& apt-get install -qq --yes --no-install-recommends \
libkrb5-dev \
libsodium23 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local /usr/local
RUN ldconfig && ldconfig -p | grep libzmq

2320
Doxygen.cfg Normal file

File diff suppressed because it is too large Load Diff

68
INSTALL
View File

@ -14,6 +14,63 @@ If you clone the Git repository then you should start by running the
command `./autogen.sh`. This is not necessary if you get the source
packages.
CMake installation
==================
The following options are available for cmake invocation:
- `WITH_PERF_TOOL'
Enables the build of performance tools. Default value is ON.
- `ZMQ_BUILD_TESTS'
Builds ZeroMQ tests. Default value is ON.
- `ENABLE_CPACK'
Enables CPack build rules. This option has effect on Windows
platform only. Default value is ON. Turn it to OFF if you
don't want the runtime libraries to be installed (typically
if your installation destination already contains them).
Example: installing ZeroMQ on Windows with no tests, no performance
tools, and no runtime library copy:
cmake -G "NMake Makefiles" -D WITH_PERF_TOOL=OFF -D ZMQ_BUILD_TESTS=OFF
-D ENABLE_CPACK=OFF -D CMAKE_BUILD_TYPE=Release
Windows Builds
==============
On Windows, use CMake for building, or for generating a Visual Studio solution file.
The library can also be built for the Windows 10 UWP platform through CMake :
cmake -H. -B<build dir> -G"Visual Studio 14 2015 Win64" \
-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 \
-DENABLE_CURVE=OFF -DZMQ_BUILD_TESTS=OFF
In VS 2012 it is mandatory to increase the default stack size of 1 MB to
at least 2 MB due to implementation of std::map intermittently requiring
substantial amount of stack and causing stack overflow.
Windows Builds - Static
=======================
When linking statically with libzmq your CFLAGS and/or CPPFLAGS need to include
`-DZMQ_STATIC` otherwise `__dclspec(dllimport)` will be set for all functions
and the build will fail.
This is a workaround for issue:
https://github.com/zeromq/libzmq/issues/2788
Windows Builds - Wine
=====================
To use Windows binaries on *nix via Wine, it is necessary to ensure that the
kernel TCP buffers are large enough. On some systems, like OS X, they are too
small by default.
They need to be set to at least one MB as a workaround for issue:
https://github.com/zeromq/libzmq/issues/1608
sudo sysctl -w net.inet.tcp.sendspace=1300000
Basic Installation
==================
@ -80,6 +137,17 @@ The simplest way to compile this package is:
6. Often, you can also type `make uninstall' to remove the installed
files again.
OS X Builds - Documentation
===========================
Basic installation on OS X may fail in `Making all in doc' step. This
error can be resolved by adding environment variable for shell.
export XML_CATALOG_FILES=/usr/local/etc/xml/catalog
Write command above in shell for instant resolve, or append command into
shell profile file and reload for permanent resolve.
Compilers and Options
=====================

485
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,485 @@
pipeline {
agent { label "linux || macosx || bsd || solaris || posix || windows" }
parameters {
// Use DEFAULT_DEPLOY_BRANCH_PATTERN and DEFAULT_DEPLOY_JOB_NAME if
// defined in this jenkins setup -- in Jenkins Management Web-GUI
// see Configure System / Global properties / Environment variables
// Default (if unset) is empty => no deployment attempt after good test
// See zproject Jenkinsfile-deploy.example for an example deploy job.
// TODO: Try to marry MultiBranchPipeline support with pre-set defaults
// directly in MultiBranchPipeline plugin, or mechanism like Credentials,
// or a config file uploaded to master for all jobs or this job, see
// https://jenkins.io/doc/pipeline/examples/#configfile-provider-plugin
string (
defaultValue: '${DEFAULT_DEPLOY_BRANCH_PATTERN}',
description: 'Regular expression of branch names for which a deploy action would be attempted after a successful build and test; leave empty to not deploy. Reasonable value is ^(master|release/.*|feature/*)$',
name : 'DEPLOY_BRANCH_PATTERN')
string (
defaultValue: '${DEFAULT_DEPLOY_JOB_NAME}',
description: 'Name of your job that handles deployments and should accept arguments: DEPLOY_GIT_URL DEPLOY_GIT_BRANCH DEPLOY_GIT_COMMIT -- and it is up to that job what to do with this knowledge (e.g. git archive + push to packaging); leave empty to not deploy',
name : 'DEPLOY_JOB_NAME')
booleanParam (
defaultValue: true,
description: 'If the deployment is done, should THIS job wait for it to complete and include its success or failure as the build result (true), or should it schedule the job and exit quickly to free up the executor (false)',
name: 'DEPLOY_REPORT_RESULT')
booleanParam (
defaultValue: true,
description: 'Attempt stable build without DRAFT API in this run?',
name: 'DO_BUILD_WITHOUT_DRAFT_API')
booleanParam (
defaultValue: true,
description: 'Attempt build with DRAFT API in this run?',
name: 'DO_BUILD_WITH_DRAFT_API')
booleanParam (
defaultValue: true,
description: 'Attempt a build with docs in this run? (Note: corresponding tools are required in the build environment)',
name: 'DO_BUILD_DOCS')
booleanParam (
defaultValue: false,
description: 'Publish as an archive a "dist" tarball from a build with docs in this run? (Note: corresponding tools are required in the build environment; enabling this enforces DO_BUILD_DOCS too)',
name: 'DO_DIST_DOCS')
booleanParam (
defaultValue: true,
description: 'Attempt "make check" in this run?',
name: 'DO_TEST_CHECK')
booleanParam (
defaultValue: false,
description: 'Attempt "make memcheck" in this run?',
name: 'DO_TEST_MEMCHECK')
booleanParam (
defaultValue: true,
description: 'Attempt "make distcheck" in this run?',
name: 'DO_TEST_DISTCHECK')
booleanParam (
defaultValue: true,
description: 'Attempt a "make install" check in this run?',
name: 'DO_TEST_INSTALL')
string (
defaultValue: "`pwd`/tmp/_inst",
description: 'If attempting a "make install" check in this run, what DESTDIR to specify? (absolute path, defaults to "BUILD_DIR/tmp/_inst")',
name: 'USE_TEST_INSTALL_DESTDIR')
booleanParam (
defaultValue: true,
description: 'Attempt "cppcheck" analysis before this run? (Note: corresponding tools are required in the build environment)',
name: 'DO_CPPCHECK')
booleanParam (
defaultValue: true,
description: 'Require that there are no files not discovered changed/untracked via .gitignore after builds and tests?',
name: 'REQUIRE_GOOD_GITIGNORE')
string (
defaultValue: "30",
description: 'When running tests, use this timeout (in minutes; be sure to leave enough for double-job of a distcheck too)',
name: 'USE_TEST_TIMEOUT')
booleanParam (
defaultValue: true,
description: 'When using temporary subdirs in build/test workspaces, wipe them after successful builds?',
name: 'DO_CLEANUP_AFTER_BUILD')
}
triggers {
pollSCM 'H/2 * * * *'
}
// Note: your Jenkins setup may benefit from similar setup on side of agents:
// PATH="/usr/lib64/ccache:/usr/lib/ccache:/usr/bin:/bin:${PATH}"
stages {
stage ('prepare') {
steps {
dir("tmp") {
sh 'if [ -s Makefile ]; then make -k distclean || true ; fi'
sh 'chmod -R u+w .'
deleteDir()
}
sh './autogen.sh'
stash (name: 'prepped', includes: '**/*', excludes: '**/cppcheck.xml')
}
}
stage ('compile') {
parallel {
stage ('build with DRAFT') {
when { expression { return ( params.DO_BUILD_WITH_DRAFT_API ) } }
steps {
dir("tmp/build-withDRAFT") {
deleteDir()
unstash 'prepped'
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; ./configure --enable-drafts=yes --with-docs=no'
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; make -k -j4 || make'
sh 'echo "Are GitIgnores good after make with drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
stash (name: 'built-draft', includes: '**/*', excludes: '**/cppcheck.xml')
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('build without DRAFT') {
when { expression { return ( params.DO_BUILD_WITHOUT_DRAFT_API ) } }
steps {
dir("tmp/build-withoutDRAFT") {
deleteDir()
unstash 'prepped'
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; ./configure --enable-drafts=no --with-docs=no'
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; make -k -j4 || make'
sh 'echo "Are GitIgnores good after make without drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
stash (name: 'built-nondraft', includes: '**/*', excludes: '**/cppcheck.xml')
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('build with DOCS') {
when { expression { return ( params.DO_BUILD_DOCS || params.DO_DIST_DOCS ) } }
steps {
dir("tmp/build-DOCS") {
deleteDir()
unstash 'prepped'
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; ./configure --enable-drafts=yes --with-docs=yes'
script {
if ( params.DO_DIST_DOCS ) {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; make dist-gzip || exit ; DISTFILE="`ls -1tc *.tar.gz | head -1`" && [ -n "$DISTFILE" ] && [ -s "$DISTFILE" ] || exit ; mv -f "$DISTFILE" __dist.tar.gz'
archiveArtifacts artifacts: '__dist.tar.gz'
sh "rm -f __dist.tar.gz"
}
}
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; make -k -j4 || make'
sh 'echo "Are GitIgnores good after make with docs? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
stash (name: 'built-docs', includes: '**/*', excludes: '**/cppcheck.xml')
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
}
}
stage ('check') {
parallel {
stage ('cppcheck') {
when { expression { return ( params.DO_CPPCHECK ) } }
steps {
dir("tmp/test-cppcheck") {
deleteDir()
unstash 'prepped'
sh 'cppcheck --std=c++11 --enable=all --inconclusive --xml --xml-version=2 . 2>cppcheck.xml'
archiveArtifacts artifacts: '**/cppcheck.xml'
sh 'rm -f cppcheck.xml'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('check with DRAFT') {
when { expression { return ( params.DO_BUILD_WITH_DRAFT_API && params.DO_TEST_CHECK ) } }
steps {
dir("tmp/test-check-withDRAFT") {
deleteDir()
unstash 'built-draft'
script {
def RETRY_NUMBER = 0
retry(3) {
RETRY_NUMBER++
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
try {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:$LD_LIBRARY_PATH"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="$LD_LIBRARY_PATH" check'
}
catch (Exception e) {
currentBuild.result = 'UNSTABLE' // Jenkins should not let the verdict "improve"
sh """D="`pwd`"; B="`basename "\$D"`" ; [ "${RETRY_NUMBER}" -gt 0 ] && T="_try-${RETRY_NUMBER}" || T="" ; tar czf "test-suite_${BUILD_TAG}_\${B}\${T}.tar.gz" `find . -name '*.trs'` `find . -name '*.log'`"""
archiveArtifacts artifacts: "**/test-suite*.tar.gz", allowEmpty: true
throw e
}
}
}
}
sh 'echo "Are GitIgnores good after make check with drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('check without DRAFT') {
when { expression { return ( params.DO_BUILD_WITHOUT_DRAFT_API && params.DO_TEST_CHECK ) } }
steps {
dir("tmp/test-check-withoutDRAFT") {
deleteDir()
unstash 'built-nondraft'
script {
def RETRY_NUMBER = 0
retry(3) {
RETRY_NUMBER++
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
try {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:$LD_LIBRARY_PATH"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="$LD_LIBRARY_PATH" check'
}
catch (Exception e) {
currentBuild.result = 'UNSTABLE' // Jenkins should not let the verdict "improve"
sh """D="`pwd`"; B="`basename "\$D"`" ; [ "${RETRY_NUMBER}" -gt 0 ] && T="_try-${RETRY_NUMBER}" || T="" ; tar czf "test-suite_${BUILD_TAG}_\${B}\${T}.tar.gz" `find . -name '*.trs'` `find . -name '*.log'`"""
archiveArtifacts artifacts: "**/test-suite*.tar.gz", allowEmpty: true
throw e
}
}
}
}
sh 'echo "Are GitIgnores good after make check without drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('memcheck with DRAFT') {
when { expression { return ( params.DO_BUILD_WITH_DRAFT_API && params.DO_TEST_MEMCHECK ) } }
steps {
dir("tmp/test-memcheck-withDRAFT") {
deleteDir()
unstash 'built-draft'
script {
def RETRY_NUMBER = 0
retry(3) {
RETRY_NUMBER++
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
try {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:$LD_LIBRARY_PATH"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="$LD_LIBRARY_PATH" memcheck && exit 0 ; echo "Re-running failed ($?) memcheck with greater verbosity" >&2 ; make LD_LIBRARY_PATH="$LD_LIBRARY_PATH" VERBOSE=1 memcheck-verbose'
}
catch (Exception e) {
currentBuild.result = 'UNSTABLE' // Jenkins should not let the verdict "improve"
sh """D="`pwd`"; B="`basename "\$D"`" ; [ "${RETRY_NUMBER}" -gt 0 ] && T="_try-${RETRY_NUMBER}" || T="" ; tar czf "test-suite_${BUILD_TAG}_\${B}\${T}.tar.gz" `find . -name '*.trs'` `find . -name '*.log'`"""
archiveArtifacts artifacts: "**/test-suite*.tar.gz", allowEmpty: true
throw e
}
}
}
}
sh 'echo "Are GitIgnores good after make memcheck with drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('memcheck without DRAFT') {
when { expression { return ( params.DO_BUILD_WITHOUT_DRAFT_API && params.DO_TEST_MEMCHECK ) } }
steps {
dir("tmp/test-memcheck-withoutDRAFT") {
deleteDir()
unstash 'built-nondraft'
script {
def RETRY_NUMBER = 0
retry(3) {
RETRY_NUMBER++
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
try {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:$LD_LIBRARY_PATH"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="$LD_LIBRARY_PATH" memcheck && exit 0 ; echo "Re-running failed ($?) memcheck with greater verbosity" >&2 ; make LD_LIBRARY_PATH="$LD_LIBRARY_PATH" VERBOSE=1 memcheck-verbose'
}
catch (Exception e) {
currentBuild.result = 'UNSTABLE' // Jenkins should not let the verdict "improve"
sh """D="`pwd`"; B="`basename "\$D"`" ; [ "${RETRY_NUMBER}" -gt 0 ] && T="_try-${RETRY_NUMBER}" || T="" ; tar czf "test-suite_${BUILD_TAG}_\${B}\${T}.tar.gz" `find . -name '*.trs'` `find . -name '*.log'`"""
archiveArtifacts artifacts: "**/test-suite*.tar.gz", allowEmpty: true
throw e
}
}
}
}
sh 'echo "Are GitIgnores good after make memcheck without drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('distcheck with DRAFT') {
when { expression { return ( params.DO_BUILD_WITH_DRAFT_API && params.DO_TEST_DISTCHECK ) } }
steps {
dir("tmp/test-distcheck-withDRAFT") {
deleteDir()
unstash 'built-draft'
script {
def RETRY_NUMBER = 0
retry(3) {
RETRY_NUMBER++
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
try {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:$LD_LIBRARY_PATH"; export LD_LIBRARY_PATH; DISTCHECK_CONFIGURE_FLAGS="--enable-drafts=yes --with-docs=no" ; export DISTCHECK_CONFIGURE_FLAGS; make DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS" LD_LIBRARY_PATH="$LD_LIBRARY_PATH" distcheck'
}
catch (Exception e) {
currentBuild.result = 'UNSTABLE' // Jenkins should not let the verdict "improve"
sh """D="`pwd`"; B="`basename "\$D"`" ; [ "${RETRY_NUMBER}" -gt 0 ] && T="_try-${RETRY_NUMBER}" || T="" ; tar czf "test-suite_${BUILD_TAG}_\${B}\${T}.tar.gz" `find . -name '*.trs'` `find . -name '*.log'`"""
archiveArtifacts artifacts: "**/test-suite*.tar.gz", allowEmpty: true
throw e
}
}
}
}
sh 'echo "Are GitIgnores good after make distcheck with drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('distcheck without DRAFT') {
when { expression { return ( params.DO_BUILD_WITHOUT_DRAFT_API && params.DO_TEST_DISTCHECK ) } }
steps {
dir("tmp/test-distcheck-withoutDRAFT") {
deleteDir()
unstash 'built-nondraft'
script {
def RETRY_NUMBER = 0
retry(3) {
RETRY_NUMBER++
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
try {
sh 'CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:$LD_LIBRARY_PATH"; export LD_LIBRARY_PATH; DISTCHECK_CONFIGURE_FLAGS="--enable-drafts=no --with-docs=no" ; export DISTCHECK_CONFIGURE_FLAGS; make DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS" LD_LIBRARY_PATH="$LD_LIBRARY_PATH" distcheck'
}
catch (Exception e) {
currentBuild.result = 'UNSTABLE' // Jenkins should not let the verdict "improve"
sh """D="`pwd`"; B="`basename "\$D"`" ; [ "${RETRY_NUMBER}" -gt 0 ] && T="_try-${RETRY_NUMBER}" || T="" ; tar czf "test-suite_${BUILD_TAG}_\${B}\${T}.tar.gz" `find . -name '*.trs'` `find . -name '*.log'`"""
archiveArtifacts artifacts: "**/test-suite*.tar.gz", allowEmpty: true
throw e
}
}
}
}
sh 'echo "Are GitIgnores good after make distcheck without drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('install with DRAFT') {
when { expression { return ( params.DO_BUILD_WITH_DRAFT_API && params.DO_TEST_INSTALL ) } }
steps {
dir("tmp/test-install-withDRAFT") {
deleteDir()
unstash 'built-draft'
retry(3) {
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
sh """CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:\${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}" DESTDIR="${params.USE_TEST_INSTALL_DESTDIR}/withDRAFT" install"""
}
}
sh """cd "${params.USE_TEST_INSTALL_DESTDIR}/withDRAFT" && find . -ls"""
sh 'echo "Are GitIgnores good after make install with drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('install without DRAFT') {
when { expression { return ( params.DO_BUILD_WITHOUT_DRAFT_API && params.DO_TEST_INSTALL ) } }
steps {
dir("tmp/test-install-withoutDRAFT") {
deleteDir()
unstash 'built-nondraft'
retry(3) {
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
sh """CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:\${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}" DESTDIR="${params.USE_TEST_INSTALL_DESTDIR}/withoutDRAFT" install"""
}
}
sh """cd "${params.USE_TEST_INSTALL_DESTDIR}/withoutDRAFT" && find . -ls"""
sh 'echo "Are GitIgnores good after make install without drafts? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
stage ('install with DOCS') {
when { expression { return ( params.DO_BUILD_DOCS && params.DO_TEST_INSTALL ) } }
steps {
dir("tmp/test-install-withDOCS") {
deleteDir()
unstash 'built-docs'
retry(3) {
timeout (time: "${params.USE_TEST_TIMEOUT}".toInteger(), unit: 'MINUTES') {
sh """CCACHE_BASEDIR="`pwd`" ; export CCACHE_BASEDIR; LD_LIBRARY_PATH="`pwd`/src/.libs:\${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH; make LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}" DESTDIR="${params.USE_TEST_INSTALL_DESTDIR}/withDOCS" install"""
}
}
sh """cd "${params.USE_TEST_INSTALL_DESTDIR}/withDOCS" && find . -ls"""
sh 'echo "Are GitIgnores good after make install with Docs? (should have no output below)"; git status -s || if [ "${params.REQUIRE_GOOD_GITIGNORE}" = false ]; then echo "WARNING GitIgnore tests found newly changed or untracked files" >&2 ; exit 0 ; else echo "FAILED GitIgnore tests" >&2 ; exit 1; fi'
script {
if ( params.DO_CLEANUP_AFTER_BUILD ) {
deleteDir()
}
}
}
}
}
}
}
stage ('deploy if appropriate') {
steps {
script {
def myDEPLOY_JOB_NAME = sh(returnStdout: true, script: """echo "${params["DEPLOY_JOB_NAME"]}" """).trim();
def myDEPLOY_BRANCH_PATTERN = sh(returnStdout: true, script: """echo "${params["DEPLOY_BRANCH_PATTERN"]}" """).trim();
def myDEPLOY_REPORT_RESULT = sh(returnStdout: true, script: """echo "${params["DEPLOY_REPORT_RESULT"]}" """).trim().toBoolean();
echo "Original: DEPLOY_JOB_NAME : ${params["DEPLOY_JOB_NAME"]} DEPLOY_BRANCH_PATTERN : ${params["DEPLOY_BRANCH_PATTERN"]} DEPLOY_REPORT_RESULT : ${params["DEPLOY_REPORT_RESULT"]}"
echo "Used: myDEPLOY_JOB_NAME:${myDEPLOY_JOB_NAME} myDEPLOY_BRANCH_PATTERN:${myDEPLOY_BRANCH_PATTERN} myDEPLOY_REPORT_RESULT:${myDEPLOY_REPORT_RESULT}"
if ( (myDEPLOY_JOB_NAME != "") && (myDEPLOY_BRANCH_PATTERN != "") ) {
if ( env.BRANCH_NAME =~ myDEPLOY_BRANCH_PATTERN ) {
def GIT_URL = sh(returnStdout: true, script: """git remote -v | grep -E '^origin' | awk '{print \$2}' | head -1""").trim()
def GIT_COMMIT = sh(returnStdout: true, script: 'git rev-parse --verify HEAD').trim()
def DIST_ARCHIVE = ""
if ( params.DO_DIST_DOCS ) { DIST_ARCHIVE = env.BUILD_URL + "artifact/__dist.tar.gz" }
build job: "${myDEPLOY_JOB_NAME}", parameters: [
string(name: 'DEPLOY_GIT_URL', value: "${GIT_URL}"),
string(name: 'DEPLOY_GIT_BRANCH', value: env.BRANCH_NAME),
string(name: 'DEPLOY_GIT_COMMIT', value: "${GIT_COMMIT}"),
string(name: 'DEPLOY_DIST_ARCHIVE', value: "${DIST_ARCHIVE}")
], quietPeriod: 0, wait: myDEPLOY_REPORT_RESULT, propagate: myDEPLOY_REPORT_RESULT
} else {
echo "Not deploying because branch '${env.BRANCH_NAME}' did not match filter '${myDEPLOY_BRANCH_PATTERN}'"
}
} else {
echo "Not deploying because deploy-job parameters are not set"
}
}
}
}
}
post {
success {
script {
if (currentBuild.getPreviousBuild()?.result != 'SUCCESS') {
// Uncomment desired notification
//slackSend (color: "#008800", message: "Build ${env.JOB_NAME} is back to normal.")
//emailext (to: "qa@example.com", subject: "Build ${env.JOB_NAME} is back to normal.", body: "Build ${env.JOB_NAME} is back to normal.")
}
}
}
failure {
// Uncomment desired notification
// Section must not be empty, you can delete the sleep once you set notification
sleep 1
//slackSend (color: "#AA0000", message: "Build ${env.BUILD_NUMBER} of ${env.JOB_NAME} ${currentBuild.result} (<${env.BUILD_URL}|Open>)")
//emailext (to: "qa@example.com", subject: "Build ${env.JOB_NAME} failed!", body: "Build ${env.BUILD_NUMBER} of ${env.JOB_NAME} ${currentBuild.result}\nSee ${env.BUILD_URL}")
}
}
}

373
LICENSE Normal file
View File

@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View File

@ -1,56 +0,0 @@
Component: Atomic Operations
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Lock-free Algorithms
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: TCP transport
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: IPC transport
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: PGM transport
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: In-process transport
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: I/O Threads
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Application Threads and Differnet Socket Types
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Multiplexing (zmq_poll)
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Generic Infrastructure (context, mailbox, command, pipe)
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Documentation
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Autotools build system
Maintainer: Mikko Koppanen
Contact: mikko.koppanen@gmail.com
Component: MSVC build system
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com
Component: Performance tests
Maintainer: Martin Sustrik
Contact: sustrik@250bpm.com

1467
Makefile.am Normal file → Executable file

File diff suppressed because it is too large Load Diff

1201
NEWS

File diff suppressed because it is too large Load Diff

15
README.cygwin.md Executable file
View File

@ -0,0 +1,15 @@
libzmq-cygwin
=============
Definitive build fixes for cygwin (See https://github.com/zeromq/pyzmq/issues/113 for partial solution)
What's changed:
./Makefile.am Add cygwin-specific target mostly the same as mingw
./configure.ac Add cygwin-specific target mostly the same as mingw
./tests/testutil.hpp Lengthen socket timeout to 121 seconds
What's new:
./README.cygwin.md This file
./builds/cygwin Folder for cygwin-specific build files
./builds/cygwin/Makefile.cygwin Makefile for cygwin targets

48
README.doxygen.md Normal file
View File

@ -0,0 +1,48 @@
## Overview
The ZeroMQ lightweight messaging kernel is a library which extends the
standard socket interfaces with features traditionally provided by
specialised messaging middleware products. ZeroMQ sockets provide an
abstraction of asynchronous message queues, multiple messaging patterns,
message filtering (subscriptions), seamless access to multiple transport
protocols and more.
This documentation describes the internal software that makes up the
ZeroMQ C++ core engine, and not how to use its API, however it may help
you understand certain aspects better, such as the callgraph of an API method.
There are no instructions on using ZeroMQ within this documentation, only
the API internals that make up the software.
**Note:** this documentation is generated directly from the source code with
Doxygen. Since this project is constantly under active development, what you
are about to read may be out of date! If you notice any errors in the
documentation, or the code comments, then please send a pull request.
Please refer to the README file for anything else.
## Resources
Extensive documentation is provided with the distribution. Refer to
doc/zmq.html, or "man zmq" after you have installed libzmq on your system.
* Website: http://www.zeromq.org/
* Official API documentation: http://api.zeromq.org/
Development mailing list: zeromq-dev@lists.zeromq.org
Announcements mailing list: zeromq-announce@lists.zeromq.org
Git repository: http://github.com/zeromq/libzmq
ZeroMQ developers can also be found on the IRC channel \#zeromq, on the
Freenode network (irc.freenode.net).
## Copyright
Copyright (c) 2007-2016 Contributors as noted in the AUTHORS file.
The project license is specified in LICENSE.
The names "ØMQ", "ZeroMQ", "0MQ", and the ØMQ logo are registered trademarks
of iMatix Corporation ("iMatix") and refers to either (a) the original libzmq
C++ library, or (b) the community of projects hosted in the
https://github.com/zeromq organization.
This Doxygen configuration is adapted by Hiten Pandya, for the ZeroMQ project.

189
README.md
View File

@ -1,6 +1,9 @@
# ZeroMQ
[![Build Status](https://travis-ci.org/zeromq/zeromq4-1.png?branch=master)](https://travis-ci.org/zeromq/zeromq4-1)
[![Build Status](https://github.com/zeromq/libzmq/actions/workflows/CI.yaml/badge.svg)](https://github.com/zeromq/libzmq/actions/workflows/CI.yaml)
[![Build status](https://ci.appveyor.com/api/projects/status/e2ks424yrs1un3wt?svg=true)](https://ci.appveyor.com/project/zeromq/libzmq)
[![Coverage Status](https://coveralls.io/repos/github/zeromq/libzmq/badge.svg?branch=master)](https://coveralls.io/github/zeromq/libzmq?branch=master)
[![Conan Center](https://shields.io/conan/v/zeromq)](https://conan.io/center/zeromq)
## Welcome
@ -11,9 +14,166 @@ abstraction of asynchronous message queues, multiple messaging patterns,
message filtering (subscriptions), seamless access to multiple transport
protocols and more.
## Building and installation
## Supported platforms <a name="#platforms"/>
See the INSTALL file included with the distribution.
Libzmq is mainly written in C++98 with some optional C++11-fragments. For
configuration either autotools or CMake is employed. See below for some lists
of platforms, where libzmq has been successfully compiled on.
### Supported platforms with primary CI
| OS and version | Architecture | Compiler and version | Build system | Remarks |
|----------------------------------------|-------------------------|-------------------------------|--------------|---------------------------------------------------------------------------------------------------------------------------------------|
| Android NDK r25 | arm, arm64, x86, x86_64 | llvm (see NDK) | autotools | DRAFT |
| Ubuntu 14.04.5 LTS (trusty) | amd64 | clang 5.0.0 | autotools | STABLE, extras: GSSAPI, PGM, NORM, C++98 mode only |
| Ubuntu 14.04.5 LTS (trusty) | amd64 | gcc 4.8.4 | autotools | STABLE, DRAFT, extras: GSSAPI, PGM, NORM, TIPC, IPV6, also POLLER=poll, POLLER=select, also valgrind and address sanitizer executions |
| Ubuntu 14.04.5 LTS (trusty) | amd64 | gcc 4.8.4 | CMake 3.12.2 | STABLE |
| Windows Server 2012 R2 | x86 | Visual Studio 2008 | CMake 3.12.2 | DRAFT |
| Windows Server 2012 R2 | x86 | Visual Studio 2010 SP1 | CMake 3.12.2 | DRAFT |
| Windows Server 2012 R2 | x86 | Visual Studio 2012 Update 5 | CMake 3.12.2 | DRAFT |
| Windows Server 2012 R2 | x86, amd64 | Visual Studio 2013 Update 5 | CMake 3.12.2 | DRAFT, STABLE (x86 Release only), also POLLER=epoll |
| Windows Server 2012 R2 | x86 | Visual Studio 2015 Update 3 | CMake 3.12.2 | DRAFT |
| Windows Server 2016 | x86 | Visual Studio 2017 15.9.6 | CMake 3.13.3 | DRAFT |
| cygwin 3.0.0 on Windows Server 2012 R2 | amd64 | gcc 7.4.0 | CMake 3.6.2 | DRAFT |
| MSYS2 ? on Windows Server 2012 R2 | amd64 | gcc 6.4.0 | CMake ? | DRAFT |
| Mac OS X 10.13 | amd64 | Xcode 9.4.1, Apple LLVM 9.1.0 | autotools | STABLE, DRAFT |
| Mac OS X 10.13 | amd64 | Xcode 9.4.1, Apple LLVM 9.1.0 | CMake 3.11.4 | DRAFT |
Note: the platforms are regularly updated by the service providers, so this information might get out of date
without any changes on the side of libzmq. For Appveyor, refer to https://www.appveyor.com/updates/ regarding
platform updates. For travis-ci, refer to https://changelog.travis-ci.com/ regarding platform updates.
### Supported platforms with secondary CI
| OS and version | Architecture | Compiler and version | Build system | Remarks |
|------------------------------|----------------------------|----------------------|--------------|---------|
| CentOS 6 | x86, amd64 | ? | autotools | |
| CentOS 7 | amd64 | ? | autotools | |
| Debian 8.0 | x86, amd64 | ? | autotools | |
| Debian 9.0 | ARM64, x86, amd64 | ? | autotools | |
| Fedora 28 | ARM64, ARM32, amd64 | ? | autotools | |
| Fedora 29 | ARM64, ARM32, amd64 | ? | autotools | |
| Fedora Rawhide | ARM64, ARM32, amd64 | ? | autotools | |
| RedHat Enterprise Linux 7 | amd64, ppc64 | ? | autotools | |
| SuSE Linux Enterprise 12 SP4 | ARM64, amd64, ppc64, s390x | ? | autotools | |
| SuSE Linux Enterprise 15 | amd64 | ? | autotools | |
| xUbuntu 12.04 | x86, amd64 | ? | autotools | |
| xUbuntu 14.04 | x86, amd64 | ? | autotools | |
| xUbuntu 16.04 | x86, amd64 | ? | autotools | |
| xUbuntu 18.04 | x86, amd64 | ? | autotools | |
| xUbuntu 18.10 | x86, amd64 | ? | autotools | |
### Supported platforms with known active users
At the time of writing, no explicit reports have been available. Please report your experiences by opening a PR
adding an entry or moving an entry from the section below.
Under "last report", please name either the SHA1 in case of an unreleased version, or the version number in
case of a released version.
| OS and version | Architecture | Compiler and version | Build system | Last report | Remarks |
|----------------|-------------------|----------------------|--------------|-------------------------|---------|
| Solaris 10 | x86, amd64, sparc | GCC 8.1.0 | CMake | 2019/03/18 | |
| DragonFly BSD | amd64 | gcc 8.3 | autotools | 2018/08/07 git-72854e63 | |
| IBM i | ppc64 | gcc 6.3 | autotools | 2019/10/02 git-25320a3 | |
| QNX 7.0 | x86_64 | gcc 5.4.0 | CMake | 4.3.2 | |
| Windows 10 | ARM64 | Visual Studio 2019 | CMake | 2021/11/15 git-2375ca8b | |
| Windows 10 | ARM64 | clang | CMake | 2021/11/15 git-2375ca8b | |
### Supported platforms without known active users
Note: this list is incomplete and inaccurate and still needs some work.
| OS and version | Architecture | Compiler and version | Build system | Remarks |
|------------------------|--------------|--------------------------|------------------|---------|
| Any Linux distribution | x86, amd64 | gcc ?+, clang ?+, icc ?+ | autotools, CMake | |
| SunOS, Solaris | x86, amd64 | SunPro | autotools, CMake | |
| GNU/kFreeBSD | ? | ? | autotools, CMake | |
| FreeBSD | ? | ? | autotools, CMake | |
| NetBSD | ? | ? | autotools, CMake | |
| OpenBSD | ? | ? | autotools, CMake | |
| DragonFly BSD | amd64 | gcc 8.3 | autotools, CMake | |
| HP-UX | ? | ? | autotools, CMake | |
| GNU/Hurd | ? | ? | autotools | |
| VxWorks 6.8 | ? | ? | ? | |
| Windows CE | ? | ? | ? | |
| Windows UWP | ? | ? | ? | |
| OpenVMS | ? | ? | ? | |
### Unsupported platforms
| OS and version | Architecture | Compiler and version | Remarks |
|----------------|--------------|----------------------|-------------------------------------------------------------------------|
| QNX 6.3 | ? | gcc 3.3.5 | see #3371, support was added by a user, but not contributed to upstream |
For more details, see [here](SupportedPlatforms.md).
For some platforms (Linux, Mac OS X), [prebuilt binary packages are supplied by the ZeroMQ organization](#installation).
For other platforms, you need to [build your own binaries](#build).
## Installation of binary packages <a name="installation"/>
### Linux
For Linux users, pre-built binary packages are available for most distributions.
Note that DRAFT APIs can change at any time without warning, pick a STABLE build to
avoid having them enabled.
#### Latest releases
##### DEB
[![OBS release stable](https://img.shields.io/badge/OBS%20master-stable-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Arelease-stable&package=libzmq3-dev)
[![OBS release draft](https://img.shields.io/badge/OBS%20master-draft-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Arelease-draft&package=libzmq3-dev)
##### RPM
[![OBS release stable](https://img.shields.io/badge/OBS%20master-stable-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Arelease-stable&package=zeromq-devel)
[![OBS release draft](https://img.shields.io/badge/OBS%20master-draft-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Arelease-draft&package=zeromq-devel)
#### Bleeding edge packages
##### DEB
[![OBS release stable](https://img.shields.io/badge/OBS%20master-stable-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Agit-stable&package=libzmq3-dev)
[![OBS release draft](https://img.shields.io/badge/OBS%20master-draft-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Agit-draft&package=libzmq3-dev)
##### RPM
[![OBS release stable](https://img.shields.io/badge/OBS%20master-stable-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Agit-stable&package=zeromq-devel)
[![OBS release draft](https://img.shields.io/badge/OBS%20master-draft-yellow.svg)](http://software.opensuse.org/download.html?project=network%3Amessaging%3Azeromq%3Agit-draft&package=zeromq-devel)
#### Example: Debian 9 latest release, no DRAFT apis
echo "deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/ ./" >> /etc/apt/sources.list
wget https://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/Release.key -O- | sudo apt-key add
apt-get install libzmq3-dev
### OSX
For OSX users, packages are available via brew.
brew install zeromq
## Installation of package manager <a name="package manager"/>
### vcpkg
vcpkg is a full platform package manager, you can easily install libzmq via vcpkg.
git clone https://github.com/microsoft/vcpkg.git
./bootstrap-vcpkg.bat # For powershell
./bootstrap-vcpkg.sh # For bash
./vcpkg install zeromq
## Build from sources <a name="build"/>
To build from sources, see the INSTALL file included with the distribution.
### Android
To build from source, see [README](./builds/android/README.md) file in the
android build directory.
## Resources
@ -28,28 +188,15 @@ Announcements mailing list: zeromq-announce@lists.zeromq.org
Git repository: http://github.com/zeromq/libzmq
ZeroMQ developers can also be found on the IRC channel #zeromq, on the
Freenode network (irc.freenode.net).
Libera Chat network (irc.libera.chat).
## License
The project license is specified in COPYING and COPYING.LESSER.
The project license is specified in LICENSE.
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.
the terms of the Mozilla Public License Version 2.0.
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.
## Contributing
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.
This project uses [C4(Collective Code Construction Contract)](https://rfc.zeromq.org/spec:42/C4/) process for contributions.

319
SECURITY.md Normal file
View File

@ -0,0 +1,319 @@
# Security Policy
## Supported Versions
4.x versions are supported with critical and security bug fixes.
| Version | Supported |
| ------- | ------------------ |
| 4.3.x | :white_check_mark: |
| 4.2.x | :white_check_mark: |
| 4.1.x | :white_check_mark: |
| 4.0.x | :white_check_mark: |
| < 4.0 | :x: |
## Reporting a Vulnerability
If you believe a bug you found could have security implications,
please send a GPG encrypted email with the details to the maintainers:
| Maintainer | Email address | GPG fingerprint |
| ---------- | --------------- | --------------- |
| Doron Somech | somdoron@gmail.com | E0B0 E3D1 55DD 6ED6 71FB 2B79 D0B9 CC44 867D 8F3D |
| Luca Boccassi | luca.boccassi@gmail.com | A9EA 9081 724F FAE0 484C 35A1 A81C EA22 BC8C 7E2E |
## Internal severity classification
We will attempt to follow this general policy when assigning a severity to
security issues. These are guidelines more than rules, and as such end
results might vary.
| Severity | Definition |
| -------- | ---------- |
| CRITICAL | endpoints using STRONG authentication are SILENTLY affected |
| HIGH | endpoints using STRONG authentication are VISIBLY affected |
| MODERATE | endpoints NOT using STRONG authentication are SILENTLY affected |
| LOW | endpoints NOT using STRONG authentication are VISIBLY affected |
STRONG authentication means transports that use cryptography, for example CURVE
and TLS.
VISIBLY affected means that platform owners are likely to immediately notice
misbehaviours, like crashes or loss of connectivity for legitimate peers.
SILENTLY affected means that without close inspection, platform owners are
unlikely to notice misbehaviours, like remote code executions or data exfiltration.
### Public keys
<details>
<summary>Doron Somech</summary>
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF0YXO8BEAD8Be6QQa+ALzIWszeDPtVK9DCGN7ZM1C4Ygq6w7llauhg4wreg
kQy7YwOFKsFTi9cmIRfkw/lX9tIn+PkNe+kV7tOLDCdAmNCqdERvM/C46uPM/Mx4
IdaoUXOPVIwbLcCLysiYxickq/M6ymPH7pAT5deCxH9B1DV38T2Mlq+uXXyZ1aFE
74oCouQ7Vau31NBeOA4DkpPjpdA/WXMVEqoB3PKALUGYs1Ce5CguE0WjdueZFt2k
DvdYtbUFb+vNLMPCejf1sBWDnUygPfsPPakyimfxBSIRsQLvw/5t6bkiWgtGU4LD
o37skSzum7h0rw1378ryoMUYdaNu/oNlWCwbQzBjD6G+WYbmu5AB5aGSaDjUzg9K
AIcaNbRFln7OwvHrQdvDuWypZw7JvWYbehaywBagbjSTjIwb+Umki8cF/zxi5sxI
eFRMARDVQa5PAeErDd+4RtMcB55M2a90xWcTcfBdE/VYmwBXsMMWju4ceBtAqBCB
DTVxxaT54tKjkOKa1Yk75zL4Xu7Sekg2BIaHh/qVMn5aTEX+X6ImeFhWRjhgsk+Q
XoXo74nJq2aCJ2sSjLRdvnePtc3WM+WfdmdnC12JpBiBn4TFYxMBJlvqfKBxZELU
eZBkB6eTcBO/n5U3jSdFM47SeiBgUlPRiV+0ArZJ4i2Giv9vduWO6XeMVwARAQAB
tCFEb3JvbiBTb21lY2ggPHNvbWRvcm9uQGdtYWlsLmNvbT6JAjgEEwECACIFAl0Y
XO8CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJENC5zESGfY89i0wP/i5k
sYQkdaPeos9JnfUd3cV588lQzBN2bVhzCtbrjR6wXn9hRhZP9ftCNKoVp8cpC07G
Vq87sKqeB7odaK67jS+XoF4msIUEYS0lN2lPORf523VK3Juy9FW39aEPfx+6P5+h
h49VveR1t9I7MgdjnKVwmaELcFDKKGQaPlcWlKctSkOLRw/vYFIvajFJ30bkK9+z
sjgtUvXbSgt4HHHOQ/M6oCNhDsY0YE1zNxDgc8EqRlRxf76+pwldMe47/sIP2U7m
qI6d/LfsWnK6iJ0ehlp6oPP2GcUM8bH3lh2ugHH7sPSwpvh/rHqQTTxv+KiFeQOC
yuxvWdjathnDDHRNPVahBR747iKlcebJeaK5X8wObcIDaGBecwnNIjws4hrYAFH0
eNiROIbDkxDjwFhBYLDMfVCPW3xpBDa67EBJ6qTrabxmXOGvUDR2kB0P5lmtU/jL
jdVeFLj9tgwuuL8PW5k/gCdeB4WSBF4VWAHBZ2vDXUPut78dHQQg+dgvHmbnRYZB
Em6nrYUeoQ4nSOHf7VmdHf05HGwam+ZTWLN2sIEerNJlRCx6mEn20O2S7DE4RMi5
VjBFHy8/YSR3hRtdOSYfE61AeProeDPTGiei6xxlN00MQ7K/kFhQHIjKz1Ao51LU
o6+KGTtka2+g368boLcQALIchlfp7cfUAEp+dB7UuQINBF0YXO8BEADBXhwad2VN
XFhD69CPwWR39KmoW019EvT8tNWzCPzx8hQeTJz+fY0bTiXYxMROZwF0SD4kqYet
nejfH+boUFV64coxmfCmriqOQ0SGZTCfWzrjDrWjj51Xe1NWsGnFNO6vCcL1NNPB
0ZcE/wskEaKPi6Ui0SwvlDJQFK5UnrnFehmEIxEqi8BFez2Ft7/3I/XRrhlDzMtT
hDgMb+Ro9BydddH3TRKAdJBzIsozCrv0nn1DIXM+Pocqiuvk72E6iUxS2meeA4F6
DTG6MIWEcf6WPRVqXdD2bCBzDJ1NYixK9TFdZjo/6jTLwwX711+/NTIblAbpc/KE
io+0cuRG99gP8Cr+1VVZ2fcK9FpjI/u4YERmj8arMkcFz+QQDaJnXIjmNDpD0zBQ
Dh2v6pKysoEgmOE2xDzBsJbZomluKOytLN9/KcqucB1qkjzHD5JeZe+/S1vxdZUn
+81Us+SeepiDOfrT84xFYcqJentL+ylFj7zBdeqF4WTnZAT9/xbVuUSYnRm1Sm0z
vr99Sum0MXUTzgNhY5x3PkFQyg91lllJUFGoXiLivG+3M8JFC7V2K7wXhHFqffVX
Qq6UOm6+kCTjUCgzpQswMpDremB7A2fBQObKOC/3pE0Gbh3uKvylqQkMPTn4lOao
J3VSd1hBqHAdb5uxnmxN8w3wIpnaSypBawARAQABiQIfBBgBAgAJBQJdGFzvAhsM
AAoJENC5zESGfY895WkQAJYvJg/IYBKh0SblT8lGj9O+mLXO6K1q+HfZ6mERm9Ew
+fgW/cwGzuUrn+DC6vfsXlqtshUwiaxaa6NJccPBfC5IGHAegK5giwnQ/sbrA70A
7md2u+NK2tNDGK4Gxy8ZWMY1++TmwdVLzNivM5IA/NGotyYgQStDI+/Muvh+0wQ9
xZjo/InxVXeQcnqQXVKhoouPo2GlXslHev04SRl/ZJYN5sEHCE0Qx6L++esVvrwE
/N5NT5Rk41l4mXAN2SM0H5AB+Wf1qIiVB6pMLBzXM/7qnCnJS0FZZjf2WRiB0yXj
xTl+/JUK9MYckkrNcAfnb6yvnvO5W3KDabZhl/Cqw08vVSvcqyYRFXIa4vduiGJP
L6C8o3USbjVfZhBSHXpuo7JPzR0S4l52QB2ZnTCRIjSBe5vphVum6r3vR5rKAU1n
Htytqm099TlDapj+4wixSv8TvwlJr9no0uEJloyRAMFMYms4KgLEEZfc2tqpe/sA
nO6TM9h/hCbrImplSiesHqTxprnKAipudSYkc750zuFTiBQ5WwYbWjkCB2PSEh+l
8ZCRM5Ropfk4ATMhXH/w2Dxa5mdaHuKWKUc14+YfSBJI8yohbVIzYVsvAclctCQY
kAh/Z/Fl8W+ftDsZF0/1k3fxyKwExFej+AIsabcQDG0bAHscfH/44atKZRPn72FI
=Qu19
-----END PGP PUBLIC KEY BLOCK-----
```
</details>
<details>
<summary>Luca Boccassi</summary>
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFTKss4BEAC6LdgaSpaSBbMZK8erDulfXpCszvssCvEAI5lshfNNLHqOGy4r
g+A3xyaGe+ITjoahT56Ly+dylduRvuZaJwbKWZqOKLnZHG0/Y/4K1MSk73TtcFbS
Vn0q1dZmr14ysTKB8E1UJ8XQZO+PO79VANjvj9oEqsYX4xJ5BenWdfqJOGa+8jn8
ou75vYcTFkIlvSnaHT4MkCqPGnuGgqiunEScjpBRFOX6ZIdRZvXcjP4HymdQAIMA
BDDcV/qT+3VIOwKCn2e1jtxGbgMUwyosfz7nmlNHAdLrnficbSSsjRBIKxLgKN/N
2fk/jk87mbs7Qz5L2bSxU68emGHZ1BEkBJ4vhiO6VBx8XHolK2RpI/3v0qzdGynZ
YKTF2yBFqBlDI12gbfxabCQ7FgxwLBmYw/C068NVtXLM0AAMFrJmXRoexE698DJi
wL/4qxWy2Py/wBHSFInmyUSSVi2CjRkLh2zA/EJ/268HooItcnL7kGnyWo9IJZEz
Ma7QO1FF/513xsW2QyPr/QNvuJ4GT/SyIgz+6Ln/z8wHCJQw8CM7vFRgOCuy2U3R
srO926muRbl97pqRmCXbb+OJQMcYaA841FPKHq52kUTeGqkiJW4RocckcEGqhxhh
zj8KjIb2wBgkYviFQWKLIpZBVxKSAjVXTl/Bzk9m2ZPETjMZKtz09xtloQARAQAB
tCBMdWNhIEJvY2Nhc3NpIDxibHVjYUBkZWJpYW4ub3JnPokCNwQTAQoAIQUCWab4
pwIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRCoHOoivIx+Lmx3D/0f5Nxi
LYPDpxPOJDnEGUNqLiHlnyHwlHidV1xROfh8F6WkDrEAO5YfkASJjqBYJY93ZiZU
/ROUdpcct9sN0K1Vw4yTAHFYpYO2G9oc3ax+3ly0rON4L7t1Xj9cvR1/b2fIIltE
Yied0XP3ukUfjECOkwQZJbmOHjsea61i5da/JEbDFkr32witorIMMIOAsZkZ+tcL
xo2kRhk5PT7t6yo5cRLd0rLGKvKMBkMrNcPNk/T1V1YKB6yy0gAfo+dhZyI/khNC
VuYZB59oYX5FS5FkGn/CCmuPN3YkGBqe0vZJjYLe8PK0vPS1obg9gRuYuJXdxIQn
P8hD/y6Cu1axoy5EPt1uNc1bUSkvWUoJ2pWkeUAEKa/E8I0xKwQfHHo93rA1Xfdc
c3rivihyj25/CkHo3zP6Xa0fqQLjpvusdf5nxuKL5cQYCAkNV9/sITTCxxYiKhp5
lto9jhxs5j3/D4WV0+EGaQ/jfwg0i1h5eApzJQWMG+dEiT28s9+zPgFqfYq5oqVk
cF+3tv39Mk/k06XqEwD+TmhV3Yv/wy1BDrGxvQgMP5GtIPS6p6+PBWFE+HUYYPdZ
/vFN5DugzvVznjxLETUvj1G7mCQyHFXIkezF3mfr3uk0WiYWYoEqQ1Jdg8nsiTq3
iRTwW3XNsNhB28OoXH461215t/LakjGMVOmUSrQkTHVjYSBCb2NjYXNzaSA8bGJv
Y2Nhc3NAYnJvY2FkZS5jb20+iQIzBDABCgAdBQJZozczFh0gcHJldmlvdXMgam9i
J3MgZW1haWwACgkQqBzqIryMfi67IhAAq7Gj+p4Xt5Zc5OhMt7xaz6lGVdgXljGE
mVmKgmyHWwMnNRpLrsXUWK8iZuvpg9Ges1o0Ckf7f+631XTOle0r3MwsVI+FgWVM
BzAg7ft9GlIMqgY6suWlV7Rwar+rmzgf4A6tDjDWq4Lr2QTbhzjKoZeVL52Z2tpd
nq0Iq1RKuXPQ8AEkPcfhYc3Z8ZL0MQ1cL98c42qVRYmoa1JmABen7rSUmIQL3t9v
aZXLqnTNOEtpbJ0QLuhasBTPwUW7FOwvSFr8PSoSKtOJ9VLEGDgJD6wewc/MYJsu
fMECdfVYipOP/mlX1hrmxyucEm0a6CjFDvrP46sUJ4JoVcmr1Te898VQYKvBRFZK
7UxJIbp6nZdyW6jI0HdstgUNyh0IzTgOUfgdkn5m8Xw3AaJdzGIy6cu4+g0Qmief
rbZrReVcWYPswITpnDtEAmghq7C7QJ5OB7PA2G1xWqOeLMQnE2tTGpJfWkuv6FEI
lG+5utAKSwDz9sZ93wbYGil5/rBSLOS2XoZfS67yROQH8+f1vc2tMpdfD6Z8rtkH
HfotVwDkx3xIKWCENdmL0ewHbzjKXglSi1VkFGdrxoXyQvpSeAgO2GE0spM3lRIR
cfNsXrzx4J21TUDrjK9mg/+KVEGA2I7E95d/ByyjDz4w0yx6xv4nyHtptgAc72aP
41NMSpr0qje0J0x1Y2EgQm9jY2Fzc2kgPGx1Y2EuYm9jY2Fzc2lAZ21haWwuY29t
PokCOgQTAQgAJAIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCVMq0wgIZAQAK
CRCoHOoivIx+LtL+D/4+JIaILWcbIymShr7cOhlWKu7/AqAHrT+y/0s99O3Tu6TD
7bk5LUMUL5TBZtyVbUQh0KPjVYH+QZyDGICwn9snbkftIACvwD8LgtUv+5PbAQ1D
of1ZtNjbl5S+VeKoD5Ev01t5QusRfThyiHzFSZOvePiLuRyRe1ixn1fzXl/NxuW2
d7eJyxNRmyZ6N63SVDnBvOFwbNSJ4awXZa2S23edswfNcfEeYVVrEmEfBsi4U3ZY
rjHWV+SvHoa63vEfyooynRofXgwPZLeOcsa6f2Q3jTI7WaCVnxL7K0GlxW3pd+MO
E8HKFj/8MnK29ykQgvfOjvBtKIQmZoPHB1+FT6YIxr0fkLIK2FHGZ0azh0T7sWEh
0WPQeieGFdDOq0z9Jf6fiWwIeetpwdeEoAzzXQZkHfRNpwzkXx7RlfITUqko3UiW
l/w5S7t4x2HFyFHVb5osqF+NhCxGaqZGGkkegE/9RRcvFzN8pbUHNMxnwV/KQW8V
1DZ9P7Kr+a/KV+dmEs/7vAj0vyFzCJbc8qecqOWVOLjY9tzOBjEWa1zvt6PVxZGJ
I3i+lvdLcpvIWyAI68Gi7kOsTuu8A8iXDxEfzJ8kGlBnflq14sio3VKP6nVIPwbF
5CwturkRM0vPkKSIliBCvS2MvnC3S+0AkKjhKRl9InBh0mCx1cRylJ8ZltHj9rQr
THVjYSBCb2NjYXNzaSA8bHVjYS5ib2NjYXNzaUBtaWNyb3NvZnQuY29tPokCTgQT
AQoAOBYhBKnqkIFyT/rgSEw1oagc6iK8jH4uBQJccpvuAhsDBQsJCAcDBRUKCQgL
BRYCAwEAAh4BAheAAAoJEKgc6iK8jH4uA7kP/RbwUH1C8RfWJWvtaDsvoJ5jnoB1
lJDxUBEd+6j+AWTUD+fAAxLE/bcqxXzsPz4dscwpnoKmqVIpAdhTN+EvRZRLA1r/
kbKlnDFnEm89MYYS1e8dGtXqa1zAPl+IxL46Da5/l8GsepOr9HftrPBjN56R/HIf
tOwc9Vir1NLaC+S0CsAKwyAjpq8srjvrxFWr9a82+7GiBz2Wrc60vWIfaZuDKpVE
4RpvEaiYoGEJEUp4wNhaVdQrhe8m6C0uczwq2t5aSjxuuso+rsN3PK/jvNrmxfbS
a0NMzwhZ92w+J7CFyg85c0OQ6hmZRTf6G2v8pFpWlbcb7sePlvYcEIeZik4Nx73T
EkqwmX5WC0NPzj+wdBWG/G+fFIcUUaMZzcGjgy9MXD+RVVyGs6W2/Q7iPBzDxny6
KJLjUK8xMGRLo3rvdAUqug3Gpe6dth/8XBp0cY1gk4n3OUluBWOXSEwW7zm3s77r
K4s5JC/rBOgCeCNV+qXLydazn4qjQXixqb0ezyGGxO9w/+q9T7MBwQy5/Q25w4qL
bcCxTLAhRpye2C1nCHt4GvH4SUjdh6wtHdkXjtyYMTRmMU40GN/PL5QFyyMS7nEC
YiycLB99knGwsh1FX31Q4aU7qUWO6Ejhk9W43IZjQpaITXoyCwKnMaE+X6Uqk745
io6PFV1+6ix1l8MhuQENBFieLi0BCAC8doYzfmC8HWjtP0Q0s6fpRwjwGTTOaxk8
qOMW+vgVY5eAIWYOGX8kNdzUE1nnRgrGhqcOe+g0NvXNkE83KIeAZFL5k96/o+K9
IJTSlrNzjWR3NsQPfjrQ4/pDcuwtxWBIaZNAF7GJNnjGeQ4dvVHwTzi1b3xrELxK
YO3iiYkku5O2rrHxI2Pv8mBWZ/v6Zr81hutk6TtpsGGWRBEq2sAdS+qV+Bk+C8LJ
sdOLeZLU9aVILtMPQkL0z3GTcb7IVknLPZ+aeraFRBLXO1k29J2JnTwECEkfOQep
mBkGJ4FGHQ+eG7ejLd1i8BLFEeLk9ia2wLl6xiij1I2lplcuaLq7ABEBAAGJA1sE
GAEKACYCGwIWIQSp6pCBck/64EhMNaGoHOoivIx+LgUCXFwb5AUJCWGINgEpwF0g
BBkBCgAGBQJYni4tAAoJEEspZoBQeFFiy5EIAI2YXvth4tRojymdZ3oYiZRz3Xtx
OJiiEsjZkP036k4pKdmtn1zxAPzd5W5kprk8AkWjjKyBSNS47i3lvjRFQXpKpUbG
J0CdjDCE2CaonMb1oh/pVbQ0VvMoPRyj1Jjz/gFCeXLFq8AcXrRYjh/aW6RNPj0Q
nqL70ta6qFSavxrLPVkm02mFWEKlWNLtb7uzLM2KfCLI/ZZdsKSkTwZhWDQybp2o
XO1fZdI7aSoLYQFY6pIjdIuTnQrqIrRKtk+ummBMMKBS18eyiJ1FR7cIp54Vektl
VcaFOGI+MHDrDO4+hGfE+w59szW5ma60S92keJSWgOJQD4Nu/sPor9M+ZlcJEKgc
6iK8jH4u21wP/RtYbohWfpBDSReU+ynG5QGLcELpSMHlCRz2ZxaV8bqGblGftjiW
eyvEZePOJpb5Sev20TnUBzzilZc1nLwOxP5tDZpEvo1j2bIY1YamZc7g7XE+xRbl
djiwGtj9PA3z2DME0iuxM/xN0Ghaea/vHeMim1miRJ8sbOheHwmwALPQzvTUV1Cq
Ngn8J1eUP/tC6wv/BnBwTkaHugqqmBglE9V8GptIVE5Tam/TfwVQXx72ZW2YHa4A
bwHf+oUtH2/jOTjOj/kWT7docgSDj7kColJ7mwuZZ0NSwYhA5dKN1CWX7c65ENzN
h4pIiM9Ula0tInRal2qK9YXy/GV0gFXwV/aFh22G/xtPRs0qqhBxr2lxGOg5XsAk
SEu+nlCThjEZDQVXxmptdVVvHwh/+Lrconk3o/sUTFgZ9mroQYceJa1z9cIn1A1Z
Pb2SffXWU18lOuuC2Cw7XGx8QN1rWbmVVA0mvNQ6MpUYCOICy7bVIfUYcX6xuoWh
Tfu5lE0qUw8PhBGUaW+pqGvEDcM/PWhopx+mSqq/Ip4LfZ0Cn33KLV4SzJjnhC1Q
RVQoUYpzBDREgOUo6eqwNSCM1ZxkOIoueOZ6TRoYrUaJUGAJOZvXVl6NfpizQ1bp
Tu1l6dz7U3JqYG/V/kr+IKxWJf/JhYjZ73Da9mx+2SuNOKj1SFohLNL3uQENBFie
Lj4BCADUpbwnWqJsjL6la8HdROHY/LePMvWiCJAK1tZX6HadW07FxCMlQPOhX6jj
YI85BmYM1AZpEDRLqdkAUf6+lSY9VywXy6G8DsQTSiO+Fn6DWEJ9yYelLIQW0xMJ
cWd55D9+tDlJFFfiE2OLjrSoxPRGjhB7iajsdNlD6JTjuJq60zAcxF7J2o6Keesw
HVYooz460MLuVq3BeyNxH/d9B/y5n3ibSVgJc8PYkDRN2Y+ILuAXd/ia0GTphTM5
j9R+mCJDuRRVZAgNfa9AJMPJ0QbIFnRdnwRTEGt6LYA/AIoBgwjiveTfr8N2LArD
ARNP6rV+Ugf3rW2bZPEoCv82bsx3ABEBAAGJAjwEGAEKACYCGwwWIQSp6pCBck/6
4EhMNaGoHOoivIx+LgUCXFwb5AUJCWGIJQAKCRCoHOoivIx+LoL6EACYK7c/yOQH
ZtSfzkrfNpd/MiY1j6rpUr0mrbKBVKamJ1N5Ae48E2ETlRfM3B6fk+dqovKbD0gQ
oDHcCo201770pyoFwxyHZleiSWfQjNp4JCoXvGAh+AK6xfiPZIEzfLDrm3nrd38m
rLEsUPRPdoyemAb2kKBoMmfkPt0e6WnqKxlFBngyF35jOFXnp//yGNCWvr4gibXD
zIlMnQUXlYzKqZPnIwdEGyQT4KWLAHLCu5lzk6JmvMJPqTPU/uKbgKcHHy8cY0Xm
xPOAPbnSbSYsuMcJpZMiIKBRozZk26fWdDJorWBPZ91OEmfSCx2X1P99UQId67SJ
9V4EUbZjGDrsEJcosmg1JN2bFIKzI6VTrYvxA2ghPuowXgKZ3k/BuFXMA41hnP/P
pn8DjsYu/9yzV5TRYvQEVSGrN7c3tJGlyZrbZ3YxyDyniWZhrFmgVqdo3jZfhhgT
xTnuSfUyhtA6jk5ECVuF+oxmWyjRzJW2XoPPpmYe9CQ2efHZ4RFqCO50keBAH0KH
UCl3eg2E4HeALu++Aq9v07JyAyA6MYbTvHjrdMmHHDb3kHG3O/rPoH2120wYXHAW
SBvoOOJZyT/4rF3BNcrLiPxDCi+mOe5vkX5jymHe4fho1kvh0mLLzeC9fKiJjExL
yF2yrNrTFESt66057r3CIb8BcJXPGhxpXrkBDQRYni5MAQgAnBzmeIfxaXebmSJj
wbH1ScEHIATXoDs1FtVumWTmfGS851lqoMBoemWPZleBoMTOza5cnv6EzPIGYRYL
Sd+GTDOAzNdnuHxULm8gUqEdoQ8+GwcTXCSjOsvuZJvIWjJ3Siz3JRnTsM8hrYoz
tZZhDQqsmqmCyrmw5IsxInDfTd6XrdJ834TOS87pJTwFzrt3B4UuhMMGX8IWjPsG
Z0ZRBbUMhAxt07+JV2lW9o7AA0H733NHjhZ4/mjn62WpDVFzHIkvdVaNbb5hGXrJ
HbRIqQUj4tX32uYEkpd0Uy7KEtqh/HI+tW1nL47Ba6EEY+3IvFO+XJiy5Zhoe0ku
NiLebwARAQABiQI8BBgBCgAmAhsgFiEEqeqQgXJP+uBITDWhqBzqIryMfi4FAlxc
G+QFCQlhiBcACgkQqBzqIryMfi5icA//f5d9VR2F/p/iBRbKudu5HHp3YxAxKLe/
T5FobOd9LBM4z8G9x6puaVP5bFjN5IMB67piUTVgSTDFwvS5sj538xRddTLg6gdo
cE8qU6gb0Caj3eDm6aaPH6sz8Dkq0lV0AibiFZAlysgH3Jb0mavTLbES92LVTC+y
jgm6rKxazD7Xf7eKKAtU6Yv5hy8/RtkxqXUjiW5JuvM6GHrplFaoqLQqTTs84jmU
JdAn5ocTHSZkWnrXD2ymNcSQ1Rb34JYOzhEZmqk7qID0HvTT2g7D52gP2Jw4AzNM
kmf/tbB/ugWIBsEClwVkk6yUxjSTjjOq5p3Jg/9vqiEEml7xnSNwqY5w/FCIdwV/
bcrDAvRYAY2whDUtjIBJrD5AzRq3A4FU9ErdkKNGToL1sAUZdyH+qsCuJl0eY/Ry
lMdgYrKc4HWNOh+viG7ap/RxUULll3wXuwtcDapRe/lg4YABmORzgDPgXcGPODhS
WdKeQid9kKucWUrjOXogxa28hO9P/6OhngUor9FECHqxa3dTEm9GAxRKJhJhWm8m
wu2rTGBSOEDk918ffR+HyPJ5CoEUCj03vY1OJwcwhtCaKb83swuiXwDeZ7eXVRL7
2nRMieLWYxNV8seKDFCm/7fXbNWpYe6HRtZfGiPVICJZbVHS73n4Kglxg03LKSXT
ZEG+OhK+ULy5Ag0EVMqyzgEQAN1wRSjfQMyZRcelT38yhZUiSti6KqljizjkWzVY
khFab3IXeW4m5uUv/N8J23h2tUhc4R3di1W5L3dvOMzY9cHeR4KucU3QA7TC/cUS
Qo+tdxj0HgXLMoTHUUeo2w7mX0NTeH7Evq3zEwWOJksAXgb4+8V5t/afBl1IC0gf
Nol/1iHkX6/49kSJ+0HoYEj7cPF8Il7IN55Xe/ZmsuucgjM6Wt3/ndJKmHyssDxA
pUnlK5Uj++039Q7SNRDtLoc8Y1LoL544bSADOMrRAXEKj4ACYNUs8I1pf80w8CTn
Hg7SEILesOqBMfYotz2pQ2x0KqfCOfetSe9YcZIu/Qdjx8qBm3a69Y6wSn40uIws
W8lfEL+V2ltRsyCtmA1hNmreNc4tXtlXtWF6aZxT2wm97Gn8YjiQTEe7sfvNNcTH
wP29KUofmIFtXCX2eMeqRWBhtqFE5uaDdI5UQyfjY9Au+Mc/d2WHMS1PGK/Z8NKy
7huM24/yK7GxFbbPm3pZiWlV5kbl5f4bEPrBoqzdzoK0/N12UsfuWFV5m2YUIwW4
BXaI26dzUM9Fc9ecbcoJXd7FzgmdKUi0/Gw7NYrbsL09zrAB+AQer602LHW1Aiqr
93QkkB2ViWupYiGli2sC54qrAR4iEUATAk2AJIyXnjaI3DftExz/c4y8NuMwFXKc
LxWHABEBAAGJAjwEGAEKACYCGwwWIQSp6pCBck/64EhMNaGoHOoivIx+LgUCXFwb
4wUJDTUDlQAKCRCoHOoivIx+Lgf8D/0ZoaK2TUxsdcINtHxeKP8zIjnk1HJQxVDs
LewL90rP/sqHplYdDItBHW3aQT+S82xmb2DaWcy1DJ+kDAPqKIEgYcIVCho+8dD/
XwY3/vQQnRYt3thxj/REtLid97ldtWn0pw4f4sxwMbs0qXq/R9fnnoNXBBH6ctxA
6dy4/QkBMY4LyaTnSYzvaB6JSwIC95MGl2/yn1WFCzdRPjxU1SLsSImCkBaG1uhK
rX/rECSuQCktfG0hy+F2QqMxHofPonBUZTrfLchWHgqIzCx2JXXC0KsXjg7r+s4+
m2krnB4jKOnyAaNmwhnOY+qqVcy/IvJsvOeOP1J6j2e7oTNtcrHb/tHxOhUVKiOo
vzSoLB47PtnTv6cVtiBIOFKyfl1dS8Q+vPtRqvjWAW7vcAfygxXwvJUslGUMU46J
vJwcFFE4RQk4Ixm69AabTCCwLUWV0Pnx3rTNJHMxl+qzpvVwVuogVydxH2oqvBTt
BpCsfgrhH5gcYRozCBvLGDetFa9YaAV4ZvwGq3lhkFnI/h3EpIDGCeDTsJP4+C+n
mI2wM/rXt3m1CpgeVKH87E2+vSOoliyqW/DnceBE8JHEwg3nWX50GI+iW0Vm8t2Z
1Dx2TJsrJdXy2vHYZDFOCfnz4SO6IafJZOGMVHPGNHp2AWH5mY9ZYE2N52QMoyjk
42IBCOLqCrkCDQRVFuFCARAA+tTCfBs+pRBg7lPr6DtI3SY4M+T5Ip2EQGuWS7t7
riNP0rbtShc3x1GBokVNEOTOe6n28DTI0TA8D7Wa6WefKnBbDQPVe7AgWCC11gYX
XIqcRIPlnvW7X8hZn6Fw/b+ep9Fnw6piihRk5fnYyspDBTRE/1DBBzHqOPfepHgI
zh7qVe8MCfTdpRYsHXZEa9o0WYLoRXeg+yFvKmjj8+Bm4OyLQ5vN7uDqDT3ph8av
M7RQvvqLZrXhycWuq4btT6Ba9oMZ10UzUF/HXaLgakscDX6FzBwgv2/lVauh3ie4
J+Au0lA4hYHCVhNZGgLsGG6aoMEDA2Ab6vLqVIeOj7dbOXLq5wLMJlywAZwtnoSn
zxyPPKQarCl30lYDaXFakFGZpI10nRrRSy2acRcpuS5662cnU8kZzVl9mbxyrEpI
zkc54ND+UzHvW6FVKqJLB/y2rQ6ZRE6cLahwO74LZoDc48JpVkdXCkz+F2yI4ust
Wcv0vdUQ+mLHbjUof6zGLcTVRMpteFpIozB6giF1ohayoNAgwywk69tMThNa5O4J
405dDPDO4lNyl7nGLlxyL0oua16ibpz2WfYUsPsJmRJnB+8KZ5SzIGW7D/aprhYp
orYdpz6qynPtDmkD7zl5RHQCb8PqgrkkHPVVrdjHC7UdP/CcXjq1KIuKEG446xJI
TXcAEQEAAYkCPAQYAQoAJgIbIBYhBKnqkIFyT/rgSEw1oagc6iK8jH4uBQJcXBvk
BQkM6NUhAAoJEKgc6iK8jH4uEfoQALPHThbHLBEZ1ueHAnyamgz3kKC7KW4HkwgG
pTvJ/r3cqdt8SBcdPamWORK95HKq1VahEW6yqWSVrsbYxqdXl/mI2mNIJxRBiM/h
wOuZVLSNpK4Ou/XRz3NMFllZBJtJS6JGGpRtnhGQKrvkw04UtITpDahDlweVdart
E0FaB89TagWZy7oH32M5wzHqUHSNnOfQR5VpttRBVkuqnN4xRePjJvjJae31LsAq
jOrJcME08Y8zG10p3Pm6x0lOvrM9nf/MMYGEaMhGQFp4XhvQ6hi736nFyyQD6uHU
vw140+Y51kHMbceKjaoju9qHNzddmhFAL+YMZL0dtNk9F4kDpTCfMNgft4Y0IUQT
lYAkMDxdYK1l+jYTFrsDZhw5GV1kYQo2s3j66rT+SHlXY8SbyE33Hm544WxAbCGE
dB/H7ADaQhbFobXalTb+/QfWE2FkAYTvgiRhEhfhdr0ed2zHoolIF+zDWu58D61T
Qj0xx1/+PbaVq4NQAWigimRfhYEJjo0dJCYUFOI9mces4Fh0aUGpB0lyvBub6zWc
QkHM/2NSsGLWIxCOjxR1qjMdM3cfTQe6BX1ZoE4hjQf1tolhDT3rUx032x4QH1wt
5CdP4/Wz2Mn8oGCPvRwCNzYLjT/h2V3BFqIcbwNpfiLFMGtEYf0VD6Po5y2uxHNB
V4vxw1Q7uQINBFUXAM0BEADWd0Gq5bkX2WVMfwI8EQTnuJBRgJLmaLb8INg/Iykr
ztnx0t/D5bxZ7SMmycRpvKEEwST2NMzutPt4bxrbNx5FAAslzy93bd1mHH0r2xQh
M/NKSNHsYOtpoeyf7vcRPaBkCqu6UzeWCrYcFzbrEDmMqKoeAekSWFyij/1Sm0hP
YWK9qHYG7dhqS+t5rq0IGuX2LhcSbDubHysCZLvJxWzZspudrFgGkCX68oS94uy3
ERgrUUt9QFweWueC6XJxj+FIlK/1j3ZgKUnJZ13iRXrz2vOr84C82MLpAw/HPmcU
73qZM5V0+RFCKRP4ISKeGhrLFSMVOLVkyNHYYBq+0os21VIGBA/L2kWv1Gy/MnPD
yI4p05zzwXUu6f3iAwPqwwRqA+/gj2J5YooZa1mPGUutkz3KmKWymTBlbdr1MR/l
dnuUAwdgXdOEj/YPskb8VsVzyEjyNpaPTQW1KmsWDJPztuQ/6cAPXCeaECL/110M
TFY1esS4SM7zd75Rgg1w68hFm0D1TotmuPVW59DN2TzjVUCamOVgMSEfUBERGo00
PHuGYqDlVt+gLeyOM/WOLJizTEAJEUVpR9tRspFHf9nXIOJdSaoL4opXtLog5nVB
2sqT9qt9qPtBPbQiHJXimv5rBpjaPeBZA+RxolTMpPkFsSXVkNcvhx3P/uKvD9um
0QARAQABiQRbBBgBCgAmAhsCFiEEqeqQgXJP+uBITDWhqBzqIryMfi4FAlxcG+QF
CQzotZYCKcFdIAQZAQgABgUCVRcAzQAKCRAoa/fvzXckHteED/9mP07v96WdQwx/
oNJ2gCAmee43Xll5kLVa4TCuYLI+iPtLt1gKrtViw+M+oYhst5KT2jlfaj6T0GpD
bbpqBGCzJ2Eas0dsnJRtN6zuvXX+tYWe28/PCEuB9QSOHqkVPG84aabqAsletGhW
TKHWTQf7Aa1xlXgdBJ8NkZBUkwWQ5MGkKS0BP7xvaK6z5nOZSPskpodhKl51d4IR
gWwK+j0tKdgsDqSjeSOfw2eM7/z4kSzDTsdxoBWvskaSQtMnw9qibfUrI5zgi/Yc
kh2ModEoxdIAQWEtKR0dEHwVhOId76lq19sS6I4MKTfHZ7xGnXTozbeqjcTX0edA
031aFC4XGpDTDlyA/XXABu97582NOvXLkPMcj/N8/P0MWJgtwJHMNwDqBHCsZmSy
K7ZKHLC71yh5mUCSnLiu0cz/7rLB+VHI+SwPXBO8iPCZAupmf+cyICkINFCwgFyu
LKYYARhSr6LqbOzo/ekQvz8b9q73ODqvhEN0T945AJdAt2BPtzb0LYOBaAxdEZsu
2BcnWE+xERVK7mSeGHmfnh6smEZSx6uRawMYm6Y/YLtzQp6iBTqtNwYryl+PbRJ1
v28e5ispmylCrRyb0CSgNqKbQufhKO71+peBBytb0Nj9VUYXGYe7vHCeZxgvTUnP
bHoVjUXZSu+Tiu1Gky1EOFtEW/Se8QkQqBzqIryMfi7vyQ//Ttd4ZNBdaZkMYQh+
CP3WsuXD4Vip8Gh+tcg/+zJMDWqkgoW9OOkWh1MjxJBSBjSLqm8e23GrgJrHdRBm
fR6WbMCXST5ZmRzEN2MZ9DPFGKuzOe1BeWx3hFc6crCB7h5/I3yiiMhagF/kCiZz
zQu4Ebcc8gzRH65BbBHbathVWF4EmP4ZUy2hPOspwMClCmGsqVY1zt4KPp1BeB/Y
gZ5eL1kdLuvCRQkFglPNELDgziKREJYO89g8f6V6teJDy+l6DtuzwnkO3BT1PntQ
17I8etv3lgGfL42q1QUjhXn0ER6cfWOEeD36MThkZ6WTdtZ+45ROZsvCSl9BlE05
hT13mBluscvxu0bo1ReAFYG2aHG05mZ/2qyoVY1eJa+Eq/rDhdJP5E8IhDfr/kCm
Ahcpb/916Jc0BTSpinIcuWMQaeWtpwz332Pa87M3SLLm0p390p9R7P+OI2FYVMYU
/6dEqz9vrsTWaBLZV8bnItjn6r2MOXn7bGD6HW6euE78Bt+/Q9N/D53cgw3HGaDE
0JqFt4gzT9d7D+jCYy3K5uAWBnKjua3mwMcBnO4GmQwVLauWex8BARlYpBoqqL/V
5CorLVbhjFLWAiy1GsX4RM9RksG9TN8CMvNp1ZTpnqouwEuTmrWKwdQek1rPBRj0
XNBso9Rw94Z5NVIXEcH3O44UsWI=
=AXgM
-----END PGP PUBLIC KEY BLOCK-----
```
</details>

32
SupportedPlatforms.md Normal file
View File

@ -0,0 +1,32 @@
libzmq supports a large variety of platforms. The list of platforms can be found in the [README](README.md#platforms).
The degree to which this support is tested varies.
Platforms are currently assigned to one of the following categories:
- supported platforms with primary CI (travis-ci.org, appveyor.com): https://travis-ci.org/zeromq/libzmq, https://ci.appveyor.com/project/zeromq/libzmq
- supported platforms with secondary CI (openSUSE Build Service): https://build.opensuse.org/project/subprojects/network:messaging:zeromq
- supported platforms with known active users
- supported platforms without known active users
- unsupported platforms
Supported platforms with primary CI
- have builds and tests run for the master branch
- have builds and tests run for every pull request
- it is a precondition for merging a pull request that no builds or tests of these platforms are broken
- contributors can easily enable these builds and tests for their branches in their fork
Supported platforms with secondary CI
- have builds and tests run for the master branch
- these are monitored periodically by the project maintainers, and efforts are made to fix any broken builds or tests in a timely manner
- it is a precondition for a release that no builds or tests of these platforms are broken
Supported platforms with known active users
- have recently been reported to the maintainers (e.g. via pull requests modifying this document) as having working builds and possibly tests
Supported platforms without known active users
- have some platform-specific code within libzmq, but it is not known if it is still working
- have been reported to the maintainers as having working builds and possibly tests only significant time/changes ago
- or are assumed to work due to similarity to the above platforms
Unsupported platforms
- are either reported to be non-working for some reason that is not trivial to fix or are explicitly missing some required platform-specific code

View File

@ -7,7 +7,7 @@ AC_DEFUN([LIBZMQ_CONFIG_LIBTOOL], [{
# Libtool configuration for different targets
case "${host_os}" in
*mingw32*|*cygwin*)
*mingw*|*cygwin*|*msys*)
# Disable static build by default
AC_DISABLE_STATIC
;;
@ -88,11 +88,20 @@ dnl # LIBZMQ_CHECK_DOC_BUILD
dnl # Check whether to build documentation and install man-pages #
dnl ##############################################################################
AC_DEFUN([LIBZMQ_CHECK_DOC_BUILD], [{
# Allow user to disable doc build
# Man pages are built/installed if asciidoctor and xmlto are present
# --with-docs=no overrides this
AC_ARG_WITH([docs],
AS_HELP_STRING([--without-docs],
[Don't build and install man pages [default=build]]),
[with_docs=$withval])
AC_ARG_WITH([documentation], [AS_HELP_STRING([--without-documentation],
[disable documentation build even if asciidoc and xmlto are present [default=no]])])
[Don't build and install man pages [default=build] DEPRECATED: use --without-docs])])
if test "x$with_documentation" = "xno"; then
AC_MSG_WARN([--without-documentation is DEPRECATED and will be removed in the next release, use --without-docs])
fi
if test "x$with_docs" = "xno" || test "x$with_documentation" = "xno"; then
libzmq_build_doc="no"
libzmq_install_man="no"
else
@ -100,20 +109,19 @@ AC_DEFUN([LIBZMQ_CHECK_DOC_BUILD], [{
libzmq_build_doc="yes"
libzmq_install_man="yes"
# Check for asciidoc and xmlto and don't build the docs if these are not installed.
AC_CHECK_PROG(libzmq_have_asciidoc, asciidoc, yes, no)
AC_CHECK_PROG(libzmq_have_xmlto, xmlto, yes, no)
if test "x$libzmq_have_asciidoc" = "xno" -o "x$libzmq_have_xmlto" = "xno"; then
AC_CHECK_PROG(libzmq_have_asciidoctor, asciidoctor, yes, no)
if test "x$libzmq_have_asciidoctor" = "xno"; then
libzmq_build_doc="no"
# Tarballs built with 'make dist' ship with prebuilt documentation.
if ! test -f doc/zmq.7; then
libzmq_install_man="no"
AC_MSG_WARN([You are building an unreleased version of 0MQ and asciidoc or xmlto are not installed.])
AC_MSG_WARN([You are building an unreleased version of 0MQ and asciidoctor is not installed.])
AC_MSG_WARN([Documentation will not be built and manual pages will not be installed.])
fi
fi
# Do not install man pages if on mingw
if test "x$libzmq_on_mingw32" = "xyes"; then
if test "x$libzmq_on_mingw" = "xyes"; then
libzmq_install_man="no"
fi
fi
@ -275,7 +283,7 @@ AC_DEFUN([LIBZMQ_CHECK_ENABLE_DEBUG], [{
# This flag is checked also in
AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],
[Enable debugging information [default=no]])])
[enable debugging information [default=disabled]])])
AC_MSG_CHECKING(whether to enable debugging information)
@ -326,7 +334,7 @@ AC_DEFUN([LIBZMQ_WITH_GCOV], [{
AC_REQUIRE([LIBZMQ_CHECK_COMPILERS])
AC_ARG_WITH(gcov, [AS_HELP_STRING([--with-gcov=yes/no],
[With GCC Code Coverage reporting.])],
[with GCC Code Coverage reporting.])],
[ZMQ_GCOV="$withval"])
AC_MSG_CHECKING(whether to enable code coverage)
@ -586,8 +594,8 @@ dnl # LIBZMQ_CHECK_SOCK_CLOEXEC([action-if-found], [action-if-not-found])
dnl # Check if SOCK_CLOEXEC is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_SOCK_CLOEXEC], [{
AC_MSG_CHECKING(whether SOCK_CLOEXEC is supported)
AC_TRY_RUN([/* SOCK_CLOEXEC test */
AC_CACHE_CHECK([whether SOCK_CLOEXEC is supported], [libzmq_cv_sock_cloexec],
[AC_TRY_RUN([/* SOCK_CLOEXEC test */
#include <sys/types.h>
#include <sys/socket.h>
@ -596,11 +604,122 @@ int main (int argc, char *argv [])
int s = socket (PF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);
return (s == -1);
}
],
[AC_MSG_RESULT(yes) ; libzmq_cv_sock_cloexec="yes" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_sock_cloexec="no" ; $2],
[AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_sock_cloexec="no"]
],
[libzmq_cv_sock_cloexec="yes"],
[libzmq_cv_sock_cloexec="no"],
[libzmq_cv_sock_cloexec="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_sock_cloexec" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_O_CLOEXEC([action-if-found], [action-if-not-found]) #
dnl # Check if O_CLOEXEC is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_O_CLOEXEC], [{
AC_CACHE_CHECK([whether O_CLOEXEC is supported], [libzmq_cv_o_cloexec],
[AC_TRY_RUN([/* O_CLOEXEC test */
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main (int argc, char *argv [])
{
int s = open ("/dev/null", O_CLOEXEC | O_RDONLY);
return (s == -1);
}
],
[libzmq_cv_o_cloexec="yes"],
[libzmq_cv_o_cloexec="no"],
[libzmq_cv_o_cloexec="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_o_cloexec" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_EVENTFD_CLOEXEC([action-if-found], [action-if-not-found]) #
dnl # Check if EFD_CLOEXEC is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_EVENTFD_CLOEXEC], [{
AC_CACHE_CHECK([whether EFD_CLOEXEC is supported], [libzmq_cv_efd_cloexec],
[AC_TRY_RUN([/* EFD_CLOEXEC test */
#include <sys/eventfd.h>
int main (int argc, char *argv [])
{
int s = eventfd (0, EFD_CLOEXEC);
return (s == -1);
}
],
[libzmq_cv_efd_cloexec="yes"],
[libzmq_cv_efd_cloexec="no"],
[libzmq_cv_efd_cloexec="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_efd_cloexec" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_ATOMIC_INSTRINSICS([action-if-found], [action-if-not-found]) #
dnl # Check if compiler supoorts __atomic_Xxx intrinsics #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_ATOMIC_INTRINSICS], [{
AC_MSG_CHECKING(whether compiler supports __atomic_Xxx intrinsics)
AC_LINK_IFELSE([AC_LANG_SOURCE([
/* atomic intrinsics test */
int v = 0;
int main (int, char **)
{
int t = __atomic_add_fetch (&v, 1, __ATOMIC_ACQ_REL);
return t;
}
])],
[AC_MSG_RESULT(yes) ; GCC_ATOMIC_BUILTINS_SUPPORTED=1 libzmq_cv_has_atomic_instrisics="yes" ; $1])
if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != x1; then
save_LIBS=$LIBS
LIBS="$LIBS -latomic"
AC_LINK_IFELSE([AC_LANG_SOURCE([
/* atomic intrinsics test */
int v = 0;
int main (int, char **)
{
int t = __atomic_add_fetch (&v, 1, __ATOMIC_ACQ_REL);
return t;
}
])],
[AC_MSG_RESULT(yes) ; libzmq_cv_has_atomic_instrisics="yes" PKGCFG_LIBS_PRIVATE="$PKGCFG_LIBS_PRIVATE -latomic" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_has_atomic_instrisics="no" LIBS=$save_LIBS ; $2])
fi
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_SO_BINDTODEVICE([action-if-found], [action-if-not-found]) #
dnl # Check if SO_BINDTODEVICE is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_SO_BINDTODEVICE], [{
AC_CACHE_CHECK([whether SO_BINDTODEVICE is supported], [libzmq_cv_so_bindtodevice],
[AC_TRY_RUN([/* SO_BINDTODEVICE test */
#include <sys/socket.h>
int main (int argc, char *argv [])
{
/* Actually making the setsockopt() call requires CAP_NET_RAW */
#ifndef SO_BINDTODEVICE
return 1;
#else
return 0;
#endif
}
],
[libzmq_cv_so_bindtodevice="yes"],
[libzmq_cv_so_bindtodevice="no"],
[libzmq_cv_so_bindtodevice="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_so_bindtodevice" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
@ -608,8 +727,8 @@ dnl # LIBZMQ_CHECK_SO_KEEPALIVE([action-if-found], [action-if-not-found])
dnl # Check if SO_KEEPALIVE is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_SO_KEEPALIVE], [{
AC_MSG_CHECKING(whether SO_KEEPALIVE is supported)
AC_TRY_RUN([/* SO_KEEPALIVE test */
AC_CACHE_CHECK([whether SO_KEEPALIVE is supported], [libzmq_cv_so_keepalive],
[AC_TRY_RUN([/* SO_KEEPALIVE test */
#include <sys/types.h>
#include <sys/socket.h>
@ -621,11 +740,13 @@ int main (int argc, char *argv [])
((rc = setsockopt (s, SOL_SOCKET, SO_KEEPALIVE, (char*) &opt, sizeof (int))) == -1)
);
}
],
[AC_MSG_RESULT(yes) ; libzmq_cv_so_keepalive="yes" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_so_keepalive="no" ; $2],
[AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_so_keepalive="no"]
],
[libzmq_cv_so_keepalive="yes"],
[libzmq_cv_so_keepalive="no"],
[libzmq_cv_so_keepalive="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_so_keepalive" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
@ -633,8 +754,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPCNT([action-if-found], [action-if-not-found])
dnl # Check if TCP_KEEPCNT is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPCNT], [{
AC_MSG_CHECKING(whether TCP_KEEPCNT is supported)
AC_TRY_RUN([/* TCP_KEEPCNT test */
AC_CACHE_CHECK([whether TCP_KEEPCNT is supported], [libzmq_cv_tcp_keepcnt],
[AC_TRY_RUN([/* TCP_KEEPCNT test */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@ -649,11 +770,13 @@ int main (int argc, char *argv [])
((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPCNT, (char*) &opt, sizeof (int))) == -1)
);
}
],
[AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepcnt="yes" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepcnt="no" ; $2],
[AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepcnt="no"]
],
[libzmq_cv_tcp_keepcnt="yes"],
[libzmq_cv_tcp_keepcnt="no"],
[libzmq_cv_tcp_keepcnt="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_tcp_keepcnt" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
@ -661,8 +784,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPIDLE([action-if-found], [action-if-not-found])
dnl # Check if TCP_KEEPIDLE is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPIDLE], [{
AC_MSG_CHECKING(whether TCP_KEEPIDLE is supported)
AC_TRY_RUN([/* TCP_KEEPIDLE test */
AC_CACHE_CHECK([whether TCP_KEEPIDLE is supported], [libzmq_cv_tcp_keepidle],
[AC_TRY_RUN([/* TCP_KEEPIDLE test */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@ -677,11 +800,13 @@ int main (int argc, char *argv [])
((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPIDLE, (char*) &opt, sizeof (int))) == -1)
);
}
],
[AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepidle="yes" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepidle="no" ; $2],
[AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepidle="no"]
],
[libzmq_cv_tcp_keepidle="yes"],
[libzmq_cv_tcp_keepidle="no"],
[libzmq_cv_tcp_keepidle="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_tcp_keepidle" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
@ -689,8 +814,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPINTVL([action-if-found], [action-if-not-found])
dnl # Check if TCP_KEEPINTVL is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPINTVL], [{
AC_MSG_CHECKING(whether TCP_KEEPINTVL is supported)
AC_TRY_RUN([/* TCP_KEEPINTVL test */
AC_CACHE_CHECK([whether TCP_KEEPINTVL is supported], [libzmq_cv_tcp_keepintvl],
[AC_TRY_RUN([/* TCP_KEEPINTVL test */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@ -705,11 +830,13 @@ int main (int argc, char *argv [])
((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPINTVL, (char*) &opt, sizeof (int))) == -1)
);
}
],
[AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepintvl="yes" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepintvl="no" ; $2],
[AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepintvl="no"]
],
[libzmq_cv_tcp_keepintvl="yes"],
[libzmq_cv_tcp_keepintvl="no"],
[libzmq_cv_tcp_keepintvl="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_tcp_keepintvl" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
@ -717,8 +844,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPALIVE([action-if-found], [action-if-not-found])
dnl # Check if TCP_KEEPALIVE is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPALIVE], [{
AC_MSG_CHECKING(whether TCP_KEEPALIVE is supported)
AC_TRY_RUN([/* TCP_KEEPALIVE test */
AC_CACHE_CHECK([whether TCP_KEEPALIVE is supported], [libzmq_cv_tcp_keepalive],
[AC_TRY_RUN([/* TCP_KEEPALIVE test */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@ -733,11 +860,64 @@ int main (int argc, char *argv [])
((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPALIVE, (char*) &opt, sizeof (int))) == -1)
);
}
],
[AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepalive="yes" ; $1],
[AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepalive="no" ; $2],
[AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepalive="no"]
],
[libzmq_cv_tcp_keepalive="yes"],
[libzmq_cv_tcp_keepalive="no"],
[libzmq_cv_tcp_keepalive="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_tcp_keepalive" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_SO_PRIORITY([action-if-found], [action-if-not-found]) #
dnl # Check if SO_PRIORITY is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_SO_PRIORITY], [{
AC_CACHE_CHECK([whether SO_PRIORITY is supported], [libzmq_cv_so_priority],
[AC_TRY_RUN([/* SO_PRIORITY test */
#include <sys/types.h>
#include <sys/socket.h>
int main (int argc, char *argv [])
{
int s, rc, opt = 1;
return (
((s = socket (PF_INET, SOCK_STREAM, 0)) == -1) ||
((rc = setsockopt (s, SOL_SOCKET, SO_PRIORITY, (char*) &opt, sizeof (int))) == -1)
);
}
],
[libzmq_cv_so_priority="yes"],
[libzmq_cv_so_priority="no"],
[libzmq_cv_so_priority="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_so_priority" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_GETRANDOM([action-if-found], [action-if-not-found]) #
dnl # Checks if getrandom is supported #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_GETRANDOM], [{
AC_CACHE_CHECK([whether getrandom is supported], [libzmq_cv_getrandom],
[AC_TRY_RUN([/* thread-local storage test */
#include <sys/random.h>
int main (int argc, char *argv [])
{
char buf[4];
int rc = getrandom(buf, 4, 0);
return rc == -1 ? 1 : 0;
}
],
[libzmq_cv_getrandom="yes"],
[libzmq_cv_getrandom="no"],
[libzmq_cv_getrandom="not during cross-compile"]
)]
)
AS_IF([test "x$libzmq_cv_getrandom" = "xyes"], [$1], [$2])
}])
dnl ################################################################################
@ -760,6 +940,7 @@ kqueue();
dnl ################################################################################
dnl # LIBZMQ_CHECK_POLLER_EPOLL_RUN([action-if-found], [action-if-not-found]) #
dnl # LIBZMQ_CHECK_POLLER_EPOLL_CLOEXEC([action-if-found], [action-if-not-found]) #
dnl # Checks epoll polling system can actually run #
dnl # For cross-compile, only requires that epoll can link #
dnl ################################################################################
@ -787,6 +968,30 @@ epoll_create(10);
)
}])
AC_DEFUN([LIBZMQ_CHECK_POLLER_EPOLL_CLOEXEC], [{
AC_RUN_IFELSE([
AC_LANG_PROGRAM([
#include <sys/epoll.h>
],[[
struct epoll_event t_ev;
int r;
r = epoll_create1(EPOLL_CLOEXEC);
return(r < 0);
]])],
[$1],[$2],[
AC_LINK_IFELSE([
AC_LANG_PROGRAM([
#include <sys/epoll.h>
],[[
struct epoll_event t_ev;
epoll_create1(EPOLL_CLOEXEC);
]])],
[$1], [$2]
)
]
)
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_POLLER_DEVPOLL([action-if-found], [action-if-not-found]) #
dnl # Checks devpoll polling system #
@ -803,6 +1008,22 @@ int fd = open("/dev/poll", O_RDWR);
)
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_POLLER_POLLSET([action-if-found], [action-if-not-found]) #
dnl # Checks pollset polling system #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_POLLER_POLLSET], [{
AC_LINK_IFELSE([
AC_LANG_PROGRAM([
#include <sys/poll.h>
#include <sys/pollset.h>
],[[
pollset_t ps = pollset_create(-1);
]])],
[$1], [$2]
)
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_POLLER_POLL([action-if-found], [action-if-not-found]) #
dnl # Checks poll polling system #
@ -841,7 +1062,33 @@ FD_ZERO(&t_rfds);
FD_SET(0, &t_rfds);
tv.tv_sec = 5;
tv.tv_usec = 0;
select(1, &t_rfds, NULL, NULL, &tv);
select(1, &t_rfds, 0, 0, &tv);
]])],
[$1],[$2]
)
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_PSELECT([action-if-found], [action-if-not-found]) #
dnl # Checks pselect polling system #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_PSELECT], [{
AC_LINK_IFELSE([
AC_LANG_PROGRAM([
#include <sys/select.h>
#include <signal.h>
],[[
fd_set t_rfds;
struct timespec ts;
FD_ZERO(&t_rfds);
FD_SET(0, &t_rfds);
ts.tv_sec = 5;
ts.tv_nsec = 0;
sigset_t sigmask, sigmask_without_sigterm;
sigemptyset(&sigmask);
sigprocmask(SIG_BLOCK, &sigmask, &sigmask_without_sigterm);
pselect(1, &t_rfds, 0, 0, &ts, &sigmask);
]])],
[$1],[$2]
)
@ -856,62 +1103,208 @@ AC_DEFUN([LIBZMQ_CHECK_POLLER], [{
# Allow user to override poller autodetection
AC_ARG_WITH([poller],
[AS_HELP_STRING([--with-poller],
[choose polling system manually. Valid values are 'kqueue', 'epoll', 'devpoll', 'poll', 'select', or 'auto'. [default=auto]])])
[choose I/O thread polling system manually. Valid values are 'kqueue', 'epoll', 'devpoll', 'pollset', 'poll', 'select', 'wepoll', or 'auto'. [default=auto]])])
if test "x$with_poller" == "x"; then
# Allow user to override poller autodetection
AC_ARG_WITH([api_poller],
[AS_HELP_STRING([--with-api-poller],
[choose zmq_poll(er)_* API polling system manually. Valid values are 'poll', 'select', or 'auto'. [default=auto]])])
if test "x$with_poller" = "x"; then
pollers=auto
else
pollers=$with_poller
fi
if test "$pollers" == "auto"; then
if test "$pollers" = "auto"; then
# We search for pollers in this order
pollers="kqueue epoll devpoll poll select"
pollers="kqueue epoll devpoll pollset poll select"
fi
# try to find suitable polling system. the order of testing is:
AC_MSG_NOTICE([Choosing polling system from '$pollers'...])
AC_MSG_NOTICE([Choosing I/O thread polling system from '$pollers'...])
poller_found=0
for poller in $pollers; do
case "$poller" in
kqueue)
LIBZMQ_CHECK_POLLER_KQUEUE([
AC_MSG_NOTICE([Using 'kqueue' polling system])
AC_DEFINE(ZMQ_USE_KQUEUE, 1, [Use 'kqueue' polling system])
AC_MSG_NOTICE([Using 'kqueue' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_KQUEUE, 1, [Use 'kqueue' I/O thread polling system])
poller_found=1
])
;;
epoll)
LIBZMQ_CHECK_POLLER_EPOLL([
AC_MSG_NOTICE([Using 'epoll' polling system])
AC_DEFINE(ZMQ_USE_EPOLL, 1, [Use 'epoll' polling system])
poller_found=1
])
case "$host_os" in
solaris*|sunos*)
# Recent illumos and Solaris systems did add epoll()
# syntax, but it does not fully satisfy expectations
# that ZMQ has from Linux systems. Unless you undertake
# to fix the integration, do not disable this exception
# and use select() or poll() on Solarish OSes for now.
AC_MSG_NOTICE([NOT using 'epoll' I/O thread polling system on '$host_os']) ;;
*)
LIBZMQ_CHECK_POLLER_EPOLL_CLOEXEC([
AC_MSG_NOTICE([Using 'epoll' I/O thread polling system with CLOEXEC])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_EPOLL, 1, [Use 'epoll' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_EPOLL_CLOEXEC, 1, [Use 'epoll' I/O thread polling system with CLOEXEC])
poller_found=1
],[
LIBZMQ_CHECK_POLLER_EPOLL([
AC_MSG_NOTICE([Using 'epoll' I/O thread polling system with CLOEXEC])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_EPOLL, 1, [Use 'epoll' I/O thread polling system])
poller_found=1
])
])
;;
esac
;;
devpoll)
LIBZMQ_CHECK_POLLER_DEVPOLL([
AC_MSG_NOTICE([Using 'devpoll' polling system])
AC_DEFINE(ZMQ_USE_DEVPOLL, 1, [Use 'devpoll' polling system])
AC_MSG_NOTICE([Using 'devpoll' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_DEVPOLL, 1, [Use 'devpoll' I/O thread polling system])
poller_found=1
])
;;
pollset)
LIBZMQ_CHECK_POLLER_POLLSET([
AC_MSG_NOTICE([Using 'pollset' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_POLLSET, 1, [Use 'pollset' I/O thread polling system])
poller_found=1
])
;;
poll)
LIBZMQ_CHECK_POLLER_POLL([
AC_MSG_NOTICE([Using 'poll' polling system])
AC_DEFINE(ZMQ_USE_POLL, 1, [Use 'poll' polling system])
AC_MSG_NOTICE([Using 'poll' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_POLL, 1, [Use 'poll' I/O thread polling system])
poller_found=1
])
;;
select)
LIBZMQ_CHECK_POLLER_SELECT([
AC_MSG_NOTICE([Using 'select' polling system])
AC_DEFINE(ZMQ_USE_SELECT, 1, [Use 'select' polling system])
AC_MSG_NOTICE([Using 'select' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_SELECT, 1, [Use 'select' I/O thread polling system])
poller_found=1
])
;;
wepoll)
# wepoll can only be manually selected
AC_MSG_NOTICE([Using 'wepoll' I/O thread polling system])
AC_DEFINE(ZMQ_IOTHREAD_POLLER_USE_EPOLL, 1, [Use 'epoll' I/O thread polling system])
poller_found=1
;;
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
if test "x$with_api_poller" = "x"; then
with_api_poller=auto
fi
if test "x$with_api_poller" = "xauto"; then
if test $poller = "select"; then
api_poller=select
elif test $poller = "wepoll"; then
api_poller=select
else
api_poller=poll
fi
else
api_poller=$with_api_poller
fi
if test "$api_poller" = "select"; then
AC_MSG_NOTICE([Using 'select' zmq_poll(er)_* API polling system])
AC_DEFINE(ZMQ_POLL_BASED_ON_SELECT, 1, [Use 'select' zmq_poll(er)_* API polling system])
elif test "$api_poller" = "poll"; then
AC_MSG_NOTICE([Using 'poll' zmq_poll(er)_* API polling system])
AC_DEFINE(ZMQ_POLL_BASED_ON_POLL, 1, [Use 'poll' zmq_poll(er)_* API polling system])
else
AC_MSG_ERROR([Invalid API poller '$api_poller' specified])
fi
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_PPOLL([action-if-found], [action-if-not-found]) #
dnl # Check whether zmq_ppoll can be activated, and do so if it can #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_PPOLL], [{
AC_REQUIRE([AC_CANONICAL_HOST])
case "${host_os}" in
*mingw*|*cygwin*|*msys*)
# Disable ppoll by default on Windows
AC_MSG_NOTICE([NOT building active zmq_ppoll on '$host_os']) ;;
*)
LIBZMQ_CHECK_PSELECT([
AC_MSG_NOTICE([Building with zmq_ppoll])
AC_DEFINE(ZMQ_HAVE_PPOLL, 1, [Build with zmq_ppoll])
])
;;
esac
}])
dnl ##############################################################################
dnl # LIBZMQ_CHECK_CACHELINE #
dnl # Check cacheline size for alignment purposes #
dnl ##############################################################################
AC_DEFUN([LIBZMQ_CHECK_CACHELINE], [{
zmq_cacheline_size=64
AC_CHECK_TOOL(libzmq_getconf, getconf)
if ! test "x$libzmq_getconf" = "x"; then
zmq_cacheline_size=$($libzmq_getconf LEVEL1_DCACHE_LINESIZE 2>/dev/null || echo 64)
if test "x$zmq_cacheline_size" = "x0" -o "x$zmq_cacheline_size" = "x-1" -o "x$zmq_cacheline_size" = "xundefined"; then
# getconf on some architectures does not know the size, try to fallback to
# the value the kernel knows on Linux
zmq_cacheline_size=$(cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size 2>/dev/null || echo 64)
fi
fi
if test "x$zmq_cacheline_size" = "xundefined"; then
# On some platforms e.g. Fedora33 s390x the cacheline size reported
# by getconf as 'undefined'.
zmq_cacheline_size=64
fi
AC_MSG_NOTICE([Using "$zmq_cacheline_size" bytes alignment for lock-free data structures])
AC_DEFINE_UNQUOTED(ZMQ_CACHELINE_SIZE, $zmq_cacheline_size, [Using "$zmq_cacheline_size" bytes alignment for lock-free data structures])
}])
dnl ################################################################################
dnl # LIBZMQ_CHECK_CV_IMPL([action-if-found], [action-if-not-found]) #
dnl # Choose condition variable implementation #
dnl ################################################################################
AC_DEFUN([LIBZMQ_CHECK_CV_IMPL], [{
# Allow user to override condition variable autodetection
AC_ARG_WITH([cv-impl],
[AS_HELP_STRING([--with-cv-impl],
[choose condition variable implementation manually. Valid values are 'stl11', 'pthread', 'none', or 'auto'. [default=auto]])])
if test "x$with_cv_impl" = "x"; then
cv_impl=auto
else
cv_impl=$with_cv_impl
fi
case $host_os in
vxworks*)
cv_impl="vxworks"
AC_DEFINE(ZMQ_USE_CV_IMPL_VXWORKS, 1, [Use vxworks condition variable implementation.])
;;
esac
if test "$cv_impl" = "auto" || test "$cv_impl" = "stl11"; then
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS(condition_variable, [stl11="yes"
AC_DEFINE(ZMQ_USE_CV_IMPL_STL11, 1, [Use stl11 condition variable implementation.])],
[stl11="no"])
AC_LANG_POP([C++])
if test "$cv_impl" = "stl11" && test "x$stl11" = "xno"; then
AC_MSG_ERROR([--with-cv-impl set to stl11 but cannot find condition_variable])
fi
fi
if test "$cv_impl" = "pthread" || test "x$stl11" = "xno"; then
AC_DEFINE(ZMQ_USE_CV_IMPL_PTHREADS, 1, [Use pthread condition variable implementation.])
fi
if test "$cv_impl" = "none"; then
AC_DEFINE(ZMQ_USE_CV_IMPL_NONE, 1, [Use no condition variable implementation.])
fi
AC_MSG_NOTICE([Using "$cv_impl" condition variable implementation.])
}])

328
appveyor.yml Normal file
View File

@ -0,0 +1,328 @@
version: build-{build}
shallow_clone: true
os: Visual Studio 2013
environment:
CMAKE_GENERATOR: "Visual Studio 12 2013"
MSVCVERSION: "v120"
MSVCYEAR: "vs2013"
ENABLE_DRAFTS: ON
matrix:
- platform: x64
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
CMAKE_GENERATOR: "Visual Studio 16 2019"
MSVCVERSION: "v142"
MSVCYEAR: "vs2019"
ARTIFACT_NAME: v142-x64
- platform: Win32
configuration: Release
WITH_LIBSODIUM: OFF # unavailable build files for VS2008
ENABLE_CURVE: OFF
CMAKE_GENERATOR: "Visual Studio 9 2008"
MSVCVERSION: "v90"
MSVCYEAR: "vs2008"
ARTIFACT_NAME: v90
- platform: Win32
configuration: Release
WITH_LIBSODIUM: OFF
ENABLE_CURVE: OFF
CMAKE_GENERATOR: "Visual Studio 10 2010"
MSVCVERSION: "v100"
MSVCYEAR: "vs2010"
ARTIFACT_NAME: v100
- platform: Win32
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
ARTIFACT_NAME: v120
- platform: x64
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
ARTIFACT_NAME: v120-x64
- platform: Win32
configuration: Release
POLLER: epoll
API_POLLER: poll
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
TEST_OPTIONS: '-E "(test_many_sockets)"'
ARTIFACT_NAME: v120-epoll
- platform: Win32
configuration: Debug
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
TEST_OPTIONS: '-E "(test_many_sockets)"'
ARTIFACT_NAME: v120-gd
- platform: x64
configuration: Debug
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
TEST_OPTIONS: '-E "(test_many_sockets)"'
ARTIFACT_NAME: v120-gd-x64
- platform: Win32
configuration: Release
WITH_LIBSODIUM: OFF
ENABLE_CURVE: OFF
ENABLE_DRAFTS: OFF
ARTIFACT_NAME: v120-nocurve
- platform: Win32
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
CMAKE_GENERATOR: "Visual Studio 14 2015"
MSVCVERSION: "v140"
MSVCYEAR: "vs2015"
ARTIFACT_NAME: v140
- platform: x64
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
CMAKE_GENERATOR: "Visual Studio 14 2015"
MSVCVERSION: "v140"
MSVCYEAR: "vs2015"
ARTIFACT_NAME: v140-x64
- platform: Win32
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
TEST_OPTIONS: '-E "(test_many_sockets)"'
ARTIFACT_NAME: v141
- platform: x64
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
TEST_OPTIONS: '-E "(test_many_sockets)"'
ARTIFACT_NAME: v141-x64
- platform: cygwin64
WITH_LIBSODIUM: OFF
ENABLE_CURVE: OFF
CMAKE_GENERATOR: "Unix Makefiles"
ARTIFACT_NAME: cygwin64
- platform: mingw64
WITH_LIBSODIUM: OFF
ENABLE_CURVE: OFF
CMAKE_GENERATOR: "MSYS Makefiles"
ARTIFACT_NAME: mingw64
- platform: Win32-uwp
configuration: Debug
WITH_LIBSODIUM: OFF
ENABLE_CURVE: OFF
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
ARTIFACT_NAME: v141-gd-uwp
CMAKE_SYSTEM_NAME: WindowsStore
CMAKE_SYSTEM_VERSION: 10.0.18362
EXTRA_FLAGS: -DCMAKE_SYSTEM_NAME=%CMAKE_SYSTEM_NAME% -DCMAKE_SYSTEM_VERSION=%CMAKE_SYSTEM_VERSION% -DBUILD_TESTS=OFF
- platform: Win32-uwp
configuration: Release
WITH_LIBSODIUM: OFF
ENABLE_CURVE: OFF
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
ARTIFACT_NAME: v141-uwp
CMAKE_SYSTEM_NAME: WindowsStore
CMAKE_SYSTEM_VERSION: 10.0.18362
EXTRA_FLAGS: -DCMAKE_SYSTEM_NAME=%CMAKE_SYSTEM_NAME% -DCMAKE_SYSTEM_VERSION=%CMAKE_SYSTEM_VERSION% -DBUILD_TESTS=OFF
matrix:
fast_finish: false
allow_failures:
- platform: cygwin64 # TODO allow failures until tests are fixed
- platform: mingw64 # TODO allow failures until tests are fixed
init:
- cmd: if "%NO_PR%"=="TRUE" (
if "%APPVEYOR_PULL_REQUEST_NUMBER%" NEQ "" (
echo "Build is disabled for PRs, aborting" &&
appveyor exit
)
)
#- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
- cmake --version
- msbuild /version
- cmd: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
cache:
- C:\projects\libsodium
- C:\cygwin64\var\cache\setup
install:
- cmd: if "%Platform%"=="cygwin64" C:\cygwin64\setup-x86_64.exe --quiet-mode --no-shortcuts --upgrade-also --packages cmake,cygwin-devel,gcc-g++,libncurses-devel,make,pkg-config
- cmd: if "%Platform%"=="cygwin64" set PATH=C:\cygwin64\bin;%PATH%
- cmd: if "%Platform%"=="mingw64" C:\msys64\usr\bin\bash -lc "pacman -Qg"
- cmd: if "%Platform%"=="mingw64" set PATH=C:\msys64\usr\bin;%PATH%
- cmd: if "%Platform%"=="x64" (if not "%MSVCVERSION%"=="v142" set "CMAKE_GENERATOR=%CMAKE_GENERATOR% Win64")
- cmd: echo "Generator='%CMAKE_GENERATOR%'"
- cmd: echo "Platform='%Platform%'"
- cmd: if "%WITH_LIBSODIUM%"=="ON" set LIBSODIUMDIR=C:\projects\libsodium
- cmd: if "%WITH_LIBSODIUM%"=="ON" (
git config --global user.email "test@appveyor.com" &&
git config --global user.name "appveyor"
)
- cmd: if "%WITH_LIBSODIUM%"=="ON" (
if not exist "%LIBSODIUMDIR%" (
git clone --branch stable --depth 1 --quiet "https://github.com/jedisct1/libsodium.git" %LIBSODIUMDIR%
) else (
git -C "%LIBSODIUMDIR%" fetch --all && git -C "%LIBSODIUMDIR%" reset --hard origin/stable
)
)
- cmd: if "%WITH_LIBSODIUM%"=="ON" msbuild /v:minimal /maxcpucount:%NUMBER_OF_PROCESSORS% /p:Configuration=%Configuration%DLL %LIBSODIUMDIR%\builds\msvc\%MSVCYEAR%\libsodium\libsodium.vcxproj
- cmd: if "%WITH_LIBSODIUM%"=="ON" set SODIUM_LIBRARY_DIR="%LIBSODIUMDIR%\bin\%Platform%\%Configuration%\%MSVCVERSION%\dynamic"
- cmd: if "%WITH_LIBSODIUM%"=="ON" set SODIUM_INCLUDE_DIR="%LIBSODIUMDIR%\src\libsodium\include"
- ps: if (${env:WITH_LIBSODIUM} -eq "ON") { Copy-Item "C:\projects\libsodium\bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\libsodium.lib" -Destination "C:\projects\libsodium\bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\sodium.lib" }
clone_folder: C:\projects\libzmq
before_build:
- cmd: set LIBZMQ_SRCDIR=%cd%
- cmd: set LIBZMQ_BUILDDIR=C:\projects\build_libzmq
# TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
# - cmd: curl -L https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.1.0.1141-windows.zip -o sonar-scanner-cli-3.1.0.1141-windows.zip
# - cmd: unzip sonar-scanner-cli-3.1.0.1141-windows.zip
# - cmd: set BUILDLOG="%LIBZMQ_SRCDIR%\build.log"
- cmd: md "%LIBZMQ_BUILDDIR%"
- cd "%LIBZMQ_BUILDDIR%"
- cmd: if "%PLATFORM%" == "cygwin64" set APPVEYOR_BUILD_FOLDER=/cygdrive/C/projects/libzmq
- cmd: if "%ENABLE_ANALYSIS%"=="ON" ( set LIBZMQ_WERROR="OFF" ) else ( set LIBZMQ_WERROR="ON" )
- cmd: cmake -D CMAKE_INCLUDE_PATH="%SODIUM_INCLUDE_DIR%" -D CMAKE_LIBRARY_PATH="%SODIUM_LIBRARY_DIR%" -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D ENABLE_DRAFTS="%ENABLE_DRAFTS%" -D ENABLE_ANALYSIS="%ENABLE_ANALYSIS%" -D ENABLE_CURVE="%ENABLE_CURVE%" -D API_POLLER="%API_POLLER%" -D POLLER="%POLLER%" %EXTRA_FLAGS% -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D LIBZMQ_WERROR="%LIBZMQ_WERROR%" -G "%CMAKE_GENERATOR%" "%APPVEYOR_BUILD_FOLDER%"
- cmd: cd "%LIBZMQ_SRCDIR%"
- ps: $env:ZMQ_VERSION_MAJOR = (Select-String -Path .\include\zmq.h -Pattern ".*#define ZMQ_VERSION_MAJOR ([0-9]+).*").Matches.Groups[1].Value
- ps: $env:ZMQ_VERSION_MINOR = (Select-String -Path .\include\zmq.h -Pattern ".*#define ZMQ_VERSION_MINOR ([0-9]+).*").Matches.Groups[1].Value
- ps: $env:ZMQ_VERSION_PATCH = (Select-String -Path .\include\zmq.h -Pattern ".*#define ZMQ_VERSION_PATCH ([0-9]+).*").Matches.Groups[1].Value
- ps: $env:ZMQ_VERSION = "${env:ZMQ_VERSION_MAJOR}.${env:ZMQ_VERSION_MINOR}.${env:ZMQ_VERSION_PATCH}"
- cmd: echo "ZMQ_VERSION is %ZMQ_VERSION%"
build_script:
- cmd: set verbosity=Minimal
- cmd: if "%MSVCYEAR%"=="vs2008" set verbosity=Normal
- cmd: if "%MSVCYEAR%"=="vs2008" set path=C:\Windows\Microsoft.NET\Framework\v3.5;%path%
- cmd: cd "%LIBZMQ_BUILDDIR%"
- cmd: if "%PLATFORM:~0,5%" == "Win32" (
if "%MSVCYEAR%"=="vs2008" (
cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install
) else (
cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install -- -verbosity:Minimal -maxcpucount -logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
)
)
- cmd: if "%PLATFORM%" == "x64" (
cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install -- -verbosity:Minimal -maxcpucount -logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
)
- cmd: if "%PLATFORM%" == "cygwin64" (
cmake --build . -- -j5
)
- cmd: if "%PLATFORM%" == "mingw64" (
cmake --build . -- -j5
)
# TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
# build_script:
# - cmd: msbuild %LIBZMQ_BUILDDIR%\ZeroMQ.sln /verbosity:detailed >%BUILDLOG%
after_build:
# TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
# - cmd: cd "%LIBZMQ_SRCDIR%"
# - cmd: dir
# - cmd: sonar-scanner-3.1.0.1141-windows\bin\sonar-scanner
# -Dsonar.scm.provider=git
# -Dsonar.projectKey=libzmq-msvc
# -Dsonar.organization=sigiesec-github
# -Dsonar.sources=include,src,tests,unittests
# -Dsonar.host.url=https://sonarcloud.io
# -Dsonar.login=%SONARQUBE_TOKEN%
# -Dsonar.cxx.compiler.parser="Visual C++"
# -Dsonar.cxx.compiler.reportPath=build.log
# -Dsonar.cxx.compiler.charset=UTF-8
# -Dsonar.cxx.compiler.regex=^(?<filename>.*)\\((?<line>[0-9]+)\\):\\x20warning\\x20(?<id>C\\d\\d\\d\\d):(?<message>.*)$
# TODO this should be done differently, using the INSTALL cmake target, the current handling depends on the details of the CMakeLists.txt
- cmd: cd %LIBZMQ_BUILDDIR%\bin\%Configuration%"
- cmd: if "%WITH_LIBSODIUM%"=="ON" copy "%SODIUM_LIBRARY_DIR%\libsodium.dll" .
- cmd: copy "%LIBZMQ_SRCDIR%\include\zmq.h" .
- cmd: copy ..\..\lib\%Configuration%\libzmq*.lib . & exit 0
- cmd: 7z a -y -bd -mx=9 libzmq.zip *.exe *.dll *.pdb *.h *.lib
- ps: Push-AppveyorArtifact "libzmq.zip" -Filename "libzmq-${env:ARTIFACT_NAME}-${env:ZMQ_VERSION_MAJOR}_${env:ZMQ_VERSION_MINOR}_${env:ZMQ_VERSION_PATCH}.zip"
test_script:
- cmd: cd "%LIBZMQ_BUILDDIR%"
# TODO run tests in parallel only on selected platforms, since they fail on others, see https://github.com/zeromq/libzmq/issues/3123
- cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 12 2013" set PARALLELIZE=ON
- cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 14 2015" set PARALLELIZE=ON
- cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 12 2013 Win64" set PARALLELIZE=ON
- cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 14 2015 Win64" set PARALLELIZE=ON
- cmd: if not defined TEST_OPTIONS set "TEST_OPTIONS= "
- cmd: if "%PARALLELIZE%"=="ON" (
echo "Running tests in parallel" &&
set TEST_OPTIONS=%TEST_OPTIONS% -j5
)
- cmd: if "%APPVEYOR_REPO_TAG%"=="false" (ctest -C "%Configuration%" -V %TEST_OPTIONS%)
# the analysis build is repeated; apparently appveyor only uses the first section that matches some branch
for:
-
branches:
only:
- master
environment:
matrix:
- platform: Win32
configuration: Release
API_POLLER: poll
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
NO_PR: TRUE
- platform: x64
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
NO_PR: TRUE
- platform: Win32
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
NO_PR: TRUE
- platform: Win32
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
ENABLE_ANALYSIS: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
NO_PR: TRUE
-
branches:
only:
- /.*analyze$/
environment:
matrix:
- platform: Win32
configuration: Release
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
ENABLE_ANALYSIS: ON
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: "Visual Studio 15 2017"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
NO_PR: TRUE

View File

@ -1,26 +1,9 @@
#!/bin/sh
# Copyright (c) 2007-2009 iMatix Corporation
# Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
#
# This file is part of 0MQ.
#
# 0MQ 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 Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# 0MQ 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
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# SPDX-License-Identifier: MPL-2.0
# Script to generate all required files from fresh git checkout.
# Debian and Ubuntu do not shipt libtool anymore, but OSX does not ship libtoolize.
# Debian and Ubuntu do not ship libtool anymore, but OSX does not ship libtoolize.
command -v libtoolize >/dev/null 2>&1
if [ $? -ne 0 ]; then
command -v libtool >/dev/null 2>&1
@ -43,7 +26,8 @@ if [ $? -ne 0 ]; then
fi
autoreconf --install --force --verbose -I config
if [ $? -ne 0 ]; then
echo "autogen.sh: error: autoreconf exited with status $?" 1>&2
res=$?
if [ "$res" -ne 0 ]; then
echo "autogen.sh: error: autoreconf exited with status $res" 1>&2
exit 1
fi

8
build_qnx/Makefile Normal file
View File

@ -0,0 +1,8 @@
LIST=OS
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)

57
build_qnx/common.mk Normal file
View File

@ -0,0 +1,57 @@
ifndef QCONFIG
QCONFIG=qconfig.mk
endif
include $(QCONFIG)
NAME=libzmq
#$(INSTALL_ROOT_$(OS)) is pointing to $QNX_TARGET
#by default, unless it was manually re-routed to
#a staging area by setting both INSTALL_ROOT_nto
#and USE_INSTALL_ROOT
LIBZMQ_INSTALL_ROOT ?= $(INSTALL_ROOT_$(OS))
LIBZMQ_VERSION = .4.3.4
#choose Release or Debug
CMAKE_BUILD_TYPE ?= Release
#override 'all' target to bypass the default QNX build system
ALL_DEPENDENCIES = libzmq_all
.PHONY: libzmq_all install check clean
CFLAGS += $(FLAGS)
LDFLAGS += -Wl,--build-id=md5
include $(MKFILES_ROOT)/qtargets.mk
LIBZMQ_DIR = $(PROJECT_ROOT)/../
CMAKE_ARGS = -DCMAKE_TOOLCHAIN_FILE=$(PROJECT_ROOT)/qnx.nto.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=$(LIBZMQ_INSTALL_ROOT)/${CPUVARDIR}/usr \
-DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) \
-DEXTRA_CMAKE_C_FLAGS="$(CFLAGS)" \
-DEXTRA_CMAKE_CXX_FLAGS="$(CFLAGS)" \
-DEXTRA_CMAKE_ASM_FLAGS="$(FLAGS)" \
-DEXTRA_CMAKE_LINKER_FLAGS="$(LDFLAGS)" \
-DCMAKE_INSTALL_INCLUDEDIR=$(LIBZMQ_INSTALL_ROOT)/usr/include \
-DCMAKE_INSTALL_LIBDIR=$(LIBZMQ_INSTALL_ROOT)/$(CPUVARDIR)/usr/lib \
-DCMAKE_INSTALL_BINDIR=$(LIBZMQ_INSTALL_ROOT)/$(CPUVARDIR)/usr/bin \
-DCPUVARDIR=$(CPUVARDIR)
MAKE_ARGS ?= -j $(firstword $(JLEVEL) 1)
ifndef NO_TARGET_OVERRIDE
libzmq_all:
@mkdir -p build
@cd build && cmake $(CMAKE_ARGS) $(LIBZMQ_DIR)
@cd build && make VERBOSE=1 all $(MAKE_ARGS)
install check: libzmq_all
@cd build && make VERBOSE=1 install
clean iclean spotless:
rm -rf build
uninstall:
endif

8
build_qnx/nto/Makefile Normal file
View File

@ -0,0 +1,8 @@
LIST=CPU
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)

View File

@ -0,0 +1,8 @@
LIST=VARIANT
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)

View File

@ -0,0 +1,5 @@
include ../../../common.mk
CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=aarch64
FLAGS += $(VFLAG_le) $(CCVFLAG_le)
LDFLAGS += $(VFLAG_le) $(LDVFLAG_le)

View File

@ -0,0 +1,8 @@
LIST=VARIANT
ifndef QRECURSE
QRECURSE=recurse.mk
ifdef QCONFIG
QRDIR=$(dir $(QCONFIG))
endif
endif
include $(QRDIR)$(QRECURSE)

View File

@ -0,0 +1,5 @@
include ../../../common.mk
CMAKE_ARGS += -DCMAKE_SYSTEM_PROCESSOR=x86_64
FLAGS += $(VFLAG_o) $(CCVFLAG_o)
LDFLAGS += $(VFLAG_o) $(LDVFLAG_o)

View File

@ -0,0 +1,34 @@
if("$ENV{QNX_HOST}" STREQUAL "")
message(FATAL_ERROR "QNX_HOST environment variable not found. Please set the variable to your host's build tools")
endif()
if("$ENV{QNX_TARGET}" STREQUAL "")
message(FATAL_ERROR "QNX_TARGET environment variable not found. Please set the variable to the qnx target location")
endif()
if(CMAKE_HOST_WIN32)
set(HOST_EXECUTABLE_SUFFIX ".exe")
#convert windows paths to cmake paths
file(TO_CMAKE_PATH "$ENV{QNX_HOST}" QNX_HOST)
file(TO_CMAKE_PATH "$ENV{QNX_TARGET}" QNX_TARGET)
else()
set(QNX_HOST "$ENV{QNX_HOST}")
set(QNX_TARGET "$ENV{QNX_TARGET}")
endif()
message(STATUS "using QNX_HOST ${QNX_HOST}")
message(STATUS "using QNX_TARGET ${QNX_TARGET}")
set(QNX TRUE)
set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_C_COMPILER ${QNX_HOST}/usr/bin/qcc)
set(CMAKE_CXX_COMPILER ${QNX_HOST}/usr/bin/qcc)
set(CMAKE_ASM_COMPILER ${QNX_HOST}/usr/bin/qcc)
set(CMAKE_AR "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ar${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "archiver")
set(CMAKE_RANLIB "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ranlib${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "ranlib")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Vgcc_nto${CMAKE_SYSTEM_PROCESSOR} ${EXTRA_CMAKE_C_FLAGS}" CACHE STRING "c_flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Vgcc_nto${CMAKE_SYSTEM_PROCESSOR} -std=gnu++11 ${EXTRA_CMAKE_CXX_FLAGS}" CACHE STRING "cxx_flags")
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Vgcc_nto${CMAKE_SYSTEM_PROCESSOR} ${EXTRA_CMAKE_ASM_FLAGS}" CACHE STRING "asm_flags")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_CMAKE_LINKER_FLAGS}" CACHE STRING "exe_linker_flags")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EXTRA_CMAKE_LINKER_FLAGS}" CACHE STRING "so_linker_flags")

View File

@ -2,6 +2,7 @@
# msvc directory does its own stuff.
EXTRA_DIST = \
cygwin/Makefile.cygwin \
zos/makelibzmq \
zos/cxxall \
zos/README.md \
@ -11,16 +12,23 @@ EXTRA_DIST = \
zos/test_fork.cpp \
zos/maketests \
zos/runtests \
cygwin/Makefile.cygwin \
mingw32/Makefile.mingw32 \
mingw32/platform.hpp \
cmake/ci_build.sh \
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 \
cmake/ZeroMQConfig.cmake.in \
cmake/clang-format-check.sh.in \
cmake/platform.hpp.in \
valgrind/ci_build.sh \
valgrind/valgrind.supp \
valgrind/vg \
nuget/readme.nuget \
nuget/libzmq.autopkg
nuget/libzmq.autopkg \
android/Dockerfile \
android/README.md \
android/android_build_helper.sh \
android/ci_build.sh \
android/build.sh

14
builds/README Normal file
View File

@ -0,0 +1,14 @@
This directory holds build tools, i.e. tools we use to build the current
code tree. Packaging tools (which take released tarballs or github code
repos) should go into /packaging.
Note: 'deprecated-msvc' contains deprecated prepared Visual Studio Solution
files for various Visual Studio versions. These are no longer maintained,
and may or may not work. Please use cmake instead to build with Visual
Studio. Rationale: The solution and project files are hard to maintain,
since there are different variants for each Visual Studio version.
The tests have never been included there for this reason, so they were
never usable for actual development of libzmq. If you encounter that
something that worked before does not work with CMake, please open as
issue at https://github.com/zeromq/libzmq/issues.

View File

@ -0,0 +1,44 @@
#!/usr/bin/env bash
set -x
set -e
cd ../../
mkdir tmp
BUILD_PREFIX=$PWD/tmp
CONFIG_OPTS=()
CONFIG_OPTS+=("CFLAGS=-I${BUILD_PREFIX}/include -g -Og")
CONFIG_OPTS+=("CPPFLAGS=-I${BUILD_PREFIX}/include")
CONFIG_OPTS+=("CXXFLAGS=-I${BUILD_PREFIX}/include -g -Og")
CONFIG_OPTS+=("LDFLAGS=-L${BUILD_PREFIX}/lib")
CONFIG_OPTS+=("PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig")
CONFIG_OPTS+=("--prefix=${BUILD_PREFIX}")
CONFIG_OPTS+=("--enable-drafts=no")
function print_abi_api_breakages() {
echo "ABI breakages detected:"
cat compat_reports/libzmq/${LATEST_VERSION}_to_HEAD/abi_affected.txt | c++filt
echo "API breakages detected:"
cat compat_reports/libzmq/${LATEST_VERSION}_to_HEAD/src_affected.txt | c++filt
exit 1
}
git fetch --unshallow
git fetch --all --tags
LATEST_VERSION=$(git describe --abbrev=0 --tags)
./autogen.sh
./configure "${CONFIG_OPTS[@]}"
make VERBOSE=1 -j5
abi-dumper src/.libs/libzmq.so -o ${BUILD_PREFIX}/libzmq.head.dump -lver HEAD
git clone --depth 1 -b ${LATEST_VERSION} https://github.com/zeromq/libzmq.git latest_release
cd latest_release
./autogen.sh
./configure "${CONFIG_OPTS[@]}"
make VERBOSe=1 -j5
abi-dumper src/.libs/libzmq.so -o ${BUILD_PREFIX}/libzmq.latest.dump -lver ${LATEST_VERSION}
abi-compliance-checker -l libzmq -d1 ${BUILD_PREFIX}/libzmq.latest.dump -d2 ${BUILD_PREFIX}/libzmq.head.dump -list-affected || print_abi_api_breakages

63
builds/android/Dockerfile Normal file
View File

@ -0,0 +1,63 @@
# FROM debian:7 # APT repo no more available.
# FROM debian:8
# FROM debian:9
# FROM debian:10
# FROM debian:11
# FROM ubuntu:12.04 # APT repo no more available.
# FROM ubuntu:14.04
# FROM ubuntu:16.04
# FROM ubuntu:18.04
# FROM ubuntu:20.04
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y -q
RUN apt-get install -y -q \
apt-utils
RUN apt-get install -y -q \
autoconf \
automake \
cmake \
file \
git \
libtool \
pkg-config \
unzip \
wget
# Create user ZMQ, and run Android build with it.
# This ensures that nothing weird is performed with
# ROOT privileges.
RUN useradd -d /home/zmq -m -s /bin/bash zmq
USER zmq
WORKDIR /home/zmq
# Install android NDK (up to NDK 22):
# ENV NDK_VERSION=android-ndk-r18 # Build failed to detect NDK tools (bug).
# ENV NDK_VERSION=android-ndk-r19 # Build passed
# ENV NDK_VERSION=android-ndk-r20 # Build passed
# ENV NDK_VERSION=android-ndk-r21 # Build passed
# ENV NDK_VERSION=android-ndk-r22 # Build passed
# RUN wget -q -O ndk_archive.zip http://dl.google.com/android/repository/${NDK_VERSION}-linux-x86_64.zip
# Install android NDK (from NDK 23):
# ENV NDK_VERSION=android-ndk-r23 # Build passed
# ENV NDK_VERSION=android-ndk-r24 # Build passed
ENV NDK_VERSION=android-ndk-r25
RUN wget -q -O ndk_archive.zip http://dl.google.com/android/repository/${NDK_VERSION}-linux.zip
RUN unzip -q ndk_archive.zip
# Clone and build LIBZMQ
ENV ANDROID_NDK_ROOT=/home/zmq/${NDK_VERSION}
RUN git clone --quiet --depth 1 https://github.com/zeromq/libzmq.git
RUN libzmq/builds/android/ci_build.sh

160
builds/android/README.md Normal file
View File

@ -0,0 +1,160 @@
# Android Build
## Preamble
The last known NDK is automatically downloaded, if not specified otherwise.
As indicated in the main [README](../../README.md#supported-platforms-with-primary-CI), Android support is still DRAFT.
## Configuration
### Basics
Basically, LIBZMQ build for Android, relies on exported variables.
Provided build scripts can mainly be used like
export XXX=xxx
export YYY=yyy
...
cd <libzmq>/builds/android
./<build_script>
### Android NDK
LIBZMQ is tested against Android NDK versions r19 to r25.
By default, LIBZMQ uses NDK `android-ndk-r25`, but you can specify
a different one:
export NDK_VERSION=android-ndk-r23c
If you already have installed your favorite NDK somewhere, all you have to
do is to export and set NDK_VERSION and ANDROID_NDK_ROOT environment
variables, e.g:
export NDK_VERSION="android-ndk-r23b"
export ANDROID_NDK_ROOT=$HOME/${NDK_VERSION}
**Important:** ANDROID_NDK_ROOT must be an absolute path !
If you specify only NDK_VERSION, ANDROID_NDK_ROOT will be automatically set
to its default:
export ANDROID_NDK_ROOT=/tmp/${NDK_VERSION}
To specify the minimum SDK version set the environment variable below:
export MIN_SDK_VERSION=21 # Default value if unset
To specify the build directory set the environment variable below:
export ANDROID_BUILD_DIR=${HOME}/android_build
**Important:** ANDROID_BUILD_ROOT must be an absolute path !
### Android build folder
All Android libraries will be generated under:
${ANDROID_BUILD_DIR}/prefix/<arch>/lib
where <arch> is one of `arm`, `arm64`, `x86` or `x86_64`.
### Android build cleanup
Build and Dependency storage folders are automatically cleaned,
by ci_build.sh. This can be avoided with the help of
ANDROID_BUILD_DIR="no"
If you turn this to "no", make sure to clean what has to be, before
calling `build.sh` or `ci_build.sh`.
### Prebuilt Android libraries
Android prebuilt libraries have to be stored under
ANDROID_BUILD_DIR/prefix/<arch>/lib
Do not forget to disable [Android cleanup](#android-build-cleanup).
### Dependencies
By default, `build.sh` download dependencies under `/tmp/tmp-deps`.
You can specify another folder with the help of ANDROID_DEPENDENCIES_DIR:
ANDROID_DEPENDENCIES_DIR=${HOME}/my_dependencies
If you place your own dependency source trees there,
do not forget to disable [Android cleanup](#android-build-cleanup).
### Cryptographic configuration
The variable CURVE accepts 2 different values:
"" : LIBZMQ is built without any encryption support.
"libsodium" : LIBZMQ is built with LIBSODIUM encryption support (see below).
### Other configuration variables
You can also check configuration variables in `build.sh` itself, in its
"Configuration & tuning options" comment block.
## LIBSODIUM
LIBSODIUM is built along with LIBZMQ, when CURVE="libsodium".
- If you have your own clone of LIBSODIUM, set LIBSODIUM_ROOT to point to
its folder.
- If the variable LIBSODIUM_ROOT is not set, LIBZMQ will look for a folder
'libsodium' close to his own one.
- If no folder 'libsodium' exists, then LIBZMQ will clone LIBSODIUM from its
official STABLE branch.
## Build
See chapter [Configuration](#configuration) for configuration options and
other details.
Select your preferred parameters:
export XXX=xxx
export YYY=yyy
...
and run:
cd <libzmq>/builds/android
./build.sh [ arm | arm64 | x86 | x86_64 ]
Parameter selection and the calls to build.sh can be located in a
SHELL script, like in ci_build.sh.
## CI build
Basically, it will call `build.sh` once, for each Android target.
This script accepts the same configuration variables, but some are set
with different default values. For instance, the dependencies are not
downloaded or cloned in `/tmp/tmp-deps, but inside LIBZMQ clone.
It can be used in the same way as build.sh
export XXX=xxx
export YYY=yyy
cd <libzmq>/builds/android
./ci_build.sh
## Dockerfile
An example of Docker file is provided, for Ubuntu 22.04
Minimal changes are required to support Debian 9 to 11.
Minimal changes are required to support CentOS (7 only), Rocky Linux (8 & 9),
and many Fedora (22 to 37).

View File

@ -0,0 +1,636 @@
#!/usr/bin/env bash
#
# Copyright (c) 2014, Joe Eli McIlvain
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
###
#
# Courtesy of Joe Eli McIlvain; original code at:
# https://github.com/jemc/android_build_helper
# android_build_helper.sh
#
# The following is a helper script for setting up android builds for
# "native" libraries maintained with an autotools build system.
# It merely helps to create the proper cross-compile environment.
# It makes no attempt to wrap the library or make it accessible to Java code;
# the intention is to make the bare library available to other "native" code.
#
# To get the latest version of this script, please download from:
# https://github.com/jemc/android_build_helper
#
# You are free to modify and redistribute this script, but if you add
# improvements, please consider submitting a pull request or patch to the
# aforementioned upstream repository for the benefit of other users.
#
# This script is provided with no express or implied warranties.
#
########################################################################
# Utilities & helper functions
########################################################################
function android_build_trace {
if [ -n "${BUILD_ARCH}" ] ; then
echo "LIBZMQ (${BUILD_ARCH}) - $*"
else
echo "LIBZMQ - $*"
fi
}
function android_build_check_fail {
if [ ! ${#ANDROID_BUILD_FAIL[@]} -eq 0 ]; then
android_build_trace "Android build failed for the following reasons:"
for reason in "${ANDROID_BUILD_FAIL[@]}"; do
local formatted_reason=" ${reason}"
echo "${formatted_reason}"
done
exit 1
fi
}
function android_download_ndk {
if [ -d "${ANDROID_NDK_ROOT}" ] ; then
# NDK folder detected, let's assume it's valid ...
android_build_trace "Using existing NDK folder '${ANDROID_NDK_ROOT}'."
return
fi
if [ ! -d "$(dirname "${ANDROID_NDK_ROOT}")" ] ; then
ANDROID_BUILD_FAIL+=("Cannot download NDK in a non existing folder")
ANDROID_BUILD_FAIL+=(" $(dirname "${ANDROID_NDK_ROOT}/")")
fi
android_build_check_fail
local filename
local platform="$(uname | tr '[:upper:]' '[:lower:]')"
case "${platform}" in
linux*)
if [ "${NDK_NUMBER}" -ge 2300 ] ; then
# Since NDK 23, NDK archives are renamed.
filename=${NDK_VERSION}-linux.zip
else
filename=${NDK_VERSION}-linux-x86_64.zip
fi
;;
darwin*)
if [ "${NDK_NUMBER}" -ge 2300 ] ; then
# Since NDK 23, NDK archives are renamed.
filename=${NDK_VERSION}-darwin.zip
else
filename=${NDK_VERSION}-darwin-x86_64.zip
fi
;;
*) android_build_trace "Unsupported platform ('${platform}')" ; exit 1 ;;
esac
if [ -z "${filename}" ] ; then
ANDROID_BUILD_FAIL+=("Unable to detect NDK filename.")
fi
android_build_check_fail
android_build_trace "Downloading NDK '${NDK_VERSION}'..."
(
cd "$(dirname "${ANDROID_NDK_ROOT}")" \
&& rm -f "${filename}" \
&& wget -q "http://dl.google.com/android/repository/${filename}" -O "${filename}" \
&& android_build_trace "Extracting NDK '${filename}'..." \
&& unzip -q "${filename}" \
&& android_build_trace "NDK extracted under '${ANDROID_NDK_ROOT}'."
) || {
ANDROID_BUILD_FAIL+=("Failed to install NDK ('${NDK_VERSION}')")
ANDROID_BUILD_FAIL+=(" ${filename}")
}
android_build_check_fail
}
function android_build_set_env {
BUILD_ARCH=$1
local platform="$(uname | tr '[:upper:]' '[:lower:]')"
case "${platform}" in
linux*)
export ANDROID_BUILD_PLATFORM=linux-x86_64
;;
darwin*)
export ANDROID_BUILD_PLATFORM=darwin-x86_64
;;
*) android_build_trace "Unsupported platform ('${platform}')" ; exit 1 ;;
esac
export ANDROID_BUILD_TOOLCHAIN="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ANDROID_BUILD_PLATFORM}"
export TOOLCHAIN_PATH="${ANDROID_BUILD_TOOLCHAIN}/bin"
# Set variables for each architecture
if [ "${BUILD_ARCH}" == "arm" ]; then
export TOOLCHAIN_HOST="arm-linux-androideabi"
export TOOLCHAIN_COMP="armv7a-linux-androideabi${MIN_SDK_VERSION}"
export TOOLCHAIN_ABI="armeabi-v7a"
export TOOLCHAIN_ARCH="arm"
elif [ "${BUILD_ARCH}" == "x86" ]; then
export TOOLCHAIN_HOST="i686-linux-android"
export TOOLCHAIN_COMP="i686-linux-android${MIN_SDK_VERSION}"
export TOOLCHAIN_ABI="x86"
export TOOLCHAIN_ARCH="x86"
elif [ "${BUILD_ARCH}" == "arm64" ]; then
export TOOLCHAIN_HOST="aarch64-linux-android"
export TOOLCHAIN_COMP="aarch64-linux-android${MIN_SDK_VERSION}"
export TOOLCHAIN_ABI="arm64-v8a"
export TOOLCHAIN_ARCH="arm64"
elif [ "${BUILD_ARCH}" == "x86_64" ]; then
export TOOLCHAIN_HOST="x86_64-linux-android"
export TOOLCHAIN_COMP="x86_64-linux-android${MIN_SDK_VERSION}"
export TOOLCHAIN_ABI="x86_64"
export TOOLCHAIN_ARCH="x86_64"
fi
# Since NDK r22 the "platforms" dir got removed
if [ -d "${ANDROID_NDK_ROOT}/platforms" ]; then
export ANDROID_BUILD_SYSROOT="${ANDROID_NDK_ROOT}/platforms/android-${MIN_SDK_VERSION}/arch-${TOOLCHAIN_ARCH}"
else
export ANDROID_BUILD_SYSROOT="${ANDROID_BUILD_TOOLCHAIN}/sysroot"
fi
export ANDROID_BUILD_PREFIX="${ANDROID_BUILD_DIR}/prefix/${TOOLCHAIN_ARCH}"
# Since NDK r25, libc++_shared.so is no more in 'sources/cxx-stl/...'
export ANDROID_STL="libc++_shared.so"
if [ -x "${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/${TOOLCHAIN_ABI}/${ANDROID_STL}" ] ; then
export ANDROID_STL_ROOT="${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/${TOOLCHAIN_ABI}"
else
export ANDROID_STL_ROOT="${ANDROID_BUILD_SYSROOT}/usr/lib/${TOOLCHAIN_HOST}"
# NDK 25 requires -L<path-to-libc.so> ...
# I don't understand why, but without it, ./configure fails to build a valid 'conftest'.
export ANDROID_LIBC_ROOT="${ANDROID_BUILD_SYSROOT}/usr/lib/${TOOLCHAIN_HOST}/${MIN_SDK_VERSION}"
fi
}
function android_build_env {
##
# Check that necessary environment variables are set
if [ -z "$ANDROID_NDK_ROOT" ]; then
ANDROID_BUILD_FAIL+=("Please set the ANDROID_NDK_ROOT environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"/home/user/android/android-ndk-r25\")")
fi
if [ -z "$ANDROID_BUILD_TOOLCHAIN" ]; then
ANDROID_BUILD_FAIL+=("Please set the ANDROID_BUILD_TOOLCHAIN environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"/home/user/android/android-ndk-r25/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64\")")
fi
if [ -z "$TOOLCHAIN_PATH" ]; then
ANDROID_BUILD_FAIL+=("Please set the TOOLCHAIN_PATH environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"/home/user/android/android-ndk-r25/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin\")")
fi
if [ -z "$TOOLCHAIN_HOST" ]; then
ANDROID_BUILD_FAIL+=("Please set the TOOLCHAIN_HOST environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"arm-linux-androideabi\")")
fi
if [ -z "$TOOLCHAIN_COMP" ]; then
ANDROID_BUILD_FAIL+=("Please set the TOOLCHAIN_COMP environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"armv7a-linux-androideabi\")")
fi
if [ -z "$TOOLCHAIN_ABI" ]; then
ANDROID_BUILD_FAIL+=("Please set the TOOLCHAIN_ABI environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"armeabi-v7a\")")
fi
if [ -z "$TOOLCHAIN_ARCH" ]; then
ANDROID_BUILD_FAIL+=("Please set the TOOLCHAIN_ARCH environment variable")
ANDROID_BUILD_FAIL+=(" (eg. \"arm\")")
fi
android_build_check_fail
##
# Check that directories given by environment variables exist
if [ ! -d "$ANDROID_NDK_ROOT" ]; then
ANDROID_BUILD_FAIL+=("The ANDROID_NDK_ROOT directory does not exist")
ANDROID_BUILD_FAIL+=(" ${ANDROID_NDK_ROOT}")
fi
if [ ! -d "$ANDROID_STL_ROOT" ]; then
ANDROID_BUILD_FAIL+=("The ANDROID_STL_ROOT directory does not exist")
ANDROID_BUILD_FAIL+=(" ${ANDROID_STL_ROOT}")
fi
if [ -n "${ANDROID_LIBC_ROOT}" ] && [ ! -d "${ANDROID_LIBC_ROOT}" ]; then
ANDROID_BUILD_FAIL+=("The ANDROID_LIBC_ROOT directory does not exist")
ANDROID_BUILD_FAIL+=(" ${ANDROID_LIBC_ROOT}")
fi
if [ ! -d "${ANDROID_BUILD_TOOLCHAIN}" ]; then
ANDROID_BUILD_FAIL+=("The ANDROID_BUILD_TOOLCHAIN directory does not exist")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_TOOLCHAIN}")
fi
if [ ! -d "$TOOLCHAIN_PATH" ]; then
ANDROID_BUILD_FAIL+=("The TOOLCHAIN_PATH directory does not exist")
ANDROID_BUILD_FAIL+=(" ${TOOLCHAIN_PATH}")
fi
##
# Set up some local variables and check them
if [ ! -d "$ANDROID_BUILD_SYSROOT" ]; then
ANDROID_BUILD_FAIL+=("The ANDROID_BUILD_SYSROOT directory does not exist")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_SYSROOT}")
fi
mkdir -p "$ANDROID_BUILD_PREFIX" || {
ANDROID_BUILD_FAIL+=("Failed to make ANDROID_BUILD_PREFIX directory")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_PREFIX}")
}
android_build_check_fail
}
function _android_build_opts_process_binaries {
export ANDROID_BUILD_CC="${TOOLCHAIN_PATH}/${TOOLCHAIN_COMP}-clang"
export ANDROID_BUILD_CXX="${TOOLCHAIN_PATH}/${TOOLCHAIN_COMP}-clang++"
# Since NDK r22 the "platforms" dir got removed and the default linker is LLD
if [ -d "${ANDROID_NDK_ROOT}/platforms" ]; then
export ANDROID_BUILD_LD="${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-ld"
else
export ANDROID_BUILD_LD="${TOOLCHAIN_PATH}/ld"
fi
# Since NDK r24 this binary was removed due to LLVM being now the default
if [ ! -x "${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-as" ]; then
export ANDROID_BUILD_AS="${TOOLCHAIN_PATH}/llvm-as"
else
export ANDROID_BUILD_AS="${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-as"
fi
# Since NDK r23 those binaries were removed due to LLVM being now the default
if [ ! -x "${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-ar" ]; then
export ANDROID_BUILD_AR="${TOOLCHAIN_PATH}/llvm-ar"
export ANDROID_BUILD_RANLIB="${TOOLCHAIN_PATH}/llvm-ranlib"
export ANDROID_BUILD_STRIP="${TOOLCHAIN_PATH}/llvm-strip"
else
export ANDROID_BUILD_AR="${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-ar"
export ANDROID_BUILD_RANLIB="${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-ranlib"
export ANDROID_BUILD_STRIP="${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-strip"
fi
if [ ! -x "${ANDROID_BUILD_CC}" ]; then
ANDROID_BUILD_FAIL+=("The CC binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_CC}")
fi
if [ ! -x "${ANDROID_BUILD_CXX}" ]; then
ANDROID_BUILD_FAIL+=("The CXX binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_CXX}")
fi
if [ ! -x "${ANDROID_BUILD_LD}" ]; then
ANDROID_BUILD_FAIL+=("The LD binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_LD}")
fi
if [ ! -x "${ANDROID_BUILD_AS}" ]; then
ANDROID_BUILD_FAIL+=("The AS binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_AS}")
fi
if [ ! -x "${ANDROID_BUILD_AR}" ]; then
ANDROID_BUILD_FAIL+=("The AR binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_AR}")
fi
if [ ! -x "${ANDROID_BUILD_RANLIB}" ]; then
ANDROID_BUILD_FAIL+=("The RANLIB binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_RANLIB}")
fi
if [ ! -x "${ANDROID_BUILD_STRIP}" ]; then
ANDROID_BUILD_FAIL+=("The STRIP binary does not exist or is not executable")
ANDROID_BUILD_FAIL+=(" ${ANDROID_BUILD_STRIP}")
fi
ANDROID_BUILD_OPTS+=("TOOLCHAIN=${ANDROID_BUILD_TOOLCHAIN}")
ANDROID_BUILD_OPTS+=("CC=${ANDROID_BUILD_CC}")
ANDROID_BUILD_OPTS+=("CXX=${ANDROID_BUILD_CXX}")
ANDROID_BUILD_OPTS+=("LD=${ANDROID_BUILD_LD}")
ANDROID_BUILD_OPTS+=("AS=${ANDROID_BUILD_AS}")
ANDROID_BUILD_OPTS+=("AR=${ANDROID_BUILD_AR}")
ANDROID_BUILD_OPTS+=("RANLIB=${ANDROID_BUILD_RANLIB}")
ANDROID_BUILD_OPTS+=("STRIP=${ANDROID_BUILD_STRIP}")
android_build_check_fail
}
# Set the ANDROID_BUILD_OPTS variable to a bash array of configure options
function android_build_opts {
ANDROID_BUILD_OPTS=()
_android_build_opts_process_binaries
if [ ${NDK_NUMBER} -ge 2700 ] ; then
# Since NDK r27 symbols like '__aeabi_xxx' are no more exported in the dynamic lib.
export ANDROID_BUILD_LIBS="-lc -ldl -lm -llog -static-libstdc++"
elif [ ${NDK_NUMBER} -ge 2300 ] ; then
# Since NDK r23 we don't need -lgcc due to LLVM being now the default.
export ANDROID_BUILD_LIBS="-lc -ldl -lm -llog -lc++_shared"
else
export ANDROID_BUILD_LIBS="-lc -lgcc -ldl -lm -llog -lc++_shared"
fi
export ANDROID_BUILD_LDFLAGS="-L${ANDROID_BUILD_PREFIX}/lib"
if [ -n "${ANDROID_LIBC_ROOT}" ] ; then
ANDROID_BUILD_LDFLAGS+=" -L${ANDROID_LIBC_ROOT}"
fi
ANDROID_BUILD_LDFLAGS+=" -L${ANDROID_STL_ROOT}"
export ANDROID_BUILD_CFLAGS+=" -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE"
export ANDROID_BUILD_CPPFLAGS+=" -I${ANDROID_BUILD_PREFIX}/include"
if [ "${NDK_NUMBER}" -ge 2400 ] ; then
if [ "${BUILD_ARCH}" = "arm64" ] ; then
export ANDROID_BUILD_CXXFLAGS+=" -mno-outline-atomics"
fi
fi
ANDROID_BUILD_OPTS+=("CFLAGS=${ANDROID_BUILD_CFLAGS} ${ANDROID_BUILD_EXTRA_CFLAGS}")
ANDROID_BUILD_OPTS+=("CPPFLAGS=${ANDROID_BUILD_CPPFLAGS} ${ANDROID_BUILD_EXTRA_CPPFLAGS}")
ANDROID_BUILD_OPTS+=("CXXFLAGS=${ANDROID_BUILD_CXXFLAGS} ${ANDROID_BUILD_EXTRA_CXXFLAGS}")
ANDROID_BUILD_OPTS+=("LDFLAGS=${ANDROID_BUILD_LDFLAGS} ${ANDROID_BUILD_EXTRA_LDFLAGS}")
ANDROID_BUILD_OPTS+=("LIBS=${ANDROID_BUILD_LIBS} ${ANDROID_BUILD_EXTRA_LIBS}")
ANDROID_BUILD_OPTS+=("PKG_CONFIG_LIBDIR=${ANDROID_NDK_ROOT}/prebuilt/${ANDROID_BUILD_PLATFORM}/lib/pkgconfig")
ANDROID_BUILD_OPTS+=("PKG_CONFIG_PATH=${ANDROID_BUILD_PREFIX}/lib/pkgconfig")
ANDROID_BUILD_OPTS+=("PKG_CONFIG_SYSROOT_DIR=${ANDROID_BUILD_SYSROOT}")
ANDROID_BUILD_OPTS+=("PKG_CONFIG_DIR=")
ANDROID_BUILD_OPTS+=("--with-sysroot=${ANDROID_BUILD_SYSROOT}")
ANDROID_BUILD_OPTS+=("--host=${TOOLCHAIN_HOST}")
ANDROID_BUILD_OPTS+=("--prefix=${ANDROID_BUILD_PREFIX}")
android_build_check_fail
}
# Parse readelf output to verify the correct linking of libraries.
# The first argument should be the soname of the newly built library.
# The rest of the arguments should be the sonames of dependencies.
# All sonames should be unversioned for android (no trailing numbers).
function android_build_verify_so {
local soname="$1"
shift # Get rid of first argument - the rest represent dependencies
local sofile="${ANDROID_BUILD_PREFIX}/lib/${soname}"
if [ ! -f "${sofile}" ]; then
ANDROID_BUILD_FAIL+=("Found no library named ${soname}")
ANDROID_BUILD_FAIL+=(" ${sofile}")
fi
android_build_check_fail
local readelf="${TOOLCHAIN_PATH}/${TOOLCHAIN_HOST}-readelf"
if command -v "${readelf}" >/dev/null 2>&1 ; then
export ANDROID_BUILD_READELF="${readelf}"
elif command -v readelf >/dev/null 2>&1 ; then
export ANDROID_BUILD_READELF="readelf"
elif command -v greadelf >/dev/null 2>&1 ; then
export ANDROID_BUILD_READELF="greadelf"
else
ANDROID_BUILD_FAIL+=("Could not find any of readelf, greadelf, or ${readelf}")
fi
android_build_check_fail
local elfoutput
elfoutput=$(LC_ALL=C ${ANDROID_BUILD_READELF} -d "${sofile}")
local soname_regexp='soname: \[([[:alnum:]\.]+)\]'
if [[ $elfoutput =~ $soname_regexp ]]; then
local parsed_soname="${BASH_REMATCH[1]}"
if [ "${parsed_soname}" != "${soname}" ]; then
ANDROID_BUILD_FAIL+=("Actual soname of library ${soname} is incorrect (or versioned):")
ANDROID_BUILD_FAIL+=(" ${parsed_soname}")
fi
else
ANDROID_BUILD_FAIL+=("Failed to meaningfully parse readelf output for library ${soname}:")
ANDROID_BUILD_FAIL+=(" ${elfoutput}")
fi
for dep_soname in "$@" ; do
local dep_sofile="${ANDROID_BUILD_PREFIX}/lib/${dep_soname}"
if [ ! -f "${dep_sofile}" ]; then
ANDROID_BUILD_FAIL+=("Found no library named ${dep_soname}")
ANDROID_BUILD_FAIL+=(" ${dep_sofile}")
elif [[ $elfoutput != *"library: [${dep_soname}]"* ]]; then
ANDROID_BUILD_FAIL+=("Library ${soname} was expected to be linked to library with soname:")
ANDROID_BUILD_FAIL+=(" ${dep_soname}")
fi
done
android_build_check_fail
}
function android_show_configure_opts {
local tag=$1
shift
android_build_trace "./configure options to build '${tag}':"
for opt in "$@"; do
echo " > ${opt}"
done
echo ""
}
# Initialize env variable XXX_ROOT, given dependency name "xxx".
# If XXX_ROOT is not set:
# If ${PROJECT_ROOT}/../xxx exists
# set XXX_ROOT with it.
# Else
# set XXX_ROOT with ${ANDROID_DEPENDENCIES_DIR}/xxx.
# Else
# Verify that folder XXX_ROOT exists.
function android_init_dependency_root {
local lib_name
lib_name="$1"
local variable_name
variable_name="$(echo "${lib_name}" | tr '[:lower:]' '[:upper:]')_ROOT"
local variable_value
variable_value="$(eval echo "\${${variable_name}}")"
if [ -z "${PROJECT_ROOT}" ] ; then
android_build_trace "Error: Variable PROJECT_ROOT is not set."
exit 1
fi
if [ ! -d "${PROJECT_ROOT}" ] ; then
android_build_trace "Error: Cannot find folder '${PROJECT_ROOT}'."
exit 1
fi
if [ -z "${variable_value}" ] ; then
if [ -d "${PROJECT_ROOT}/../${lib_name}" ] ; then
eval "export ${variable_name}=\"$(cd "${PROJECT_ROOT}/../${lib_name}" && pwd)\""
else
eval "export ${variable_name}=\"${ANDROID_DEPENDENCIES_DIR}/${lib_name}\""
fi
variable_value="$(eval echo "\${${variable_name}}")"
elif [ ! -d "${variable_value}" ] ; then
android_build_trace "Error: Folder '${variable_value}' does not exist."
exit 1
fi
android_build_trace "${variable_name}=${variable_value}"
}
function android_download_library {
local tag="$1" ; shift
local root="$1" ; shift
local url="$1" ; shift
local parent="$(dirname "${root}")"
local archive="$(basename "${url}")"
mkdir -p "${parent}"
cd "${parent}"
android_build_trace "Downloading ${tag} from '${url}' ..."
rm -f "${archive}"
wget -q "${url}"
case "${archive}" in
*."tar.gz" ) folder="$(basename "${archive}" ".tar.gz")" ;;
*."tgz" ) folder="$(basename "${archive}" ".tgz")" ;;
* ) android_build_trace "Unsupported extension for '${archive}'." ; exit 1 ;;
esac
android_build_trace "Extracting '${archive}' ..."
tar -xzf "${archive}"
if [ ! -d "${root}" ] ; then
mv "${folder}" "${root}"
fi
android_build_trace "${tag} extracted under under '${root}'."
}
function android_clone_library {
local tag="$1" ; shift
local root="$1" ; shift
local url="$1" ; shift
local branch="$1" ; shift
mkdir -p "$(dirname "${root}")"
if [ -n "${branch}" ] ; then
android_build_trace "Cloning '${url}' (branch '${branch}') under '${root}'."
git clone --quiet --depth 1 -b "${branch}" "${url}" "${root}"
else
android_build_trace "Cloning '${url}' (default branch) under '${root}'."
git clone --quiet --depth 1 "${url}" "${root}"
fi
( cd "${root}" && git log --oneline -n 1) || exit 1
}
# Caller must set CONFIG_OPTS[], before call.
function android_build_library {
local tag=$1 ; shift
local root=$1 ; shift
android_build_trace "Cleaning library '${tag}'."
(
if [ -n "${ANDROID_BUILD_PREFIX}" ] && [ -d "${ANDROID_BUILD_PREFIX}" ] ; then
# Remove *.la files as they might cause errors with cross compiled libraries
find "${ANDROID_BUILD_PREFIX}" -name '*.la' -exec rm {} +
fi
cd "${root}" \
&& ( make clean || : ) \
&& rm -f config.status
) &> /dev/null
android_build_trace "Building library '${tag}'."
(
set -e
android_show_configure_opts "${tag}" "${CONFIG_OPTS[@]}"
cd "${root}"
if [ -e autogen.sh ]; then
./autogen.sh 2> /dev/null
fi
if [ -e buildconf ]; then
./buildconf 2> /dev/null
fi
if [ ! -e autogen.sh ] && [ ! -e buildconf ] && [ ! -e ./configure ] && [ -s ./configure.ac ] ; then
libtoolize --copy --force && \
aclocal -I . && \
autoheader && \
automake --add-missing --copy && \
autoconf || \
autoreconf -fiv
fi
./configure "${CONFIG_OPTS[@]}"
make -j 4
make install
)
}
########################################################################
# Initialization
########################################################################
# Get directory of current script (if not already set)
# This directory is also the basis for the build directories the get created.
if [ -z "$ANDROID_BUILD_DIR" ]; then
export ANDROID_BUILD_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
fi
# Where to download our dependencies
export ANDROID_DEPENDENCIES_DIR="${ANDROID_DEPENDENCIES_DIR:-/tmp/tmp-deps}"
# Set up a variable to hold the global failure reasons, separated by newlines
# (Empty string indicates no failure)
ANDROID_BUILD_FAIL=()
########################################################################
# Sanity checks
########################################################################
case "${NDK_VERSION}" in
"android-ndk-r"[0-9][0-9] ) : ;;
"android-ndk-r"[0-9][0-9][a-z] ) : ;;
"" ) android_build_trace "Variable NDK_VERSION not set." ; exit 1 ;;
* ) android_build_trace "Invalid format for NDK_VERSION ('${NDK_VERSION}')" ; exit 1 ;;
esac
if [ -z "${ANDROID_NDK_ROOT}" ] ; then
android_build_trace "ANDROID_NDK_ROOT not set !"
exit 1
fi
########################################################################
# Compute NDK version into a numeric form:
# android-ndk-r21e -> 2105
# android-ndk-r25 -> 2500
########################################################################
export NDK_NUMBER="$(( $(echo "${NDK_VERSION}"|sed -e 's|android-ndk-r||g' -e 's|[a-z]||g') * 100 ))"
NDK_VERSION_LETTER="$(echo "${NDK_VERSION}"|sed -e 's|android-ndk-r[0-9][0-9]||g'|tr '[:lower:]' '[:upper:]')"
if [ -n "${NDK_VERSION_LETTER}" ] ; then
NDK_NUMBER=$(( $(( NDK_NUMBER + $(printf '%d' \'"${NDK_VERSION_LETTER}") )) - 64 ))
fi
android_build_trace "Configured NDK_VERSION: ${NDK_VERSION} ($NDK_NUMBER)."

154
builds/android/build.sh Executable file
View File

@ -0,0 +1,154 @@
#!/usr/bin/env bash
#
# Exit if any step fails
set -e
# Use directory of current script as the working directory
cd "$( dirname "${BASH_SOURCE[0]}" )"
PROJECT_ROOT="$(cd ../.. && pwd)"
########################################################################
# Configuration & tuning options.
########################################################################
# Set default values used in ci builds
export NDK_VERSION="${NDK_VERSION:-android-ndk-r25}"
# Set default path to find Android NDK.
# Must be of the form <path>/${NDK_VERSION} !!
export ANDROID_NDK_ROOT="${ANDROID_NDK_ROOT:-/tmp/${NDK_VERSION}}"
# With NDK r22b, the minimum SDK version range is [16, 31].
# Since NDK r24, the minimum SDK version range is [19, 31].
# SDK version 21 is the minimum version for 64-bit builds.
export MIN_SDK_VERSION=${MIN_SDK_VERSION:-21}
# Use directory of current script as the build directory
# ${ANDROID_BUILD_DIR}/prefix/<build_arch>/lib will contain produced libraries
export ANDROID_BUILD_DIR="${ANDROID_BUILD_DIR:-${PWD}}"
# Where to download our dependencies: default to /tmp/tmp-deps
export ANDROID_DEPENDENCIES_DIR="${ANDROID_DEPENDENCIES_DIR:-/tmp/tmp-deps}"
# Clean before processing
export ANDROID_BUILD_CLEAN="${ANDROID_BUILD_CLEAN:-no}"
# Set this to 'no', to enable verbose ./configure
export CI_CONFIG_QUIET="${CI_CONFIG_QUIET:-no}"
# Select CURVE implementation:
# - "" # Do not use any CURVE implementation.
# - "libsodium" # Use LIBSODIUM implementation.
export CURVE="${CURVE:-}"
# By default, dependencies will be cloned to /tmp/tmp-deps.
# If you have your own source tree for LIBSODIUM, uncomment
# the line below, and provide its absolute path:
# export LIBSODIUM_ROOT="<absolute_path_to_LIBSODIUM_source_tree>"
########################################################################
# Utilities
########################################################################
# Get access to android_build functions and variables
# Perform some sanity checks and calculate some variables.
source "${PROJECT_ROOT}/builds/android/android_build_helper.sh"
function usage {
echo "LIBZMQ - Usage:"
echo " export XXX=xxx"
echo " ./build.sh [ arm | arm64 | x86 | x86_64 ]"
echo ""
echo "See this file (configuration & tuning options) for details"
echo "on variables XXX and their values xxx"
exit 1
}
########################################################################
# Sanity checks
########################################################################
BUILD_ARCH="$1"
[ -z "${BUILD_ARCH}" ] && usage
# Set ROOT path for LIBSODIUM source tree, if CURVE is "libsodium"
if [ "${CURVE}x" = "libsodiumx" ] ; then
# Check or initialize LIBSODIUM_ROOT
android_init_dependency_root "libsodium"
fi
########################################################################
# Compilation
########################################################################
# Choose a C++ standard library implementation from the ndk
export ANDROID_BUILD_CXXSTL="gnustl_shared_49"
# Additional flags for LIBTOOL, for LIBZMQ and other dependencies.
export LIBTOOL_EXTRA_LDFLAGS='-avoid-version'
# Set up android build environment and set ANDROID_BUILD_OPTS array
android_build_set_env "${BUILD_ARCH}"
android_download_ndk
android_build_env
android_build_opts
# Check for environment variable to clear the prefix and do a clean build
if [ "${ANDROID_BUILD_CLEAN}" = "yes" ]; then
android_build_trace "Doing a clean build (removing previous build and dependencies)..."
rm -rf "${ANDROID_BUILD_PREFIX:?}"/*
# Called shells MUST not clean after ourselves !
export ANDROID_BUILD_CLEAN="no"
fi
DEPENDENCIES=()
if [ -z "${CURVE}" ]; then
CURVE="--disable-curve"
elif [ "${CURVE}" == "libsodium" ]; then
CURVE="--with-libsodium=yes"
DEPENDENCIES+=("libsodium.so")
##
# Build LIBSODIUM from latest STABLE branch
(android_build_verify_so "libsodium.so" &> /dev/null) || {
if [ ! -d "${LIBSODIUM_ROOT}" ] ; then
android_clone_library "LIBSODIUM" "${LIBSODIUM_ROOT}" "https://github.com/jedisct1/libsodium.git" "stable"
fi
(
CONFIG_OPTS=()
[ "${CI_CONFIG_QUIET}" = "yes" ] && CONFIG_OPTS+=("--quiet")
CONFIG_OPTS+=("${ANDROID_BUILD_OPTS[@]}")
CONFIG_OPTS+=("--without-docs")
CONFIG_OPTS+=("--disable-soname-versions")
android_build_library "LIBSODIUM" "${LIBSODIUM_ROOT}"
) || exit 1
}
fi
##
# Build libzmq from local source
(android_build_verify_so "libzmq.so" "${DEPENDENCIES[@]}" &> /dev/null) || {
(
CONFIG_OPTS=()
[ "${CI_CONFIG_QUIET}" = "yes" ] && CONFIG_OPTS+=("--quiet")
CONFIG_OPTS+=("${ANDROID_BUILD_OPTS[@]}")
CONFIG_OPTS+=("${CURVE}")
CONFIG_OPTS+=("--without-docs")
android_build_library "LIBZMQ" "${PROJECT_ROOT}"
) || exit 1
}
##
# Fetch the STL as well.
cp "${ANDROID_STL_ROOT}/${ANDROID_STL}" "${ANDROID_BUILD_PREFIX}/lib/."
##
# Verify shared libraries in prefix
for library in "libzmq.so" "${DEPENDENCIES[@]}" ; do
android_build_verify_so "${library}"
done
android_build_verify_so "libzmq.so" "${DEPENDENCIES[@]}" "${ANDROID_STL}"
android_build_trace "Android build successful"

31
builds/android/ci_build.sh Executable file
View File

@ -0,0 +1,31 @@
#!/usr/bin/env bash
#
# Exit if any step fails
set -e
# Use directory of current script as the working directory
cd "$( dirname "${BASH_SOURCE[0]}" )"
# Configuration
export NDK_VERSION="${NDK_VERSION:-android-ndk-r25}"
export ANDROID_NDK_ROOT="${ANDROID_NDK_ROOT:-/tmp/${NDK_VERSION}}"
export MIN_SDK_VERSION=${MIN_SDK_VERSION:-21}
export ANDROID_BUILD_DIR="${ANDROID_BUILD_DIR:-${PWD}/.build}"
export ANDROID_BUILD_CLEAN="${ANDROID_BUILD_CLEAN:-yes}"
export ANDROID_DEPENDENCIES_DIR="${ANDROID_DEPENDENCIES_DIR:-${PWD}/.deps}"
# Cleanup.
if [ "${ANDROID_BUILD_CLEAN}" = "yes" ] ; then
rm -rf "${ANDROID_BUILD_DIR}/prefix"
mkdir -p "${ANDROID_BUILD_DIR}/prefix"
rm -rf "${ANDROID_DEPENDENCIES_DIR}"
mkdir -p "${ANDROID_DEPENDENCIES_DIR}"
# Called shells MUST not clean after ourselves !
export ANDROID_BUILD_CLEAN="no"
fi
./build.sh "arm"
./build.sh "arm64"
./build.sh "x86"
./build.sh "x86_64"

View File

@ -0,0 +1,41 @@
# additional target to perform clang-format run, requires clang-format
# get all project files
file(GLOB_RECURSE ALL_SOURCE_FILES
RELATIVE ${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_SOURCE_DIR}/src/*.cpp ${CMAKE_SOURCE_DIR}/src/*.h ${CMAKE_SOURCE_DIR}/src/*.hpp
${CMAKE_SOURCE_DIR}/tests/*.cpp ${CMAKE_SOURCE_DIR}/tests/*.h ${CMAKE_SOURCE_DIR}/tests/*.hpp
${CMAKE_SOURCE_DIR}/perf/*.cpp ${CMAKE_SOURCE_DIR}/perf/*.h ${CMAKE_SOURCE_DIR}/perf/*.hpp
${CMAKE_SOURCE_DIR}/tools/*.cpp ${CMAKE_SOURCE_DIR}/tools/*.h ${CMAKE_SOURCE_DIR}/tools/*.hpp
${CMAKE_SOURCE_DIR}/include/*.h
)
if("${CLANG_FORMAT}" STREQUAL "")
set(CLANG_FORMAT "clang-format")
endif()
add_custom_target(
clang-format
COMMAND ${CLANG_FORMAT} -style=file -i ${ALL_SOURCE_FILES}
)
function(JOIN VALUES GLUE OUTPUT)
string (REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}")
set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
endfunction()
configure_file(builds/cmake/clang-format-check.sh.in clang-format-check.sh @ONLY)
add_custom_target(
clang-format-check
COMMAND chmod +x clang-format-check.sh
COMMAND ./clang-format-check.sh
COMMENT "Checking correct formatting according to .clang-format file using ${CLANG_FORMAT}"
)
add_custom_target(
clang-format-diff
COMMAND ${CLANG_FORMAT} -style=file -i ${ALL_SOURCE_FILES}
COMMAND git diff ${ALL_SOURCE_FILES}
COMMENT "Formatting with clang-format (using ${CLANG_FORMAT}) and showing differences with latest commit"
)

View File

@ -1,27 +0,0 @@
# - Find Asciidoc
# this module looks for asciidoc and a2x
#
# ASCIIDOC_EXECUTABLE - the full path to asciidoc
# ASCIIDOC_FOUND - If false, don't attempt to use asciidoc.
# A2X_EXECUTABLE - the full path to 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
PATHS "$ENV{ASCIIDOC_ROOT}"
"$ENV{PROGRAMW6432}/asciidoc"
"$ENV{PROGRAMFILES}/asciidoc"
"$ENV{${PROGRAMFILESX86}}/asciidoc")
find_program(A2X_EXECUTABLE a2x
PATHS "$ENV{ASCIIDOC_ROOT}"
"$ENV{PROGRAMW6432}/asciidoc"
"$ENV{PROGRAMFILES}/asciidoc"
"$ENV{${PROGRAMFILESX86}}/asciidoc")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_ARGS(AsciiDoc REQUIRED_VARS ASCIIDOC_EXECUTABLE)
mark_as_advanced(ASCIIDOC_EXECUTABLE A2X_EXECUTABLE)

View File

@ -0,0 +1,23 @@
# - Find Asciidoctor
# this module looks for asciidoctor
#
# ASCIIDOCTOR_EXECUTABLE - the full path to asciidoc
# ASCIIDOCTOR_FOUND - If false, don't attempt to use asciidoc.
set (PROGRAMFILESX86 "PROGRAMFILES(X86)")
find_program(ASCIIDOCTOR_EXECUTABLE asciidoctor asciidoctor
PATHS "$ENV{ASCIIDOCTOR_ROOT}"
"$ENV{PROGRAMW6432}/asciidoctor"
"$ENV{PROGRAMFILES}/asciidoctor"
"$ENV{${PROGRAMFILESX86}}/asciidoctor")
find_program(A2X_EXECUTABLE a2x
PATHS "$ENV{ASCIIDOCTOR_ROOT}"
"$ENV{PROGRAMW6432}/asciidoctor"
"$ENV{PROGRAMFILES}/asciidoctor"
"$ENV{${PROGRAMFILESX86}}/asciidoctor")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_ARGS(AsciiDoctor REQUIRED_VARS ASCIIDOCTOR_EXECUTABLE)
mark_as_advanced(ASCIIDOCTOR_EXECUTABLE)

View File

@ -0,0 +1,8 @@
include(FindPackageHandleStandardArgs)
if (NOT MSVC)
find_package(PkgConfig REQUIRED)
pkg_check_modules(NSS3 "nss>=3.19")
find_package_handle_standard_args(NSS3 DEFAULT_MSG NSS3_LIBRARIES NSS3_CFLAGS)
endif()

View File

@ -0,0 +1,45 @@
if (NOT MSVC)
find_package(PkgConfig REQUIRED)
pkg_check_modules(PC_GSSAPI_KRB5 "libgssapi_krb5")
if (PC_GSSAPI_KRB5_FOUND)
set(pkg_config_names_private "${pkg_config_names_private} libgssapi_krb5")
endif()
if (NOT PC_GSSAPI_KRB5_FOUND)
pkg_check_modules(PC_GSSAPI_KRB5 "gssapi_krb5")
if (PC_GSSAPI_KRB5_FOUND)
set(pkg_config_names_private "${pkg_config_names_private} gssapi_krb5")
endif()
endif (NOT PC_GSSAPI_KRB5_FOUND)
if (PC_GSSAPI_KRB5_FOUND)
set(GSSAPI_KRB5_INCLUDE_HINTS ${PC_GSSAPI_KRB5_INCLUDE_DIRS} ${PC_GSSAPI_KRB5_INCLUDE_DIRS}/*)
set(GSSAPI_KRB5_LIBRARY_HINTS ${PC_GSSAPI_KRB5_LIBRARY_DIRS} ${PC_GSSAPI_KRB5_LIBRARY_DIRS}/*)
else()
set(pkg_config_libs_private "${pkg_config_libs_private} -lgssapi_krb5")
endif()
endif (NOT MSVC)
# some libraries install the headers is a subdirectory of the include dir
# returned by pkg-config, so use a wildcard match to improve chances of finding
# headers and libraries.
find_path(
GSSAPI_KRB5_INCLUDE_DIRS
NAMES gssapi/gssapi_krb5.h
HINTS ${GSSAPI_KRB5_INCLUDE_HINTS}
)
set (GSSAPI_NAMES libgssapi_krb5 gssapi_krb5)
if (${CMAKE_SIZEOF_VOID_P} STREQUAL 8)
set (GSSAPI_NAMES ${GSSAPI_NAMES} gssapi64)
elseif (${CMAKE_SIZEOF_VOID_P} STREQUAL 4)
set (GSSAPI_NAMES ${GSSAPI_NAMES} gssapi32)
endif()
find_library(
GSSAPI_KRB5_LIBRARIES
NAMES ${GSSAPI_NAMES}
HINTS ${GSSAPI_KRB5_LIBRARY_HINTS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(gssapi_krb5 DEFAULT_MSG GSSAPI_KRB5_LIBRARIES GSSAPI_KRB5_INCLUDE_DIRS)
mark_as_advanced(GSSAPI_KRB5_FOUND GSSAPI_KRB5_LIBRARIES GSSAPI_KRB5_INCLUDE_DIRS)

View File

@ -0,0 +1,48 @@
################################################################################
# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
# Please refer to the README for information about making permanent changes. #
################################################################################
if (NOT MSVC)
find_package(PkgConfig REQUIRED)
pkg_check_modules(PC_SODIUM "libsodium")
if (PC_SODIUM_FOUND)
set(pkg_config_names_private "${pkg_config_names_private} libsodium")
endif()
if (NOT PC_SODIUM_FOUND)
pkg_check_modules(PC_SODIUM "sodium")
if (PC_SODIUM_FOUND)
set(pkg_config_names_private "${pkg_config_names_private} sodium")
endif()
endif (NOT PC_SODIUM_FOUND)
if (PC_SODIUM_FOUND)
set(SODIUM_INCLUDE_HINTS ${PC_SODIUM_INCLUDE_DIRS} ${PC_SODIUM_INCLUDE_DIRS}/*)
set(SODIUM_LIBRARY_HINTS ${PC_SODIUM_LIBRARY_DIRS} ${PC_SODIUM_LIBRARY_DIRS}/*)
else()
set(pkg_config_libs_private "${pkg_config_libs_private} -lsodium")
endif()
endif (NOT MSVC)
# some libraries install the headers is a subdirectory of the include dir
# returned by pkg-config, so use a wildcard match to improve chances of finding
# headers and libraries.
find_path(
SODIUM_INCLUDE_DIRS
NAMES sodium.h
HINTS ${SODIUM_INCLUDE_HINTS}
)
find_library(
SODIUM_LIBRARIES
NAMES libsodium sodium
HINTS ${SODIUM_LIBRARY_HINTS}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(sodium DEFAULT_MSG SODIUM_LIBRARIES SODIUM_INCLUDE_DIRS)
mark_as_advanced(SODIUM_FOUND SODIUM_LIBRARIES SODIUM_INCLUDE_DIRS)
################################################################################
# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
# Please refer to the README for information about making permanent changes. #
################################################################################

View File

@ -6,4 +6,3 @@ string(REGEX REPLACE ".*#define ZMQ_VERSION_PATCH ([0-9]+).*" "\\1" ZMQ_VERSION_
set(ZMQ_VERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.${ZMQ_VERSION_PATCH}")
message(STATUS "Detected ZMQ Version - ${ZMQ_VERSION}")

View File

@ -16,6 +16,57 @@ int main(int argc, char *argv [])
ZMQ_HAVE_SOCK_CLOEXEC)
endmacro()
macro(zmq_check_efd_cloexec)
message(STATUS "Checking whether EFD_CLOEXEC is supported")
check_c_source_runs(
"
#include <sys/eventfd.h>
int main(int argc, char *argv [])
{
int s = eventfd (0, EFD_CLOEXEC);
return(s == -1);
}
"
ZMQ_HAVE_EVENTFD_CLOEXEC)
endmacro()
macro(zmq_check_o_cloexec)
message(STATUS "Checking whether O_CLOEXEC is supported")
check_c_source_runs(
"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv [])
{
int s = open (\"/dev/null\", O_CLOEXEC | O_RDONLY);
return s == -1;
}
"
ZMQ_HAVE_O_CLOEXEC)
endmacro()
macro(zmq_check_so_bindtodevice)
message(STATUS "Checking whether SO_BINDTODEVICE is supported")
check_c_source_runs(
"
#include <sys/socket.h>
int main(int argc, char *argv [])
{
/* Actually making the setsockopt() call requires CAP_NET_RAW */
#ifndef SO_BINDTODEVICE
return 1;
#else
return 0;
#endif
}
"
ZMQ_HAVE_SO_BINDTODEVICE)
endmacro()
# TCP keep-alives Checks.
macro(zmq_check_so_keepalive)
@ -127,3 +178,156 @@ int main(int argc, char *argv [])
"
ZMQ_HAVE_TCP_KEEPALIVE)
endmacro()
macro(zmq_check_tcp_tipc)
message(STATUS "Checking whether TIPC is supported")
check_c_source_runs(
"
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/socket.h>
#include <linux/tipc.h>
int main(int argc, char *argv [])
{
struct sockaddr_tipc topsrv;
int sd = socket(PF_TIPC, SOCK_SEQPACKET, 0);
memset(&topsrv, 0, sizeof(topsrv));
topsrv.family = AF_TIPC;
topsrv.addrtype = TIPC_ADDR_NAME;
topsrv.addr.name.name.type = TIPC_TOP_SRV;
topsrv.addr.name.name.instance = TIPC_TOP_SRV;
fcntl(sd, F_SETFL, O_NONBLOCK);
tipc_addr(0, 0, 0);
}
"
ZMQ_HAVE_TIPC)
endmacro()
macro(zmq_check_pthread_setname)
message(STATUS "Checking pthread_setname signature")
set(SAVE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "-D_GNU_SOURCE -Werror -pthread")
check_c_source_compiles(
"
#include <pthread.h>
int main(int argc, char *argv [])
{
pthread_setname_np (\"foo\");
return 0;
}
"
ZMQ_HAVE_PTHREAD_SETNAME_1)
check_c_source_compiles(
"
#include <pthread.h>
int main(int argc, char *argv [])
{
pthread_setname_np (pthread_self(), \"foo\");
return 0;
}
"
ZMQ_HAVE_PTHREAD_SETNAME_2)
check_c_source_compiles(
"
#include <pthread.h>
int main(int argc, char *argv [])
{
pthread_setname_np (pthread_self(), \"foo\", (void *)0);
return 0;
}
"
ZMQ_HAVE_PTHREAD_SETNAME_3)
check_c_source_compiles(
"
#include <pthread.h>
int main(int argc, char *argv [])
{
pthread_set_name_np (pthread_self(), \"foo\");
return 0;
}
"
ZMQ_HAVE_PTHREAD_SET_NAME)
set(CMAKE_REQUIRED_FLAGS ${SAVE_CMAKE_REQUIRED_FLAGS})
endmacro()
macro(zmq_check_pthread_setaffinity)
message(STATUS "Checking pthread_setaffinity signature")
set(SAVE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "-D_GNU_SOURCE -Werror -pthread")
check_c_source_compiles(
"
#include <pthread.h>
int main(int argc, char *argv [])
{
cpu_set_t test;
pthread_setaffinity_np (pthread_self(), sizeof(cpu_set_t), &test);
return 0;
}
"
ZMQ_HAVE_PTHREAD_SET_AFFINITY)
set(CMAKE_REQUIRED_FLAGS ${SAVE_CMAKE_REQUIRED_FLAGS})
endmacro()
macro(zmq_check_getrandom)
message(STATUS "Checking whether getrandom is supported")
check_c_source_runs(
"
#include <sys/random.h>
int main (int argc, char *argv [])
{
char buf[4];
int rc = getrandom(buf, 4, 0);
return rc == -1 ? 1 : 0;
}
"
ZMQ_HAVE_GETRANDOM)
endmacro()
macro(zmq_check_noexcept)
message(STATUS "Checking whether noexcept is supported")
check_cxx_source_compiles(
"
struct X
{
X(int i) noexcept {}
};
int main(int argc, char *argv [])
{
X x(5);
return 0;
}
"
ZMQ_HAVE_NOEXCEPT)
endmacro()
macro(zmq_check_so_priority)
message(STATUS "Checking whether SO_PRIORITY is supported")
check_c_source_runs(
"
#include <sys/types.h>
#include <sys/socket.h>
int main (int argc, char *argv [])
{
int s, rc, opt = 1;
return (
((s = socket (PF_INET, SOCK_STREAM, 0)) == -1) ||
((rc = setsockopt (s, SOL_SOCKET, SO_PRIORITY, (char*) &opt, sizeof (int))) == -1)
);
}
"
ZMQ_HAVE_SO_PRIORITY)
endmacro()

View File

@ -0,0 +1,5 @@
macro (zmq_set_with_default var value)
if (NOT ${var})
set(${var} "${value}")
endif ()
endmacro ()

View File

@ -120,7 +120,7 @@ Var AR_RegFlags
"exit_${SecName}:"
!macroend
!macro RemoveSection SecName
!macro RemoveSection_CPack SecName
; This macro is used to call section's Remove_... macro
;from the uninstaller.
;Input: section index constant name specified in Section command.
@ -843,7 +843,7 @@ Section "Uninstall"
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
; Removes all optional components
!insertmacro SectionList "RemoveSection"
!insertmacro SectionList "RemoveSection_CPack"
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
@ -851,7 +851,7 @@ Section "Uninstall"
@CPACK_NSIS_DELETE_ICONS@
@CPACK_NSIS_DELETE_ICONS_EXTRA@
;Delete empty start menu parent diretories
;Delete empty start menu parent directories
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
startMenuDeleteLoop:
@ -870,7 +870,7 @@ Section "Uninstall"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
@CPACK_NSIS_DELETE_ICONS_EXTRA@
;Delete empty start menu parent diretories
;Delete empty start menu parent directories
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
secondStartMenuDeleteLoop:

View File

@ -120,7 +120,7 @@ Var AR_RegFlags
"exit_${SecName}:"
!macroend
!macro RemoveSection SecName
!macro RemoveSection_CPack SecName
; This macro is used to call section's Remove_... macro
;from the uninstaller.
;Input: section index constant name specified in Section command.
@ -846,7 +846,7 @@ Section "Uninstall"
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
; Removes all optional components
!insertmacro SectionList "RemoveSection"
!insertmacro SectionList "RemoveSection_CPack"
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
@ -854,7 +854,7 @@ Section "Uninstall"
@CPACK_NSIS_DELETE_ICONS@
@CPACK_NSIS_DELETE_ICONS_EXTRA@
;Delete empty start menu parent diretories
;Delete empty start menu parent directories
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
startMenuDeleteLoop:
@ -873,7 +873,7 @@ Section "Uninstall"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
@CPACK_NSIS_DELETE_ICONS_EXTRA@
;Delete empty start menu parent diretories
;Delete empty start menu parent directories
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
secondStartMenuDeleteLoop:

View File

@ -0,0 +1,34 @@
# ZeroMQ cmake module
#
# The following import targets are created
#
# ::
#
# libzmq-static
# libzmq
#
# This module sets the following variables in your project::
#
# ZeroMQ_FOUND - true if ZeroMQ found on the system
# ZeroMQ_INCLUDE_DIR - the directory containing ZeroMQ headers
# ZeroMQ_LIBRARY -
# ZeroMQ_STATIC_LIBRARY
@PACKAGE_INIT@
if(NOT TARGET libzmq AND NOT TARGET libzmq-static)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
if (TARGET libzmq)
get_target_property(@PROJECT_NAME@_INCLUDE_DIR libzmq INTERFACE_INCLUDE_DIRECTORIES)
else ()
get_target_property(@PROJECT_NAME@_INCLUDE_DIR libzmq-static INTERFACE_INCLUDE_DIRECTORIES)
endif()
if (TARGET libzmq)
get_target_property(@PROJECT_NAME@_LIBRARY libzmq LOCATION)
endif()
if (TARGET libzmq-static)
get_target_property(@PROJECT_NAME@_STATIC_LIBRARY libzmq-static LOCATION)
endif()
endif()

126
builds/cmake/ci_build.sh Executable file
View File

@ -0,0 +1,126 @@
#!/usr/bin/env bash
set -x -e
cd ../..
# always install custom builds from dist
# to make sure that `make dist` doesn't omit any files required to build & test
if [ -z "$DO_CLANG_FORMAT_CHECK" -a -z "$CLANG_TIDY" ]; then
./autogen.sh
./configure
make -j5 dist-gzip
V=$(./version.sh)
tar -xzf zeromq-$V.tar.gz
cd zeromq-$V
fi
mkdir tmp || true
BUILD_PREFIX=$PWD/tmp
CONFIG_OPTS=()
CONFIG_OPTS+=("CFLAGS=-I${BUILD_PREFIX}/include")
CONFIG_OPTS+=("CPPFLAGS=-I${BUILD_PREFIX}/include")
CONFIG_OPTS+=("CXXFLAGS=-I${BUILD_PREFIX}/include")
CONFIG_OPTS+=("LDFLAGS=-L${BUILD_PREFIX}/lib")
CONFIG_OPTS+=("PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig")
CMAKE_OPTS=()
CMAKE_OPTS+=("-DCMAKE_INSTALL_PREFIX:PATH=${BUILD_PREFIX}")
CMAKE_OPTS+=("-DCMAKE_PREFIX_PATH:PATH=${BUILD_PREFIX}")
CMAKE_OPTS+=("-DCMAKE_LIBRARY_PATH:PATH=${BUILD_PREFIX}/lib")
CMAKE_OPTS+=("-DCMAKE_INCLUDE_PATH:PATH=${BUILD_PREFIX}/include")
CMAKE_OPTS+=("-DENABLE_CAPSH=ON")
CMAKE_OPTS+=("-DBUILD_TESTS=ON")
if [ "$CLANG_FORMAT" != "" ] ; then
CMAKE_OPTS+=("-DCLANG_FORMAT=${CLANG_FORMAT}")
fi
if [ -z $CURVE ]; then
CMAKE_OPTS+=("-DENABLE_CURVE=OFF")
elif [ $CURVE == "libsodium" ]; then
CMAKE_OPTS+=("-DWITH_LIBSODIUM=ON")
if ! ((command -v dpkg-query >/dev/null 2>&1 && dpkg-query --list libsodium-dev >/dev/null 2>&1) || \
(command -v brew >/dev/null 2>&1 && brew ls --versions libsodium >/dev/null 2>&1)); then
git clone --depth 1 -b stable https://github.com/jedisct1/libsodium.git
( cd libsodium; ./autogen.sh; ./configure --prefix=$BUILD_PREFIX; make install)
fi
fi
if [ "$GSSAPI" == "enabled" ]; then
CMAKE_OPTS+=("-DWITH_GSSAPI_KRB5=ON")
fi
CMAKE_PREFIXES=()
MAKE_PREFIXES=()
PARALLEL_MAKE_OPT="-j5"
if [ -n "$CLANG_TIDY" ] ; then
# To allow sonar to process history information, unshallow clone first.
git fetch --unshallow
curl -L https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip -o build-wrapper-linux-x86.zip
unzip build-wrapper-linux-x86.zip
export SONARCLOUD_BUILD_WRAPPER_PATH="${PWD}/build-wrapper-linux-x86/"
curl -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip -o sonar-scanner-cli.zip
unzip sonar-scanner-cli.zip
export SONAR_SCANNER_CLI_PATH="${PWD}/sonar-scanner-4.2.0.1873-linux/bin/"
CMAKE_OPTS+=("-DCMAKE_BUILD_TYPE=Debug") # do a debug build to avoid unused variable warnings with assertions, and to speed up build
CMAKE_OPTS+=("-DCMAKE_CXX_CLANG_TIDY:STRING=${CLANG_TIDY}")
if [ -n ${SONARCLOUD_BUILD_WRAPPER_PATH} ] ; then
MAKE_PREFIXES+=("${SONARCLOUD_BUILD_WRAPPER_PATH}build-wrapper-linux-x86-64")
MAKE_PREFIXES+=("--out-dir")
MAKE_PREFIXES+=("${TRAVIS_BUILD_DIR}/bw-output")
fi
CMAKE_PREFIXES+=("scan-build-10")
MAKE_PREFIXES+=("scan-build-10")
MAKE_PREFIXES+=("-plist-html")
SCAN_BUILD_OUTPUT="$(pwd)/scan-build-report"
MAKE_PREFIXES+=("-o ${SCAN_BUILD_OUTPUT}")
# TODO this does not work with sonarcloud.io as it misses the sonar-cxx plugin
#MAKE_PREFIXES+=("-plist")
IFS="/" read -ra GITHUB_USER <<< "${TRAVIS_REPO_SLUG}"
PARALLEL_MAKE_OPT=""
fi
# Build, check, and install from local source
mkdir build_cmake
cd build_cmake
if [ "$DO_CLANG_FORMAT_CHECK" = "1" ] ; then
if ! ( PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig cmake "${CMAKE_OPTS[@]}" .. && make clang-format-check) ; then
echo "clang-format version is: $(clang-format --version)"
make clang-format-diff
exit 1
fi
else
if [ -n "$CLANG_TIDY" ] ; then
${CLANG_TIDY} -explain-config
fi
export CTEST_OUTPUT_ON_FAILURE=1
PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig ${CMAKE_PREFIXES[@]} cmake "${CMAKE_OPTS[@]}" ..
${MAKE_PREFIXES[@]} make ${PARALLEL_MAKE_OPT} all VERBOSE=1 | tee clang-tidy-report
if [ -n "${SONAR_SCANNER_CLI_PATH}" ] ; then
find ${SCAN_BUILD_OUTPUT} || echo "WARNING: ${SCAN_BUILD_OUTPUT} does not exist"
${SONAR_SCANNER_CLI_PATH}sonar-scanner \
-Dsonar.projectKey=${GITHUB_USER}-libzmq \
-Dsonar.organization=${GITHUB_USER}-github \
-Dsonar.projectBaseDir=.. \
-Dsonar.sources=${TRAVIS_BUILD_DIR}/include,${TRAVIS_BUILD_DIR}/src,${TRAVIS_BUILD_DIR}/tests,${TRAVIS_BUILD_DIR}/unittests \
-Dsonar.cfamily.build-wrapper-output=${TRAVIS_BUILD_DIR}/bw-output \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.login=${SONARQUBE_TOKEN}
# TODO this does not work with sonarcloud.io as it misses the sonar-cxx plugin
# -Dsonar.cxx.clangtidy.reportPath=clang-tidy-report \
# -Dsonar.cxx.clangsa.reportPath=*.plist \
fi
make install
make ${PARALLEL_MAKE_OPT} test ARGS="-V"
fi

View File

@ -0,0 +1,14 @@
#!/bin/sh
FAILED=0
IFS=";"
FILES="@ALL_SOURCE_FILES@"
IDS=$(echo -en "\n\b")
for FILE in $FILES
do
@CLANG_FORMAT@ -style=file -output-replacements-xml "$FILE" | grep "<replacement " >/dev/null &&
{
echo "$FILE is not correctly formatted"
FAILED=1
}
done
if [ "$FAILED" -eq "1" ] ; then exit 1 ; fi

View File

@ -1,42 +1,92 @@
#ifndef __ZMQ_PLATFORM_HPP_INCLUDED__
#define __ZMQ_PLATFORM_HPP_INCLUDED__
#cmakedefine ZMQ_USE_KQUEUE
#cmakedefine ZMQ_USE_EPOLL
#cmakedefine ZMQ_USE_DEVPOLL
#cmakedefine ZMQ_USE_POLL
#cmakedefine ZMQ_USE_SELECT
#cmakedefine ZMQ_USE_CV_IMPL_STL11
#cmakedefine ZMQ_USE_CV_IMPL_WIN32API
#cmakedefine ZMQ_USE_CV_IMPL_PTHREADS
#cmakedefine ZMQ_USE_CV_IMPL_NONE
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_KQUEUE
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_EPOLL
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_EPOLL_CLOEXEC
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_DEVPOLL
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_POLLSET
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_POLL
#cmakedefine ZMQ_IOTHREAD_POLLER_USE_SELECT
#cmakedefine ZMQ_HAVE_PPOLL
#cmakedefine ZMQ_POLL_BASED_ON_SELECT
#cmakedefine ZMQ_POLL_BASED_ON_POLL
#cmakedefine HAVE_POSIX_MEMALIGN @HAVE_POSIX_MEMALIGN@
#cmakedefine ZMQ_CACHELINE_SIZE @ZMQ_CACHELINE_SIZE@
#cmakedefine ZMQ_FORCE_MUTEXES
#cmakedefine HAVE_FORK
#cmakedefine HAVE_CLOCK_GETTIME
#cmakedefine HAVE_GETHRTIME
#cmakedefine HAVE_MKDTEMP
#cmakedefine ZMQ_HAVE_UIO
#cmakedefine ZMQ_HAVE_NOEXCEPT
#cmakedefine ZMQ_HAVE_EVENTFD
#cmakedefine ZMQ_HAVE_EVENTFD_CLOEXEC
#cmakedefine ZMQ_HAVE_IFADDRS
#cmakedefine ZMQ_HAVE_SO_BINDTODEVICE
#cmakedefine ZMQ_HAVE_SO_PEERCRED
#cmakedefine ZMQ_HAVE_LOCAL_PEERCRED
#cmakedefine ZMQ_HAVE_BUSY_POLL
#cmakedefine ZMQ_HAVE_O_CLOEXEC
#cmakedefine ZMQ_HAVE_SOCK_CLOEXEC
#cmakedefine ZMQ_HAVE_SO_KEEPALIVE
#cmakedefine ZMQ_HAVE_SO_PRIORITY
#cmakedefine ZMQ_HAVE_TCP_KEEPCNT
#cmakedefine ZMQ_HAVE_TCP_KEEPIDLE
#cmakedefine ZMQ_HAVE_TCP_KEEPINTVL
#cmakedefine ZMQ_HAVE_TCP_KEEPALIVE
#cmakedefine ZMQ_HAVE_PTHREAD_SETNAME_1
#cmakedefine ZMQ_HAVE_PTHREAD_SETNAME_2
#cmakedefine ZMQ_HAVE_PTHREAD_SETNAME_3
#cmakedefine ZMQ_HAVE_PTHREAD_SET_NAME
#cmakedefine ZMQ_HAVE_PTHREAD_SET_AFFINITY
#cmakedefine HAVE_ACCEPT4
#cmakedefine HAVE_STRNLEN
#cmakedefine ZMQ_HAVE_STRLCPY
#cmakedefine ZMQ_HAVE_LIBBSD
#cmakedefine ZMQ_HAVE_IPC
#cmakedefine ZMQ_HAVE_STRUCT_SOCKADDR_UN
#cmakedefine ZMQ_USE_BUILTIN_SHA1
#cmakedefine ZMQ_USE_NSS
#cmakedefine ZMQ_HAVE_WS
#cmakedefine ZMQ_HAVE_WSS
#cmakedefine ZMQ_HAVE_TIPC
#cmakedefine ZMQ_HAVE_OPENPGM
#cmakedefine ZMQ_HAVE_NORM
#cmakedefine ZMQ_HAVE_VMCI
#cmakedefine ZMQ_MAKE_VALGRIND_HAPPY
#cmakedefine ZMQ_HAVE_CURVE
#cmakedefine ZMQ_USE_LIBSODIUM
#cmakedefine SODIUM_STATIC
#cmakedefine HAVE_LIBGSSAPI_KRB5
#cmakedefine ZMQ_USE_GNUTLS
#cmakedefine ZMQ_USE_RADIX_TREE
#cmakedefine HAVE_IF_NAMETOINDEX
#ifdef _AIX
#define ZMQ_HAVE_AIX
#endif
#if defined ANDROID
#if defined __ANDROID__
#define ZMQ_HAVE_ANDROID
#endif
@ -48,10 +98,15 @@
#define ZMQ_HAVE_MINGW32
#endif
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#define ZMQ_HAVE_FREEBSD
#endif
#if defined(__DragonFly__)
#define ZMQ_HAVE_FREEBSD
#define ZMQ_HAVE_DRAGONFLY
#endif
#if defined __hpux
#define ZMQ_HAVE_HPUX
#endif
@ -68,8 +123,10 @@
#define ZMQ_HAVE_OPENBSD
#endif
// TODO better move OS-specific defines to the automake files, and check for availability of IPC with an explicit test there
#if defined __VMS
#define ZMQ_HAVE_OPENVMS
#undef ZMQ_HAVE_IPC
#endif
#if defined __APPLE__
@ -85,6 +142,6 @@
#endif
#cmakedefine ZMQ_HAVE_WINDOWS
#cmakedefine ZMQ_HAVE_WINDOWS_UWP
#endif

14
builds/coverage/ci_build.sh Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -x
mkdir tmp
BUILD_PREFIX=$PWD/tmp
source ../../config.sh
set_config_opts
CONFIG_OPTS+=("--enable-code-coverage")
# Build, check, and install from local source
( cd ../..; ./autogen.sh && ./configure "${CONFIG_OPTS[@]}" && make VERBOSE=1 -j5 check-code-coverage CODE_COVERAGE_OUTPUT_FILE=lcov.info CODE_COVERAGE_OUTPUT_DIRECTORY=coverage) || exit 1

48
builds/cygwin/Makefile.cygwin Executable file
View File

@ -0,0 +1,48 @@
CC=gcc
CFLAGS=-Wall -Os -g -DDLL_EXPORT -DFD_SETSIZE=16384 -DZMQ_USE_SELECT -I.
LIBS=-lws2_32
OBJS = ctx.o reaper.o dist.o err.o \
clock.o metadata.o random.o \
object.o own.o \
io_object.o io_thread.o \
lb.o fq.o \
address.o tcp_address.o ipc_address.o \
ipc_connecter.o ipc_listener.o \
tcp_connecter.o tcp_listener.o \
mailbox.o msg.o mtrie.o \
pipe.o precompiled.o proxy.o \
signaler.o stream_engine.o \
thread.o trie.o \
ip.o tcp.o \
pgm_socket.o pgm_receiver.o pgm_sender.o \
raw_decoder.o raw_encoder.o \
v1_decoder.o v1_encoder.o v2_decoder.o v2_encoder.o \
udp_address.o upd_engine.o radio.o dish.o \
socket_base.o session_base.o options.o \
req.o rep.o push.o pull.o pub.o sub.o pair.o \
dealer.o router.o xpub.o xsub.o stream.o \
poller_base.o select.o poll.o epoll.o kqueue.o devpoll.o \
curve_client.o curve_server.o \
mechanism.o null_mechanism.o plain_client.o plain_server.o \
zmq.o zmq_utils.o
%.o: ../../src/%.cpp
$(CC) -c -o $@ $< $(CFLAGS)
%.o: ../../perf/%.cpp
$(CC) -c -o $@ $< $(CFLAGS)
all: libzmq.dll
perf: inproc_lat.exe inproc_thr.exe local_lat.exe local_thr.exe remote_lat.exe remote_thr.exe
libzmq.dll: $(OBJS)
g++ -shared -o $@ $^ -Wl,--out-implib,-Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive $@.a -Wl,--no-whole-archive $(LIBS)
%.exe: %.o libzmq.dll
g++ -o $@ $^
clean:
del *.o *.a *.dll *.exe

256
builds/deprecated-msvc/.gitignore vendored Normal file
View File

@ -0,0 +1,256 @@
## Visual Studio 2015 experimental Visual C/C++ Intellisense database
*.VC.db
## From https://github.com/github/gitignore
##
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml

View File

@ -0,0 +1,94 @@
LIBZMQ_DIST = vs2008/libzmq.sln \
vs2008/libzmq/libzmq.vcproj \
vs2010/libzmq.sln \
vs2010/libzmq/libzmq.vcxproj \
vs2010/libzmq/libzmq.vcxproj.filters \
vs2012/libzmq.sln \
vs2012/libzmq/libzmq.vcxproj \
vs2012/libzmq/libzmq.vcxproj.filters \
vs2013/libzmq.sln \
vs2013/libzmq/libzmq.vcxproj \
vs2013/libzmq/libzmq.vcxproj.filters \
vs2015/libzmq.sln \
vs2015/libzmq/libzmq.vcxproj \
vs2015/libzmq/libzmq.vcxproj.filters \
vs2015/libzmq/libzmq.props \
vs2015/libzmq/libzmq.xml \
vs2015/libzmq.import.props \
vs2015/libzmq.import.xml \
errno.cpp \
errno.hpp \
platform.hpp \
resource.h \
resource.rc
PERF_DIST = vs2008/local_lat/local_lat.vcproj \
vs2008/local_thr/local_thr.vcproj \
vs2008/remote_lat/remote_lat.vcproj \
vs2008/remote_thr/remote_thr.vcproj \
vs2008/inproc_lat/inproc_lat.vcproj \
vs2008/inproc_thr/inproc_thr.vcproj \
vs2010/local_lat/local_lat.vcxproj \
vs2010/local_thr/local_thr.vcxproj \
vs2010/remote_lat/remote_lat.vcxproj \
vs2010/remote_thr/remote_thr.vcxproj \
vs2010/inproc_lat/inproc_lat.vcxproj \
vs2010/inproc_thr/inproc_thr.vcxproj \
vs2012/local_lat/local_lat.vcxproj \
vs2012/local_thr/local_thr.vcxproj \
vs2012/remote_lat/remote_lat.vcxproj \
vs2012/remote_thr/remote_thr.vcxproj \
vs2012/inproc_lat/inproc_lat.vcxproj \
vs2012/inproc_thr/inproc_thr.vcxproj \
vs2013/local_lat/local_lat.vcxproj \
vs2013/local_thr/local_thr.vcxproj \
vs2013/remote_lat/remote_lat.vcxproj \
vs2013/remote_thr/remote_thr.vcxproj \
vs2013/inproc_lat/inproc_lat.vcxproj \
vs2013/inproc_thr/inproc_thr.vcxproj \
vs2015/local_lat/local_lat.vcxproj \
vs2015/local_lat/local_lat.props \
vs2015/local_thr/local_thr.vcxproj \
vs2015/local_thr/local_thr.props \
vs2015/remote_lat/remote_lat.vcxproj \
vs2015/remote_lat/remote_lat.props \
vs2015/remote_thr/remote_thr.vcxproj \
vs2015/remote_thr/remote_thr.props \
vs2015/inproc_lat/inproc_lat.vcxproj \
vs2015/inproc_lat/inproc_lat.props \
vs2015/inproc_thr/inproc_thr.vcxproj \
vs2015/inproc_thr/inproc_thr.props
PROPERTIES_DIST = properties/Common.props \
properties/Debug.props \
properties/DebugDEXE.props \
properties/DebugDLL.props \
properties/DebugLEXE.props \
properties/DebugLIB.props \
properties/DebugLTCG.props \
properties/DebugSEXE.props \
properties/DLL.props \
properties/EXE.props \
properties/LIB.props \
properties/Link.props \
properties/LTCG.props \
properties/Messages.props \
properties/Output.props \
properties/Release.props \
properties/ReleaseDEXE.props \
properties/ReleaseDLL.props \
properties/ReleaseLEXE.props \
properties/ReleaseLIB.props \
properties/ReleaseLTCG.props \
properties/ReleaseSEXE.props \
properties/Win32.props \
properties/x64.props
PRECOMPILED_DIST = ../../src/precompiled.hpp \
../../src/precompiled.cpp
BUILD_DIST = build/build.bat \
build/buildall.bat \
build/buildbase.bat
EXTRA_DIST = $(LIBZMQ_DIST) $(PERF_DIST) $(PROPERTIES_DIST) $(PRECOMPILED_DIST) $(BUILD_DIST)

View File

@ -0,0 +1,33 @@
@ECHO OFF
:: Usage: build.bat [Clean]
@setlocal
:: validate environment
if "%VSINSTALLDIR%" == "" @echo Error: Attempt to build without proper DevStudio environment.&@goto :done
:: record starting time
set STARTTIME=%DATE% %TIME%
@echo Start Time: %STARTTIME%
:: validate optional argument (and make sure it is spelled "Clean")
set MAKECLEAN=%%1
if NOT "%%1" == "" if /I "%%1" == "clean" set MAKECLEAN=Clean
::
:: uses the environment from the DevStudio CMD window to figure out which version to build
::
set VSVER=%VSINSTALLDIR:~-5,2%
set DIRVER=%VSVER%
if %VSVER% gtr 10 set /a DIRVER = DIRVER + 1
CALL buildbase.bat ..\vs20%DIRVER%\libzmq.sln %VSVER% %MAKECLEAN%
set STOPTIME=%DATE% %TIME%
@echo Stop Time: %STOPTIME%
@echo Start Time: %STARTTIME%
:done
@endlocal

View File

@ -0,0 +1,16 @@
@ECHO OFF
:: Usage: buildall.bat
:: Build all configurations for all solutions.
call buildbase.bat ..\vs2017\libzmq.sln 15
ECHO.
CALL buildbase.bat ..\vs2015\libzmq.sln 14
ECHO.
CALL buildbase.bat ..\vs2013\libzmq.sln 12
ECHO.
CALL buildbase.bat ..\vs2012\libzmq.sln 11
ECHO.
CALL buildbase.bat ..\vs2010\libzmq.sln 10
ECHO.
PAUSE

View File

@ -1,61 +1,65 @@
@ECHO OFF
REM Usage: [buildbase.bat ..\vs2013\mysolution.sln 12]
@setlocal
REM Usage: [buildbase.bat ..\vs2013\mysolution.sln 12 [Clean]]
SET solution=%1
SET version=%2
:: supports passing in Clean as third argument if "make clean" behavior is desired
SET target=%3
SET ACTION=Building
if NOT "%target%" == "" set target=/t:%target%&set ACTION=Cleaning
SET log=build_%version%.log
SET tools=Microsoft Visual Studio %version%.0\VC\vcvarsall.bat
if "%version%" == "15" SET tools=Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
SET environment="%programfiles(x86)%\%tools%"
IF NOT EXIST %environment% SET environment="%programfiles%\%tools%"
IF NOT EXIST %environment% GOTO no_tools
ECHO Building: %solution%
@ECHO %ACTION% %solution%
SET __CURRENT_DIR__=%CD%
CALL %environment% x86 >%SystemDrive%\nul 2>&1
ECHO Platform=x86 2> %log%
CD /D %__CURRENT_DIR__%
SET __CURRENT_DIR__=
CALL %environment% x86 > nul
ECHO Platform=x86
ECHO Configuration=DynDebug
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=Win32 %solution% > %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=Win32 %solution% %target%>> %log% || GOTO error
ECHO Configuration=DynRelease
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=Win32 %solution% %target%>> %log% || GOTO error
ECHO Configuration=LtcgDebug
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=Win32 %solution% %target%>> %log% || GOTO error
ECHO Configuration=LtcgRelease
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=Win32 %solution% %target%>> %log% || GOTO error
ECHO Configuration=StaticDebug
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=Win32 %solution% %target%>> %log% || GOTO error
ECHO Configuration=StaticRelease
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=Win32 %solution% %target%>> %log% || GOTO error
CALL %environment% x86_amd64 > nul
SET __CURRENT_DIR__=%CD%
CALL %environment% x86_amd64 >%SystemDrive%\nul 2>&1
ECHO Platform=x64
CD /D %__CURRENT_DIR__%
SET __CURRENT_DIR__=
ECHO Configuration=DynDebug
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=x64 %solution% > %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=x64 %solution% %target%>> %log% || GOTO error
ECHO Configuration=DynRelease
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=x64 %solution% %target%>> %log% || GOTO error
ECHO Configuration=LtcgDebug
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=x64 %solution% %target%>> %log% || GOTO error
ECHO Configuration=LtcgRelease
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=x64 %solution% %target%>> %log% || GOTO error
ECHO Configuration=StaticDebug
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=x64 %solution% %target%>> %log% || GOTO error
ECHO Configuration=StaticRelease
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=x64 %solution% %target%>> %log% || GOTO error
ECHO Complete: %solution%
ECHO %ACTION% complete: %solution%
GOTO end
:error
@ -66,4 +70,4 @@ GOTO end
ECHO *** ERROR, build tools not found: %tools%
:end
@endlocal

View File

@ -0,0 +1,14 @@
#ifndef __PLATFORM_HPP_INCLUDED__
#define __PLATFORM_HPP_INCLUDED__
#define ZMQ_HAVE_WINDOWS
// MSVC build configuration is controlled via options exposed in the Visual
// Studio user interface. The option to use libsodium is not exposed in the
// user interface unless a sibling `libsodium` directory to that of this
// repository exists and contains the following files:
//
// \builds\msvc\vs2015\libsodium.import.props
// \builds\msvc\vs2015\libsodium.import.xml
#endif

View File

@ -13,7 +13,7 @@
<ItemDefinitionGroup>
<ClCompile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
</ItemDefinitionGroup>

View File

@ -0,0 +1,27 @@
For building on Windows, use:
cd build
./build.bat
This requires that the CMD.EXE be created using the DevStudio Tools link to create a CMD.EXE window. Also, make sure that the name of the project folder is libzmq (not e.g. libzmq-master) as this is required for correct linking.
Visual Studio product and C++ compiler Versions:
Visual C++ 2008 => Visual C++ 9
Visual C++ 2010 => Visual C++ 10
Visual C++ 2012 => Visual C++ 11
Visual C++ 2013 => Visual C++ 12
Visual C++ 2015 => Visual C++ 14
Visual C++ 2017 => Visual C++ 15
Note that solution file icons reflect the compiler version ([9], [10], [11], [12], [14], [15]), not the product version.
The vs2017/vs2015/vs2013/vs2012/vs2010 solution and project files differ only in versioning.
More info here:
http://en.wikipedia.org/wiki/Visual_C%2B%2B
If multiple DevStudio versions are installed, you can run build.bat in separate windows each created by the desired DevStudio target.
To build for all versions of Visual Studio (excluding vs2008), you can run buildall.bat. This is generally a maintainer task.

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