# Generated by Makefile. Do not edit.

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                 |  1 +
 Makefile.am                |  4 ++
 tests/test_zmq_poll_fd.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 103 insertions(+)

commit f9d231437ac46236f7c0f08b5f5644731b487cc5
Merge: 9052862 a4e448d
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'

commit a4e448d586e33d6e71a4caf581be98ae5513c2a9
Author: Laughing <hnwyllmm@126.com>
Date:   Tue Dec 13 11:09:01 2016 +0800

    misuse of 'close'
    
    use 'pollset_destroy' instead of 'close' to release pollset_fd

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

commit 905286261969d4e4b1b956f2befacb8c1eae5e35
Merge: c47e017 72176d5
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Dec 11 07:51:31 2016 +0100

    Merge pull request #2250 from bluca/poll_regression
    
    Problem: check for item.fd causes zloop_poller regression

commit 72176d5fbec939c9233e1fcaa410bc2820586590
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 10 23:33:55 2016 +0000

    Problem: check for item.fd causes zloop_poller regression
    
    Solution: fix the check for the socket.
    This regression happens when using zloop with zmq_pollitem_it with
    only file descriptors registerted through zloop_poller.

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

commit c47e017bddf0c66add8e13b5c8c5d1eb85dd108f
Merge: 39947d5 4d6fbe1
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 10 16:01:38 2016 +0100

    Merge pull request #2249 from pavel-pimenov/fix-v817
    
    "%" -> '%'

commit 4d6fbe17e0026e94f218bc581b1515ee5f47412a
Author: pavel.pimenov <pavel.pimenov@gmail.com>
Date:   Sat Dec 10 17:27:42 2016 +0300

    "%" -> '%'

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

commit 39947d55c75811da42bf65b9b239a2201565de2c
Merge: f64d3ad eff42fa
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 10 14:57:14 2016 +0100

    Merge pull request #2248 from pavel-pimenov/fix-precompiled
    
    Add #include "precompiled.hpp"

commit eff42fa3216cfc2b447e32c400933b7003fae007
Author: pavel.pimenov <pavel.pimenov@gmail.com>
Date:   Sat Dec 10 16:44:51 2016 +0300

    Add #include "precompiled.hpp"

 src/norm_engine.cpp    | 2 ++
 src/tipc_address.cpp   | 2 ++
 src/tipc_connecter.cpp | 2 ++
 src/tipc_listener.cpp  | 2 ++
 src/vmci.cpp           | 1 +
 src/vmci_address.cpp   | 2 ++
 src/vmci_connecter.cpp | 2 ++
 src/vmci_listener.cpp  | 2 ++
 8 files changed, 15 insertions(+)

commit f64d3ad1e778b18f51afce1b920c8473658157cc
Merge: ad4a1bd 379028f
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Fri Dec 9 20:57:01 2016 +0100

    Merge pull request #2247 from bluca/trusty_unwind
    
    Problem: there is no libunwind-dev on Ubuntu 14.04LTS

commit 379028fbd9fad3f7c11f517043c8f373e0e5c99e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 9 18:42:19 2016 +0000

    Problem: there is no libunwind-dev on Ubuntu 14.04LTS
    
    Solution: depend on libunwind-dev | libunwind8-dev | libunwind7-dev

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

commit ad4a1bd0f36ad5bdb11241607160256843561996
Merge: d407657 ad04551
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Dec 9 10:41:07 2016 +0100

    Merge pull request #2245 from anass-b/builds-vs2017
    
    Build support for VS2017, Windows SDK 10.0.14393.0, toolset v141

commit ad045512b941a9aa031ea6d84879916a58e102df
Author: Anass Bouassaba <anass.bouassaba@t-online.de>
Date:   Fri Dec 9 09:21:11 2016 +0100

    Build support for VS2017, Windows SDK 10.0.14393.0, toolset v141

 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 +++
 19 files changed, 2122 insertions(+)

commit d4076578a3791db87fc270fc4f8f39fe07127292
Merge: 519940d 365ca85
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 8 16:50:03 2016 +0100

    Merge pull request #2244 from rotty/wip/fix-mstcpip-include
    
    Fix #include case for <mstcpip.h>

commit 365ca8595db4c97e2c342daf672ef4f4b166d70c
Author: Andreas Rottmann <a.rottmann@gmx.at>
Date:   Thu Dec 8 16:35:44 2016 +0100

    Fix #include case for <mstcpip.h>
    
    On native Windows, the file system is case-insensitive, so this this
    doesn't matter there.
    
    However, when compiling on a case-sensitive filesystem, such as when
    cross-compiling from a Unixoid using mingw, we have to use the case
    the file is supplied with, which is all lowercase.

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

commit 519940d07c3c505436322b060babe2250358e6d4
Merge: 5e03ad6 dcec022
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Wed Dec 7 05:46:34 2016 +0100

    Merge pull request #2241 from bluca/aix_test
    
    Problem: test_stream_exceeds_buffer fails to build on AIX

commit dcec0223580f6ad5f0bbc5ac018ce2135a2aea1b
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Dec 6 20:09:57 2016 +0000

    Problem: test_stream_exceeds_buffer does not build on AIX
    
    Solution: add missing includes

 tests/testutil.hpp | 4 ++++
 1 file changed, 4 insertions(+)

commit 8325355d730550ec938162bcb9e2585d4070e425
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Dec 6 20:09:13 2016 +0000

    Problem: test_stream_exceeds_buffer has redundant includes
    
    Solution: remove them as they are already in testutil.hpp

 tests/test_stream_exceeds_buffer.cpp | 7 -------
 1 file changed, 7 deletions(-)

commit 5e03ad6d87ce666bdef5be5f39584ff12bb6d341
Merge: 3f8e6c0 57db5f2
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Dec 6 19:34:20 2016 +0100

    Merge pull request #2240 from bluca/aix_poll
    
    Problem: 4.2.0 won't compile on AIX 7.1

