# Generated by Makefile. Do not edit.

commit 8d75d506b6f88265bc0fb57b93385b45e35cdd10
Merge: 26998b7 5285b6e
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Feb 18 18:48:41 2017 +0100

    Merge pull request #2345 from bluca/news
    
    Problem: NEWS not up to date, packaging versions not up to date

commit 5285b6e152a621da8620327d459b714e7348a7a7
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Feb 18 17:43:48 2017 +0000

    Problem: packaging versions out of date
    
    Solution: bump to 4.2.2

 packaging/debian/changelog      | 2 +-
 packaging/debian/zeromq.dsc.obs | 2 +-
 packaging/redhat/zeromq.spec    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

commit 854ed904726d4e4efe27c9a709ef3a78ad035cd0
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Feb 18 17:40:45 2017 +0000

    Problem: NEWS not up to date
    
    Solution: mention main changes and bug fixes since 4.2.1

 NEWS | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

commit 26998b738eda44275002a5bb83d7ea43717a179a
Merge: 0db22c0 18cb7ca
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Feb 7 21:22:24 2017 +0000

    Merge pull request #2332 from bluca/parse_v4_mapped_in_v6
    
    Problem: v4-in-v6 mapped addresses cause parsing failure

commit 0db22c0069c73e6548cafe4f74dfe9ab458ab0c9
Merge: 78dafe5 33dccd2
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Feb 7 13:22:23 2017 +0000

    Merge pull request #2337 from SylvainCorlay/include-find-sodium
    
    Include FindSodium.cmake in dist tarball

commit 33dccd2bf1d8ea5ef735792362da1c1d2981b36c
Author: Sylvain Corlay <sylvain.corlay@gmail.com>
Date:   Tue Feb 7 14:12:43 2017 +0100

    Include FindSodium.cmake in dist tarball

 Makefile.am | 1 +
 1 file changed, 1 insertion(+)

commit 18cb7caeb2467ed1b94c748ce6ae65a60884b951
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Feb 3 11:19:31 2017 +0100

    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.

 src/socket_base.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 78dafe5c7cf2bfc5de6e31d68a9a2aefdfbeaa60
Merge: e56bc48 f881694
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Feb 2 17:27:23 2017 +0000

    Merge pull request #2331 from jimklimov/sol-poller
    
    Problem: polling does not work well OOB in OpenIndiana

commit f8816945c2a905633c6599cba7b4762f9a3c8cc5
Author: Jim Klimov <jim@jimklimov.com>
Date:   Thu Feb 2 18:18:37 2017 +0100

    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).

 acinclude.m4 | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

commit e56bc48ebc95a7336012c8bc8fe6bed1721bad0e
Merge: 5c34f65 df7c684
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Jan 28 01:29:20 2017 +0000

    Merge pull request #2327 from chutz/fix-divide-by-zero
    
    fix divide by zero in zmq::lb_t::sendpipe

commit df7c684dd590526c5f431c6d6460a6086756628d
Author: Patrick McLean <chutzpah@gentoo.org>
Date:   Fri Jan 27 17:04:42 2017 -0800

    fix divide by zero in zmq::lb_t::sendpipe
    
    This is based on https://github.com/zeromq/zeromq3-x/pull/116/files

 src/lb.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit 5c34f65ad562607db6bd06a322c3acd99749704c
Merge: bf6d8a5 4e472b1
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Jan 27 19:53:28 2017 +0000

    Merge pull request #2326 from SylvainCorlay/framework
    
    Make OS Xframwork build optional

commit 4e472b18e3233bc3536b328cfa2ce22472b5d00f
Author: Sylvain Corlay <sylvain.corlay@gmail.com>
Date:   Fri Jan 27 19:30:18 2017 +0100

    Make OS Xframwork build optional

 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit bf6d8a5d17423b72a1d5d9970c3cd10747c0d2be
Author: Ahmad M. Zawawi <ahmad.zawawi@gmail.com>
Date:   Thu Jan 26 15:21:41 2017 +0200

    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

 src/clock.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit c6c21cf1971ba6e0be2fba9ea7637b0b80403d70
Author: sigiesec <simon.giesecke@btc-ag.com>
Date:   Wed Jan 25 15:28:03 2017 +0100

    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

 src/zmq_utils.cpp     | 59 ++++++++++++++++++++++++++-------------
 tests/test_base85.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 113 insertions(+), 22 deletions(-)

commit 673bb506cfb196d7b23cd840dbd8537cc8f4a2f4
Merge: c031b0c 877419e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Jan 22 18:43:21 2017 +0000

    Merge pull request #2318 from kurdybacha/static_file_fix
    
    CMake static library output does not match ZeroMQ Config.

commit 877419e94f07e949afe164038832e7cc3ff6e81a
Author: Pawel Kurdybacha <pawel.kurdybacha@gmail.com>
Date:   Sun Jan 22 18:17:55 2017 +0000

    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.

 CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit c031b0c4704223307c96b727deafb23dc45e3f82
Merge: e5677d8 e384538
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Jan 21 14:27:43 2017 +0000

    Merge pull request #2317 from SylvainCorlay/windows-static-target-name
    
    Problem: cmake artefacts different from make generated artefacts

commit e38453866d472aa0649eb6f2c35a5347a6bd9af4
Author: Sylvain Corlay <sylvain.corlay@gmail.com>
Date:   Sat Jan 21 15:14:30 2017 +0100

    Problem: cmake artefacts different from make generated artefacts

 CMakeLists.txt | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

commit e5677d89d56ccae8c339f2a9649c0ab52eb9467c
Merge: 9aae95e 5f8d87b
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Thu Jan 19 22:11:37 2017 +0100

    Merge pull request #2315 from bluca/typo
    
    Problem: typo in the zmq_has doc

commit 5f8d87bf32e8eb731a79f07e063b14805b1c5be8
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Jan 19 21:00:15 2017 +0000

    Problem: typo in the zmq_has doc
    
    Solution: fix it

 doc/zmq_has.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 9aae95e496cf3757ba161435aba101df2ae3c64c
Merge: a6a56e2 b7cd6e8
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Jan 19 20:37:16 2017 +0000

    Merge pull request #2314 from Asmod4n/master
    
    add test and documentation for "draft" capability

commit b7cd6e8a8557aba0fae9f913ed8dfcbbafab244b
Author: Asmod4n <Asmod4n@users.noreply.github.com>
Date:   Thu Jan 19 20:50:18 2017 +0100

    add test and documentation for "draft" capability

 doc/zmq_has.txt             |  1 +
 tests/test_capabilities.cpp | 13 +++++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

commit a6a56e299d74b4c0c42397110a58cebc84ec8831
Merge: 4c1b338 4dbd387
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Jan 19 17:59:03 2017 +0000

    Merge pull request #2313 from Asmod4n/patch-1
    
    Problem: cannot check if libzmq was build with draft api

commit 4dbd387fa95f361426ed95193711b6937bc22c88
Author: Asmod4n <Asmod4n@users.noreply.github.com>
Date:   Thu Jan 19 18:44:56 2017 +0100

    Add "draft" capability to zmq_has
    
    As discussed in #2307

 src/zmq.cpp | 4 ++++
 1 file changed, 4 insertions(+)

commit 4c1b33801563d549642bddc039966ec93de42af3
Merge: ee9751e c65a272
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Jan 19 13:28:35 2017 +0000

    Merge pull request #2311 from SylvainCorlay/static-target-name
    
    cmake: Set output name to libzmq for the libzmq-static target

commit c65a27213af5ea1ff0e4df91aef02a23c68c7ddd
Author: Sylvain Corlay <sylvain.corlay@gmail.com>
Date:   Thu Jan 19 10:59:47 2017 +0100

    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.

 CMakeLists.txt | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit ee9751ec2576c6ebc72e0d07ad205792f1c9c884
Merge: f86053b 020ff65
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Jan 16 20:11:28 2017 +0000

    Merge pull request #2308 from chuggafan/master
    
    Updated buildbase and buildall to work with visual studio 2017

commit 020ff65efa58a0f01c336464c9b0c7f9dedc170f
Author: chuggafan <chuggafans@gmail.com>
Date:   Mon Jan 16 14:54:40 2017 -0500

    Updated buildbase and buildall to work with visual studio 2017

 builds/msvc/build/buildall.bat  | 2 ++
 builds/msvc/build/buildbase.bat | 1 +
 2 files changed, 3 insertions(+)

commit f86053b985da236de11afb0748c682aabf2ad96e
Merge: b8d8c49 36d0c70
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Jan 12 23:42:19 2017 +0000

    Merge pull request #2304 from JohanMabille/cmake_fix
    
    cmake install on linux fixed

commit 36d0c706470f66dec6d8fef4a2f13b75d06a3f34
Author: Johan Mabille <johan.mabille@gmail.com>
Date:   Fri Jan 13 00:10:32 2017 +0100

    cmake install on linux fixed

 CMakeLists.txt | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

commit b8d8c498c699b1ff9a57d3dbde259f177a953842
Merge: 4fc313d 107f244
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Wed Jan 11 09:28:33 2017 +0100

    Merge pull request #2302 from laplaceyang/pr_thread_safe_modify_pipe
    
    Problem: Thread-safe solution for modify hwm of pipe

commit 107f2441d5c0dc203b5ad5a45b54cabbee488834
Author: laplaceyang <laplace2013@outlook.com>
Date:   Wed Jan 11 10:49:54 2017 +0800

    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

 src/command.hpp     |  7 +++++++
 src/object.cpp      | 19 +++++++++++++++++++
 src/object.hpp      |  2 ++
 src/pipe.cpp        | 10 ++++++++++
 src/pipe.hpp        |  4 ++++
 src/socket_base.cpp |  1 +
 6 files changed, 43 insertions(+)

commit 4fc313d15239c340c04856e4ff73f929af136151
Merge: 598befc edc770d
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Jan 10 21:13:25 2017 +0100

    Merge pull request #2301 from bluca/set_peer_unsafe
    
    Problems: modifying pipe from different thread is not safe and HWM always boosted by 1

commit edc770d680b2be5a633526bd2c724d66406c8360
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Jan 10 11:40:14 2017 +0000

    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.

 src/pipe.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

commit 9f1ba60f508cc430680366d77af445969267d418
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Jan 10 11:38:02 2017 +0000

    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

 src/pipe.cpp        | 5 -----
 src/pipe.hpp        | 3 ---
 src/socket_base.cpp | 1 -
 3 files changed, 9 deletions(-)

commit 598befc1f81cba3ee7f29c60818e49fbae682918
Merge: 77e1792 5adcb83
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Jan 9 08:34:12 2017 +0000

    Merge pull request #2299 from laplaceyang/pr_set_hwm_after_connect
    
    Problem: set hwm after connect lead to infinite hwm

commit 5adcb83509af4b9701c985be153e9d038882a0d5
Author: laplaceyang <laplace2013@outlook.com>
Date:   Mon Jan 9 12:34:40 2017 +0800

    Problem: set hwm after connect lead to infinite hwm

 src/pipe.cpp        | 9 +++++++--
 src/pipe.hpp        | 3 +++
 src/socket_base.cpp | 1 +
 3 files changed, 11 insertions(+), 2 deletions(-)

commit 77e1792cd878ee18391c603f9e302fe007003350
Merge: 81bbd2b ce735c4
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Jan 8 12:10:21 2017 +0100

    Merge pull request #2298 from bluca/spec_uuid
    
    Problem: spec file still depends on libuuid

commit ce735c44efa34589dcfadbb7761e548c0e4ec085
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Jan 7 22:25:36 2017 +0000

    Problem: spec file still depends on libuuid
    
    Solution: remove the dependency as it's not been needed for a while

 packaging/redhat/zeromq.spec | 2 --
 1 file changed, 2 deletions(-)

commit 81bbd2b72de691503fe72f393259fcc185eff4d4
Merge: 9dbbd69 e379366
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Jan 7 19:39:36 2017 +0100

    Merge pull request #2296 from bluca/asciidoc-base
    
    Problem: debian packages do not build manpages

commit e37936616def4af429660339399126a8aa64c0ae
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Jan 7 15:57:33 2017 +0000

    Problem: debian packages do not build manpages
    
    Solution: build-depend on asciidoc and xmlto

 packaging/debian/control        | 3 ++-
 packaging/debian/zeromq.dsc.obs | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

commit 9dbbd69480278dfa2c9a62808def969bf2ffb86e
Merge: e80db0e e258890
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Jan 7 01:51:30 2017 +0100

    Merge pull request #2295 from JohanMabille/cmake_win_install
    
    Cmake win install

commit e258890f6777bd7f13ad73fd1899a3a476cf41d3
Author: Johan Mabille <johan.mabille@gmail.com>
Date:   Sat Jan 7 00:47:22 2017 +0100

    INSTALLATION instructions

 INSTALL | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

commit 7c709e546637c3058012e6f5f6a46bd68f41ba45
Author: Johan Mabille <johan.mabille@gmail.com>
Date:   Fri Jan 6 22:41:29 2017 +0100

    cmake install config file

 CMakeLists.txt        | 47 +++++++++++++++++++++++++++++++++++------------
 ZeroMQConfig.cmake.in | 15 +++++++++++++++
 2 files changed, 50 insertions(+), 12 deletions(-)

commit e95d23198f4a4abe9a0e037eae873a931493618c
Author: Johan Mabille <johan.mabille@gmail.com>
Date:   Fri Jan 6 14:29:56 2017 +0100

    CPack option and .txt files installation dir

 CMakeLists.txt | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

commit e80db0e8e56e6a12e84600e169d865a0c543e40e
Merge: ceb6be7 2d749a0
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Jan 6 11:10:41 2017 +0100

    Merge pull request #2294 from JohanMabille/cmake_precompiled
    
    Windows cmake build fixed

commit 2d749a066c72e30c3adf9448de2f98789825cfc8
Author: Johan Mabille <johan.mabille@gmail.com>
Date:   Fri Jan 6 10:52:20 2017 +0100

    Windows cmake build fixed

 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit ceb6be7751ee44bca0a7b99ce8132381bf454ea7
Merge: d532f2e 31a3a06
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Wed Jan 4 20:28:51 2017 +0100

    Merge pull request #2292 from bluca/osx_sigpipe
    
    Problem: peer can close connection before SO_NOSIGPIPE is set

commit 31a3a06828a42a798836d3b708a88657935e91ab
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Jan 3 23:55:57 2017 +0100

    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

 src/ip.cpp            | 29 ++++++++++++++++++++++++++++-
 src/ip.hpp            |  4 ++++
 src/ipc_listener.cpp  | 11 +++++++++++
 src/stream_engine.cpp |  7 -------
 src/tcp_listener.cpp  | 11 +++++++++++
 5 files changed, 54 insertions(+), 8 deletions(-)

commit d532f2e4d8345459fb752771b0dcf016f67711ed
Merge: 17ef8c6 28c7abf
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Jan 3 21:21:11 2017 +0100

    Merge pull request #2290 from bluca/doc_proxy_eintr
    
    Problem: zmq_proxy* may return EINTR other than ETERM

commit 17ef8c67935aa37c3ebc64a470c3911f8da7d912
Merge: dce4d06 7e18643
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Jan 3 21:20:46 2017 +0100

    Merge pull request #2289 from bluca/windoze_includes_test
    
    Problem:capitalized include filenames trip mingw

commit 28c7abf821f09ff0e0ed50eafd82e96a4e96a2fa
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Jan 3 15:34:08 2017 +0100

    Problem: zmq_proxy* may return EINTR other than ETERM
    
    Solution: mention this in the documentation

 doc/zmq_proxy.txt           | 5 +++--
 doc/zmq_proxy_steerable.txt | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

commit 7e186432cbc644e2124711c53386aaaa9838e69e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Jan 3 14:59:57 2017 +0100

    Problem:capitalized include filenames trip mingw
    
    Solution: use lowercase

 tests/test_srcfd.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit dce4d06b71ba77ebd4f0818412a1f5f868a059b3
Merge: ec2ba8a 1b3df75
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Jan 3 12:49:34 2017 +0100

    Merge pull request #2288 from paddor/master
    
    fix typos

commit 1b3df75b8715f3c525bac5c439fb81ce8c3a89ea
Author: Patrik Wenger <paddor@gmail.com>
Date:   Tue Jan 3 12:45:21 2017 +0100

    fix typos

 doc/zmq_gssapi.txt     | 4 ++--
 doc/zmq_setsockopt.txt | 2 +-
 src/socket_base.cpp    | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

commit ec2ba8a9978f94f310315d0516ca3c39becde2d9
Merge: ee98e7d ea7e03a
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Jan 1 19:29:09 2017 +0100

    Merge pull request #2283 from vtellier/master
    
    Fixed issue #2227 second part

commit ea7e03a7ffed342c7eb3c3f230494f293e7eff77
Author: Vincent Tellier <vincent@tellier.me>
Date:   Sun Jan 1 18:20:03 2017 +0100

    Fixed issue #2286 by documentation
    
    tests/README.md explicitly indicates to check the libzmq.lib path in
    CMakeLists.txt.

 tests/README.md | 2 ++
 1 file changed, 2 insertions(+)

commit 7e36db07b113b7e68e1a3e46ff40c0d7cc823583
Author: Vincent Tellier <vincent@tellier.me>
Date:   Sun Jan 1 17:54:17 2017 +0100

    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.

 src/stream_engine.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit ffb31dcadd89e952ac7c1547463cd5177c4bc56a
Author: Vincent Tellier <vincent@tellier.me>
Date:   Sat Dec 31 15:13:57 2016 +0100

    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

 src/session_base.cpp  | 4 +---
 src/stream_engine.cpp | 7 ++-----
 src/stream_engine.hpp | 3 +--
 3 files changed, 4 insertions(+), 10 deletions(-)

commit ee98e7dca0704628ee4b2ad680a0a2666a434106
Merge: c38fde0 efc0e94
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Jan 1 17:06:31 2017 +0100

    Merge pull request #2287 from bluca/hurd_ipv6_tos
    
    Problem: build fails on GNU/Hurd as it does not support IPV6_TCLASS

commit efc0e9429128a8951de590dbe87cbcc73a353039
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Jan 1 16:16:55 2017 +0100

    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.

 src/ip.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit c38fde00a009dbc8d60f7599db4d9c40cdf6be0d
Merge: 7005f22 7c0ded9
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Dec 31 18:25:36 2016 +0100

    Merge pull request #2285 from bluca/bump_versions
    
    Problem: 4.2.1 is out, time to bump versions

commit 7c0ded93affcd53d0ad702be113cd9f5c880ee05
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 31 16:26:41 2016 +0100

    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

 CMakeLists.txt | 2 +-
 NEWS           | 4 ++++
 configure.ac   | 3 ++-
 include/zmq.h  | 2 +-
 4 files changed, 8 insertions(+), 3 deletions(-)

commit 7005f22726d4a6ca527f27560a0a132394fdbbcc
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 31 15:55:48 2016 +0100

    Bugfix release 4.2.1
    
    Finalize changelog and bump ABI revision

 CMakeLists.txt | 2 +-
 NEWS           | 2 +-
 configure.ac   | 3 ++-
 3 files changed, 4 insertions(+), 3 deletions(-)

commit 086bb890c5a0fba77b913bfaee11385dbf4bb7e5
Merge: 0ebed80 3f3601e
Author: Kevin Sapper <sappo@users.noreply.github.com>
Date:   Sat Dec 31 14:13:45 2016 +0100

    Merge pull request #2282 from bluca/event_test
    
    Problems: test_monitor failing, DRAFT events leaking when draft APIs are disabled

commit 3f3601e8553fb0512cc3060347dda368184a1aa3
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 31 00:08:05 2016 +0100

    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

 tests/test_security_curve.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)

commit d50b5b80fdfa9332964f473ee14455b1d1f6c0a2
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 23:53:20 2016 +0100

    Problem: NEWS entry for ctx option does not point to docs
    
    Solution: fix it

 NEWS | 1 +
 1 file changed, 1 insertion(+)

commit fc748ec7999767a382cfed180aed180b9e4eefb3
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 23:52:27 2016 +0100

    Problem: new monitor events not mentioned in NEWS
    
    Solution: add an entry

 NEWS | 6 ++++++
 1 file changed, 6 insertions(+)

commit 200649fd5728b13c3f47632b4c0a83e09ffc5812
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 23:40:22 2016 +0100

    Problem: new handshake event monitoring undocumented
    
    Solution: add them to the event monitor manpage

 doc/zmq_socket_monitor.txt | 12 ++++++++++++
 1 file changed, 12 insertions(+)

commit 2afba0085f9a2fc007208c31ca2457c5e0b49a5c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 23:27:56 2016 +0100

    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.

 doc/zmq_socket_monitor.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit c0e2bc4ef9a3203167b2b711006044da0339264c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 23:08:34 2016 +0100

    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.

 src/stream_engine.cpp  | 6 ++++++
 tests/test_monitor.cpp | 8 ++++++++
 2 files changed, 14 insertions(+)

commit 0ebed80dc12d8b1c0ac6942bef11b71117c0414e
Merge: 0ad600c 48bc75e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 21:00:17 2016 +0100

    Merge pull request #2281 from vtellier/master
    
    Code formatting + reverted hard error handshake fail

commit 48bc75e8a1416745bcd85094628330c6295154fb
Author: Vincent Tellier <Vincent.Tellier@Stingray.no>
Date:   Fri Dec 30 18:26:56 2016 +0100

    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

 include/zmq.h         |  8 +++++---
 src/curve_server.cpp  | 13 ++++++-------
 src/socket_base.cpp   |  4 ++--
 src/socket_base.hpp   |  2 +-
 src/stream_engine.cpp |  4 ++--
 src/zmq_draft.h       |  6 +++++-
 6 files changed, 21 insertions(+), 16 deletions(-)

commit 0ad600c7deecbbae2b1a625109a0096fcacb3088
Merge: 64b07d8 b6e9e0c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 30 17:15:18 2016 +0100

    Merge pull request #2280 from vtellier/master
    
    Fixed issue #2227

commit b6e9e0c2d35db4e2f60d5d1c2c54e88f1588795a
Author: Vincent Tellier <Vincent.Tellier@Stingray.no>
Date:   Fri Dec 30 16:26:42 2016 +0100

    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.

 include/zmq.h         |  2 ++
 src/curve_server.cpp  | 11 ++++++-----
 src/session_base.cpp  |  4 +++-
 src/socket_base.cpp   | 10 ++++++++++
 src/socket_base.hpp   |  2 ++
 src/stream_engine.cpp | 13 ++++++++++++-
 src/stream_engine.hpp |  3 ++-
 7 files changed, 37 insertions(+), 8 deletions(-)

commit 64b07d8132ef919ffe741cf35b6f69d5854c4b5f
Merge: 715f87f 8c22ba2
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Thu Dec 29 21:48:39 2016 +0100

    Merge pull request #2278 from bluca/msg_t_size_draft

commit 8c22ba246c6342513f88de5f5e4818f75fc8bb69
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 29 21:00:10 2016 +0100

    Problem: bug fixes not mentioned in NEWS file
    
    Solution: add most relevant bug fixes since 4.2.0

 NEWS | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

commit 113feb60a22e9cff5fe639b352b9e671825d5df5
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 29 20:40:57 2016 +0100

    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

 NEWS                       | 2 +-
 doc/zmq_ctx_get.txt        | 1 +
 include/zmq.h              | 8 +++-----
 src/zmq_draft.h            | 3 +++
 tests/test_ctx_options.cpp | 2 ++
 5 files changed, 10 insertions(+), 6 deletions(-)

commit 715f87fec7832d344e36563012e9b5000997fef9
Merge: ef88b8c 47c7d8e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Wed Dec 28 16:36:58 2016 +0100

    Merge pull request #2277 from bluca/automake_1.14
    
    Problem: debian build fails with automake < 1.14

commit 47c7d8ee50b722a92e75ed720f9c2f6a3a23413c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Wed Dec 28 00:55:17 2016 +0100

    Problem: debian build fails with automake < 1.14
    
    Solution: create config subdir as a workaround if building the
    packages with automake < 1.14

 packaging/debian/rules | 3 +++
 1 file changed, 3 insertions(+)

commit ef88b8c7608ef55b988d0ce7679199791c88d138
Merge: b2a2bb8 bbae5d0
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Dec 27 16:28:08 2016 +0100

    Merge pull request #2276 from bluca/sodium_pkg

commit bbae5d0f9a113385faa5bbcf62b21814066df63b
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Dec 27 14:45:45 2016 +0100

    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

 builds/cmake/ci_build.sh    | 12 ++----------
 builds/coverage/ci_build.sh | 12 ++----------
 builds/valgrind/ci_build.sh | 12 ++----------
 ci_build.sh                 | 12 ++----------
 4 files changed, 8 insertions(+), 40 deletions(-)

commit b2a2bb860944a287e37b872b9d5fbf12830b4aba
Merge: 5871ea5 b1137b7
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Dec 27 12:51:19 2016 +0100

    Merge pull request #2275 from bluca/travis_pkg

commit b1137b767234bc12ec4524e423c790f8ddf7497d
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Dec 27 12:00:10 2016 +0100

    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

 .travis.yml | 2 ++
 1 file changed, 2 insertions(+)