commit 57db5f2a5c886af851b6640777ebaa88c7468c6b
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 1 23:38:16 2016 +0000

    Problem: 4.2.0 won't compile on AIX 7.1
    
    Solution: restore inclusion of poll.h if using poll before zmq.h as
    it was originally, as AIX redefines the POSIX structures and provides
    compatibility macros.
    Also add alternative aliases for 32 bit AIX's pollitem struct:
      events -> reqevents
      revents -> rtnevents

 include/zmq.h    |  7 +++++++
 src/proxy.cpp    | 20 +++++++++++---------
 src/signaler.cpp | 14 ++++++++++----
 3 files changed, 28 insertions(+), 13 deletions(-)

commit 3f8e6c0812d0df644b8b95dd4a45650536b32822
Merge: 42c6336 52ebffd
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Dec 5 14:22:28 2016 +0100

    Merge pull request #2239 from loachfish/master
    
    avoid crashing in the multi-thread operation for std::vector

commit 52ebffd71597b97d5980a60ba3f98567f7945ac6
Author: Justin.Hung <justin.hung@foxmail.com>
Date:   Mon Dec 5 09:28:05 2016 +0800

    avoid crashing in the multi-thread operation for std::vector
    
    1. stl container is not thread safety
    2. rm_fd() and loop() end to clear the retired event source will in multi-thread operation
    3. may be crashed in reaper thread to delete the items in the std::vector as the source is nullptr

 src/epoll.cpp | 4 ++++
 src/epoll.hpp | 4 ++++
 2 files changed, 8 insertions(+)

commit 42c63368e6e428064332597b99e09368df9da73f
Merge: 324f104 e46d91d
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Dec 4 07:42:47 2016 +0100

    Merge pull request #2238 from bluca/revert
    
    Problem: PR #2236 breaks the build

commit e46d91d41fbf98685221eb15e3d6d8163794d83e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Dec 3 22:10:19 2016 +0000

    Problem: PR #2236 breaks the build
    
    Solution: Revert "avoid crashing in the multi-thread operation for std::vector"
    
    This reverts commit e1368bdac804a49de101725ede1f900aebe82c10.

 src/epoll.cpp | 4 ----
 src/epoll.hpp | 4 ----
 2 files changed, 8 deletions(-)

commit 324f10494a39845a7c2ce8e4a0857950a816bd1b
Merge: 9a20f42 e1368bd
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Dec 3 16:09:56 2016 +0100

    Merge pull request #2236 from loachfish/master
    
    avoid crashing in the multi-thread operation for std::vector

commit e1368bdac804a49de101725ede1f900aebe82c10
Author: Justin.Hung <justin.hung@foxmail.com>
Date:   Fri Dec 2 17:33:13 2016 +0800

    avoid crashing in the multi-thread operation for std::vector
    
    1. stl container is not thread safety
    2. rm_fd() and loop() end to clear the retired event source will in multi-thread operation
    3. may be crashed in reaper thread to delete the items in the std::vector as the source is nullptr

 src/epoll.cpp | 4 ++++
 src/epoll.hpp | 4 ++++
 2 files changed, 8 insertions(+)

commit 9a20f42f62f6b99be72ebb43cb43963fc970039b
Merge: febf801 abeaba1
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Fri Dec 2 07:32:55 2016 +0100

    Merge pull request #2235 from bluca/cmake_soversion
    
    Problem: CMake build uses library version as the ABI version

commit abeaba15573c6fc7581699859fd9ff527d5a60c9
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Dec 1 22:33:43 2016 +0000

    Problem: CMake build uses library version as the ABI version
    
    Solution: set SOVERSION in CMakeLists to match the SONAME generated
    by libtool so that there is no mismatch between the output of the
    *NIX build systems.
    
    Before:
    $ ls -l
    total 2696
    lrwxrwxrwx 1 luca luca      15 Dec  1 22:36 libzmq.so -> libzmq.so.4.2.0
    lrwxrwxrwx 1 luca luca      15 Dec  1 22:36 libzmq.so.4.2.0 -> libzmq.so.4.2.1
    -rwxr-xr-x 1 luca luca  906168 Dec  1 22:36 libzmq.so.4.2.1
    $ readelf -d libzmq.so.4.2.1 | grep SONAME
     0x000000000000000e (SONAME)    Library soname: [libzmq.so.4.2.0]
    
    After:
    $ ls -l
    total 2700
    lrwxrwxrwx 1 luca luca      15 Dec  1 22:31 libzmq.so -> libzmq.so.5.1.0
    -rwxr-xr-x 1 luca luca  906168 Dec  1 22:31 libzmq.so.4.2.1
    lrwxrwxrwx 1 luca luca      15 Dec  1 22:31 libzmq.so.5.1.0 -> libzmq.so.4.2.1
    $ readelf -d libzmq.so.4.2.1 | grep SONAME
     0x000000000000000e (SONAME)    Library soname: [libzmq.so.5.1.0]

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