commit 822def9b2badd046397aed53e0e0caa36970909c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 21:50:38 2016 +0100

    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.

 .travis.yml                 | 13 ++++++++++++-
 builds/cmake/ci_build.sh    | 15 +++++++++++++--
 builds/coverage/ci_build.sh | 15 +++++++++++++--
 builds/valgrind/ci_build.sh | 15 +++++++++++++--
 ci_build.sh                 | 15 +++++++++++++--
 5 files changed, 64 insertions(+), 9 deletions(-)

commit a1220b7fd4a628b958325fdb4cbd5612612b7e4e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Dec 27 11:28:09 2016 +0100

    Problem: Travis OSX workaround for libtool no longer needed
    
    Solution: Revert "Problem: Travis CI OSX builds are broken"
    
    This reverts commit 531b3bf7c3ed5f29760c89b7152a2c85a4a9d8bd.

 .travis.yml | 2 --
 1 file changed, 2 deletions(-)

commit 1f86019e3f17d109adfd5331191564ae766bd98e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 21:30:16 2016 +0100

    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.

 .travis.yml | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

commit 5871ea5df8b448f2d7446858ce93c762178f091a
Merge: 16439e4 06055a7
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Dec 26 20:18:12 2016 +0100

    Merge pull request #2274 from bluca/cloexec

commit 06055a7b747d5dfa021adedef0572db1f21f7cf3
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 19:20:09 2016 +0100

    Problem: cmake does not run test_zmq_poll_fd
    
    Solution: add it to the list

 tests/CMakeLists.txt | 1 +
 1 file changed, 1 insertion(+)

commit 6e708ce14432066755775102b09845fccc843036
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 18:28:18 2016 +0100

    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

 src/signaler.cpp | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

commit f287c7a2aa09dc64cf360a392ec4faf2350fc960
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 18:18:00 2016 +0100

    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

 CMakeLists.txt                                |  3 +++
 acinclude.m4                                  | 23 +++++++++++++++++++++++
 builds/cmake/Modules/ZMQSourceRunChecks.cmake | 15 +++++++++++++++
 builds/cmake/platform.hpp.in                  |  1 +
 configure.ac                                  | 10 ++++++++--
 src/signaler.cpp                              |  9 ++++++++-
 6 files changed, 58 insertions(+), 3 deletions(-)

commit 211898d24353aa04e881d6bce28c5902348e3afa
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 18:01:36 2016 +0100

    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

 CMakeLists.txt               |  4 ++++
 acinclude.m4                 | 36 ++++++++++++++++++++++++++++++++++--
 builds/cmake/platform.hpp.in |  1 +
 src/epoll.cpp                |  7 +++++++
 4 files changed, 46 insertions(+), 2 deletions(-)

commit 16439e42d23023f252afa65a432fbc85f5946a66
Merge: d68e2e0 a06f97d
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Dec 26 15:24:44 2016 +0100

    Merge pull request #2272 from bluca/document_read_after_free

commit d68e2e018e563fd42c5dd081dec718321451e4b7
Merge: dc39ceb 3dc016c
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Dec 26 15:12:40 2016 +0100

    Merge pull request #2273 from bluca/docs

commit 3dc016cab306421ce69692a944d19fc5a7c329eb
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 14:49:45 2016 +0100

    Problem: no documentation for ZMQ_SOCKS_PROXY
    
    Solution: add paragraphs to zmq_get/setsockopt man pages

 doc/zmq_getsockopt.txt | 13 +++++++++++++
 doc/zmq_setsockopt.txt | 15 +++++++++++++++
 2 files changed, 28 insertions(+)

commit baf32a19859abdf01565dbed90518f06b37949d2
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 26 14:23:32 2016 +0100

    Problem: no documentation for zmq_curve_public
    
    Solution: add manpage

 doc/Makefile.am          |  2 +-
 doc/zmq.txt              |  3 +++
 doc/zmq_curve_public.txt | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
 doc/zmq_setsockopt.txt   |  6 +++--
 doc/zmq_z85_decode.txt   |  1 +
 doc/zmq_z85_encode.txt   |  1 +
 6 files changed, 72 insertions(+), 3 deletions(-)

commit a06f97d73a596285a2e16785636113785b82d4af
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 22 13:40:14 2016 +0000

    Problem: fix for read-after-free not documented
    
    Solution: add a comment as it's easy to miss and very tempting to
    "optimize"

 src/radio.cpp | 2 ++
 1 file changed, 2 insertions(+)

commit dc39ceb34749303545068670f0b840433c2e2b5c
Merge: fe3756d 4394105
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 22 13:55:03 2016 +0100

    Merge pull request #2268 from imkos/master
    
    Mingw32 Compile

commit 43941052a94cf6e5f62be3802f46aa03bef74d07
Author: Kos <vbz276@gmail.com>
Date:   Thu Dec 22 14:25:00 2016 +0800

    add link libsodium.a

 builds/mingw32/Makefile.mingw32 | 2 +-
 builds/mingw32/platform.hpp     | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

commit edad90f77029d7eb3d559458e3e8482be43714f0
Author: Kos <vbz276@gmail.com>
Date:   Thu Dec 22 09:35:49 2016 +0800

    mingw32 fix

 builds/mingw32/Makefile.mingw32 | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit fe3756defa6f9acddc338c25354e2a1141336621
Merge: 7a8180e ee72493
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 19 18:07:37 2016 +0100

    Merge pull request #2266 from Cziken/master
    
    Problem: Duplicated code

commit ee72493e148f945b0382e6b2ea1a13952751a010
Author: Wojciech Kula <wojciech_kula@o2.pl>
Date:   Fri Dec 16 16:44:31 2016 +0100

    Problem: Duplicated code
    
    Solution: set_curve_key method in options_t struct with little
    improvement in switch-case block

 src/options.cpp | 103 +++++++++++++++++++-------------------------------------
 src/options.hpp |   2 ++
 2 files changed, 37 insertions(+), 68 deletions(-)

commit 7a8180ece75e250d437ff0fb8a312aed4b82d035
Merge: 2dec320 e6b1f56
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Dec 18 16:52:15 2016 +0100

    Merge pull request #2265 from bluca/contribution_notice_github
    
    Problem: contributing guidelines unclear for new devs

commit e6b1f561310292e0e74177ced2a073a3adde5e35
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Dec 18 11:46:08 2016 +0000

    Problem: contributing guidelines unclear for new devs
    
    Solution: port Github PR template from CZMQ

 .github/PULL_REQUEST_TEMPLATE.md | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

commit 2dec320b224262d51c90d5d134d79d5e1257649b
Merge: 2aa09d3 48e9e24
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Fri Dec 16 18:12:37 2016 +0100

    Merge pull request #2263 from bluca/revert_curve_break

commit 48e9e2472657709d88cd819571fffaf1997a0c40
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 16 16:50:17 2016 +0000

    Problem: #2262 broke curve
    
    Solution: Revert "Problem: Duplicated code"
    
    This reverts commit 022eeaf33d50f8a1515a28ffb8c8cafd843ca064.

 src/options.cpp | 103 ++++++++++++++++++++++++++++++++++++++------------------
 src/options.hpp |   2 --
 2 files changed, 71 insertions(+), 34 deletions(-)

commit 2aa09d34ffe6fa60bf48ae7c3088a6702c974ed7
Merge: d514bb5 022eeaf
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Fri Dec 16 17:32:27 2016 +0100

    Merge pull request #2262 from Cziken/master
    
    Problem: Duplicated code

commit 022eeaf33d50f8a1515a28ffb8c8cafd843ca064
Author: Wojciech Kula <wojciech_kula@o2.pl>
Date:   Fri Dec 16 16:44:31 2016 +0100

    Problem: Duplicated code
    
    Solution: set_curve_key method in options_t struct with little
    improvement in switch-case block

 src/options.cpp | 103 ++++++++++++++++++--------------------------------------
 src/options.hpp |   2 ++
 2 files changed, 34 insertions(+), 71 deletions(-)

commit d514bb598a1ad10e0faebd53215675f94d31198c
Author: Cziken <wojciech_kula@o2.pl>
Date:   Fri Dec 16 15:51:00 2016 +0100

    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()

 src/err.cpp | 11 +++--------
 src/err.hpp |  2 +-
 2 files changed, 4 insertions(+), 9 deletions(-)

commit 2b565088d0058a03936200939e7fd772c8677d72
Merge: 1910ef8 0abdc28
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 15 14:20:46 2016 +0100

    Merge pull request #2257 from minrk/check-event
    
    zmq_poll: only compare FD when neither item is a zmq socket

commit 0abdc28c8457e5bc4462a942ee8569fb2d81dfae
Author: Min RK <benjaminrk@gmail.com>
Date:   Thu Dec 15 14:05:40 2016 +0100

    only compare FD when neither item is a zmq socket

 src/zmq.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 1910ef8d3e2553d296962445002e538ef797348a
Merge: 02a6079 8e8fdcc
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 15 14:02:50 2016 +0100

    Merge pull request #2256 from laplaceyang/pr_zmq4_pub_with_zmtp_v1_sub
    
    fix bug zmq4.x PUB msg to ZMTP1.0 SUB server

commit 02a6079968afb6c8e0084460f5fd6e91fb9f9361
Merge: f9d2314 272d340
Author: Min RK <benjaminrk@gmail.com>
Date:   Thu Dec 15 13:39:20 2016 +0100

    Merge pull request #2255 from bluca/poll_fd_testcase
    
    Problem: no mixed FD and zmq socket zmq_poll test

commit 8e8fdcc9edff6b36f6d70dba0774f7923d63f840
Author: laplaceyang <laplace2013@outlook.com>
Date:   Thu Dec 15 20:29:58 2016 +0800

    fix bug zmq4.x PUB msg to ZMTP1.0 SUB server

 src/stream_engine.cpp | 34 +++++++++++++---------------------
 src/stream_engine.hpp |  2 --
 2 files changed, 13 insertions(+), 23 deletions(-)

commit 272d340c1fb52c769952291f1d61817fa31a0250
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 15 11:54:27 2016 +0000

    Problem: no mixed FD and zmq socket zmq_poll test
    
    Solution: add one

 .gitignore                                         |  178 ++
 .hgeol                                             |    2 +
 .mailmap                                           |   81 +
 .travis.yml                                        |   69 +
 AUTHORS                                            |  148 ++
 CMakeLists.txt                                     |  998 +++++++++
 COPYING                                            |  674 ++++++
 COPYING.LESSER                                     |  181 ++
 Dockerfile                                         |   11 +
 Doxygen.cfg                                        | 2320 ++++++++++++++++++++
 FindSodium.cmake                                   |   40 +
 INSTALL                                            |  252 +++
 Makefile.am                                        |  831 +++++++
 NEWS                                               | 1273 +++++++++++
 README.cygwin.md                                   |   15 +
 README.doxygen.md                                  |   48 +
 README.md                                          |   58 +
 RELICENSE/README.md                                |   23 +
 RELICENSE/brocade_communications_systems.md        |   15 +
 RELICENSE/imatix.md                                |   23 +
 RELICENSE/naos_ltd.md                              |   19 +
 acinclude.m4                                       |  981 +++++++++
 appveyor.yml                                       |   85 +
 autogen.sh                                         |   49 +
 branding.bmp                                       |  Bin 0 -> 25818 bytes
 builds/Makefile.am                                 |   31 +
 builds/README                                      |    4 +
 builds/android/Dockerfile                          |   22 +
 builds/android/README.md                           |   78 +
 builds/android/android_build_helper.sh             |  316 +++
 builds/android/build.sh                            |   70 +
 builds/android/ci_build.sh                         |   30 +
 builds/cmake/Modules/FindAsciiDoc.cmake            |   26 +
 builds/cmake/Modules/TestZMQVersion.cmake          |    8 +
 builds/cmake/Modules/ZMQSourceRunChecks.cmake      |  163 ++
 builds/cmake/NSIS.template32.in                    |  952 ++++++++
 builds/cmake/NSIS.template64.in                    |  960 ++++++++
 builds/cmake/ci_build.sh                           |   31 +
 builds/cmake/platform.hpp.in                       |   92 +
 builds/coverage/ci_build.sh                        |   29 +
 builds/cygwin/Makefile.cygwin                      |   48 +
 builds/gyp/.gitignore                              |    5 +
 builds/gyp/build.bat                               |    4 +
 builds/gyp/platform.hpp                            |   78 +
 builds/gyp/project-tests.gsl                       |   19 +
 builds/gyp/project-tests.gypi                      |  873 ++++++++
 builds/gyp/project-tests.xml                       |   81 +
 builds/gyp/project.gyp                             |  288 +++
 builds/mingw32/Makefile.mingw32                    |   49 +
 builds/mingw32/platform.hpp                        |   41 +
 builds/msvc/.gitignore                             |  256 +++
 builds/msvc/Makefile.am                            |   94 +
 builds/msvc/build/build.bat                        |   33 +
 builds/msvc/build/buildall.bat                     |   14 +
 builds/msvc/build/buildbase.bat                    |   64 +
 builds/msvc/errno.cpp                              |   32 +
 builds/msvc/errno.hpp                              |   56 +
 builds/msvc/platform.hpp                           |   14 +
 builds/msvc/properties/Common.props                |   21 +
 builds/msvc/properties/DLL.props                   |   16 +
 builds/msvc/properties/Debug.props                 |   29 +
 builds/msvc/properties/DebugDEXE.props             |   21 +
 builds/msvc/properties/DebugDLL.props              |   20 +
 builds/msvc/properties/DebugLEXE.props             |   20 +
 builds/msvc/properties/DebugLIB.props              |   21 +
 builds/msvc/properties/DebugLTCG.props             |   20 +
 builds/msvc/properties/DebugSEXE.props             |   21 +
 builds/msvc/properties/EXE.props                   |   17 +
 builds/msvc/properties/LIB.props                   |   16 +
 builds/msvc/properties/LTCG.props                  |   13 +
 builds/msvc/properties/Link.props                  |   21 +
 builds/msvc/properties/Messages.props              |   15 +
 builds/msvc/properties/Output.props                |   30 +
 builds/msvc/properties/Release.props               |   41 +
 builds/msvc/properties/ReleaseDEXE.props           |   20 +
 builds/msvc/properties/ReleaseDLL.props            |   19 +
 builds/msvc/properties/ReleaseLEXE.props           |   20 +
 builds/msvc/properties/ReleaseLIB.props            |   19 +
 builds/msvc/properties/ReleaseLTCG.props           |   19 +
 builds/msvc/properties/ReleaseSEXE.props           |   20 +
 builds/msvc/properties/Win32.props                 |   20 +
 builds/msvc/properties/x64.props                   |   23 +
 builds/msvc/readme.txt                             |   26 +
 builds/msvc/resource.h                             |   14 +
 builds/msvc/resource.rc                            |  Bin 0 -> 4642 bytes
 builds/msvc/vs2008/inproc_lat/inproc_lat.vcproj    |   52 +
 builds/msvc/vs2008/inproc_thr/inproc_thr.vcproj    |   52 +
 builds/msvc/vs2008/libzmq.sln                      |   95 +
 builds/msvc/vs2008/libzmq/libzmq.vcproj            |  277 +++
 builds/msvc/vs2008/local_lat/local_lat.vcproj      |   52 +
 builds/msvc/vs2008/local_thr/local_thr.vcproj      |   52 +
 builds/msvc/vs2008/remote_lat/remote_lat.vcproj    |   52 +
 builds/msvc/vs2008/remote_thr/remote_thr.vcproj    |   52 +
 builds/msvc/vs2010/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2010/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2010/libzmq.sln                      |  206 ++
 builds/msvc/vs2010/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2010/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2010/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2010/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2010/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2010/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2012/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2012/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2012/libsodium.import.props          |   37 +
 builds/msvc/vs2012/libzmq.sln                      |  206 ++
 builds/msvc/vs2012/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2012/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2012/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2012/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2012/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2012/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2013/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2013/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2013/libzmq.sln                      |  208 ++
 builds/msvc/vs2013/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2013/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2013/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2013/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2013/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2013/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2015/inproc_lat/inproc_lat.props     |   49 +
 builds/msvc/vs2015/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2015/inproc_thr/inproc_thr.props     |   49 +
 builds/msvc/vs2015/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2015/libzmq.import.props             |   64 +
 builds/msvc/vs2015/libzmq.import.xml               |   49 +
 builds/msvc/vs2015/libzmq.sln                      |  208 ++
 builds/msvc/vs2015/libzmq/libzmq.props             |   76 +
 builds/msvc/vs2015/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2015/libzmq/libzmq.xml               |   40 +
 builds/msvc/vs2015/local_lat/local_lat.props       |   49 +
 builds/msvc/vs2015/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2015/local_thr/local_thr.props       |   49 +
 builds/msvc/vs2015/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2015/remote_lat/remote_lat.props     |   49 +
 builds/msvc/vs2015/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2015/remote_thr/remote_thr.props     |   49 +
 builds/msvc/vs2015/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2015_xp/libzmq.vcxproj               |  255 +++
 builds/msvc/vs2015_xp/platform.hpp                 |   15 +
 .../msvc/vs2015_xp/test_zmq/test_multithread.cpp   |  229 ++
 builds/msvc/vs2015_xp/test_zmq/test_zmq.vcxproj    |  155 ++
 builds/msvc/vs2017/inproc_lat/inproc_lat.props     |   49 +
 builds/msvc/vs2017/inproc_lat/inproc_lat.vcxproj   |   80 +
 builds/msvc/vs2017/inproc_thr/inproc_thr.props     |   49 +
 builds/msvc/vs2017/inproc_thr/inproc_thr.vcxproj   |   80 +
 builds/msvc/vs2017/libzmq.import.props             |   64 +
 builds/msvc/vs2017/libzmq.import.xml               |   49 +
 builds/msvc/vs2017/libzmq.sln                      |  208 ++
 builds/msvc/vs2017/libzmq/libzmq.props             |   76 +
 builds/msvc/vs2017/libzmq/libzmq.vcxproj           |  284 +++
 builds/msvc/vs2017/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2017/libzmq/libzmq.xml               |   40 +
 builds/msvc/vs2017/local_lat/local_lat.props       |   49 +
 builds/msvc/vs2017/local_lat/local_lat.vcxproj     |   80 +
 builds/msvc/vs2017/local_thr/local_thr.props       |   49 +
 builds/msvc/vs2017/local_thr/local_thr.vcxproj     |   80 +
 builds/msvc/vs2017/remote_lat/remote_lat.props     |   49 +
 builds/msvc/vs2017/remote_lat/remote_lat.vcxproj   |   80 +
 builds/msvc/vs2017/remote_thr/remote_thr.props     |   49 +
 builds/msvc/vs2017/remote_thr/remote_thr.vcxproj   |   80 +
 builds/nuget/libzmq.autopkg                        |   52 +
 builds/nuget/readme.nuget                          |   20 +
 builds/openwrt/Makefile                            |   70 +
 builds/valgrind/ci_build.sh                        |   27 +
 builds/valgrind/valgrind.supp                      |   22 +
 builds/valgrind/vg                                 |    1 +
 builds/zos/README.md                               |  463 ++++
 builds/zos/cxxall                                  |   62 +
 builds/zos/makeclean                               |   36 +
 builds/zos/makelibzmq                              |   54 +
 builds/zos/maketests                               |  102 +
 builds/zos/platform.hpp                            |  300 +++
 builds/zos/runtests                                |  188 ++
 builds/zos/test_fork.cpp                           |   95 +
 builds/zos/zc++                                    |   42 +
 ci_build.sh                                        |   42 +
 ci_deploy.sh                                       |   20 +
 configure.ac                                       |  684 ++++++
 doc/Makefile.am                                    |   63 +
 doc/asciidoc.conf                                  |   56 +
 doc/zmq.txt                                        |  273 +++
 doc/zmq_atomic_counter_dec.txt                     |   62 +
 doc/zmq_atomic_counter_destroy.txt                 |   62 +
 doc/zmq_atomic_counter_inc.txt                     |   61 +
 doc/zmq_atomic_counter_new.txt                     |   62 +
 doc/zmq_atomic_counter_set.txt                     |   61 +
 doc/zmq_atomic_counter_value.txt                   |   60 +
 doc/zmq_bind.txt                                   |  103 +
 doc/zmq_close.txt                                  |   52 +
 doc/zmq_connect.txt                                |  101 +
 doc/zmq_ctx_destroy.txt                            |   67 +
 doc/zmq_ctx_get.txt                                |  104 +
 doc/zmq_ctx_new.txt                                |   50 +
 doc/zmq_ctx_set.txt                                |  141 ++
 doc/zmq_ctx_shutdown.txt                           |   52 +
 doc/zmq_ctx_term.txt                               |   68 +
 doc/zmq_curve.txt                                  |   92 +
 doc/zmq_curve_keypair.txt                          |   56 +
 doc/zmq_disconnect.txt                             |   75 +
 doc/zmq_errno.txt                                  |   50 +
 doc/zmq_getsockopt.txt                             |  860 ++++++++
 doc/zmq_gssapi.txt                                 |   57 +
 doc/zmq_has.txt                                    |   43 +
 doc/zmq_init.txt                                   |   52 +
 doc/zmq_inproc.txt                                 |   88 +
 doc/zmq_ipc.txt                                    |  106 +
 doc/zmq_msg_close.txt                              |   56 +
 doc/zmq_msg_copy.txt                               |   72 +
 doc/zmq_msg_data.txt                               |   48 +
 doc/zmq_msg_get.txt                                |   83 +
 doc/zmq_msg_gets.txt                               |   75 +
 doc/zmq_msg_init.txt                               |   64 +
 doc/zmq_msg_init_data.txt                          |   89 +
 doc/zmq_msg_init_size.txt                          |   58 +
 doc/zmq_msg_more.txt                               |   65 +
 doc/zmq_msg_move.txt                               |   52 +
 doc/zmq_msg_recv.txt                               |  124 ++
 doc/zmq_msg_routing_id.txt                         |   61 +
 doc/zmq_msg_send.txt                               |  127 ++
 doc/zmq_msg_set.txt                                |   46 +
 doc/zmq_msg_set_routing_id.txt                     |   46 +
 doc/zmq_msg_size.txt                               |   48 +
 doc/zmq_null.txt                                   |   27 +
 doc/zmq_pgm.txt                                    |  164 ++
 doc/zmq_plain.txt                                  |   37 +
 doc/zmq_poll.txt                                   |  135 ++
 doc/zmq_proxy.txt                                  |   98 +
 doc/zmq_proxy_steerable.txt                        |   98 +
 doc/zmq_recv.txt                                   |   91 +
 doc/zmq_recvmsg.txt                                |  121 +
 doc/zmq_send.txt                                   |  104 +
 doc/zmq_send_const.txt                             |  103 +
 doc/zmq_sendmsg.txt                                |  121 +
 doc/zmq_setsockopt.txt                             | 1213 ++++++++++
 doc/zmq_socket.txt                                 |  610 +++++
 doc/zmq_socket_monitor.txt                         |  239 ++
 doc/zmq_strerror.txt                               |   56 +
 doc/zmq_tcp.txt                                    |  118 +
 doc/zmq_term.txt                                   |   66 +
 doc/zmq_tipc.txt                                   |   83 +
 doc/zmq_udp.txt                                    |   99 +
 doc/zmq_unbind.txt                                 |   90 +
 doc/zmq_version.txt                                |   54 +
 doc/zmq_vmci.txt                                   |   97 +
 doc/zmq_z85_decode.txt                             |   50 +
 doc/zmq_z85_encode.txt                             |   57 +
 include/zmq.h                                      |  641 ++++++
 include/zmq_utils.h                                |   48 +
 installer.ico                                      |  Bin 0 -> 2842 bytes
 m4/ax_check_compile_flag.m4                        |   74 +
 m4/ax_code_coverage.m4                             |  281 +++
 m4/ax_cxx_compile_stdcxx.m4                        |  562 +++++
 m4/ax_cxx_compile_stdcxx_11.m4                     |   40 +
 m4/ax_valgrind_check.m4                            |  233 ++
 packaging/README                                   |    4 +
 packaging/debian/changelog                         |    5 +
 packaging/debian/compat                            |    1 +
 packaging/debian/control                           |   61 +
 packaging/debian/copyright                         |   93 +
 packaging/debian/libzmq3-dev.install               |    4 +
 packaging/debian/libzmq3-dev.manpages              |    2 +
 packaging/debian/libzmq5.docs                      |    2 +
 packaging/debian/libzmq5.install                   |    1 +
 packaging/debian/rules                             |   58 +
 packaging/debian/source/format                     |    1 +
 packaging/debian/zeromq.dsc.obs                    |   15 +
 packaging/nuget/package.bat                        |   14 +
 packaging/nuget/package.config                     |    6 +
 packaging/nuget/package.gsl                        |  264 +++
 packaging/nuget/package.nuspec                     |   98 +
 packaging/nuget/package.targets                    |  129 ++
 packaging/nuget/package.xml                        |   22 +
 packaging/obs/_service                             |   84 +
 packaging/redhat/zeromq.spec                       |  221 ++
 perf/inproc_lat.cpp                                |  240 ++
 perf/inproc_thr.cpp                                |  250 +++
 perf/local_lat.cpp                                 |  116 +
 perf/local_thr.cpp                                 |  140 ++
 perf/remote_lat.cpp                                |  129 ++
 perf/remote_thr.cpp                                |  107 +
 src/address.cpp                                    |  134 ++
 src/address.hpp                                    |   77 +
 src/array.hpp                                      |  167 ++
 src/atomic_counter.hpp                             |  229 ++
 src/atomic_ptr.hpp                                 |  227 ++
 src/blob.hpp                                       |  139 ++
 src/client.cpp                                     |  116 +
 src/client.hpp                                     |   81 +
 src/clock.cpp                                      |  246 +++
 src/clock.hpp                                      |   83 +
 src/command.hpp                                    |  171 ++
 src/condition_variable.hpp                         |  266 +++
 src/config.hpp                                     |   98 +
 src/ctx.cpp                                        |  624 ++++++
 src/ctx.hpp                                        |  242 ++
 src/curve_client.cpp                               |  453 ++++
 src/curve_client.hpp                               |  125 ++
 src/curve_server.cpp                               |  722 ++++++
 src/curve_server.hpp                               |  136 ++
 src/dbuffer.hpp                                    |  144 ++
 src/dealer.cpp                                     |  143 ++
 src/dealer.hpp                                     |   89 +
 src/decoder.hpp                                    |  198 ++
 src/decoder_allocators.cpp                         |  144 ++
 src/decoder_allocators.hpp                         |  155 ++
 src/devpoll.cpp                                    |  205 ++
 src/devpoll.hpp                                    |  119 +
 src/dgram.cpp                                      |  177 ++
 src/dgram.hpp                                      |   81 +
 src/dish.cpp                                       |  360 +++
 src/dish.hpp                                       |  125 ++
 src/dist.cpp                                       |  235 ++
 src/dist.hpp                                       |  120 +
 src/encoder.hpp                                    |  189 ++
 src/epoll.cpp                                      |  199 ++
 src/epoll.hpp                                      |  119 +
 src/err.cpp                                        |  447 ++++
 src/err.hpp                                        |  173 ++
 src/fd.hpp                                         |   52 +
 src/fq.cpp                                         |  163 ++
 src/fq.hpp                                         |   92 +
 src/gather.cpp                                     |   94 +
 src/gather.hpp                                     |   75 +
 src/gssapi_client.cpp                              |  226 ++
 src/gssapi_client.hpp                              |   93 +
 src/gssapi_mechanism_base.cpp                      |  347 +++
 src/gssapi_mechanism_base.hpp                      |  130 ++
 src/gssapi_server.cpp                              |  373 ++++
 src/gssapi_server.hpp                              |   96 +
 src/i_decoder.hpp                                  |   64 +
 src/i_encoder.hpp                                  |   60 +
 src/i_engine.hpp                                   |   65 +
 src/i_mailbox.hpp                                  |   60 +
 src/i_poll_events.hpp                              |   55 +
 src/io_object.cpp                                  |  117 +
 src/io_object.hpp                                  |   89 +
 src/io_thread.cpp                                  |  114 +
 src/io_thread.hpp                                  |   99 +
 src/ip.cpp                                         |  192 ++
 src/ip.hpp                                         |   57 +
 src/ipc_address.cpp                                |  106 +
 src/ipc_address.hpp                                |   74 +
 src/ipc_connecter.cpp                              |  278 +++
 src/ipc_connecter.hpp                              |  135 ++
 src/ipc_listener.cpp                               |  424 ++++
 src/ipc_listener.hpp                               |  123 ++
 src/kqueue.cpp                                     |  227 ++
 src/kqueue.hpp                                     |  127 ++
 src/lb.cpp                                         |  171 ++
 src/lb.hpp                                         |   88 +
 src/libzmq.pc.cmake.in                             |   11 +
 src/libzmq.pc.in                                   |   11 +
 src/libzmq.vers                                    |    4 +
 src/likely.hpp                                     |   42 +
 src/macros.hpp                                     |   12 +
 src/mailbox.cpp                                    |  101 +
 src/mailbox.hpp                                    |   90 +
 src/mailbox_safe.cpp                               |  117 +
 src/mailbox_safe.hpp                               |   94 +
 src/mechanism.cpp                                  |  212 ++
 src/mechanism.hpp                                  |  139 ++
 src/metadata.cpp                                   |   56 +
 src/metadata.hpp                                   |   70 +
 src/msg.cpp                                        |  578 +++++
 src/msg.hpp                                        |  251 +++
 src/mtrie.cpp                                      |  434 ++++
 src/mtrie.hpp                                      |  102 +
 src/mutex.hpp                                      |  213 ++
 src/norm_engine.cpp                                |  730 ++++++
 src/norm_engine.hpp                                |  188 ++
 src/null_mechanism.cpp                             |  355 +++
 src/null_mechanism.hpp                             |   84 +
 src/object.cpp                                     |  438 ++++
 src/object.hpp                                     |  152 ++
 src/options.cpp                                    | 1042 +++++++++
 src/options.hpp                                    |  240 ++
 src/own.cpp                                        |  216 ++
 src/own.hpp                                        |  154 ++
 src/pair.cpp                                       |  142 ++
 src/pair.hpp                                       |   78 +
 src/pgm_receiver.cpp                               |  301 +++
 src/pgm_receiver.hpp                               |  146 ++
 src/pgm_sender.cpp                                 |  250 +++
 src/pgm_sender.hpp                                 |  123 ++
 src/pgm_socket.cpp                                 |  712 ++++++
 src/pgm_socket.hpp                                 |  128 ++
 src/pipe.cpp                                       |  535 +++++
 src/pipe.hpp                                       |  249 +++
 src/plain_client.cpp                               |  222 ++
 src/plain_client.hpp                               |   79 +
 src/plain_server.cpp                               |  437 ++++
 src/plain_server.hpp                               |   93 +
 src/poll.cpp                                       |  193 ++
 src/poll.hpp                                       |  121 +
 src/poller.hpp                                     |   64 +
 src/poller_base.cpp                                |  110 +
 src/poller_base.hpp                                |   95 +
 src/pollset.cpp                                    |  254 +++
 src/pollset.hpp                                    |  121 +
 src/precompiled.cpp                                |   30 +
 src/precompiled.hpp                                |  119 +
 src/proxy.cpp                                      |  207 ++
 src/proxy.hpp                                      |   42 +
 src/pub.cpp                                        |   67 +
 src/pub.hpp                                        |   63 +
 src/pull.cpp                                       |   78 +
 src/pull.hpp                                       |   75 +
 src/push.cpp                                       |   77 +
 src/push.hpp                                       |   73 +
 src/radio.cpp                                      |  250 +++
 src/radio.hpp                                      |  112 +
 src/random.cpp                                     |   59 +
 src/random.hpp                                     |   46 +
 src/raw_decoder.cpp                                |   74 +
 src/raw_decoder.hpp                                |   74 +
 src/raw_encoder.cpp                                |   51 +
 src/raw_encoder.hpp                                |   64 +
 src/reaper.cpp                                     |  142 ++
 src/reaper.hpp                                     |   94 +
 src/rep.cpp                                        |  134 ++
 src/rep.hpp                                        |   73 +
 src/req.cpp                                        |  321 +++
 src/req.hpp                                        |  121 +
 src/router.cpp                                     |  508 +++++
 src/router.hpp                                     |  146 ++
 src/scatter.cpp                                    |   83 +
 src/scatter.hpp                                    |   73 +
 src/select.cpp                                     |  484 ++++
 src/select.hpp                                     |  170 ++
 src/server.cpp                                     |  184 ++
 src/server.hpp                                     |   96 +
 src/session_base.cpp                               |  690 ++++++
 src/session_base.hpp                               |  172 ++
 src/signaler.cpp                                   |  652 ++++++
 src/signaler.hpp                                   |   91 +
 src/socket_base.cpp                                | 1727 +++++++++++++++
 src/socket_base.hpp                                |  298 +++
 src/socket_poller.cpp                              |  692 ++++++
 src/socket_poller.hpp                              |  130 ++
 src/socks.cpp                                      |  286 +++
 src/socks.hpp                                      |  135 ++
 src/socks_connecter.cpp                            |  476 ++++
 src/socks_connecter.hpp                            |  163 ++
 src/stdint.hpp                                     |   74 +
 src/stream.cpp                                     |  321 +++
 src/stream.hpp                                     |  107 +
 src/stream_engine.cpp                              | 1093 +++++++++
 src/stream_engine.hpp                              |  234 ++
 src/sub.cpp                                        |   94 +
 src/sub.hpp                                        |   64 +
 src/tcp.cpp                                        |  291 +++
 src/tcp.hpp                                        |   66 +
 src/tcp_address.cpp                                |  880 ++++++++
 src/tcp_address.hpp                                |  117 +
 src/tcp_connecter.cpp                              |  416 ++++
 src/tcp_connecter.hpp                              |  134 ++
 src/tcp_listener.cpp                               |  338 +++
 src/tcp_listener.hpp                               |   98 +
 src/thread.cpp                                     |  162 ++
 src/thread.hpp                                     |   89 +
 src/timers.cpp                                     |  170 ++
 src/timers.hpp                                     |  108 +
 src/tipc_address.cpp                               |  124 ++
 src/tipc_address.hpp                               |   75 +
 src/tipc_connecter.cpp                             |  268 +++
 src/tipc_connecter.hpp                             |  137 ++
 src/tipc_listener.cpp                              |  190 ++
 src/tipc_listener.hpp                              |  107 +
 src/trie.cpp                                       |  340 +++
 src/trie.hpp                                       |   86 +
 src/tweetnacl.c                                    |  948 ++++++++
 src/tweetnacl.h                                    |   72 +
 src/udp_address.cpp                                |  172 ++
 src/udp_address.hpp                                |   78 +
 src/udp_engine.cpp                                 |  385 ++++
 src/udp_engine.hpp                                 |   72 +
 src/v1_decoder.cpp                                 |  153 ++
 src/v1_decoder.hpp                                 |   69 +
 src/v1_encoder.cpp                                 |   76 +
 src/v1_encoder.hpp                                 |   59 +
 src/v2_decoder.cpp                                 |  161 ++
 src/v2_decoder.hpp                                 |   74 +
 src/v2_encoder.cpp                                 |   78 +
 src/v2_encoder.hpp                                 |   59 +
 src/v2_protocol.hpp                                |   49 +
 src/version.rc.in                                  |   93 +
 src/vmci.cpp                                       |   88 +
 src/vmci.hpp                                       |   61 +
 src/vmci_address.cpp                               |  170 ++
 src/vmci_address.hpp                               |   71 +
 src/vmci_connecter.cpp                             |  307 +++
 src/vmci_connecter.hpp                             |  136 ++
 src/vmci_listener.cpp                              |  262 +++
 src/vmci_listener.hpp                              |  102 +
 src/windows.hpp                                    |   90 +
 src/wire.hpp                                       |  108 +
 src/xpub.cpp                                       |  327 +++
 src/xpub.hpp                                       |  127 ++
 src/xsub.cpp                                       |  251 +++
 src/xsub.hpp                                       |  103 +
 src/ypipe.hpp                                      |  218 ++
 src/ypipe_base.hpp                                 |   54 +
 src/ypipe_conflate.hpp                             |  137 ++
 src/yqueue.hpp                                     |  225 ++
 src/zmq.cpp                                        | 1522 +++++++++++++
 src/zmq_draft.h                                    |  114 +
 src/zmq_utils.cpp                                  |  290 +++
 tests/CMakeLists.txt                               |  181 ++
 tests/README.md                                    |   26 +
 tests/test_abstract_ipc.cpp                        |   67 +
 tests/test_ancillaries.cpp                         |   51 +
 tests/test_atomics.cpp                             |   48 +
 tests/test_base85.cpp                              |   92 +
 tests/test_bind_after_connect_tcp.cpp              |   97 +
 tests/test_bind_src_address.cpp                    |   57 +
 tests/test_capabilities.cpp                        |   77 +
 tests/test_client_server.cpp                       |  106 +
 tests/test_conflate.cpp                            |   82 +
 tests/test_connect_delay_tipc.cpp                  |  238 ++
 tests/test_connect_resolve.cpp                     |   70 +
 tests/test_connect_rid.cpp                         |  191 ++
 tests/test_ctx_destroy.cpp                         |  110 +
 tests/test_ctx_options.cpp                         |   81 +
 tests/test_dgram.cpp                               |   99 +
 tests/test_diffserv.cpp                            |   80 +
 tests/test_disconnect_inproc.cpp                   |  136 ++
 tests/test_filter_ipc.cpp                          |  166 ++
 tests/test_fork.cpp                                |   95 +
 tests/test_getsockopt_memset.cpp                   |   64 +
 tests/test_heartbeats.cpp                          |  326 +++
 tests/test_hwm.cpp                                 |  309 +++
 tests/test_hwm_pubsub.cpp                          |  248 +++
 tests/test_immediate.cpp                           |  240 ++
 tests/test_inproc_connect.cpp                      |  536 +++++
 tests/test_invalid_rep.cpp                         |   98 +
 tests/test_iov.cpp                                 |  157 ++
 tests/test_ipc_wildcard.cpp                        |   65 +
 tests/test_issue_566.cpp                           |   95 +
 tests/test_last_endpoint.cpp                       |   66 +
 tests/test_many_sockets.cpp                        |  100 +
 tests/test_metadata.cpp                            |  130 ++
 tests/test_monitor.cpp                             |  143 ++
 tests/test_msg_ffn.cpp                             |  140 ++
 tests/test_msg_flags.cpp                           |  127 ++
 tests/test_pair_inproc.cpp                         |   81 +
 tests/test_pair_ipc.cpp                            |   60 +
 tests/test_pair_tcp.cpp                            |   60 +
 tests/test_pair_tipc.cpp                           |   62 +
 tests/test_pair_vmci.cpp                           |   68 +
 tests/test_poller.cpp                              |  173 ++
 tests/test_probe_router.cpp                        |   82 +
 tests/test_proxy.cpp                               |  282 +++
 tests/test_proxy_single_socket.cpp                 |  113 +
 tests/test_proxy_terminate.cpp                     |  123 ++
 tests/test_pub_invert_matching.cpp                 |  136 ++
 tests/test_radio_dish.cpp                          |  187 ++
 tests/test_req_correlate.cpp                       |  136 ++
 tests/test_req_relaxed.cpp                         |  198 ++
 tests/test_reqrep_device.cpp                       |  145 ++
 tests/test_reqrep_device_tipc.cpp                  |  146 ++
 tests/test_reqrep_inproc.cpp                       |   60 +
 tests/test_reqrep_ipc.cpp                          |   60 +
 tests/test_reqrep_tcp.cpp                          |  425 ++++
 tests/test_reqrep_tipc.cpp                         |   61 +
 tests/test_reqrep_vmci.cpp                         |   68 +
 tests/test_router_handover.cpp                     |  111 +
 tests/test_router_mandatory.cpp                    |   91 +
 tests/test_router_mandatory_hwm.cpp                |  125 ++
 tests/test_router_mandatory_tipc.cpp               |   70 +
 tests/test_scatter_gather.cpp                      |   84 +
 tests/test_security_curve.cpp                      |  294 +++
 tests/test_security_null.cpp                       |  191 ++
 tests/test_security_plain.cpp                      |  199 ++
 tests/test_setsockopt.cpp                          |  118 +
 tests/test_shutdown_stress.cpp                     |   90 +
 tests/test_shutdown_stress_tipc.cpp                |   95 +
 tests/test_sockopt_hwm.cpp                         |  174 ++
 tests/test_sodium.cpp                              |   99 +
 tests/test_spec_dealer.cpp                         |  259 +++
 tests/test_spec_pushpull.cpp                       |  297 +++
 tests/test_spec_rep.cpp                            |  165 ++
 tests/test_spec_req.cpp                            |  259 +++
 tests/test_spec_router.cpp                         |  213 ++
 tests/test_srcfd.cpp                               |  122 +
 tests/test_stream.cpp                              |  333 +++
 tests/test_stream_disconnect.cpp                   |  281 +++
 tests/test_stream_empty.cpp                        |   70 +
 tests/test_stream_exceeds_buffer.cpp               |  112 +
 tests/test_stream_timeout.cpp                      |  226 ++
 tests/test_sub_forward.cpp                         |  101 +
 tests/test_sub_forward_tipc.cpp                    |  102 +
 tests/test_system.cpp                              |  103 +
 tests/test_term_endpoint.cpp                       |  215 ++
 tests/test_term_endpoint_tipc.cpp                  |  120 +
 tests/test_thread_safe.cpp                         |   86 +
 tests/test_timeo.cpp                               |   85 +
 tests/test_timers.cpp                              |  130 ++
 tests/test_udp.cpp                                 |  133 ++
 tests/test_unbind_inproc.cpp                       |   43 +
 tests/test_unbind_wildcard.cpp                     |  294 +++
 tests/test_use_fd_ipc.cpp                          |  223 ++
 tests/test_use_fd_tcp.cpp                          |  225 ++
 tests/test_xpub_manual.cpp                         |  475 ++++
 tests/test_xpub_nodrop.cpp                         |  118 +
 tests/test_xpub_welcome_msg.cpp                    |   81 +
 tests/test_zmq_poll_fd.cpp                         |   98 +
 tests/testutil.hpp                                 |  386 ++++
 tools/curve_keygen.cpp                             |   58 +
 version.sh                                         |   21 +
 612 files changed, 99363 insertions(+)