commit febf8015840969e9461e31f4b47132266dca62a4
Author: Laughing <hnwyllmm@126.com>
Date:   Thu Dec 1 18:59:23 2016 +0800

    bug fix: AIX pollset error (#2233)
    
    * bug fix: AIX pollset error
    
    buf fix:  AIX only, pollset 'rm_fd' set fd_table to null first then set pe->fd to retired_fd
    
    * remove extra spaces
    
    remove extra spaces

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

commit 294bdb4eb6e1a0a9653a55db3721f8decd05ee56
Merge: 4a24805 33fcd2d
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Wed Nov 30 21:07:32 2016 +0100

    Merge pull request #2231 from bluca/windows_ipv6_tos
    
    Problem: Windows does not support IPV6_TCLASS

commit 33fcd2d6ca17ffc8e0f3d3606863ba988686d21c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Wed Nov 30 11:09:12 2016 +0000

    Problem: Windows does not support IPV6_TCLASS
    
    Solution: don't use it on Windows.
    There is a Windows-specific API for ToS, even IPv4 does not work and
    it's just a silent no-op on that platform.

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

commit 4a24805f7055b58d58518339dd4ad74cb8bf0440
Merge: e6572fa 121c9d1
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Thu Nov 24 20:00:33 2016 +0100

    Merge pull request #2225 from bluca/select_broken
    
    Problem: select broken

commit 121c9d16f5bb689f7cba8a73f8e44b20ea023d51
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Nov 24 13:07:12 2016 +0000

    Problem: select.cpp/hpp build fails with reorder error
    
    Solution: initialise class variables in the same order they are
    declared

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

commit ba74890f2fa24af9bfc79fae09c9447a8170f430
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Nov 24 12:44:51 2016 +0000

    Problem: cannot pick select for poller
    
    Solution: fix acinclude.m4 snippet that checks if select is
    available to stop it erroring out.

 acinclude.m4 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit e6572fac8024f3a93b1ff4fcb0e80c11823ea929
Merge: 53bf6df ec25fd2
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Nov 21 14:17:36 2016 +0100

    Merge pull request #2222 from SuperFluffy/doc_explain_context
    
    Add a single sentence explaining what a context is

commit ec25fd2adac6f0c13d4af778d1c37d27439e8050
Author: Richard Janis Goldschmidt <janis.beckert@gmail.com>
Date:   Mon Nov 21 14:11:33 2016 +0100

    Add a single sentence explaining what a context is

 doc/zmq.txt | 3 +++
 1 file changed, 3 insertions(+)

commit 53bf6dfcf0c63c17fe49e477d4fb91c9fb8a0695
Merge: 185fed3 f302d8a
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Nov 21 12:17:01 2016 +0100

    Merge pull request #2221 from minrk/check-socket
    
    only compare pollitem.fd if pollitem.socket is NULL

commit f302d8a7b6cc74f6e8308e1d61ffb4804961c346
Author: Min RK <benjaminrk@gmail.com>
Date:   Mon Nov 21 11:47:50 2016 +0100

    only compare pollitem.fd if pollitem.socket is NULL
    
    item.fd should be ignored if item.socket is defined.
    
    Failing to check .socket could cause false-matches, raising EINVAL in zmq_poller_modify_fd.

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

commit 185fed3966c134c9062dc202b285877134be4b06
Merge: 3db6921 8a286bb
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Nov 20 14:59:45 2016 +0100

    Merge pull request #2220 from bluca/zmq_msg_size
    
    Problem: size of zmq_msg_t is not known to FFI wrappers

commit 8a286bb842f3d8769a51e83ceb5ed942acebaf4b
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Nov 20 12:51:25 2016 +0000

    Problem: no documentation for ZMQ_MSG_T_SIZE ctx option
    
    Solution: mention it in zmq_ctx_get manpage

 doc/zmq_ctx_get.txt | 7 +++++++
 1 file changed, 7 insertions(+)

commit b480457283b8a6c00264994bcdb1a1a36a978515
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Nov 20 12:50:45 2016 +0000

    Problem: ZMQ_MSG_T_SIZE is not mentioned in NEWS
    
    Solution: mention it as it's a new public API (still draft until release)

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

commit 670bec56d84451c66002dba9837df54cf62b03f1
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Nov 20 12:24:03 2016 +0000

    Problem: size of zmq_msg_t is not known to FFI wrappers
    
    Solution: add a ZMQ_MSG_T_SIZE context read-only option so that
    wrappers can call zmq_ctx_get (ctx, ZMQ_MSG_T_SIZE) to get the
    size at runtime.

 include/zmq.h              | 3 +++
 src/ctx.cpp                | 3 +++
 tests/test_ctx_options.cpp | 1 +
 3 files changed, 7 insertions(+)

commit 3db69212b7f1d125251c9c92666ad374895b68f7
Merge: 93ccb5a 5d176cb
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Wed Nov 16 20:03:18 2016 +0100

    Merge pull request #2216 from rotty/master
    
    Document terminating NUL behavior in API more explicitly

commit 5d176cbe98fe58aa4409bb846475270b6df051fb
Author: Andreas Rottmann <a.rottmann@gmx.at>
Date:   Wed Nov 16 19:50:50 2016 +0100

    Document terminating NUL behavior in API more explicitly
    
    This addresses #2169.

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

commit 93ccb5a16d06d51b88765afac7aacffc00a5e301
Merge: 5879f72 10181d7
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Nov 15 20:41:32 2016 +0100

    Merge pull request #2215 from Bklyn/udp-bugfix
    
    Problem: inconsistent indentation and tabs in code

commit 10181d764139b25d9aecbc27acec3470273b54a5
Author: Caleb Epstein <Bklyn@users.noreply.github.com>
Date:   Tue Nov 15 14:25:38 2016 -0500

    Untabify

 src/tcp_address.cpp | 260 ++++++++++++++++++++++++++--------------------------
 1 file changed, 130 insertions(+), 130 deletions(-)

commit 5879f729dd92c59b8883b1c9d64e81520031a106
Merge: ace9532 f577cea
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Nov 15 20:13:21 2016 +0100

    Merge pull request #2214 from Bklyn/udp-bugfix
    
    Problem: multicast is spelled incorrectly in udp_address class

commit f577ceab4b299cda4a23afc2f2d965471b2d0589
Author: Caleb Epstein <cae@bklyn.org>
Date:   Tue Nov 15 13:56:49 2016 -0500

    Problem: multicast is spelled incorrectly in udp_address class
    
    Solution: Fix typo of 'mutlicast' -> 'multicast'

 src/udp_address.cpp | 10 +++++-----
 src/udp_address.hpp |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

commit ace95327a304d9717f245cc9964a08436fad0171
Merge: b9b0fd8 cdac1ac
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Nov 15 19:55:54 2016 +0100

    Merge pull request #2213 from Bklyn/udp-bugfix
    
    Fix htons copy pasta

commit cdac1ac9d32415258d39fcaa9b60b21f6d6714ae
Author: Caleb Epstein <cae@bklyn.org>
Date:   Tue Nov 15 13:51:49 2016 -0500

    Fix htons copy pasta

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

commit b9b0fd87a4eafd7ffae4abd6a8be4513e34c79d4
Merge: bc18604 90f091a
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Nov 14 13:58:28 2016 +0100

    Merge pull request #2210 from bluca/ipv6_tos_v4_only
    
    Problem: IPV6_TCLASS setsockopt fails on IPv4 socket

commit 90f091abf3be398641446cc6d7c6656d8100f877
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Nov 14 11:59:32 2016 +0000

    Problem: IPV6_TCLASS setsockopt fails on IPv4 socket
    
    Solution: if setsockopt errors out and errno is set to ENOPROTOOPT
    (or EINVAL on OSX) ignore it and carry on.

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

commit bc1860430acb008397dcfaaa4f5e41d53f61f29a
Merge: 8ac7500 fc8007e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Nov 14 11:37:24 2016 +0100

    Merge pull request #2209 from saifhhasan/master
    
    Make ZMQ_TOS work with IPv6 sockets

commit fc8007e8968eb7249bf91bdb29098e883e478145
Author: Saif Hasan <has@fb.com>
Date:   Mon Nov 14 01:51:22 2016 -0800

    Make ZMQ_TOS work with IPv6 sockets
    
    Summary:
    To set `Type Of Service` for IP layer packets ZMQ provides `ZMQ_TOS` socket
    option. However this only works for v4 sockets. Considering things are moving to
    IPv6 heavily (especially within enterprise networks), ZMQ should support setting
    `traffic class` for v6 based on `ZMQ_TOS`.
    
    There is a subtle difference between v4 and v6 in terms of the positioning of
    field but TOS has same meaning in both v4 and v6. Linux provides following APIs
    for v4/v6 to set TOS field value.
    ```
    // For v4
    setsockopt(fd, IPPROTO_IP, IP_TOS, tos, sizeof(tos));
    
    // For v6
    setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, tos, sizeof(tos));
    ```
    
    Test Plan:
    Make sure Cmake works fine and all tests passes.
    Imported this change to `OpenR` project and tested on our local testbed.
    Captured some packets exchanged between PUB/SUB and ROUTER/ROUTER sockets
    pairs. Verify that `TCLASS` value is set as per expectation.
    
    Tasks: #2208

 src/ip.cpp | 13 +++++++++++++
 1 file changed, 13 insertions(+)

commit 8ac7500f9d55c946340a3bdf6940dda0fd2f8c89
Merge: e50c6b6 8015794
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Nov 12 21:01:11 2016 +0100

    Merge pull request #2203 from bluca/bump_version
    
    Problem: 4.2.0 is out, time to bump version for development

commit e50c6b699280e1cb708a4b354918cf9549475409
Merge: 065169a 1b3fcbd
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Nov 12 21:00:04 2016 +0100

    Merge pull request #2206 from bluca/dladdr
    
    Problem: linker fails looking for dladdr

commit 1b3fcbd3eead8f1f59f3e9472319d58ce6b52bb7
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Nov 10 22:49:41 2016 +0000

    Problem: linker fails looking for dladdr
    
    Solution: search and add it via AC_CHECK_LIB when building with
    libunwind, as the backtrace function uses dladdr. This problem
    only appears on some distributions and with some compiler/toolchain
    versions.

 configure.ac | 1 +
 1 file changed, 1 insertion(+)

commit 8015794b81ee3634df54da639e1e91e248fcb83c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Nov 8 12:54:53 2016 +0000

    Problem: 4.2.0 is out, time to bump version for development
    
    Solution: update NEWS, include/zmq.h and packaging

 NEWS                            | 4 ++++
 include/zmq.h                   | 2 +-
 packaging/debian/changelog      | 2 +-
 packaging/debian/zeromq.dsc.obs | 2 +-
 packaging/redhat/zeromq.spec    | 2 +-
 5 files changed, 8 insertions(+), 4 deletions(-)

commit 065169a221751b7d54dc710a73aee4ee34b6d8d3
Merge: 067bfa1 4b58b37
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Nov 7 20:08:16 2016 +0100

    Merge pull request #2201 from bluca/news_blocky
    
    Problem: NEWS says ZMQ_BLOCKY is a sock opt, but it's a ctx opt

commit 4b58b3735fce59e7f46759c2c925119bb4d99429
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Mon Nov 7 15:32:47 2016 +0000

    Problem: NEWS says ZMQ_BLOCKY is a sock opt, but it's a ctx opt
    
    Solution: fix it

 NEWS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 067bfa13b8f60864f5b124efdff43bcd2b134bd3
Merge: ef3c259 cab901c
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Nov 6 11:40:47 2016 +0100

    Merge pull request #2198 from vyskocilm/master
    
    Problem: linking fails on glibc 2.24 with dladdr missing

commit cab901c0a61fab5e5fd20f80be4edcbff8a641a9
Author: Michal Vyskocil <michal.vyskocil@gmail.com>
Date:   Sun Nov 6 11:18:55 2016 +0100

    Problem: linking fails on glibc 2.24 with dladdr missing
    
    Solution: try to find dladdr function on Linux - glibc systems provides
    dlopen/dladdr in libdl and not in libc itseld.

 configure.ac | 5 +++++
 1 file changed, 5 insertions(+)

commit ef3c2591fc26d34e8dc3fc3403ae94451f52338e
Merge: d9ff348 b73809c
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sun Nov 6 09:40:18 2016 +0100

    Merge pull request #2197 from bluca/install_keygen_rpm
    
    Problem: curve_keygen not packaged by RPM spec

commit b73809c3807e389cd1d329a63acf312e01b3a1c4
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Nov 6 00:14:02 2016 +0000

    Problem: curve_keygen not packaged by RPM spec
    
    Solution: add new libzmq-tools package to ship it

 .gitignore                                         |  177 ++
 .hgeol                                             |    2 +
 .mailmap                                           |   81 +
 .travis.yml                                        |   69 +
 AUTHORS                                            |  148 ++
 CMakeLists.txt                                     |  997 +++++++++
 COPYING                                            |  674 ++++++
 COPYING.LESSER                                     |  181 ++
 Dockerfile                                         |   11 +
 Doxygen.cfg                                        | 2320 ++++++++++++++++++++
 FindSodium.cmake                                   |   40 +
 INSTALL                                            |  252 +++
 Makefile.am                                        |  827 +++++++
 NEWS                                               | 1266 +++++++++++
 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/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                                       |  678 ++++++
 doc/Makefile.am                                    |   63 +
 doc/asciidoc.conf                                  |   56 +
 doc/zmq.txt                                        |  270 +++
 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                                |   97 +
 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                             | 1211 ++++++++++
 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                                      |  631 ++++++
 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                                        |  621 ++++++
 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                                      |  195 ++
 src/epoll.hpp                                      |  115 +
 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                                         |  175 ++
 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                                |  728 ++++++
 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                                      |  205 ++
 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                                   |  646 ++++++
 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                               |  122 +
 src/tipc_address.hpp                               |   75 +
 src/tipc_connecter.cpp                             |  266 +++
 src/tipc_connecter.hpp                             |  137 ++
 src/tipc_listener.cpp                              |  188 ++
 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                                       |   87 +
 src/vmci.hpp                                       |   61 +
 src/vmci_address.cpp                               |  168 ++
 src/vmci_address.hpp                               |   71 +
 src/vmci_connecter.cpp                             |  305 +++
 src/vmci_connecter.hpp                             |  136 ++
 src/vmci_listener.cpp                              |  260 +++
 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                         |   80 +
 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               |  119 +
 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                                 |  382 ++++
 tools/curve_keygen.cpp                             |   58 +
 version.sh                                         |   21 +
 592 files changed, 97053 insertions(+)

commit d9ff34891babd28ff334ad35d8bda22c6b31ac50
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Sat Nov 5 23:23:01 2016 +0100

    Merge pull request #2196 from bluca/kfreebsd
    
    Problem: some errors on Debian + kFreeBSD

 .gitignore                                         |  177 ++
 .hgeol                                             |    2 +
 .mailmap                                           |   81 +
 .travis.yml                                        |   69 +
 AUTHORS                                            |  148 ++
 CMakeLists.txt                                     |  997 +++++++++
 COPYING                                            |  674 ++++++
 COPYING.LESSER                                     |  181 ++
 Dockerfile                                         |   11 +
 Doxygen.cfg                                        | 2320 ++++++++++++++++++++
 FindSodium.cmake                                   |   40 +
 INSTALL                                            |  252 +++
 Makefile.am                                        |  827 +++++++
 NEWS                                               | 1266 +++++++++++
 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/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                                       |  678 ++++++
 doc/Makefile.am                                    |   63 +
 doc/asciidoc.conf                                  |   56 +
 doc/zmq.txt                                        |  270 +++
 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                                |   97 +
 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                             | 1211 ++++++++++
 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                                      |  631 ++++++
 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                       |  200 ++
 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                                        |  621 ++++++
 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                                      |  195 ++
 src/epoll.hpp                                      |  115 +
 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                                         |  175 ++
 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                                |  728 ++++++
 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                                      |  205 ++
 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                                   |  646 ++++++
 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                               |  122 +
 src/tipc_address.hpp                               |   75 +
 src/tipc_connecter.cpp                             |  266 +++
 src/tipc_connecter.hpp                             |  137 ++
 src/tipc_listener.cpp                              |  188 ++
 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                                       |   87 +
 src/vmci.hpp                                       |   61 +
 src/vmci_address.cpp                               |  168 ++
 src/vmci_address.hpp                               |   71 +
 src/vmci_connecter.cpp                             |  305 +++
 src/vmci_connecter.hpp                             |  136 ++
 src/vmci_listener.cpp                              |  260 +++
 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                         |   80 +
 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               |  119 +
 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                                 |  382 ++++
 tools/curve_keygen.cpp                             |   58 +
 version.sh                                         |   21 +
 592 files changed, 97032 insertions(+)

commit 097bf26e8dacf73abc2a6cdd6f9e4dce824b8208
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Nov 4 10:20:02 2016 +0000

    Finalize NEWS for 4.2.0

 NEWS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 785d9b5494b95aec23d654279eef4d7f71eb1b02
Merge: 7000e84 9e52806
Author: Lukas Geiger <lgeiger@users.noreply.github.com>
Date:   Fri Nov 4 10:58:54 2016 +0100

    Merge pull request #2189 from bluca/changelog
    
    Problem: NEWS out of date

commit 9e528067249dfe417d894d21aff0815945b1de9c
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Wed Nov 2 17:34:16 2016 +0000

    Problem: no NEWS for 4.2.0
    
    Solution: add an overview of the new socket options, new APIs,
    DRAFT mechanism (and DRAFT APIs). And a dedication.

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

commit 932cc8295b44f427ff0683be096d50c376006c77
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Wed Nov 2 17:33:24 2016 +0000

    Problem: NEWS does not include previouos stable releases
    
    Solution: add release notes from 4.0.x and 4.1.x releases to
    capture all important solved bugs.

 NEWS | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 177 insertions(+), 1 deletion(-)

commit 7000e84aed1c2a57e31c2860df7c07f9d9863f44
Merge: 819bf78 488cb5a
Author: Doron Somech <somdoron@gmail.com>
Date:   Wed Nov 2 14:07:48 2016 +0200

    Merge pull request #2187 from Dmitriy-GH/master
    
     Add WinXP compatibility

commit 488cb5a02259673323ff650ed2bd4a29f9cd539d
Author: Dmitriy-GH <dimatart@mail.ru>
Date:   Wed Nov 2 15:51:58 2016 +0500

    MSVC 2015 project for compile libzmq.dll in WinXP compatible mode

 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 +++++++++++++
 4 files changed, 654 insertions(+)

commit e7b12b3c2ad3f34ace9e013d27c56293b5efc327
Author: Dmitriy-GH <dimatart@mail.ru>
Date:   Wed Nov 2 15:44:27 2016 +0500

    Add WinXP compatibility
    
    #define ZMQ_HAVE_WINDOWS_TARGET_XP  disable uncompatible WinAPI
    
    1. Disable call if_indextoname()
    2. Emulate windows Condition Variable API in class condition_variable_t with std::condition_variable
    
    This code can be compiled in MSVC 2015 with option "Platform toolset: Visual Studio 2015 - Windows XP (v140_xp)"

 src/condition_variable.hpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++
 src/tcp_address.cpp        |  2 ++
 2 files changed, 55 insertions(+)

commit 819bf785b74f684d1292bc614d4b54b636634d2f
Merge: 8cf4832 b5b5f75
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Wed Nov 2 07:03:51 2016 +0100

    Merge pull request #2186 from bluca/de-draft
    
    Problem: socket option marked as draft for 4.2

commit b5b5f75242a5ca8694a216a65c13238b0e965688
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Nov 1 18:49:42 2016 +0000

    Problem: socket option marked as draft for 4.2
    
    Solution: move comment further below to declare new socket
    options as stable for the 4.2.0 release.

 include/zmq.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 8cf4832e01cf9f3161157373e9c66e7be18ae0bb
Merge: cc70c82 6da8385
Author: Doron Somech <somdoron@gmail.com>
Date:   Tue Nov 1 16:48:56 2016 +0200

    Merge pull request #2184 from bluca/rc
    
    Problems: need to bump NEWS and libtool version

commit 6da8385b2a7b5306cbfe66078d5567f5e8f728e1
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Nov 1 13:18:21 2016 +0000

    Problem: new public symbols added
    
    Solution: bump ABI version fromo 5:0:0 to 6:0:1 since 4.2 is backward
    compatible with 4.1, but new symbols are there

 configure.ac | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit e0d6f4ea113a6865a099fba2df3952bfff3bd7ef
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Nov 1 13:18:02 2016 +0000

    Problem: no NEWS entry for 4.2.0
    
    Solution: add one, empty for now, fill in after RC release

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

commit cc70c829cf7c2a4a8925687b500dd77155526a0a
Merge: 50a6c11 6f597d0
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Nov 1 11:47:30 2016 +0000

    Merge pull request #2183 from a4z/opmg_cmake
    
    Problem: CMake build rejects to build with openpgm enabled

commit 6f597d0bd3ca742e8f689da0b1a89ca0e573481e
Author: Harald <harald.achitz@getinge.com>
Date:   Tue Nov 1 12:31:40 2016 +0100

    Problem: CMake build rejects to build with openpgm enabled
    
    Solution: add optional lookup for openpgm via pkg-config

 CMakeLists.txt       | 24 ++++++++++++++++++++++--
 tests/CMakeLists.txt |  3 ++-
 2 files changed, 24 insertions(+), 3 deletions(-)

commit 50a6c117f173f296839817b6fa28e959ac805e3e
Merge: fb59cd1 28fbee7
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Oct 31 20:31:15 2016 +0100

    Merge pull request #2182 from pmienk/master
    
    Suppress warning on uninitialized variable use by initializing variable.

commit 28fbee74c8acc4caf664dcbad3d0e4e6c465d917
Author: Phillip Mienk <mienkphi@gmail.com>
Date:   Mon Oct 31 12:25:30 2016 -0700

    Suppress warning on uninitialized variable use by initializing variable.

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

commit fb59cd1aad5e1bcd9d1cb4b0932119b4265e8dce
Merge: 2ece58a 60b63ed
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Mon Oct 31 19:50:11 2016 +0100

    Merge pull request #2181 from jolting/patch-2
    
    Remove an unnecessary while (true)

commit 60b63ed5187a6242cf4c780aca7636162e62074e
Author: Hunter Laux <hunterlaux@gmail.com>
Date:   Mon Oct 31 11:46:57 2016 -0700

    Remove an unnecessary while (true)
    
    This block of code will either return -1 or fall through.
    The while (true) does nothing.
    The braces limit the scope of int rc.

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

commit 2ece58acfd19db8ccd46a480bd0f6e79f24fa16b
Merge: 16f5847 b7f2c7e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sat Oct 29 23:51:28 2016 +0100

    Merge pull request #2180 from cxreg/xpub-metadata-corruption
    
    Increment metadata refcount while it's in pending_metadata

commit b7f2c7e7ea7428c89ce56b08edbe0d5aa599c713
Author: Dave Olszewski <daveo@nodesource.com>
Date:   Sat Oct 29 12:21:35 2016 -0700

    Increment metadata refcount while it's in pending_metadata

 src/xpub.cpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

commit 16f584745d8afbddb2ba325acdfa6a92d1a853dd
Merge: ac14981 2484d1c
Author: Doron Somech <somdoron@gmail.com>
Date:   Sat Oct 29 12:32:09 2016 +0300

    Merge pull request #2179 from bluca/alignment_windoz
    
    Problem: MS VC++ build broken

commit 2484d1c8591300736dd9d9f40b00f0c69eb1b335
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Oct 28 16:31:48 2016 +0100

    Problem: MS VC++ build broken
    
    Solution: try to detect architecture if building with VC++ and
    hardcode pointer size accordingly.
    Expressions are not allowed inside declspec intrinsics, which
    includes other intrinsics.

 include/zmq.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

commit ac149816511bb2ea66292a3203b21015ca625ebe
Merge: 0d032c9 df367a6
Author: Doron Somech <somdoron@gmail.com>
Date:   Fri Oct 28 18:00:06 2016 +0300

    Merge pull request #2177 from bluca/alignment
    
    Problem: pointer union for zmq_msg_t is a hack

commit df367a6682bd8334a2d821fc0fd9c69d3acebfd4
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Aug 25 23:33:00 2016 +0100

    Problem: pointer union for zmq_msg_t is a hack
    
    Solution: use compiler's alignment attributes instead which is
    clearer and less of a hack.
    Pointer alignment violations causing crashes on architectures
    such as sparc64 and aarch64.
    This also avoid triggering ABI checkers as the change is compatible
    even though applications that suffer from the bug should rebuild to
    take advantage of the fix.

 include/zmq.h | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

commit 0d032c99a6e912cfc2f47fb8e9fb9df041b8bbfb
Merge: 2e92643 0dfb32a
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Oct 28 11:29:58 2016 +0100

    Merge pull request #2176 from robertcastle/master
    
    clock_gettime is now defined in macOS 10.12 SDK

commit 0dfb32a2595e96bd5850987c7cab9a7936e672e8
Author: Robert Castle <robert@egomotion.co.uk>
Date:   Fri Oct 28 11:04:21 2016 +0100

    Problem: clock_gettime is now defined in macOS 10.12 SDK
    
    Solution: Rename the custom implementation of clock_gettime for macOS to
    alt_clock_gettime and wrap all usage in preprocessor macros to only enable the
    alternative version when using macOS <= 10.11.
    
    This issue occurs when targeting macOS 10.11 or earlier but using the 10.12
    or newer SDK.

 src/clock.cpp              | 7 ++++++-
 src/clock.hpp              | 2 +-
 src/condition_variable.hpp | 5 +++++
 3 files changed, 12 insertions(+), 2 deletions(-)

commit 2e9264354c54936b5025bebf7a9aa8f2e624efe7
Merge: 1e69309 8345fe9
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Thu Oct 27 18:34:05 2016 +0200

    Merge pull request #2173 from bluca/without_docs
    
    Problem: build API incompatible with 4.1

commit 8345fe9e9504675cb341d2106c18b917ffd2aa28
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Thu Oct 27 14:13:44 2016 +0100

    Problem: build API incompatible with 4.1
    
    Solution: keep the new --without-docs option, but also keep the old
    --without-documentation with an added deprecation warning.
    We can then remove it in the next major release, to leave enough time
    for users and maintainers to change it without disruptions.

 acinclude.m4 | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

commit 1e69309e21c2544c85bfb9ddbfff688411c977de
Merge: 669ff41 25bf30b
Author: Doron Somech <somdoron@gmail.com>
Date:   Mon Oct 24 00:52:03 2016 +0300

    Merge pull request #2171 from bluca/connect_reuse_addr
    
    Problem: 2 connects with same sourceip:port to different destip:port fail

commit 25bf30bebe2580bfa36fe9970cb2fae834896a7b
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Oct 23 21:30:51 2016 +0100

    Problem: 2 connects with same sourceip:port to different destip:port fail
    
    Solution: during a connect with a TCP endpoint if a source address is
    passed set the SO_REUSEADDR flag on the socket before the bind system
    call.
    Add unit test to cover this case for both IPv4 and IPv6.

 src/tcp_connecter.cpp     |  12 ++++
 tests/test_reqrep_tcp.cpp | 152 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 164 insertions(+)

commit 669ff41d52023d6512ef51484858cc6589f28afd
Merge: 1a02b1b 92b1b2b
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Sun Oct 23 20:15:26 2016 +0100

    Merge pull request #2170 from vielmetti/patch-1
    
    Update INSTALL to note issues with 'make -j check'

commit 92b1b2b18184b63bdd1586df5b46c586d54f200f
Author: Edward Vielmetti <edward.vielmetti@gmail.com>
Date:   Sun Oct 23 15:12:45 2016 -0400

    Update INSTALL to note issues with 'make -j check'
    
    Some of the tests cannot be run in parallel; until the Makefile is fixed, note this in INSTALL.

 INSTALL | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit 1a02b1b3f2fde6288579cbb0ff9a0b1f195e1812
Merge: d8f55dd bb7421d
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Oct 21 22:23:24 2016 +0100

    Merge pull request #2168 from outotec/fix-build-2
    
    Problem: Does not build in Visual Studio 2013 / Win32

commit bb7421dda2d50a38792536bfadc3eba9a075ddeb
Author: Juha Reunanen <juha.reunanen@tomaattinen.com>
Date:   Fri Oct 21 21:12:54 2016 +0300

    Problem: Does not build in Visual Studio 2013 / Win32
    
    Solution: #include <netioapi.h> and change some IP_ADAPTER_UNICAST_ADDRESS data types

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

commit d8f55dde571a162aa81be3532897542cd8c35cb4
Merge: 6ce2fb2 57c765e
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Oct 18 08:48:35 2016 +0100

    Merge pull request #2164 from reunanen/add-EHOSTUNREACH-to-errno_to_string
    
    Add EHOSTUNREACH to errno_to_string

commit 57c765ef5a397d61dd5739ac727b9b2c8bb6ed7e
Author: Juha Reunanen <juha.reunanen@tomaattinen.com>
Date:   Tue Oct 18 06:46:50 2016 +0300

    Add EHOSTUNREACH to errno_to_string

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

commit 6ce2fb2b068adf6df33e7a30a41025a8e5305e90
Merge: b031325 c5b528f
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Fri Oct 14 13:55:13 2016 +0100

    Merge pull request #2162 from hnwyllmm/master
    
    performance enhancement

commit c5b528fdcd95dbfb914dc0c05bf7546e1d5cdc34
Author: Laughing <hnwyllmm@126.com>
Date:   Fri Oct 14 20:33:27 2016 +0800

    performance enhancement
    
    use clock_gettime if there is no instruction to get cpu tick. It will take about 10% performance enhancement in AIX 7.1.

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

commit b031325996597759dce1130c63449422dacf8f9e
Author: Jens Auer <jens-auer@users.noreply.github.com>
Date:   Wed Oct 12 11:34:22 2016 +0200

    Fixed problems from previous PR for #2158 (#2160)
    
    * - Fixed windows build errors
    - Extended monitor lock scope to prevent race-condition between
      process_stop and monitor
    
    * - Fixed windows build errors
    - Extended monitor lock scope to prevent race-condition between
      process_stop and monitor

 src/socket_base.cpp | 25 ++++++++++++-------------
 src/socket_base.hpp |  2 +-
 2 files changed, 13 insertions(+), 14 deletions(-)

commit 398f256a5ca6666d5a2e64422f163cfbf37f0f88
Merge: 23be1dc d1c7280
Author: Luca Boccassi <luca.boccassi@gmail.com>
Date:   Tue Oct 11 16:07:29 2016 +0100

    Merge pull request #2159 from jens-auer/2158
    
    #2158: Add mutex for monitor socket

commit d1c7280d05834d9e165757973d5d79eb18dca517
Author: Jens Auer <jens.auer@cgi.com>
Date:   Tue Oct 11 13:28:45 2016 +0000

    Add mutex for monitor socket

 src/socket_base.cpp | 69 ++++++++++++++++++++++++++++++++---------------------
 src/socket_base.hpp | 15 ++++++++----
 2 files changed, 53 insertions(+), 31 deletions(-)

commit 23be1dc0ec239ccdfca44d6e07a43682be8bba96
Merge: f696290 134f08b
Author: Constantin Rack <c-rack@users.noreply.github.com>
Date:   Tue Oct 11 05:56:26 2016 +0200

    Merge pull request #2157 from athampy/master
    
    Fixed issue #2155

commit 134f08b3cad584eca45bad1c26c7a3e6a06b2fb5
Author: Akhil Thampy <akhilthampy@yahoo.com>
Date:   Mon Oct 10 17:50:50 2016 -0500

    Fixed issue #2155

 src/mtrie.cpp | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

commit f6962903a721222e55e6073d2f3332cbc9daf241
Author: Mário Kašuba <mario.kasuba@it-academy.sk>
Date:   Mon Oct 10 17:29:53 2016 +0200

    Implemented network interface name resolution on Windows platform
    Added fallback mechanism for specific socket binding on Windows platform with IPv6 enabled

 src/tcp_address.cpp | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 src/tcp_address.hpp |   5 ++
 2 files changed, 153 insertions(+), 6 deletions(-)

commit 3996d4e20d7a2e87825a5d957feafd6b763f4b9b
Author: Mário Kašuba <mario.kasuba@it-academy.sk>
Date:   Mon Oct 10 11:02:32 2016 +0200

    Merge branch 'master' of github.com:zeromq/libzmq
    
    # Conflicts:
    #       builds/msvc/vs2012/libsodium.import.props

 .gitignore                                       |  177 ++
 .hgeol                                           |    2 +
 .mailmap                                         |   81 +
 .travis.yml                                      |   69 +
 AUTHORS                                          |  148 ++
 CMakeLists.txt                                   |  977 +++++++++
 COPYING                                          |  674 +++++++
 COPYING.LESSER                                   |  181 ++
 Dockerfile                                       |   11 +
 Doxygen.cfg                                      | 2320 ++++++++++++++++++++++
 FindSodium.cmake                                 |   40 +
 INSTALL                                          |  251 +++
 Makefile.am                                      |  827 ++++++++
 NEWS                                             |  978 +++++++++
 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                                     |  976 +++++++++
 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/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                                     |  676 +++++++
 doc/Makefile.am                                  |   63 +
 doc/asciidoc.conf                                |   56 +
 doc/zmq.txt                                      |  270 +++
 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                              |   97 +
 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                           | 1211 +++++++++++
 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                                    |  618 ++++++
 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                     |  200 ++
 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                                    |  239 +++
 src/clock.hpp                                    |   83 +
 src/command.hpp                                  |  171 ++
 src/condition_variable.hpp                       |  208 ++
 src/config.hpp                                   |   98 +
 src/ctx.cpp                                      |  621 ++++++
 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                                    |  195 ++
 src/epoll.hpp                                    |  115 ++
 src/err.cpp                                      |  445 +++++
 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                                       |  175 ++
 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                                    |  436 ++++
 src/mtrie.hpp                                    |  102 +
 src/mutex.hpp                                    |  213 ++
 src/norm_engine.cpp                              |  728 +++++++
 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                                    |  205 ++
 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                                 |  646 ++++++
 src/signaler.hpp                                 |   91 +
 src/socket_base.cpp                              | 1713 ++++++++++++++++
 src/socket_base.hpp                              |  291 +++
 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                            | 1087 ++++++++++
 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                              |  734 +++++++
 src/tcp_address.hpp                              |  112 ++
 src/tcp_connecter.cpp                            |  404 ++++
 src/tcp_connecter.hpp                            |  134 ++
 src/tcp_listener.cpp                             |  338 ++++
 src/tcp_listener.hpp                             |   98 +
 src/thread.cpp                                   |  156 ++
 src/thread.hpp                                   |   89 +
 src/timers.cpp                                   |  170 ++
 src/timers.hpp                                   |  108 +
 src/tipc_address.cpp                             |  122 ++
 src/tipc_address.hpp                             |   75 +
 src/tipc_connecter.cpp                           |  266 +++
 src/tipc_connecter.hpp                           |  137 ++
 src/tipc_listener.cpp                            |  188 ++
 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                                     |   87 +
 src/vmci.hpp                                     |   61 +
 src/vmci_address.cpp                             |  168 ++
 src/vmci_address.hpp                             |   71 +
 src/vmci_connecter.cpp                           |  305 +++
 src/vmci_connecter.hpp                           |  136 ++
 src/vmci_listener.cpp                            |  260 +++
 src/vmci_listener.hpp                            |  102 +
 src/windows.hpp                                  |   90 +
 src/wire.hpp                                     |  108 +
 src/xpub.cpp                                     |  318 +++
 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                                      | 1523 ++++++++++++++
 src/zmq_draft.h                                  |  114 ++
 src/zmq_utils.cpp                                |  290 +++
 tests/CMakeLists.txt                             |  180 ++
 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                       |   80 +
 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                        |  273 +++
 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             |  119 ++
 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                               |  382 ++++
 tools/curve_keygen.cpp                           |   58 +
 version.sh                                       |   21 +
 588 files changed, 95627 insertions(+)