commit f9d231437ac46236f7c0f08b5f5644731b487cc5
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Dec 13 12:43:07 2016 +0100

    Merge pull request #2251 from hnwyllmm/master
    
    misuse of 'close'

 .gitignore                                         |  177 ++
 .hgeol                                             |    2 +
 .mailmap                                           |   81 +
 .travis.yml                                        |   69 +
 AUTHORS                                            |  148 ++
 CMakeLists.txt                                     |  998 +++++++++
 COPYING                                            |  674 ++++++
 COPYING.LESSER                                     |  181 ++
 Dockerfile                                         |   11 +
 Doxygen.cfg                                        | 2320 ++++++++++++++++++++
 FindSodium.cmake                                   |   40 +
 INSTALL                                            |  252 +++
 Makefile.am                                        |  827 +++++++
 NEWS                                               | 1273 +++++++++++
 README.cygwin.md                                   |   15 +
 README.doxygen.md                                  |   48 +
 README.md                                          |   58 +
 RELICENSE/README.md                                |   23 +
 RELICENSE/brocade_communications_systems.md        |   15 +
 RELICENSE/imatix.md                                |   23 +
 RELICENSE/naos_ltd.md                              |   19 +
 acinclude.m4                                       |  981 +++++++++
 appveyor.yml                                       |   85 +
 autogen.sh                                         |   49 +
 branding.bmp                                       |  Bin 0 -> 25818 bytes
 builds/Makefile.am                                 |   31 +
 builds/README                                      |    4 +
 builds/android/Dockerfile                          |   22 +
 builds/android/README.md                           |   78 +
 builds/android/android_build_helper.sh             |  316 +++
 builds/android/build.sh                            |   70 +
 builds/android/ci_build.sh                         |   30 +
 builds/cmake/Modules/FindAsciiDoc.cmake            |   26 +
 builds/cmake/Modules/TestZMQVersion.cmake          |    8 +
 builds/cmake/Modules/ZMQSourceRunChecks.cmake      |  163 ++
 builds/cmake/NSIS.template32.in                    |  952 ++++++++
 builds/cmake/NSIS.template64.in                    |  960 ++++++++
 builds/cmake/ci_build.sh                           |   31 +
 builds/cmake/platform.hpp.in                       |   92 +
 builds/coverage/ci_build.sh                        |   29 +
 builds/cygwin/Makefile.cygwin                      |   48 +
 builds/gyp/.gitignore                              |    5 +
 builds/gyp/build.bat                               |    4 +
 builds/gyp/platform.hpp                            |   78 +
 builds/gyp/project-tests.gsl                       |   19 +
 builds/gyp/project-tests.gypi                      |  873 ++++++++
 builds/gyp/project-tests.xml                       |   81 +
 builds/gyp/project.gyp                             |  288 +++
 builds/mingw32/Makefile.mingw32                    |   49 +
 builds/mingw32/platform.hpp                        |   41 +
 builds/msvc/.gitignore                             |  256 +++
 builds/msvc/Makefile.am                            |   94 +
 builds/msvc/build/build.bat                        |   33 +
 builds/msvc/build/buildall.bat                     |   14 +
 builds/msvc/build/buildbase.bat                    |   64 +
 builds/msvc/errno.cpp                              |   32 +
 builds/msvc/errno.hpp                              |   56 +
 builds/msvc/platform.hpp                           |   14 +
 builds/msvc/properties/Common.props                |   21 +
 builds/msvc/properties/DLL.props                   |   16 +
 builds/msvc/properties/Debug.props                 |   29 +
 builds/msvc/properties/DebugDEXE.props             |   21 +
 builds/msvc/properties/DebugDLL.props              |   20 +
 builds/msvc/properties/DebugLEXE.props             |   20 +
 builds/msvc/properties/DebugLIB.props              |   21 +
 builds/msvc/properties/DebugLTCG.props             |   20 +
 builds/msvc/properties/DebugSEXE.props             |   21 +
 builds/msvc/properties/EXE.props                   |   17 +
 builds/msvc/properties/LIB.props                   |   16 +
 builds/msvc/properties/LTCG.props                  |   13 +
 builds/msvc/properties/Link.props                  |   21 +
 builds/msvc/properties/Messages.props              |   15 +
 builds/msvc/properties/Output.props                |   30 +
 builds/msvc/properties/Release.props               |   41 +
 builds/msvc/properties/ReleaseDEXE.props           |   20 +
 builds/msvc/properties/ReleaseDLL.props            |   19 +
 builds/msvc/properties/ReleaseLEXE.props           |   20 +
 builds/msvc/properties/ReleaseLIB.props            |   19 +
 builds/msvc/properties/ReleaseLTCG.props           |   19 +
 builds/msvc/properties/ReleaseSEXE.props           |   20 +
 builds/msvc/properties/Win32.props                 |   20 +
 builds/msvc/properties/x64.props                   |   23 +
 builds/msvc/readme.txt                             |   26 +
 builds/msvc/resource.h                             |   14 +
 builds/msvc/resource.rc                            |  Bin 0 -> 4642 bytes
 builds/msvc/vs2008/inproc_lat/inproc_lat.vcproj    |   52 +
 builds/msvc/vs2008/inproc_thr/inproc_thr.vcproj    |   52 +
 builds/msvc/vs2008/libzmq.sln                      |   95 +
 builds/msvc/vs2008/libzmq/libzmq.vcproj            |  277 +++
 builds/msvc/vs2008/local_lat/local_lat.vcproj      |   52 +
 builds/msvc/vs2008/local_thr/local_thr.vcproj      |   52 +
 builds/msvc/vs2008/remote_lat/remote_lat.vcproj    |   52 +
 builds/msvc/vs2008/remote_thr/remote_thr.vcproj    |   52 +
 builds/msvc/vs2010/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2010/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2010/libzmq.sln                      |  206 ++
 builds/msvc/vs2010/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2010/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2010/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2010/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2010/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2010/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2012/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2012/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2012/libsodium.import.props          |   37 +
 builds/msvc/vs2012/libzmq.sln                      |  206 ++
 builds/msvc/vs2012/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2012/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2012/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2012/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2012/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2012/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2013/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2013/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2013/libzmq.sln                      |  208 ++
 builds/msvc/vs2013/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2013/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2013/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2013/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2013/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2013/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2015/inproc_lat/inproc_lat.props     |   49 +
 builds/msvc/vs2015/inproc_lat/inproc_lat.vcxproj   |   79 +
 builds/msvc/vs2015/inproc_thr/inproc_thr.props     |   49 +
 builds/msvc/vs2015/inproc_thr/inproc_thr.vcxproj   |   79 +
 builds/msvc/vs2015/libzmq.import.props             |   64 +
 builds/msvc/vs2015/libzmq.import.xml               |   49 +
 builds/msvc/vs2015/libzmq.sln                      |  208 ++
 builds/msvc/vs2015/libzmq/libzmq.props             |   76 +
 builds/msvc/vs2015/libzmq/libzmq.vcxproj           |  283 +++
 builds/msvc/vs2015/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2015/libzmq/libzmq.xml               |   40 +
 builds/msvc/vs2015/local_lat/local_lat.props       |   49 +
 builds/msvc/vs2015/local_lat/local_lat.vcxproj     |   79 +
 builds/msvc/vs2015/local_thr/local_thr.props       |   49 +
 builds/msvc/vs2015/local_thr/local_thr.vcxproj     |   79 +
 builds/msvc/vs2015/remote_lat/remote_lat.props     |   49 +
 builds/msvc/vs2015/remote_lat/remote_lat.vcxproj   |   79 +
 builds/msvc/vs2015/remote_thr/remote_thr.props     |   49 +
 builds/msvc/vs2015/remote_thr/remote_thr.vcxproj   |   79 +
 builds/msvc/vs2015_xp/libzmq.vcxproj               |  255 +++
 builds/msvc/vs2015_xp/platform.hpp                 |   15 +
 .../msvc/vs2015_xp/test_zmq/test_multithread.cpp   |  229 ++
 builds/msvc/vs2015_xp/test_zmq/test_zmq.vcxproj    |  155 ++
 builds/msvc/vs2017/inproc_lat/inproc_lat.props     |   49 +
 builds/msvc/vs2017/inproc_lat/inproc_lat.vcxproj   |   80 +
 builds/msvc/vs2017/inproc_thr/inproc_thr.props     |   49 +
 builds/msvc/vs2017/inproc_thr/inproc_thr.vcxproj   |   80 +
 builds/msvc/vs2017/libzmq.import.props             |   64 +
 builds/msvc/vs2017/libzmq.import.xml               |   49 +
 builds/msvc/vs2017/libzmq.sln                      |  208 ++
 builds/msvc/vs2017/libzmq/libzmq.props             |   76 +
 builds/msvc/vs2017/libzmq/libzmq.vcxproj           |  284 +++
 builds/msvc/vs2017/libzmq/libzmq.vcxproj.filters   |  627 ++++++
 builds/msvc/vs2017/libzmq/libzmq.xml               |   40 +
 builds/msvc/vs2017/local_lat/local_lat.props       |   49 +
 builds/msvc/vs2017/local_lat/local_lat.vcxproj     |   80 +
 builds/msvc/vs2017/local_thr/local_thr.props       |   49 +
 builds/msvc/vs2017/local_thr/local_thr.vcxproj     |   80 +
 builds/msvc/vs2017/remote_lat/remote_lat.props     |   49 +
 builds/msvc/vs2017/remote_lat/remote_lat.vcxproj   |   80 +
 builds/msvc/vs2017/remote_thr/remote_thr.props     |   49 +
 builds/msvc/vs2017/remote_thr/remote_thr.vcxproj   |   80 +
 builds/nuget/libzmq.autopkg                        |   52 +
 builds/nuget/readme.nuget                          |   20 +
 builds/openwrt/Makefile                            |   70 +
 builds/valgrind/ci_build.sh                        |   27 +
 builds/valgrind/valgrind.supp                      |   22 +
 builds/valgrind/vg                                 |    1 +
 builds/zos/README.md                               |  463 ++++
 builds/zos/cxxall                                  |   62 +
 builds/zos/makeclean                               |   36 +
 builds/zos/makelibzmq                              |   54 +
 builds/zos/maketests                               |  102 +
 builds/zos/platform.hpp                            |  300 +++
 builds/zos/runtests                                |  188 ++
 builds/zos/test_fork.cpp                           |   95 +
 builds/zos/zc++                                    |   42 +
 ci_build.sh                                        |   42 +
 ci_deploy.sh                                       |   20 +
 configure.ac                                       |  684 ++++++
 doc/Makefile.am                                    |   63 +
 doc/asciidoc.conf                                  |   56 +
 doc/zmq.txt                                        |  273 +++
 doc/zmq_atomic_counter_dec.txt                     |   62 +
 doc/zmq_atomic_counter_destroy.txt                 |   62 +
 doc/zmq_atomic_counter_inc.txt                     |   61 +
 doc/zmq_atomic_counter_new.txt                     |   62 +
 doc/zmq_atomic_counter_set.txt                     |   61 +
 doc/zmq_atomic_counter_value.txt                   |   60 +
 doc/zmq_bind.txt                                   |  103 +
 doc/zmq_close.txt                                  |   52 +
 doc/zmq_connect.txt                                |  101 +
 doc/zmq_ctx_destroy.txt                            |   67 +
 doc/zmq_ctx_get.txt                                |  104 +
 doc/zmq_ctx_new.txt                                |   50 +
 doc/zmq_ctx_set.txt                                |  141 ++
 doc/zmq_ctx_shutdown.txt                           |   52 +
 doc/zmq_ctx_term.txt                               |   68 +
 doc/zmq_curve.txt                                  |   92 +
 doc/zmq_curve_keypair.txt                          |   56 +
 doc/zmq_disconnect.txt                             |   75 +
 doc/zmq_errno.txt                                  |   50 +
 doc/zmq_getsockopt.txt                             |  860 ++++++++
 doc/zmq_gssapi.txt                                 |   57 +
 doc/zmq_has.txt                                    |   43 +
 doc/zmq_init.txt                                   |   52 +
 doc/zmq_inproc.txt                                 |   88 +
 doc/zmq_ipc.txt                                    |  106 +
 doc/zmq_msg_close.txt                              |   56 +
 doc/zmq_msg_copy.txt                               |   72 +
 doc/zmq_msg_data.txt                               |   48 +
 doc/zmq_msg_get.txt                                |   83 +
 doc/zmq_msg_gets.txt                               |   75 +
 doc/zmq_msg_init.txt                               |   64 +
 doc/zmq_msg_init_data.txt                          |   89 +
 doc/zmq_msg_init_size.txt                          |   58 +
 doc/zmq_msg_more.txt                               |   65 +
 doc/zmq_msg_move.txt                               |   52 +
 doc/zmq_msg_recv.txt                               |  124 ++
 doc/zmq_msg_routing_id.txt                         |   61 +
 doc/zmq_msg_send.txt                               |  127 ++
 doc/zmq_msg_set.txt                                |   46 +
 doc/zmq_msg_set_routing_id.txt                     |   46 +
 doc/zmq_msg_size.txt                               |   48 +
 doc/zmq_null.txt                                   |   27 +
 doc/zmq_pgm.txt                                    |  164 ++
 doc/zmq_plain.txt                                  |   37 +
 doc/zmq_poll.txt                                   |  135 ++
 doc/zmq_proxy.txt                                  |   98 +
 doc/zmq_proxy_steerable.txt                        |   98 +
 doc/zmq_recv.txt                                   |   91 +
 doc/zmq_recvmsg.txt                                |  121 +
 doc/zmq_send.txt                                   |  104 +
 doc/zmq_send_const.txt                             |  103 +
 doc/zmq_sendmsg.txt                                |  121 +
 doc/zmq_setsockopt.txt                             | 1213 ++++++++++
 doc/zmq_socket.txt                                 |  610 +++++
 doc/zmq_socket_monitor.txt                         |  239 ++
 doc/zmq_strerror.txt                               |   56 +
 doc/zmq_tcp.txt                                    |  118 +
 doc/zmq_term.txt                                   |   66 +
 doc/zmq_tipc.txt                                   |   83 +
 doc/zmq_udp.txt                                    |   99 +
 doc/zmq_unbind.txt                                 |   90 +
 doc/zmq_version.txt                                |   54 +
 doc/zmq_vmci.txt                                   |   97 +
 doc/zmq_z85_decode.txt                             |   50 +
 doc/zmq_z85_encode.txt                             |   57 +
 include/zmq.h                                      |  641 ++++++
 include/zmq_utils.h                                |   48 +
 installer.ico                                      |  Bin 0 -> 2842 bytes
 m4/ax_check_compile_flag.m4                        |   74 +
 m4/ax_code_coverage.m4                             |  281 +++
 m4/ax_cxx_compile_stdcxx.m4                        |  562 +++++
 m4/ax_cxx_compile_stdcxx_11.m4                     |   40 +
 m4/ax_valgrind_check.m4                            |  233 ++
 packaging/README                                   |    4 +
 packaging/debian/changelog                         |    5 +
 packaging/debian/compat                            |    1 +
 packaging/debian/control                           |   61 +
 packaging/debian/copyright                         |   93 +
 packaging/debian/libzmq3-dev.install               |    4 +
 packaging/debian/libzmq3-dev.manpages              |    2 +
 packaging/debian/libzmq5.docs                      |    2 +
 packaging/debian/libzmq5.install                   |    1 +
 packaging/debian/rules                             |   58 +
 packaging/debian/source/format                     |    1 +
 packaging/debian/zeromq.dsc.obs                    |   15 +
 packaging/nuget/package.bat                        |   14 +
 packaging/nuget/package.config                     |    6 +
 packaging/nuget/package.gsl                        |  264 +++
 packaging/nuget/package.nuspec                     |   98 +
 packaging/nuget/package.targets                    |  129 ++
 packaging/nuget/package.xml                        |   22 +
 packaging/obs/_service                             |   84 +
 packaging/redhat/zeromq.spec                       |  221 ++
 perf/inproc_lat.cpp                                |  240 ++
 perf/inproc_thr.cpp                                |  250 +++
 perf/local_lat.cpp                                 |  116 +
 perf/local_thr.cpp                                 |  140 ++
 perf/remote_lat.cpp                                |  129 ++
 perf/remote_thr.cpp                                |  107 +
 src/address.cpp                                    |  134 ++
 src/address.hpp                                    |   77 +
 src/array.hpp                                      |  167 ++
 src/atomic_counter.hpp                             |  229 ++
 src/atomic_ptr.hpp                                 |  227 ++
 src/blob.hpp                                       |  139 ++
 src/client.cpp                                     |  116 +
 src/client.hpp                                     |   81 +
 src/clock.cpp                                      |  246 +++
 src/clock.hpp                                      |   83 +
 src/command.hpp                                    |  171 ++
 src/condition_variable.hpp                         |  266 +++
 src/config.hpp                                     |   98 +
 src/ctx.cpp                                        |  624 ++++++
 src/ctx.hpp                                        |  242 ++
 src/curve_client.cpp                               |  453 ++++
 src/curve_client.hpp                               |  125 ++
 src/curve_server.cpp                               |  722 ++++++
 src/curve_server.hpp                               |  136 ++
 src/dbuffer.hpp                                    |  144 ++
 src/dealer.cpp                                     |  143 ++
 src/dealer.hpp                                     |   89 +
 src/decoder.hpp                                    |  198 ++
 src/decoder_allocators.cpp                         |  144 ++
 src/decoder_allocators.hpp                         |  155 ++
 src/devpoll.cpp                                    |  205 ++
 src/devpoll.hpp                                    |  119 +
 src/dgram.cpp                                      |  177 ++
 src/dgram.hpp                                      |   81 +
 src/dish.cpp                                       |  360 +++
 src/dish.hpp                                       |  125 ++
 src/dist.cpp                                       |  235 ++
 src/dist.hpp                                       |  120 +
 src/encoder.hpp                                    |  189 ++
 src/epoll.cpp                                      |  199 ++
 src/epoll.hpp                                      |  119 +
 src/err.cpp                                        |  447 ++++
 src/err.hpp                                        |  173 ++
 src/fd.hpp                                         |   52 +
 src/fq.cpp                                         |  163 ++
 src/fq.hpp                                         |   92 +
 src/gather.cpp                                     |   94 +
 src/gather.hpp                                     |   75 +
 src/gssapi_client.cpp                              |  226 ++
 src/gssapi_client.hpp                              |   93 +
 src/gssapi_mechanism_base.cpp                      |  347 +++
 src/gssapi_mechanism_base.hpp                      |  130 ++
 src/gssapi_server.cpp                              |  373 ++++
 src/gssapi_server.hpp                              |   96 +
 src/i_decoder.hpp                                  |   64 +
 src/i_encoder.hpp                                  |   60 +
 src/i_engine.hpp                                   |   65 +
 src/i_mailbox.hpp                                  |   60 +
 src/i_poll_events.hpp                              |   55 +
 src/io_object.cpp                                  |  117 +
 src/io_object.hpp                                  |   89 +
 src/io_thread.cpp                                  |  114 +
 src/io_thread.hpp                                  |   99 +
 src/ip.cpp                                         |  192 ++
 src/ip.hpp                                         |   57 +
 src/ipc_address.cpp                                |  106 +
 src/ipc_address.hpp                                |   74 +
 src/ipc_connecter.cpp                              |  278 +++
 src/ipc_connecter.hpp                              |  135 ++
 src/ipc_listener.cpp                               |  424 ++++
 src/ipc_listener.hpp                               |  123 ++
 src/kqueue.cpp                                     |  227 ++
 src/kqueue.hpp                                     |  127 ++
 src/lb.cpp                                         |  171 ++
 src/lb.hpp                                         |   88 +
 src/libzmq.pc.cmake.in                             |   11 +
 src/libzmq.pc.in                                   |   11 +
 src/libzmq.vers                                    |    4 +
 src/likely.hpp                                     |   42 +
 src/macros.hpp                                     |   12 +
 src/mailbox.cpp                                    |  101 +
 src/mailbox.hpp                                    |   90 +
 src/mailbox_safe.cpp                               |  117 +
 src/mailbox_safe.hpp                               |   94 +
 src/mechanism.cpp                                  |  212 ++
 src/mechanism.hpp                                  |  139 ++
 src/metadata.cpp                                   |   56 +
 src/metadata.hpp                                   |   70 +
 src/msg.cpp                                        |  578 +++++
 src/msg.hpp                                        |  251 +++
 src/mtrie.cpp                                      |  434 ++++
 src/mtrie.hpp                                      |  102 +
 src/mutex.hpp                                      |  213 ++
 src/norm_engine.cpp                                |  730 ++++++
 src/norm_engine.hpp                                |  188 ++
 src/null_mechanism.cpp                             |  355 +++
 src/null_mechanism.hpp                             |   84 +
 src/object.cpp                                     |  438 ++++
 src/object.hpp                                     |  152 ++
 src/options.cpp                                    | 1042 +++++++++
 src/options.hpp                                    |  240 ++
 src/own.cpp                                        |  216 ++
 src/own.hpp                                        |  154 ++
 src/pair.cpp                                       |  142 ++
 src/pair.hpp                                       |   78 +
 src/pgm_receiver.cpp                               |  301 +++
 src/pgm_receiver.hpp                               |  146 ++
 src/pgm_sender.cpp                                 |  250 +++
 src/pgm_sender.hpp                                 |  123 ++
 src/pgm_socket.cpp                                 |  712 ++++++
 src/pgm_socket.hpp                                 |  128 ++
 src/pipe.cpp                                       |  535 +++++
 src/pipe.hpp                                       |  249 +++
 src/plain_client.cpp                               |  222 ++
 src/plain_client.hpp                               |   79 +
 src/plain_server.cpp                               |  437 ++++
 src/plain_server.hpp                               |   93 +
 src/poll.cpp                                       |  193 ++
 src/poll.hpp                                       |  121 +
 src/poller.hpp                                     |   64 +
 src/poller_base.cpp                                |  110 +
 src/poller_base.hpp                                |   95 +
 src/pollset.cpp                                    |  254 +++
 src/pollset.hpp                                    |  121 +
 src/precompiled.cpp                                |   30 +
 src/precompiled.hpp                                |  119 +
 src/proxy.cpp                                      |  207 ++
 src/proxy.hpp                                      |   42 +
 src/pub.cpp                                        |   67 +
 src/pub.hpp                                        |   63 +
 src/pull.cpp                                       |   78 +
 src/pull.hpp                                       |   75 +
 src/push.cpp                                       |   77 +
 src/push.hpp                                       |   73 +
 src/radio.cpp                                      |  250 +++
 src/radio.hpp                                      |  112 +
 src/random.cpp                                     |   59 +
 src/random.hpp                                     |   46 +
 src/raw_decoder.cpp                                |   74 +
 src/raw_decoder.hpp                                |   74 +
 src/raw_encoder.cpp                                |   51 +
 src/raw_encoder.hpp                                |   64 +
 src/reaper.cpp                                     |  142 ++
 src/reaper.hpp                                     |   94 +
 src/rep.cpp                                        |  134 ++
 src/rep.hpp                                        |   73 +
 src/req.cpp                                        |  321 +++
 src/req.hpp                                        |  121 +
 src/router.cpp                                     |  508 +++++
 src/router.hpp                                     |  146 ++
 src/scatter.cpp                                    |   83 +
 src/scatter.hpp                                    |   73 +
 src/select.cpp                                     |  484 ++++
 src/select.hpp                                     |  170 ++
 src/server.cpp                                     |  184 ++
 src/server.hpp                                     |   96 +
 src/session_base.cpp                               |  690 ++++++
 src/session_base.hpp                               |  172 ++
 src/signaler.cpp                                   |  652 ++++++
 src/signaler.hpp                                   |   91 +
 src/socket_base.cpp                                | 1727 +++++++++++++++
 src/socket_base.hpp                                |  298 +++
 src/socket_poller.cpp                              |  692 ++++++
 src/socket_poller.hpp                              |  130 ++
 src/socks.cpp                                      |  286 +++
 src/socks.hpp                                      |  135 ++
 src/socks_connecter.cpp                            |  476 ++++
 src/socks_connecter.hpp                            |  163 ++
 src/stdint.hpp                                     |   74 +
 src/stream.cpp                                     |  321 +++
 src/stream.hpp                                     |  107 +
 src/stream_engine.cpp                              | 1093 +++++++++
 src/stream_engine.hpp                              |  234 ++
 src/sub.cpp                                        |   94 +
 src/sub.hpp                                        |   64 +
 src/tcp.cpp                                        |  291 +++
 src/tcp.hpp                                        |   66 +
 src/tcp_address.cpp                                |  880 ++++++++
 src/tcp_address.hpp                                |  117 +
 src/tcp_connecter.cpp                              |  416 ++++
 src/tcp_connecter.hpp                              |  134 ++
 src/tcp_listener.cpp                               |  338 +++
 src/tcp_listener.hpp                               |   98 +
 src/thread.cpp                                     |  162 ++
 src/thread.hpp                                     |   89 +
 src/timers.cpp                                     |  170 ++
 src/timers.hpp                                     |  108 +
 src/tipc_address.cpp                               |  124 ++
 src/tipc_address.hpp                               |   75 +
 src/tipc_connecter.cpp                             |  268 +++
 src/tipc_connecter.hpp                             |  137 ++
 src/tipc_listener.cpp                              |  190 ++
 src/tipc_listener.hpp                              |  107 +
 src/trie.cpp                                       |  340 +++
 src/trie.hpp                                       |   86 +
 src/tweetnacl.c                                    |  948 ++++++++
 src/tweetnacl.h                                    |   72 +
 src/udp_address.cpp                                |  172 ++
 src/udp_address.hpp                                |   78 +
 src/udp_engine.cpp                                 |  385 ++++
 src/udp_engine.hpp                                 |   72 +
 src/v1_decoder.cpp                                 |  153 ++
 src/v1_decoder.hpp                                 |   69 +
 src/v1_encoder.cpp                                 |   76 +
 src/v1_encoder.hpp                                 |   59 +
 src/v2_decoder.cpp                                 |  161 ++
 src/v2_decoder.hpp                                 |   74 +
 src/v2_encoder.cpp                                 |   78 +
 src/v2_encoder.hpp                                 |   59 +
 src/v2_protocol.hpp                                |   49 +
 src/version.rc.in                                  |   93 +
 src/vmci.cpp                                       |   88 +
 src/vmci.hpp                                       |   61 +
 src/vmci_address.cpp                               |  170 ++
 src/vmci_address.hpp                               |   71 +
 src/vmci_connecter.cpp                             |  307 +++
 src/vmci_connecter.hpp                             |  136 ++
 src/vmci_listener.cpp                              |  262 +++
 src/vmci_listener.hpp                              |  102 +
 src/windows.hpp                                    |   90 +
 src/wire.hpp                                       |  108 +
 src/xpub.cpp                                       |  327 +++
 src/xpub.hpp                                       |  127 ++
 src/xsub.cpp                                       |  251 +++
 src/xsub.hpp                                       |  103 +
 src/ypipe.hpp                                      |  218 ++
 src/ypipe_base.hpp                                 |   54 +
 src/ypipe_conflate.hpp                             |  137 ++
 src/yqueue.hpp                                     |  225 ++
 src/zmq.cpp                                        | 1522 +++++++++++++
 src/zmq_draft.h                                    |  114 +
 src/zmq_utils.cpp                                  |  290 +++
 tests/CMakeLists.txt                               |  181 ++
 tests/README.md                                    |   26 +
 tests/test_abstract_ipc.cpp                        |   67 +
 tests/test_ancillaries.cpp                         |   51 +
 tests/test_atomics.cpp                             |   48 +
 tests/test_base85.cpp                              |   92 +
 tests/test_bind_after_connect_tcp.cpp              |   97 +
 tests/test_bind_src_address.cpp                    |   57 +
 tests/test_capabilities.cpp                        |   77 +
 tests/test_client_server.cpp                       |  106 +
 tests/test_conflate.cpp                            |   82 +
 tests/test_connect_delay_tipc.cpp                  |  238 ++
 tests/test_connect_resolve.cpp                     |   70 +
 tests/test_connect_rid.cpp                         |  191 ++
 tests/test_ctx_destroy.cpp                         |  110 +
 tests/test_ctx_options.cpp                         |   81 +
 tests/test_dgram.cpp                               |   99 +
 tests/test_diffserv.cpp                            |   80 +
 tests/test_disconnect_inproc.cpp                   |  136 ++
 tests/test_filter_ipc.cpp                          |  166 ++
 tests/test_fork.cpp                                |   95 +
 tests/test_getsockopt_memset.cpp                   |   64 +
 tests/test_heartbeats.cpp                          |  326 +++
 tests/test_hwm.cpp                                 |  309 +++
 tests/test_hwm_pubsub.cpp                          |  248 +++
 tests/test_immediate.cpp                           |  240 ++
 tests/test_inproc_connect.cpp                      |  536 +++++
 tests/test_invalid_rep.cpp                         |   98 +
 tests/test_iov.cpp                                 |  157 ++
 tests/test_ipc_wildcard.cpp                        |   65 +
 tests/test_issue_566.cpp                           |   95 +
 tests/test_last_endpoint.cpp                       |   66 +
 tests/test_many_sockets.cpp                        |  100 +
 tests/test_metadata.cpp                            |  130 ++
 tests/test_monitor.cpp                             |  143 ++
 tests/test_msg_ffn.cpp                             |  140 ++
 tests/test_msg_flags.cpp                           |  127 ++
 tests/test_pair_inproc.cpp                         |   81 +
 tests/test_pair_ipc.cpp                            |   60 +
 tests/test_pair_tcp.cpp                            |   60 +
 tests/test_pair_tipc.cpp                           |   62 +
 tests/test_pair_vmci.cpp                           |   68 +
 tests/test_poller.cpp                              |  173 ++
 tests/test_probe_router.cpp                        |   82 +
 tests/test_proxy.cpp                               |  282 +++
 tests/test_proxy_single_socket.cpp                 |  113 +
 tests/test_proxy_terminate.cpp                     |  123 ++
 tests/test_pub_invert_matching.cpp                 |  136 ++
 tests/test_radio_dish.cpp                          |  187 ++
 tests/test_req_correlate.cpp                       |  136 ++
 tests/test_req_relaxed.cpp                         |  198 ++
 tests/test_reqrep_device.cpp                       |  145 ++
 tests/test_reqrep_device_tipc.cpp                  |  146 ++
 tests/test_reqrep_inproc.cpp                       |   60 +
 tests/test_reqrep_ipc.cpp                          |   60 +
 tests/test_reqrep_tcp.cpp                          |  425 ++++
 tests/test_reqrep_tipc.cpp                         |   61 +
 tests/test_reqrep_vmci.cpp                         |   68 +
 tests/test_router_handover.cpp                     |  111 +
 tests/test_router_mandatory.cpp                    |   91 +
 tests/test_router_mandatory_hwm.cpp                |  125 ++
 tests/test_router_mandatory_tipc.cpp               |   70 +
 tests/test_scatter_gather.cpp                      |   84 +
 tests/test_security_curve.cpp                      |  294 +++
 tests/test_security_null.cpp                       |  191 ++
 tests/test_security_plain.cpp                      |  199 ++
 tests/test_setsockopt.cpp                          |  118 +
 tests/test_shutdown_stress.cpp                     |   90 +
 tests/test_shutdown_stress_tipc.cpp                |   95 +
 tests/test_sockopt_hwm.cpp                         |  174 ++
 tests/test_sodium.cpp                              |   99 +
 tests/test_spec_dealer.cpp                         |  259 +++
 tests/test_spec_pushpull.cpp                       |  297 +++
 tests/test_spec_rep.cpp                            |  165 ++
 tests/test_spec_req.cpp                            |  259 +++
 tests/test_spec_router.cpp                         |  213 ++
 tests/test_srcfd.cpp                               |  122 +
 tests/test_stream.cpp                              |  333 +++
 tests/test_stream_disconnect.cpp                   |  281 +++
 tests/test_stream_empty.cpp                        |   70 +
 tests/test_stream_exceeds_buffer.cpp               |  112 +
 tests/test_stream_timeout.cpp                      |  226 ++
 tests/test_sub_forward.cpp                         |  101 +
 tests/test_sub_forward_tipc.cpp                    |  102 +
 tests/test_system.cpp                              |  103 +
 tests/test_term_endpoint.cpp                       |  215 ++
 tests/test_term_endpoint_tipc.cpp                  |  120 +
 tests/test_thread_safe.cpp                         |   86 +
 tests/test_timeo.cpp                               |   85 +
 tests/test_timers.cpp                              |  130 ++
 tests/test_udp.cpp                                 |  133 ++
 tests/test_unbind_inproc.cpp                       |   43 +
 tests/test_unbind_wildcard.cpp                     |  294 +++
 tests/test_use_fd_ipc.cpp                          |  223 ++
 tests/test_use_fd_tcp.cpp                          |  225 ++
 tests/test_xpub_manual.cpp                         |  475 ++++
 tests/test_xpub_nodrop.cpp                         |  118 +
 tests/test_xpub_welcome_msg.cpp                    |   81 +
 tests/testutil.hpp                                 |  386 ++++
 tools/curve_keygen.cpp                             |   58 +
 version.sh                                         |   21 +
 611 files changed, 99260 insertions(+)
