diff -Nru zeromq3-3.2.4+dfsg/aclocal.m4 zeromq3-4.0.4/aclocal.m4 --- zeromq3-3.2.4+dfsg/aclocal.m4 2013-09-20 09:18:56.000000000 +0000 +++ zeromq3-4.0.4/aclocal.m4 2014-03-10 21:42:37.000000000 +0000 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- +# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, @@ -14,8 +14,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, +[m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) @@ -198,7 +198,7 @@ [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], +m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -214,7 +214,7 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl +[AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) diff -Nru zeromq3-3.2.4+dfsg/AUTHORS zeromq3-4.0.4/AUTHORS --- zeromq3-3.2.4+dfsg/AUTHORS 2013-02-01 09:02:44.000000000 +0000 +++ zeromq3-4.0.4/AUTHORS 2013-11-13 17:57:50.000000000 +0000 @@ -1,15 +1,26 @@ -Contributors -============ +Corporate Contributors +====================== + +Copyright (c) 2007-2013 iMatix Corporation +Copyright (c) 2009-2011 250bpm s.r.o. +Copyright (c) 2010-2011 Miru Limited +Copyright (c) 2011 VMware, Inc. +Copyright (c) 2012 Spotify AB + +Individual Contributors +======================= AJ Lewis Alexej Lotz Andrew Thompson Asko Kauppi +Attila Mark Barak Amar Ben Gray Bernd Prager Bernd Melchers Bob Beaty +Brandon Carpenter Brian Buchanan Brett Cameron Burak Arslan @@ -18,6 +29,7 @@ Chris Rempel Chris Wong Christian Gudrian +Christian Kamm Chuck Remes Conrad D. Steenberg Dhammika Pathirana @@ -40,6 +52,7 @@ Joe Thornber Jon Dyte Kamil Shakirov +Ken Steele Marc Rossi Martin Hurton Martin Lucina @@ -64,6 +77,7 @@ Philip Kovacs Pieter Hintjens Piotr Trojanek +Richard Newton Robert G. Jakabosky Sebastian Otaegui Stefan Radomski @@ -78,6 +92,7 @@ Tore Halvorsen Vitaly Mayatskikh Lourens Naudé +Hardeep Singh Credits ======= @@ -107,4 +122,3 @@ Robert Zhang Toralf Wittner Zed Shaw - diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/c_local_lat/c_local_lat.vcxproj zeromq3-4.0.4/builds/msvc/c_local_lat/c_local_lat.vcxproj --- zeromq3-3.2.4+dfsg/builds/msvc/c_local_lat/c_local_lat.vcxproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/c_local_lat/c_local_lat.vcxproj 2013-11-13 17:57:50.000000000 +0000 @@ -84,4 +84,4 @@ - \ No newline at end of file + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/c_local_thr/c_local_thr.vcproj zeromq3-4.0.4/builds/msvc/c_local_thr/c_local_thr.vcproj --- zeromq3-3.2.4+dfsg/builds/msvc/c_local_thr/c_local_thr.vcproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/c_local_thr/c_local_thr.vcproj 2013-11-13 17:57:50.000000000 +0000 @@ -24,6 +24,7 @@ > 10.0.40219.1 AllRules.ruleset + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + @@ -84,4 +104,4 @@ - \ No newline at end of file + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/c_remote_lat/c_remote_lat.vcxproj zeromq3-4.0.4/builds/msvc/c_remote_lat/c_remote_lat.vcxproj --- zeromq3-3.2.4+dfsg/builds/msvc/c_remote_lat/c_remote_lat.vcxproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/c_remote_lat/c_remote_lat.vcxproj 2013-11-13 17:57:50.000000000 +0000 @@ -84,4 +84,4 @@ - \ No newline at end of file + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/c_remote_thr/c_remote_thr.vcproj zeromq3-4.0.4/builds/msvc/c_remote_thr/c_remote_thr.vcproj --- zeromq3-3.2.4+dfsg/builds/msvc/c_remote_thr/c_remote_thr.vcproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/c_remote_thr/c_remote_thr.vcproj 2013-11-13 17:57:50.000000000 +0000 @@ -24,6 +24,7 @@ > 10.0.40219.1 AllRules.ruleset + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + @@ -84,4 +104,4 @@ - \ No newline at end of file + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/errno.cpp zeromq3-4.0.4/builds/msvc/errno.cpp --- zeromq3-3.2.4+dfsg/builds/msvc/errno.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/errno.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,4 +1,4 @@ -#if defined WINCE +#if defined _WIN32_WCE //#include "..\..\include\zmq.h" #include "..\..\src\err.hpp" diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/errno.hpp zeromq3-4.0.4/builds/msvc/errno.hpp --- zeromq3-3.2.4+dfsg/builds/msvc/errno.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/errno.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -13,7 +13,7 @@ //#define ECHILD 10 #define EAGAIN 11 //#define ENOMEM 12 -//#define EACCES 13 +#define EACCES 13 #define EFAULT 14 //#define EOSERR 15 // rk //#define EBUSY 16 diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/inproc_lat/inproc_lat.vcproj zeromq3-4.0.4/builds/msvc/inproc_lat/inproc_lat.vcproj --- zeromq3-3.2.4+dfsg/builds/msvc/inproc_lat/inproc_lat.vcproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/inproc_lat/inproc_lat.vcproj 2013-11-13 17:57:50.000000000 +0000 @@ -1,174 +1,176 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/inproc_lat/inproc_lat.vcxproj zeromq3-4.0.4/builds/msvc/inproc_lat/inproc_lat.vcxproj --- zeromq3-3.2.4+dfsg/builds/msvc/inproc_lat/inproc_lat.vcxproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/inproc_lat/inproc_lat.vcxproj 2013-11-13 17:57:50.000000000 +0000 @@ -71,6 +71,26 @@ <_ProjectFileVersion>10.0.40219.1 AllRules.ruleset + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + @@ -83,4 +103,4 @@ - \ No newline at end of file + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/inproc_thr/inproc_thr.vcproj zeromq3-4.0.4/builds/msvc/inproc_thr/inproc_thr.vcproj --- zeromq3-3.2.4+dfsg/builds/msvc/inproc_thr/inproc_thr.vcproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/inproc_thr/inproc_thr.vcproj 2013-11-13 17:57:50.000000000 +0000 @@ -1,174 +1,176 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/inproc_thr/inproc_thr.vcxproj zeromq3-4.0.4/builds/msvc/inproc_thr/inproc_thr.vcxproj --- zeromq3-3.2.4+dfsg/builds/msvc/inproc_thr/inproc_thr.vcxproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/inproc_thr/inproc_thr.vcxproj 2013-11-13 17:57:50.000000000 +0000 @@ -71,6 +71,26 @@ <_ProjectFileVersion>10.0.40219.1 AllRules.ruleset + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + + + + copy ..\platform.hpp ..\..\..\perf + + @@ -83,4 +103,4 @@ - \ No newline at end of file + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/libzmq/libzmq.vcproj zeromq3-4.0.4/builds/msvc/libzmq/libzmq.vcproj --- zeromq3-3.2.4+dfsg/builds/msvc/libzmq/libzmq.vcproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/libzmq/libzmq.vcproj 2013-12-08 07:02:10.000000000 +0000 @@ -1,804 +1,997 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/libzmq/libzmq.vcxproj zeromq3-4.0.4/builds/msvc/libzmq/libzmq.vcxproj --- zeromq3-3.2.4+dfsg/builds/msvc/libzmq/libzmq.vcxproj 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/libzmq/libzmq.vcxproj 2013-11-13 17:57:50.000000000 +0000 @@ -17,6 +17,14 @@ Release x64 + + StaticDebug + Win32 + + + StaticRelease + Win32 + WithOpenPGM Win32 @@ -59,6 +67,15 @@ DynamicLibrary MultiByte + + StaticLibrary + MultiByte + true + + + StaticLibrary + MultiByte + @@ -97,20 +114,65 @@ + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 AllRules.ruleset + + + copy ..\platform.hpp ..\..\..\src + + + + + copy ..\platform.hpp ..\..\..\src + + + + + copy ..\platform.hpp ..\..\..\src + + + + + copy ..\platform.hpp ..\..\..\src + + + + + copy ..\platform.hpp ..\..\..\src + + + MultiThreadedDLL + + + + + copy ..\platform.hpp ..\..\..\src + + + MultiThreadedDebugDLL + + - - @@ -123,8 +185,10 @@ + + @@ -133,6 +197,7 @@ + @@ -143,6 +208,8 @@ + + @@ -151,6 +218,7 @@ + @@ -161,6 +229,8 @@ + + @@ -197,9 +267,11 @@ + + @@ -208,6 +280,7 @@ + @@ -218,6 +291,8 @@ + + @@ -226,6 +301,7 @@ + diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/libzmq/libzmq.vcxproj.filters zeromq3-4.0.4/builds/msvc/libzmq/libzmq.vcxproj.filters --- zeromq3-3.2.4+dfsg/builds/msvc/libzmq/libzmq.vcxproj.filters 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/libzmq/libzmq.vcxproj.filters 2013-11-13 17:57:50.000000000 +0000 @@ -23,18 +23,12 @@ Source Files - - Source Files - Source Files Source Files - - Source Files - Source Files @@ -191,6 +185,30 @@ Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + @@ -427,5 +445,23 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + \ No newline at end of file diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/Makefile.am zeromq3-4.0.4/builds/msvc/Makefile.am --- zeromq3-3.2.4+dfsg/builds/msvc/Makefile.am 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/Makefile.am 2013-11-13 17:57:50.000000000 +0000 @@ -22,11 +22,13 @@ properties/Executable.props \ properties/Precompiled.props \ properties/Release.props \ + properties/Static.props \ properties/Win32.props \ properties/Win32_Release.props \ properties/WithOpenPGM.props \ properties/x64.props \ - properties/ZeroMQ.props + properties/ZeroMQ.props \ + properties/ZeroMQ_Static.props PRECOMPILED_DIST = ../../src/precompiled.hpp \ ../../src/precompiled.cpp diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/Makefile.in zeromq3-4.0.4/builds/msvc/Makefile.in --- zeromq3-3.2.4+dfsg/builds/msvc/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/Makefile.in 2014-03-10 21:42:41.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -15,23 +15,6 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -58,7 +41,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -73,11 +56,6 @@ am__v_at_0 = @ SOURCES = DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -240,11 +218,13 @@ properties/Executable.props \ properties/Precompiled.props \ properties/Release.props \ + properties/Static.props \ properties/Win32.props \ properties/Win32_Release.props \ properties/WithOpenPGM.props \ properties/x64.props \ - properties/ZeroMQ.props + properties/ZeroMQ.props \ + properties/ZeroMQ_Static.props PRECOMPILED_DIST = ../../src/precompiled.hpp \ ../../src/precompiled.cpp diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/msvc10.sln zeromq3-4.0.4/builds/msvc/msvc10.sln --- zeromq3-3.2.4+dfsg/builds/msvc/msvc10.sln 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/msvc10.sln 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,6 @@  -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2012 for Windows Desktop Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzmq", "libzmq\libzmq.vcxproj", "{641C5F36-32EE-4323-B740-992B651CF9D6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "local_lat", "c_local_lat\c_local_lat.vcxproj", "{4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}" @@ -21,6 +21,10 @@ Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 + StaticDebug|Win32 = StaticDebug|Win32 + StaticDebug|x64 = StaticDebug|x64 + StaticRelease|Win32 = StaticRelease|Win32 + StaticRelease|x64 = StaticRelease|x64 WithOpenPGM|Win32 = WithOpenPGM|Win32 WithOpenPGM|x64 = WithOpenPGM|x64 EndGlobalSection @@ -33,6 +37,12 @@ {641C5F36-32EE-4323-B740-992B651CF9D6}.Release|Win32.Build.0 = Release|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.Release|x64.ActiveCfg = Release|x64 {641C5F36-32EE-4323-B740-992B651CF9D6}.Release|x64.Build.0 = Release|x64 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|Win32.ActiveCfg = StaticDebug|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|Win32.Build.0 = StaticDebug|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|x64.ActiveCfg = StaticDebug|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|Win32.ActiveCfg = StaticRelease|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|Win32.Build.0 = StaticRelease|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|x64.ActiveCfg = StaticRelease|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.WithOpenPGM|Win32.ActiveCfg = WithOpenPGM|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.WithOpenPGM|Win32.Build.0 = WithOpenPGM|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.WithOpenPGM|x64.ActiveCfg = WithOpenPGM|x64 @@ -45,6 +55,10 @@ {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.Release|Win32.Build.0 = Release|Win32 {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.Release|x64.ActiveCfg = Release|x64 {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.Release|x64.Build.0 = Release|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticDebug|Win32.ActiveCfg = Debug|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticDebug|x64.ActiveCfg = Debug|x64 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticRelease|Win32.ActiveCfg = Release|Win32 + {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.StaticRelease|x64.ActiveCfg = Release|x64 {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.WithOpenPGM|Win32.ActiveCfg = Release|Win32 {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.WithOpenPGM|Win32.Build.0 = Release|Win32 {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.WithOpenPGM|x64.ActiveCfg = Release|x64 @@ -57,6 +71,10 @@ {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.Release|Win32.Build.0 = Release|Win32 {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.Release|x64.ActiveCfg = Release|x64 {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.Release|x64.Build.0 = Release|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticDebug|Win32.ActiveCfg = Debug|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticDebug|x64.ActiveCfg = Debug|x64 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticRelease|Win32.ActiveCfg = Release|Win32 + {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.StaticRelease|x64.ActiveCfg = Release|x64 {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.WithOpenPGM|Win32.ActiveCfg = Release|Win32 {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.WithOpenPGM|Win32.Build.0 = Release|Win32 {9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}.WithOpenPGM|x64.ActiveCfg = Release|x64 @@ -69,6 +87,10 @@ {8EF2DF6B-6646-460F-8032-913B70FE0E94}.Release|Win32.Build.0 = Release|Win32 {8EF2DF6B-6646-460F-8032-913B70FE0E94}.Release|x64.ActiveCfg = Release|x64 {8EF2DF6B-6646-460F-8032-913B70FE0E94}.Release|x64.Build.0 = Release|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticDebug|Win32.ActiveCfg = Debug|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticDebug|x64.ActiveCfg = Debug|x64 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticRelease|Win32.ActiveCfg = Release|Win32 + {8EF2DF6B-6646-460F-8032-913B70FE0E94}.StaticRelease|x64.ActiveCfg = Release|x64 {8EF2DF6B-6646-460F-8032-913B70FE0E94}.WithOpenPGM|Win32.ActiveCfg = Release|Win32 {8EF2DF6B-6646-460F-8032-913B70FE0E94}.WithOpenPGM|Win32.Build.0 = Release|Win32 {8EF2DF6B-6646-460F-8032-913B70FE0E94}.WithOpenPGM|x64.ActiveCfg = Release|x64 @@ -81,6 +103,10 @@ {B15E059C-0CBB-4A82-8C42-6567FB650802}.Release|Win32.Build.0 = Release|Win32 {B15E059C-0CBB-4A82-8C42-6567FB650802}.Release|x64.ActiveCfg = Release|x64 {B15E059C-0CBB-4A82-8C42-6567FB650802}.Release|x64.Build.0 = Release|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticDebug|Win32.ActiveCfg = Debug|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticDebug|x64.ActiveCfg = Debug|x64 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticRelease|Win32.ActiveCfg = Release|Win32 + {B15E059C-0CBB-4A82-8C42-6567FB650802}.StaticRelease|x64.ActiveCfg = Release|x64 {B15E059C-0CBB-4A82-8C42-6567FB650802}.WithOpenPGM|Win32.ActiveCfg = Release|Win32 {B15E059C-0CBB-4A82-8C42-6567FB650802}.WithOpenPGM|Win32.Build.0 = Release|Win32 {B15E059C-0CBB-4A82-8C42-6567FB650802}.WithOpenPGM|x64.ActiveCfg = Release|x64 @@ -93,6 +119,10 @@ {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.Release|Win32.Build.0 = Release|Win32 {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.Release|x64.ActiveCfg = Release|x64 {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.Release|x64.Build.0 = Release|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticDebug|Win32.ActiveCfg = Debug|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticDebug|x64.ActiveCfg = Debug|x64 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticRelease|Win32.ActiveCfg = Release|Win32 + {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.StaticRelease|x64.ActiveCfg = Release|x64 {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.WithOpenPGM|Win32.ActiveCfg = Release|Win32 {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.WithOpenPGM|Win32.Build.0 = Release|Win32 {6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}.WithOpenPGM|x64.ActiveCfg = Release|x64 @@ -105,6 +135,10 @@ {1077E977-95DD-4E73-A692-74647DD0CC1E}.Release|Win32.Build.0 = Release|Win32 {1077E977-95DD-4E73-A692-74647DD0CC1E}.Release|x64.ActiveCfg = Release|x64 {1077E977-95DD-4E73-A692-74647DD0CC1E}.Release|x64.Build.0 = Release|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticDebug|Win32.ActiveCfg = Debug|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticDebug|x64.ActiveCfg = Debug|x64 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticRelease|Win32.ActiveCfg = Release|Win32 + {1077E977-95DD-4E73-A692-74647DD0CC1E}.StaticRelease|x64.ActiveCfg = Release|x64 {1077E977-95DD-4E73-A692-74647DD0CC1E}.WithOpenPGM|Win32.ActiveCfg = Release|Win32 {1077E977-95DD-4E73-A692-74647DD0CC1E}.WithOpenPGM|Win32.Build.0 = Release|Win32 {1077E977-95DD-4E73-A692-74647DD0CC1E}.WithOpenPGM|x64.ActiveCfg = Release|x64 diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/msvc.sln zeromq3-4.0.4/builds/msvc/msvc.sln --- zeromq3-3.2.4+dfsg/builds/msvc/msvc.sln 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/msvc.sln 2013-11-13 17:57:50.000000000 +0000 @@ -37,6 +37,8 @@ GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 + StaticDebug|Win32 = StaticDebug|Win32 + StaticRelease|Win32 = StaticRelease|Win32 WithOpenPGM|Win32 = WithOpenPGM|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution @@ -44,6 +46,10 @@ {641C5F36-32EE-4323-B740-992B651CF9D6}.Debug|Win32.Build.0 = Debug|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.Release|Win32.ActiveCfg = Release|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.Release|Win32.Build.0 = Release|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|Win32.ActiveCfg = StaticDebug|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticDebug|Win32.Build.0 = StaticDebug|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|Win32.ActiveCfg = StaticRelease|Win32 + {641C5F36-32EE-4323-B740-992B651CF9D6}.StaticRelease|Win32.Build.0 = StaticRelease|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.WithOpenPGM|Win32.ActiveCfg = WithOpenPGM|Win32 {641C5F36-32EE-4323-B740-992B651CF9D6}.WithOpenPGM|Win32.Build.0 = WithOpenPGM|Win32 {4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}.Debug|Win32.ActiveCfg = Debug|Win32 diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/properties/Static.props zeromq3-4.0.4/builds/msvc/properties/Static.props --- zeromq3-3.2.4+dfsg/builds/msvc/properties/Static.props 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/properties/Static.props 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,15 @@ + + + + + + + <_ProjectFileVersion>10.0.30319.1 + <_PropertySheetDisplayName>Static Library + + + + _WINDOWS;%(PreprocessorDefinitions) + + + \ No newline at end of file diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/properties/ZeroMQ.props zeromq3-4.0.4/builds/msvc/properties/ZeroMQ.props --- zeromq3-3.2.4+dfsg/builds/msvc/properties/ZeroMQ.props 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/properties/ZeroMQ.props 2013-12-08 07:02:10.000000000 +0000 @@ -14,7 +14,6 @@ _CRT_SECURE_NO_WARNINGS;DLL_EXPORT;FD_SETSIZE=1024;%(PreprocessorDefinitions) - 4355 Ws2_32.lib;Rpcrt4.lib;%(AdditionalDependencies) diff -Nru zeromq3-3.2.4+dfsg/builds/msvc/properties/ZeroMQ_Static.props zeromq3-4.0.4/builds/msvc/properties/ZeroMQ_Static.props --- zeromq3-3.2.4+dfsg/builds/msvc/properties/ZeroMQ_Static.props 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/builds/msvc/properties/ZeroMQ_Static.props 2013-12-08 07:02:10.000000000 +0000 @@ -0,0 +1,23 @@ + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + <_PropertySheetDisplayName>ZeroMQ Static Settings + + + + copy ..\platform.hpp ..\..\..\src + + + _CRT_SECURE_NO_WARNINGS;ZMQ_STATIC;FD_SETSIZE=1024;%(PreprocessorDefinitions) + + + Ws2_32.lib;Rpcrt4.lib;%(AdditionalDependencies) + /ignore:4006 /ignore:4221 %(AdditionalOptions) + + + \ No newline at end of file diff -Nru zeromq3-3.2.4+dfsg/builds/redhat/zeromq.spec.in zeromq3-4.0.4/builds/redhat/zeromq.spec.in --- zeromq3-3.2.4+dfsg/builds/redhat/zeromq.spec.in 2013-02-01 09:02:44.000000000 +0000 +++ zeromq3-4.0.4/builds/redhat/zeromq.spec.in 2013-11-13 17:57:50.000000000 +0000 @@ -60,7 +60,7 @@ %build %ifarch pentium3 pentium4 athlon i386 i486 i586 i686 x86_64 - %configure --with-pgm --with-pic --with-gnu-ld + %configure --with-pgm --with-pic --with-gnu-ld %else %configure %endif @@ -113,6 +113,7 @@ %{_mandir}/man3/zmq_ctx_get.3.gz %{_mandir}/man3/zmq_ctx_new.3.gz %{_mandir}/man3/zmq_ctx_set.3.gz +%{_mandir}/man3/zmq_ctx_term.3.gz %{_mandir}/man3/zmq_msg_recv.3.gz %{_mandir}/man3/zmq_errno.3.gz %{_mandir}/man3/zmq_getsockopt.3.gz diff -Nru zeromq3-3.2.4+dfsg/ChangeLog zeromq3-4.0.4/ChangeLog --- zeromq3-3.2.4+dfsg/ChangeLog 2013-09-20 09:58:50.000000000 +0000 +++ zeromq3-4.0.4/ChangeLog 2014-03-10 21:47:45.000000000 +0000 @@ -1,996 +1,8554 @@ # Generated by Makefile. Do not edit. -commit f45dd95ed85d4cff23c3be1fd673f3330005cd90 +commit 1ac53ed1f75202bbe36dd0b409736f90984638e5 +Merge: 2eb6336 7f08204 Author: Pieter Hintjens -Date: Fri Sep 20 11:19:26 2013 +0200 +Date: Mon Mar 10 22:41:14 2014 +0100 - Updated NEWS for release 3.2.4 + Merge pull request #66 from hintjens/master + + Source package did not build - NEWS | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) +commit 7f08204e9fa0c98cbf29229167d7a9939f61179c +Author: Pieter Hintjens +Date: Mon Mar 10 22:39:59 2014 +0100 -commit a7f2ad0b2485ce27ddd4fae1a206a3992bb1ae5c -Merge: 687ea29 b36545f + Source package did not build + + src/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2eb63360d60097ca6bca5eeffbc789c72994125c +Merge: e5473a7 930ef37 Author: Pieter Hintjens -Date: Mon Sep 16 22:39:18 2013 -0700 +Date: Mon Mar 10 13:41:48 2014 +0100 - Merge pull request #108 from hintjens/master + Merge pull request #64 from hintjens/master - Updated NEWS + Bumped NEWS for 4.0.4 release -commit b36545fe70ed774b333729fac0a7ce988c53d4e1 +commit 930ef3773861170fba44ab2f8cb1a47e5a3a315d Author: Pieter Hintjens -Date: Tue Sep 17 07:33:50 2013 +0200 +Date: Mon Mar 10 13:40:49 2014 +0100 - Updated NEWS + Bumped NEWS for 4.0.4 release - NEWS | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 687ea2928083464a21e401f6604b67a40c639764 -Merge: c832e3d 2255369 +commit e5473a7a6998311ef098ca25077ba1a3755df0dd +Merge: ebbbdf8 dd5603d Author: Pieter Hintjens -Date: Mon Sep 16 22:32:43 2013 -0700 +Date: Mon Mar 3 12:10:18 2014 +0100 - Merge pull request #107 from jpoliv/master + Merge pull request #63 from hintjens/master - Make ./configure --with-system-pgm detect the OpenPGM 5.2 system library. + Backported fix for #909 -commit 2255369a69ee35a8968530878c4d267fb6fd3b07 -Author: Jose Pedro Oliveira -Date: Tue Sep 17 01:15:09 2013 +0100 +commit dd5603d6e95e22e8b9f963680e99e11de6a4de3a +Author: Josh Blum +Date: Wed Feb 12 11:22:37 2014 -0800 - Make ./configure --with-system-pgm detect the OpenPGM 5.2 system library. - - Note that OpenPGM installs a versioned pkgconfig file (openpgm-5.2.pc, - openpgm-5.1.pc). + Updated NEWS for #909 - configure.in | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) + NEWS | 2 ++ + src/Makefile.am | 6 +++++- + 2 files changed, 7 insertions(+), 1 deletion(-) -commit c832e3d1dfe9b44c0e8853faf246d89baae92cc4 -Merge: ba597c6 7f44310 +commit 03dc70c3507e2e430d5c065cd64f60d8635f8837 Author: Pieter Hintjens -Date: Fri Aug 23 23:09:59 2013 -0700 +Date: Thu Feb 13 19:21:42 2014 +0100 - Merge pull request #105 from hintjens/master - - Revert "fixed compilation - added detection for _WIN32_WINNT" + Updated for #60 + + NEWS | 2 ++ + 1 file changed, 2 insertions(+) -commit 7f44310670cf3d3c903bab8d8356d4255238fb5d +commit 97292367ebeb541ae37c83f432bc4970511b6bf9 Author: Pieter Hintjens -Date: Sat Aug 24 08:08:04 2013 +0200 +Date: Thu Feb 13 09:33:14 2014 +0100 - Revert "fixed compilation - added detection for _WIN32_WINNT" - - This reverts commit d1ea5e525e7f8ba886eb4bc72155e6d68dafc269. + Updated NEWS - CMakeLists.txt | 26 ++++++++++---------------- - cmake/Modules/TestZMQVersion.cmake | 25 ++++++++++++++----------- - 2 files changed, 24 insertions(+), 27 deletions(-) + NEWS | 4 ++++ + 1 file changed, 4 insertions(+) -commit ba597c6e4752389a7c848c3d374cdcb5364d9a41 -Merge: d246aac d1ea5e5 +commit ebbbdf89cb29e68119d24acc55d89e4e95bbe638 +Merge: e655fd1 c7a7de1 Author: Pieter Hintjens -Date: Fri Aug 23 10:25:46 2013 -0700 +Date: Thu Feb 13 19:20:28 2014 +0100 - Merge pull request #104 from snikulov/cmake_fixes_msvc2012 + Merge pull request #60 from ricnewton/master - fixed compilation - added detection for _WIN32_WINNT + Fix hang on terminate when inproc is connected but never bound -commit d1ea5e525e7f8ba886eb4bc72155e6d68dafc269 -Author: Sergei Nikulov -Date: Thu Aug 22 00:59:15 2013 +0400 +commit c7a7de12a351b26c39758db5bc0d310ae6598c24 +Author: Richard Newton +Date: Thu Feb 13 14:56:09 2014 +0000 - fixed compilation - added detection for _WIN32_WINNT + Backported fix for #888 - CMakeLists.txt | 26 ++++++++++++++++---------- - cmake/Modules/TestZMQVersion.cmake | 25 +++++++++++-------------- - 2 files changed, 27 insertions(+), 24 deletions(-) + src/ctx.cpp | 10 +++++++++- + tests/test_inproc_connect.cpp | 20 +++++++++++++++++++- + tests/testutil.hpp | 2 +- + 3 files changed, 29 insertions(+), 3 deletions(-) -commit d246aaceee4beee9da529bf6aded5d247fb9d73f -Merge: 2aca7b2 143ae51 +commit e655fd138d948800df80959d71da12738a1c4bc1 +Merge: 0e147bb 2493a99 Author: Pieter Hintjens -Date: Tue Jul 30 00:25:02 2013 -0700 +Date: Wed Feb 5 21:11:10 2014 +0100 - Merge pull request #102 from hintjens/master + Merge pull request #57 from Debian/counter - Build failed on some boxes due to missing EOL at EOF + Fix timestamp counter on s390/s390x -commit 143ae519b4a325bb68d29e6f7e00cb98a440dd12 +commit 0e147bb69144856b81816d57c570aa867e76a2eb +Merge: d4f9886 4b9cd77 Author: Pieter Hintjens -Date: Tue Jul 30 09:24:22 2013 +0200 +Date: Wed Feb 5 21:10:49 2014 +0100 - Fixed missing whitespace at end of file + Merge pull request #56 from Debian/symbols + + Only export zmq_* symbols - tests/test_connect_delay.cpp | 1 + - 1 file changed, 1 insertion(+) +commit 4b9cd7764ab7ee6b9c82f216f0c8801493f33fa2 +Author: Alessandro Ghedini +Date: Sun Jan 12 12:30:45 2014 +0100 -commit 2aca7b233bbf40e10ac9d2b36e7f3691d03da52d -Merge: 00c0d58 1b5b18c -Author: Pieter Hintjens -Date: Mon Jul 15 00:52:12 2013 -0700 + Only export zmq_* symbols + + src/Makefile.am | 2 +- + src/libzmq.vers | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit 2493a9973582cb079a2bda5beeb8b1f3e9332b48 +Author: Alessandro Ghedini +Date: Sun Jan 12 12:31:31 2014 +0100 - Merge pull request #99 from leewoosung/hotfixes/patched + Fix timestamp counter on s390/s390x - Backport for LIBZMQ-541 fix + Fixes #811 -commit 00c0d5835fe4c05b51751b7916bbaba7c0b2f932 -Merge: aeb87cf 60b6474 + src/clock.cpp | 1 - + 1 file changed, 1 deletion(-) + +commit d4f988649da12415e431001fb7c0b748d4742714 +Merge: 0b11c31 830e022 Author: Pieter Hintjens -Date: Sat Jul 13 15:24:12 2013 -0700 +Date: Mon Feb 3 02:55:18 2014 -0800 - Merge pull request #98 from steve-o/master + Merge pull request #55 from hintjens/master - Migrate to using MSVC toolkit support independent of compiler versioning. + Fixed issue #868 -commit 60b64748e55c1ac25fc72b0f9c483de235069b3f -Author: Steven McCoy -Date: Sat Jul 13 17:13:34 2013 -0400 +commit 830e0229875791641e449ec1429c7e6a7f3fd163 +Author: Pieter Hintjens +Date: Mon Feb 3 11:20:58 2014 +0100 - Use MSVC2012's msbuild to drive everything using toolkit support for actually compilations. + Fixed #868 - build-windows-installers.cmd | 85 ++++++++++++++++++++++++++++++++++++++ - cmake/Modules/TestZMQVersion.cmake | 24 +++++------ - 2 files changed, 96 insertions(+), 13 deletions(-) + NEWS | 2 ++ + src/ip.cpp | 1 - + 2 files changed, 2 insertions(+), 1 deletion(-) -commit aeb87cf2ccd8bb20592e93c1d520c89ceaf32088 -Merge: a941934 703c1a6 +commit 5a576d22dbc3efa3e50832d61a5d73abc02ece28 Author: Pieter Hintjens -Date: Sat Jul 13 14:08:11 2013 -0700 - - Merge pull request #97 from steve-o/master - - Add MSVC 2013 support; Fix CMake regressions upstream +Date: Thu Jan 16 07:13:29 2014 +0100 -commit 703c1a6e04e2a3df5c5f431d1f1bb901ab7ca2a2 -Merge: 7604dd2 a941934 -Author: Steven McCoy -Date: Sat Jul 13 12:26:11 2013 -0400 + Updated NEWS for #584 - Merge remote-tracking branch 'upstream/master' + NEWS | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 7604dd2d47e6664da77e61aee0f18ad254ee1b34 -Author: Steven McCoy -Date: Sat Jul 13 12:24:52 2013 -0400 +commit 89c762fb0ae0f7a62b70be12d07139190bf52d97 +Author: Pieter Hintjens +Date: Wed Jan 1 13:43:14 2014 +0100 - Add MSVC 2013 preview support; Fix upstream CMake changes wrt. PDB and lib locations. + Clarified ZMQ_IDENTITY doc for duplicate identities - CMakeLists.txt | 35 +++++++++++++++++++++++------------ - cmake/Modules/TestZMQVersion.cmake | 19 ++++++++++++++++++- - 2 files changed, 41 insertions(+), 13 deletions(-) + doc/zmq_setsockopt.txt | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) -commit a941934e34b1020c621c320546fff9e4a478e43d -Merge: bd77676 51066c9 +commit 0b11c3174ef4e096dec07d0b4f62bbbeda93933e +Merge: 129cb00 63fe43a Author: Pieter Hintjens -Date: Thu Jul 11 14:35:23 2013 -0700 +Date: Wed Jan 15 22:11:50 2014 -0800 - Merge pull request #96 from pijyoi/master + Merge pull request #51 from EricMCornelius/master - simple Makefile for mingw32 + Corrects ypipe initialization when conflate is NOT enabled. -commit 51066c9767ad8139fe13c9d8f6599b7046396d13 -Author: KIU Shueng Chuan -Date: Thu Jul 11 21:49:45 2013 +0800 +commit 129cb00d8f04391fce7db3ba6732cf4fa0be2844 +Author: Pieter Hintjens +Date: Wed Jan 15 21:39:21 2014 +0100 - simple Makefile for mingw32 + Update README.md - builds/mingw32/Makefile.mingw32 | 31 +++++++++++++++++++++++++++++++ - builds/mingw32/platform.hpp | 32 ++++++++++++++++++++++++++++++++ - 2 files changed, 63 insertions(+) + README.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit bd77676d9943a43bcd87462a24a1f68cf91f741a -Merge: 8b6dcc8 20cce75 +commit 6982e69da4acc720f23bce6c7b8fb005ea4bbabe Author: Pieter Hintjens -Date: Wed Jul 3 15:42:47 2013 -0700 - - Merge pull request #93 from cjuniet/master - - [LIBZMQ-543] Fix compilation errors with Clang +Date: Wed Jan 15 21:39:00 2014 +0100 -commit 20cce750fabb13e5ad9399ecc4d4c71162b68394 -Author: Christophe Juniet -Date: Wed Jul 3 21:34:58 2013 +0200 + Update README.md - Fix a few invalid forward declarations - - A few forward declarations use mismatched struct and class types. Clang - won't compile this with -Werror. + README.md | 6 ++++++ + 1 file changed, 6 insertions(+) - src/decoder.hpp | 2 -- - src/encoder.hpp | 2 -- - src/i_decoder.hpp | 3 ++- - src/i_encoder.hpp | 2 +- - src/v1_encoder.hpp | 2 -- - 5 files changed, 3 insertions(+), 8 deletions(-) - -commit 1b5b18cba98052329e5a5b6a1a8c9e1104f344de -Author: WooSung -Date: Thu Jun 27 23:20:14 2013 +0900 +commit 63fe43a101ac0e70cb254463a4e76081f175d775 +Author: Eric Cornelius +Date: Wed Jan 15 12:18:50 2014 -0800 - LIBZMQ-541 fix + Corrects ypipe initialization when conflate is NOT enabled. Fixes LIBZMQ-584 - src/dist.cpp | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) + src/pipe.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 8b6dcc84207e125fb4bcd6f9e537e887af761a31 -Merge: ad14c56 3d353f8 -Author: Ian Barber -Date: Tue May 21 13:31:51 2013 -0700 +commit 3f3f9dcec23d4927586a4bf37afe3ee27efa2169 +Merge: a37c198 53bef03 +Author: Pieter Hintjens +Date: Thu Jan 2 14:45:47 2014 -0800 - Merge pull request #91 from hintjens/master + Merge pull request #47 from vortechs2000/fix_news - test_connect_delay was failing, so I backported the code from libzmq master. + Adjust NEWS to include LIBZMQ-576 -commit 3d353f830699eb8e1b0cd0ce8b939e4356de1556 -Author: Pieter Hintjens -Date: Tue May 21 10:25:02 2013 +0200 +commit 53bef03e7bc8199da915d76394f39dff4f257f04 +Author: AJ Lewis +Date: Thu Jan 2 16:39:03 2014 -0600 - Backported test_connect_delay.cpp from libzmq + Adjust NEWS to include LIBZMQ-576 - tests/test_connect_delay.cpp | 196 +++++++++++++++++++------------------------ - 1 file changed, 87 insertions(+), 109 deletions(-) + NEWS | 2 ++ + 1 file changed, 2 insertions(+) -commit ad14c562d7cd434f730189e9909af5b07f5088d6 -Merge: e9755d2 37a0ec5 +commit a37c198c7db547129bb47d02597ee5669183478b +Merge: 5db0acb 047bd13 Author: Pieter Hintjens -Date: Tue May 21 00:33:18 2013 -0700 +Date: Thu Jan 2 13:12:18 2014 -0800 - Merge pull request #90 from hintjens/master + Merge pull request #46 from vortechs2000/fix-libzmq-576 - Fixed name of Travis file - -commit 37a0ec59360144704c66d116c0d7b4ddf43baaa8 -Author: Pieter Hintjens -Date: Tue May 21 09:32:39 2013 +0200 + Fix LIBZMQ-576 - Revert "Merge pull request #510 from miniway/master" - Fixed name of Travis file +commit 047bd130cfd885ce76d4c04914adaa5333f4efe7 +Author: AJ Lewis +Date: Thu Jan 2 11:04:43 2014 -0600 - .travis.yaml | 2 -- - .travis.yml | 2 ++ - 2 files changed, 2 insertions(+), 2 deletions(-) + Fix LIBZMQ-576 - Revert "Merge pull request #510 from miniway/master" + + This reverts commit f27eb67e1abb0484c41050e454404cce30647b63, reversing + changes made to a3ae0d4c16c892a4e6c96d626a7c8b7068450336. + + Conflicts: + src/stream_engine.cpp + + Conflicts were around additional defaults to the constructor after the + 'terminating' default. The additional defaults were left alone, and + the 'terminating' default was removed. + + src/encoder.hpp | 5 ----- + src/i_encoder.hpp | 1 - + src/stream_engine.cpp | 12 ------------ + src/stream_engine.hpp | 1 - + 4 files changed, 19 deletions(-) -commit e9755d2a39bb12cfd9178f96fec454287ca21b38 -Merge: 0836de2 96fbeea +commit 5db0acb044ae8feb04f8ba6ae679d7a6050bd009 +Merge: 571c668 845ee0c Author: Pieter Hintjens -Date: Tue May 21 00:25:16 2013 -0700 +Date: Mon Dec 23 04:18:04 2013 -0800 - Merge pull request #89 from hintjens/master + Merge pull request #44 from hintjens/master - Adding support for Travis CI + Issue 797 -commit 96fbeea5f64fbf7fa84920bfae44ce749563b180 +commit 845ee0c7bc4a189f612b7a6577454924bce26d56 Author: Pieter Hintjens -Date: Tue May 21 09:22:13 2013 +0200 +Date: Mon Dec 23 13:17:38 2013 +0100 - Added support for Travis CI + Updated NEWS - .gitignore | 1 + - .travis.yaml | 2 ++ - 2 files changed, 3 insertions(+) + NEWS | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2ba0d159b598e4e7886c917cfb63b48d77991403 +Author: Alex Grönholm +Date: Sun Dec 22 02:55:18 2013 +0200 + + Fixed setting TCP keepalive parameters on Windows -commit 0836de2f2ed92dd58ec2ae6fc388b5fd4d493331 -Merge: 0e5c98a 26b182f + src/tcp.cpp | 30 ++++++++++-------------------- + src/windows.hpp | 1 + + 2 files changed, 11 insertions(+), 20 deletions(-) + +commit 571c668fa2e0b101f607b4c4a34c30da2f174499 +Merge: 97e1ecc 0552d91 Author: Pieter Hintjens -Date: Fri May 17 23:17:34 2013 -0700 +Date: Fri Dec 6 14:30:23 2013 -0800 - Merge pull request #88 from hintjens/master + Merge pull request #43 from hintjens/master - Backported two fixes + Backporting fixes from master -commit 26b182fe76d0f5ce21b541dc89f43be865ec73fa +commit 0552d9119bada6a132a612e8284eb82a58ba26b0 Author: Pieter Hintjens -Date: Sat May 18 07:17:00 2013 +0100 +Date: Thu Dec 5 16:52:36 2013 +0100 - Backported #84 and #532 + Updated news for #775 - NEWS | 2 ++ + NEWS | 2 ++ 1 file changed, 2 insertions(+) -commit d7cad1b52afc85550cdfc6dcd69fbbd25f0f6310 +commit 3dc89feafcee31ef5169d827015f1fe2a18da08b Author: KIU Shueng Chuan -Date: Sat Dec 29 18:05:15 2012 +0800 - - set SO_LINGER on first signaler socket to close in order to avoid - TIME_WAIT state. +Date: Thu Dec 5 07:04:21 2013 +0800 - src/signaler.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + use enum retired_fd instead of -1 + + using -1 causes a warning on Windows platform because SOCKET is unsigned. -commit 573a1eab4b2df369a23b11576ba23dee4bf9eaae -Author: KIU Shueng Chuan -Date: Fri Feb 15 10:45:43 2013 +0800 + src/socket_base.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - release critical section on failure to create signaler fdpair +commit 97e1ecce228c1465d619db7c3c5a11a9dd36670c +Merge: 8b9a824 d958b67 +Author: Pieter Hintjens +Date: Sun Dec 1 02:55:48 2013 -0800 - src/signaler.cpp | 48 +++++++++++++++++++++++++++++++++++++----------- - 1 file changed, 37 insertions(+), 11 deletions(-) + Merge pull request #40 from hintjens/master + + Backported fix for #763 -commit 0e5c98a9fe39b0fd05f496f885089a4e9ab205e7 -Merge: 094ecee 2c55496 +commit d958b675c7918c05b92c3e0cfbd49601142cdefd Author: Pieter Hintjens -Date: Wed May 15 17:10:09 2013 -0700 +Date: Sun Dec 1 11:54:55 2013 +0100 - Merge pull request #87 from steve-o/master - - Add support for vc110_xp in CMake build environment + Updated NEWS for #763 -commit 2c55496d28c722c38cca6ee0b82a9be43b40c1ea -Author: Steven McCoy -Date: Wed May 15 20:04:07 2013 -0400 + NEWS | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit ff8f97e7d770651ef2e50e6f2a36069ae78e7814 +Author: Martin Hurton +Date: Sat Nov 30 21:24:32 2013 +0100 - Update to support new toolkit functionality with CMake and VS11 for XP as a target platform. + Fix issue #763 - CMakeLists.txt | 25 ++++++++++++------------- - cmake/Modules/TestZMQVersion.cmake | 15 ++++++++++++--- - 2 files changed, 24 insertions(+), 16 deletions(-) + src/stream_engine.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) -commit 094eceefb8a45c2c28e8ec1a4995932b68fd62a5 +commit 75ba4c7292bc09e7fc58dd206447777391d06100 Author: Pieter Hintjens -Date: Tue May 7 14:40:15 2013 +0200 +Date: Sun Nov 24 19:00:18 2013 +0100 - Fixed packaging for Windows, was missing errno sources + Updated version number for release 4.0.4 - builds/msvc/Makefile.am | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + include/zmq.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 14bb2e46a5e5120122163723cbb6d60e8e783b7e -Merge: 400cbc2 11bae19 -Author: Martin Hurton -Date: Fri May 3 00:02:08 2013 -0700 +commit 8b9a82476b196a200b9698c9345ae8ba50cccb1c +Merge: 78b741b 4363b75 +Author: Pieter Hintjens +Date: Sun Nov 24 09:58:59 2013 -0800 - Merge pull request #85 from hintjens/master + Merge pull request #37 from hintjens/master - Fix for #456 was not backported to 3.2.2; will be in 3.2.4 now + Fixed test_many_sockets -commit 11bae19cf8596320d2f51fe430ee3cafdecb659c +commit 4363b75b4d9aec70b297e96d4b933110ce161a62 Author: Pieter Hintjens -Date: Thu May 2 22:10:06 2013 +0200 +Date: Sun Nov 24 18:56:50 2013 +0100 - #456 was not in 3.2.2 but will be in 3.2.4 + Release notes for 4.0.3 - NEWS | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) + NEWS | 10 ++++++++++ + include/zmq.h | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) -commit a3dafd408ff35085a36820bfbd1926f0d89a8296 +commit c022c048dcbe15a2757ab90d2d03d89f615744a8 Author: Pieter Hintjens -Date: Sun Oct 28 07:36:18 2012 +0900 +Date: Tue Nov 19 16:51:06 2013 +0100 - Code formatting + Fixed test_many_sockets + + * failed on systems where process could not allocate 1024 sockets by default + * include path for platform.hpp was wrong; fixed it - src/xsub.cpp | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) + tests/test_many_sockets.cpp | 73 ++++++++++++++++++------------------------- + tests/testutil.hpp | 2 +- + 2 files changed, 32 insertions(+), 43 deletions(-) -commit 58c1ba89940ba3eeb7124a4ced8cf3bb962f2e15 -Author: John Muehlhausen -Date: Sat Oct 27 15:51:03 2012 -0500 +commit 78b741bd71995c7b73a2cbe449f2c6028610f7e4 +Merge: d743dda ba7c065 +Author: Pieter Hintjens +Date: Sun Nov 24 03:47:58 2013 -0800 - patch for issue 456 + Merge pull request #36 from hintjens/master - Do not filter out duplicate subscriptions on the XSUB side of - XSUB/XPUB, so that ZMQ_XPUB_VERBOSE doesn't get blocked by forwarding - devices (as long as the devices all use ZMQ_XPUB_VERBOSE) - - src/xsub.cpp | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + Updated version number for 4.0.2 -commit c710a39b9e95afdbc0b950552c11e928a5997024 +commit ba7c065c3dd13453c79d7a07efa1c6c3e56bdf18 Author: Pieter Hintjens -Date: Wed Jan 30 23:53:23 2013 +0100 +Date: Sun Nov 24 12:45:47 2013 +0100 - Resolved merge conflict + Updated version number for 4.0.2 + + - also moved macros to top of zmq.h for better visibility + + include/zmq.h | 30 +++++++++++++----------------- + 1 file changed, 13 insertions(+), 17 deletions(-) -commit 400cbc208a768c4df5039f401dd2688eede6e1ca -Merge: 0f6e357 bdd7282 +commit d743ddafda6dd45f178cd6c8bd98c32b1aa4c49b +Merge: e193915 84c0caf Author: Pieter Hintjens -Date: Thu May 2 11:28:49 2013 -0700 +Date: Sun Nov 24 03:42:01 2013 -0800 - Merge pull request #83 from vortechs2000/fix_323_builds + Merge pull request #35 from hintjens/master - Fix 323 builds + Updated NEWS for release 4.0.2 -commit bdd72826c96fa7cb6a8d2e5cf688c973a8e8d42f +commit 84c0caf42eae2e1871d880bfd6722a5011c8e531 Author: Pieter Hintjens -Date: Wed Jan 30 23:53:23 2013 +0100 +Date: Sun Nov 24 12:41:16 2013 +0100 - Various cleanups to test programs + Updated NEWS for release 4.0.2 + + NEWS | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit e1939155ff4aab3c7d543e0ef089349a10814895 +Merge: 30309d6 9ece2d3 +Author: Pieter Hintjens +Date: Tue Nov 19 02:01:23 2013 -0800 + + Merge pull request #34 from hintjens/master - - Patch applied using git am from libzmq commit 5f009e52 - - tests/test_raw_sock.cpp doesn't exist in zeromq3-x, so that - file was manually removed from the patch before 'git am' + Backporting fixes from master + +commit 9ece2d322a6189d02f1a57bf499dda8510665d16 +Author: Pieter Hintjens +Date: Wed Nov 13 13:57:53 2013 +0100 + + Added links to RFCs for socket patterns + + doc/zmq_socket.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 589bf436dd08066b7a7fdd608c31c41b9a15b936 +Author: KIU Shueng Chuan +Date: Tue Nov 12 01:12:24 2013 +0800 + + remove all asserts during critical section - Signed-off-by: AJ Lewis + the size of the critical section is reduced by only entering the critical + section right before the bind(). - tests/test_connect_delay.cpp | 6 ++---- - tests/test_disconnect_inproc.cpp | 11 ++--------- - tests/test_last_endpoint.cpp | 9 ++++----- - 3 files changed, 8 insertions(+), 18 deletions(-) + src/signaler.cpp | 76 ++++++++++++++++++++++-------------------------------- + 1 file changed, 31 insertions(+), 45 deletions(-) -commit 1e435f59c38d64b3353b850538dac6a7d062c3a8 -Author: AJ Lewis -Date: Thu May 2 10:32:10 2013 -0500 +commit e54e55835e6caa07a5805e1b7d1e7e6e5e098b74 +Author: KIU Shueng Chuan +Date: Tue Nov 12 00:07:06 2013 +0800 - Add newline to end of test_connect_delay.cpp so it compiles with older versions of GCC + return error to caller on bind error - tests/test_connect_delay.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/signaler.cpp | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) -commit 0f6e357894c32a211896cb082d2fcc80e54a749a -Author: Pieter Hintjens -Date: Thu May 2 11:23:57 2013 +0200 +commit 111c20dc22709e58ff2c5718c04210eee1a359e5 +Author: Richard Newton +Date: Mon Nov 11 13:54:58 2013 +0000 + + Fix signed/unsigned comparison + + tests/test_many_sockets.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3a4896f4a36e6df2d2f7b62b1d64ef7d74774a90 +Author: Richard Newton +Date: Mon Nov 11 13:53:25 2013 +0000 - Bumped version number for next release 3.2.4 + Fix signed/unsigned comparison - include/zmq.h | 2 +- + tests/test_many_sockets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit a85ddf3e1a116c9689e50f085623e31458a275de -Author: Pieter Hintjens -Date: Thu May 2 11:12:41 2013 +0200 +commit 0855c28069bd87f4c50ecb5606641522654f97a1 +Author: Richard Newton +Date: Mon Nov 11 13:41:42 2013 +0000 - Updated NEWS for 3.2.3 + Reduce default maximum number of sockets by 1 so there is room for the reaper socket. - NEWS | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) + include/zmq.h | 2 +- + tests/test_many_sockets.cpp | 79 +++++++++++++++++++++++++++++++++++-------- + 2 files changed, 65 insertions(+), 16 deletions(-) -commit 41b7f74d4947f955d10a41bed13636a5ec560fd9 -Merge: 894c0fb 69dbe01 -Author: Pieter Hintjens -Date: Wed May 1 14:22:05 2013 -0700 +commit 737b6afc97ef959480fb2ae69192eb8965fe99d6 +Author: Richard Newton +Date: Mon Nov 11 13:09:23 2013 +0000 - Merge pull request #82 from trevorbernard/master + Revert "Make FD_SETSIZE = ZMQ_MAX_SOCKETS_DFLT + 1 so there is room for the repear socket." - Backport fix for LIBZMQ-526 + This reverts commit 0b92831b2a82c3bbc0e9371662c546b94915a3ea. -commit 69dbe0113a86d006e4f910335e358cf1d82252b5 -Author: Trevor Bernard -Date: Wed May 1 10:31:28 2013 -0300 + CMakeLists.txt | 2 +- + builds/mingw32/Makefile.mingw32 | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 10 +++++----- + builds/msvc/properties/ZeroMQ.props | 2 +- + builds/msvc/properties/ZeroMQ_Static.props | 2 +- + 5 files changed, 9 insertions(+), 9 deletions(-) - Back port fix for LIBZMQ-526 - - Fix syntax error +commit 8f85bafe372d96212764a51737835fef82e035a8 +Author: psl-felipefarinon +Date: Mon Nov 11 10:20:28 2013 -0200 - src/tcp_connecter.cpp | 23 ++++++++++++++++------- - 1 file changed, 16 insertions(+), 7 deletions(-) + issue #583 removing C++11 code. -commit 894c0fb87bb7afdd9ac609c79191f78760e103cb -Merge: a436d14 521ed91 -Author: Pieter Hintjens -Date: Sat Apr 13 02:53:55 2013 -0700 + src/clock.cpp | 1 - + 1 file changed, 1 deletion(-) - Merge pull request #81 from steve-o/libzmq-446 - - [#LIBZMQ-446] Silence error on setting PGM_TOS on REL 4. +commit f72dbb35d5e9d864acb1634f96c7efd7f4ead15f +Author: Bruno D. Rodrigues +Date: Sun Nov 10 10:19:19 2013 +0000 -commit 521ed912891a7d2e55c8711a4985e551d3efdede -Author: Steven McCoy -Date: Fri Apr 12 23:44:04 2013 -0400 + Fix socket creation above sistem limits for all 'other' OS not covered by eventfd, windows or vms; enhanced test to create sockets up to a bigger limit to really test hitting the OS limit - [#LIBZMQ-446] Silence error on setting PGM_TOS due to some platforms raising an error at runtime. Noted are RHEL 4. + src/signaler.cpp | 2 +- + tests/test_many_sockets.cpp | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) - src/pgm_socket.cpp | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) +commit 5d6e7a74c1e50559f0ee3cb37dc61e21ea818c67 +Author: Pieter Hintjens +Date: Sat Nov 9 09:59:21 2013 +0100 -commit a436d145476325e16bc106dcc513d6216c4f2064 -Merge: 4f1f68f 1a17eb3 + Added test case to ignore + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 30309d660e4d3ef72d677ad059ed57f0ca80471c +Merge: f745e4c e0c8a11 Author: Pieter Hintjens -Date: Mon Mar 18 02:47:57 2013 -0700 +Date: Sat Nov 9 00:56:52 2013 -0800 - Merge pull request #79 from mika-fischer/workaround-for-496 + Merge pull request #32 from hintjens/master - Work around for LIBZMQ-496 + Cherry picking changes from libzmq master -commit 1a17eb392e353a0c7606b127ac3100075427e424 -Author: Mika Fischer -Date: Tue Feb 19 11:01:13 2013 +0100 +commit e0c8a112a43cd13bd3e21696b26e0357037d4759 +Author: Pieter Hintjens +Date: Sat Nov 9 09:56:21 2013 +0100 - Work around for LIBZMQ-496 - - The problem is that other threads might still be in mailbox::send() when - it is destroyed. So as a workaround, we just acquire the mutex in the - destructor. Therefore the running send will finish before the mailbox is - destroyed. - - See also the fix for LIBZMQ-281 in zeromq2-x. - - Signed-off-by: Mika Fischer + Cherry picking fixes from master - src/mailbox.cpp | 5 +++++ - 1 file changed, 5 insertions(+) + .gitignore | 1 + + NEWS | 13 +++++++------ + tests/Makefile.am | 1 - + 3 files changed, 8 insertions(+), 7 deletions(-) -commit 4f1f68f6cc3cfce0401b66684481640c953dd567 -Merge: d6aaa4a 5d3781a -Author: Pieter Hintjens -Date: Mon Feb 11 10:21:30 2013 -0800 +commit f6293d257d9f649ef82ce40850d1b18cca9a89dd +Author: Martin Hurton +Date: Wed Oct 9 10:51:30 2013 +0200 - Merge pull request #78 from ianbarber/master - - Backport of test_last_endpoint shutdown fix, resolves LIBZMQ-462 + Signal that the peer performed orderly shutdown -commit 5d3781a8bfd8af860d7e04688c338befb5da2771 -Author: Ian Barber -Date: Sun Feb 10 22:51:52 2013 +0000 + src/stream_engine.cpp | 77 +++++++++++++++++++++++-------------------------- + src/stream_engine.hpp | 7 ++--- + 2 files changed, 39 insertions(+), 45 deletions(-) - Patch from Rob Gagnon, backport of test fix from master. Resolves LIBZMQ-462 +commit f33bdcf02e4781943a5c000af707a0d011d59b8f +Author: Richard Newton +Date: Thu Nov 7 17:50:29 2013 +0000 - tests/test_last_endpoint.cpp | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + Fix formatting. -commit d6aaa4a7ba5507e4bae336d3a92fc984d40c804b -Merge: a0a24a9 b774772 -Author: Pieter Hintjens -Date: Wed Feb 6 23:51:22 2013 -0800 + src/ctx.cpp | 8 ++++---- + src/devpoll.cpp | 2 +- + src/devpoll.hpp | 2 +- + src/epoll.cpp | 2 +- + src/epoll.hpp | 2 +- + src/kqueue.cpp | 2 +- + src/kqueue.hpp | 2 +- + src/poll.cpp | 2 +- + src/poll.hpp | 2 +- + src/select.cpp | 2 +- + src/select.hpp | 2 +- + 11 files changed, 14 insertions(+), 14 deletions(-) + +commit fef24a8c1f5c1f806c11e35eb8d93e1fc334bb47 +Author: Richard Newton +Date: Thu Nov 7 18:26:13 2013 +0000 + + Make FD_SETSIZE = ZMQ_MAX_SOCKETS_DFLT + 1 so there is room for the repear socket. + + CMakeLists.txt | 2 +- + builds/mingw32/Makefile.mingw32 | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 10 +++++----- + builds/msvc/properties/ZeroMQ.props | 2 +- + builds/msvc/properties/ZeroMQ_Static.props | 2 +- + 5 files changed, 9 insertions(+), 9 deletions(-) + +commit bfc3deb43a271e13c0cb44ed0694fdd80848298d +Author: Richard Newton +Date: Thu Nov 7 17:46:19 2013 +0000 - Merge pull request #77 from ianbarber/master + Get maximum number of sockets it can handle from poller_t + + src/ctx.cpp | 12 ++++++++++-- + src/devpoll.cpp | 5 +++++ + src/devpoll.hpp | 2 ++ + src/epoll.cpp | 5 +++++ + src/epoll.hpp | 2 ++ + src/kqueue.cpp | 5 +++++ + src/kqueue.hpp | 2 ++ + src/poll.cpp | 5 +++++ + src/poll.hpp | 2 ++ + src/select.cpp | 5 +++++ + src/select.hpp | 2 ++ + 11 files changed, 45 insertions(+), 2 deletions(-) + +commit dccf1dce1e12109adc669b68a80398c3b927b804 +Author: psl-felipefarinon +Date: Thu Nov 7 15:21:42 2013 -0200 + + Fixing broken build issue #583 + + src/clock.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit 24311dee1b8b53b9280a255e5a05b180f812afdf +Author: Richard Newton +Date: Thu Nov 7 16:47:55 2013 +0000 + + Add test case for many sockets - Backport of test_connect_delay refactor from master + Conflicts: + CMakeLists.txt + tests/Makefile.am -commit b774772bb94d1195f601bf30fe0fbbcefcf60db9 -Author: Ian Barber -Date: Wed Feb 6 21:22:56 2013 +0000 + CMakeLists.txt | 4 +++- + tests/Makefile.am | 5 ++++- + tests/test_many_sockets.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 58 insertions(+), 2 deletions(-) + +commit 27d20aacc7563ffa376198acb1a509c4fb35f4fb +Author: psl-felipefarinon +Date: Thu Nov 7 14:06:54 2013 -0200 - Backport of test_connect_delay refactor + Fixing issue #583. Using low resolution timer for clock::now_ms - tests/test_connect_delay.cpp | 223 +++++++++++++++++++++---------------------- - 1 file changed, 110 insertions(+), 113 deletions(-) + src/clock.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 56 insertions(+), 2 deletions(-) -commit a0a24a92af78ebb8f61a8a45454d3ff6d2db0a3d -Merge: 8e74806 6a7dcfb +commit b2698474d2b0036ad27b9056d703e864bd96b706 Author: Pieter Hintjens -Date: Fri Feb 1 01:04:42 2013 -0800 +Date: Thu Nov 7 15:30:25 2013 +0100 - Merge pull request #76 from hintjens/master - - Backported fix for LIBZMQ-497 + Simplified fdpair reset after fork -commit 6a7dcfb8982e657d37c90627602be567610d9745 -Author: Min(Dongmin Yu) -Date: Fri Feb 1 17:32:28 2013 +0900 + src/signaler.cpp | 22 ++++------------------ + 1 file changed, 4 insertions(+), 18 deletions(-) - LIBZMQ-497 there could be unsent bytes in encoder - - When we send a large message, the message can be splitted into two chunks. - One is in the encoder buffer and the other is the zero-copy pointer. - The session could get the term before the last chunk is sent. +commit 0465e9abe922db5f47e50998c0d495351373b1c1 +Author: Pieter Hintjens +Date: Thu Nov 7 15:26:56 2013 +0100 - src/encoder.hpp | 5 +++++ - src/i_encoder.hpp | 1 + - src/stream_engine.cpp | 12 ++++++++++++ - src/stream_engine.hpp | 1 + - 4 files changed, 19 insertions(+) + Simplified error handling for make_fdpair on Windows -commit 8e748064acf877e5322f681c30323d7dc91e2100 -Merge: 0df7bbb c436c8c + src/signaler.cpp | 7 ------- + 1 file changed, 7 deletions(-) + +commit 885c816e5718c406d18cbccbc4093b0e46761821 Author: Pieter Hintjens -Date: Mon Jan 21 09:07:35 2013 -0800 +Date: Thu Nov 7 14:59:53 2013 +0100 - Merge pull request #75 from hintjens/master - - Backported c436c8 + Fix for issue 574 -commit c436c8cdc3da4a103faaea9685eefde3614ba4aa -Author: MinRK -Date: Thu Jan 17 16:00:38 2013 -0800 + src/signaler.cpp | 89 ++++++++++++++++++++++++++------------------------- + src/signaler.hpp | 4 +-- + src/socket_base.cpp | 82 ++++++++++++++++++++++++----------------------- + 3 files changed, 89 insertions(+), 86 deletions(-) - AM_CONFIG_HEADER -> AC_CONFIG_HEADERS +commit 7f3d0995cda22fd504bbf106a719a8f8c755ce96 +Author: Pieter Hintjens +Date: Wed Nov 6 13:30:41 2013 +0100 + + Removed over-long pauses in tests - AM_CONFIG_HEADER raises an 'obsolete error' with automake 1.13. + - used msleep (10) in most places instead of zmq_sleep (1) + - may cause failures on slower machines + - to change, modify SETTLE_TIME in testutil.h + - tested down to 1 msec on fast boxes + + Conflicts: + tests/test_connect_delay_tipc.cpp + tests/test_proxy.cpp + tests/test_sub_forward_tipc.cpp + tests/test_term_endpoint_tipc.cpp + tests/testutil.hpp + + tests/test_conflate.cpp | 7 ++----- + tests/test_ctx_destroy.cpp | 2 +- + tests/test_immediate.cpp | 3 +-- + tests/test_inproc_connect.cpp | 2 +- + tests/test_iov.cpp | 2 +- + tests/test_monitor.cpp | 6 +++--- + tests/test_req_relaxed.cpp | 2 +- + tests/test_spec_req.cpp | 2 +- + tests/test_sub_forward.cpp | 2 +- + tests/test_term_endpoint.cpp | 4 ++-- + tests/testutil.hpp | 17 +++++++++++++++++ + 11 files changed, 31 insertions(+), 18 deletions(-) + +commit f745e4ce64d772c40fa7622568f886984f5c7ce2 +Merge: 806f57e de239f3 +Author: Pieter Hintjens +Date: Wed Nov 6 11:26:05 2013 -0800 + + Merge pull request #31 from hintjens/master + + Backported fixes for libzmq-39 and other patches. + +commit de239f358e02c4d42a2c4426ffee893e101c90b2 +Author: Richard Newton +Date: Wed Nov 6 15:19:04 2013 +0000 + + Fix race condition on shutdown - configure.in | 2 +- + src/ctx.cpp | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 30f470eff56d4b7f778cd83bda0ea689cf752a41 +Author: Richard Newton +Date: Mon Oct 28 08:34:32 2013 +0000 + + Fix test warning. + + tests/test_ctx_options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0df7bbbc9deb05322265746e27681b7a724054cc -Merge: c2b6f06 4a0410a +commit f0b69bba286dcd9689e40674a84cf1ab940a2d81 +Author: Richard Newton +Date: Mon Oct 28 08:30:31 2013 +0000 + + Fix test warning. + + tests/test_router_raw_empty.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 60032ef3301316ef00e9bce4f34a9a22d075b83e +Author: MinRK +Date: Sun Oct 27 22:50:32 2013 -0700 + + test zmq_msg_close after sending empty message on ROUTER_RAW + + tests/Makefile.am | 2 ++ + tests/test_router_raw_empty.cpp | 65 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 67 insertions(+) + +commit c663f37761c7bebd0061061ede13a4e9aef5b6f4 +Author: MinRK +Date: Sun Oct 27 22:50:04 2013 -0700 + + add missing msg->init for ROUTER_RAW with empty message + + src/router.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit 806f57e7f6e93a4c3e333e63fab8cfc003a29368 +Merge: 28b7c99 b22c2e4 Author: Pieter Hintjens -Date: Fri Jan 11 13:42:27 2013 -0800 +Date: Mon Nov 4 08:44:38 2013 -0800 - Merge pull request #73 from amuraru/fix-newline + Merge pull request #30 from hintjens/master - Fixed newline in test_disconnect_inproc + Cherry picking fixes from libzmq -commit c2b6f06d0d302fb3c7d297272f56d8d62100313e -Merge: 92446d8 572be0e +commit b22c2e4f8a8c11bfbbe74c43134a481b3a90d104 Author: Pieter Hintjens -Date: Fri Jan 11 13:41:30 2013 -0800 +Date: Mon Nov 4 17:37:15 2013 +0100 + + Updated NEWS + + NEWS | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) - Merge pull request #72 from amuraru/fix-spec +commit 54a3ebcac656d9451e7a3b59f092b1949c9e9ac7 +Author: Denis Mingulov +Date: Mon Nov 4 15:15:23 2013 +0200 + + Doc examples with zmq_msg_close usage - parameter is 'zmq_msg_t *' + + Documentation examples for zmq_msg_get and zmq_msg_more functions have an + incorrect call to zmq_msg_close function - with 'zmq_msg_t' as a parameter + despite 'zmq_msg_t *' is required, so it is impossible to compile these + examples properly. - Fixed el5/el6 deps in RPM spec file + Also for zmq_msg_get example - declaration of zmq_msg_t variable is added + (like it is done in other examples). -commit 4a0410ad21899e28a4cfcdd433ad38d590d5435e -Author: Adrian Muraru -Date: Fri Jan 11 22:51:08 2013 +0200 + doc/zmq_msg_get.txt | 3 ++- + doc/zmq_msg_more.txt | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) - Fixed newline in test_disconnect_inproc +commit aede37e3e5913b6c8abdd286c2991f2784344140 +Author: Pieter Hintjens +Date: Mon Nov 4 16:04:13 2013 +0100 - tests/test_disconnect_inproc.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + Fixed issue 578 - corrected type usage -commit 572be0e82c11d15735cc6b6269a605e66a0ed44d -Author: Adrian Muraru -Date: Fri Jan 11 22:50:31 2013 +0200 + src/zmq_utils.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - Fixed el5/el6 deps in RPM spec file +commit 2949f2dbc5c1e73ab50333fb4fae60852bf21c85 +Author: Pieter Hintjens +Date: Mon Nov 4 15:39:20 2013 +0100 - builds/redhat/zeromq.spec.in | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) + Fixed issue 578 -commit 92446d81ce696aa7a47affd4f35817b658489800 -Merge: 911387c 96ce417 -Author: Ian Barber -Date: Thu Dec 27 06:16:08 2012 -0800 + .gitignore | 9 +++++++++ + src/zmq_utils.cpp | 11 ++++++----- + 2 files changed, 15 insertions(+), 5 deletions(-) + +commit 28b7c991afe738a88d7f6d0340987898e06b0c7a +Merge: c85fbaf 1c70e91 +Author: Pieter Hintjens +Date: Mon Oct 28 03:58:52 2013 -0700 - Merge pull request #71 from hintjens/master + Merge pull request #28 from hintjens/master - Backported fix for LIBZMQ-488 + Fixed configure error on non-Linux boxes -commit 96ce417422605b6c22c727fe28267de6102702d1 -Author: KIU Shueng Chuan +commit 1c70e91c6f0db4418b4ff4eccf935af667ddbfeb +Author: Pieter Hintjens +Date: Mon Oct 28 11:58:29 2013 +0100 + + Fixed configure error on non-Linux boxes + + tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c85fbaf22e5f8ff79039ee2d87dd455484979b75 +Merge: cb3c822 b580557 +Author: Pieter Hintjens +Date: Mon Oct 28 03:49:45 2013 -0700 + + Merge pull request #27 from hintjens/master + + Fixed ref to zmq_socket_monitor + +commit b58055794bda1c25be7b7d9829f96913f1ce2758 +Author: Pieter Hintjens +Date: Mon Oct 28 11:49:23 2013 +0100 + + Fixed ref to zmq_socket_monitor + + NEWS | 2 +- + doc/zmq.txt | 6 +++--- + tests/Makefile.am | 3 --- + 3 files changed, 4 insertions(+), 7 deletions(-) + +commit cb3c82271a7a34ab0ebe0d3353105ba2c14a2d35 +Merge: bf97ea8 9bf10a8 +Author: Pieter Hintjens +Date: Fri Oct 25 01:04:06 2013 -0700 + + Merge pull request #26 from hintjens/master + + Backporting fixes from master + +commit 9bf10a83a17a900640f4658a3ce9b695359a70ce +Author: Pieter Hintjens +Date: Fri Oct 25 10:03:42 2013 +0200 + + Updated NEWS + + NEWS | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 8efd7affc677cb9d40167137b27d99e9b670affc +Author: Pieter Hintjens +Date: Wed Oct 23 23:58:39 2013 +0200 + + test_stream failed when response was broken into frames + + tests/test_stream.cpp | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +commit bf97ea8ed8ecb5b3d13e7a0c7ace631437f7151e +Merge: 2b8d86c cd2afeb +Author: Pieter Hintjens +Date: Wed Oct 23 07:04:20 2013 -0700 + + Merge pull request #25 from hintjens/master + + Clarified use of secret/public keys + +commit cd2afebd0a0f9861f4d90282029822d94aa1c979 +Author: Pieter Hintjens +Date: Wed Oct 23 16:03:45 2013 +0200 + + Clarified use of secret/public keys + + doc/zmq_setsockopt.txt | 23 +++++++++++------------ + 1 file changed, 11 insertions(+), 12 deletions(-) + +commit 2b8d86c24a092d8622643ea68830daa6477ee227 +Merge: 573d7b0 bd411bb +Author: Pieter Hintjens +Date: Wed Oct 23 03:05:44 2013 -0700 + + Merge pull request #24 from hintjens/master + + Fixed man page for CURVE key options + +commit bd411bbf116d491e08eef9172dee1bc6786196e3 +Author: Pieter Hintjens +Date: Wed Oct 23 12:04:50 2013 +0200 + + Fixed man page for CURVE key options + + doc/zmq_setsockopt.txt | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 573d7b0c0b8abd4a4e616d503f8a2c80a1ecaf40 +Merge: 07d7cf6 dcb9312 +Author: Pieter Hintjens +Date: Sun Oct 13 23:05:54 2013 -0700 + + Merge pull request #23 from hintjens/master + + Backporting LIBZMQ-569 fix from master + +commit dcb9312ba697b3dcb0912344f27d5665ced7d8a2 +Author: Pieter Hintjens +Date: Mon Oct 14 08:04:57 2013 +0200 + + Updated NEWS for backport + + NEWS | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 54907946664d6eed2e12e7e9eda7de3f4d9f290f +Author: Martin Hurton +Date: Fri Jun 21 16:23:38 2013 +0200 + + Load identity message to decoder at start + + src/stream_engine.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 07d7cf69d03635cb249fc01e082d68669b4f26a6 +Merge: 4f2ac39 b24db36 +Author: Pieter Hintjens +Date: Sun Oct 13 05:47:11 2013 -0700 + + Merge pull request #22 from hintjens/master + + Temporary workaround for broken libsodium install + +commit b24db360570c335b9f420b07574dd0c9873e6136 +Author: Pieter Hintjens +Date: Sun Oct 13 14:46:08 2013 +0200 + + Temporary workaround for broken libsodium install + + .travis.yml | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 4f2ac39d2822c5d30554a56db4dbd58b7bb534d5 +Merge: 8cdff6f a32c02a +Author: Pieter Hintjens +Date: Fri Oct 11 03:12:27 2013 -0700 + + Merge pull request #21 from hintjens/master + + Backporting fixes from master + +commit a32c02ae47484a6b60fb7895fb0b9ee39573fc10 +Author: Pieter Hintjens +Date: Wed Oct 9 19:52:46 2013 +0200 + + Identity can only be set on sockets that can connect to ROUTER + + doc/zmq_getsockopt.txt | 6 +++--- + doc/zmq_setsockopt.txt | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 622e3b54760a78d6f7d14cc5b1ceba99f3e690ad +Author: Martin Hurton +Date: Thu Sep 26 09:37:04 2013 +0200 + + Rename engine's methods to improve code readability + + src/i_engine.hpp | 4 ++-- + src/pgm_receiver.cpp | 4 ++-- + src/pgm_receiver.hpp | 4 ++-- + src/pgm_sender.cpp | 4 ++-- + src/pgm_sender.hpp | 4 ++-- + src/session_base.cpp | 4 ++-- + src/stream_engine.cpp | 34 +++++++++++++++++----------------- + src/stream_engine.hpp | 8 ++++---- + 8 files changed, 33 insertions(+), 33 deletions(-) + +commit 6c036b39ae7de197473c43c5f8de79657b0e8ae6 +Author: xantares +Date: Thu Oct 10 22:08:54 2013 +0200 + + Fixed out-of-source build + + tools/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8cdff6fa2e06763bb430a04f4159135e558ca001 +Author: Pieter Hintjens +Date: Tue Oct 8 17:54:41 2013 +0200 + + Fixed NEWS + + NEWS | 3 --- + 1 file changed, 3 deletions(-) + +commit f8cebb460a94ddee613fd7f4ed23300f9cc790ba +Author: Pieter Hintjens +Date: Tue Oct 8 15:02:58 2013 +0200 + + Revert "replace macro constants with enum types for user facing constants" + + This reverts commit 4fb74539250d83e82e40e85d39e2e756eccdb8a3. + + include/zmq.h | 222 ++++++++++++++++++++++++++------------------------------- + 1 file changed, 101 insertions(+), 121 deletions(-) + +commit d62e7a0734b7a69e199bfa22209275ab5da7a639 +Author: Pieter Hintjens +Date: Tue Oct 8 15:02:47 2013 +0200 + + Revert "distinguish between options and defaults" + + This reverts commit e7db680f5b709ce821f79b1e8956f4cbd1931c11. + + include/zmq.h | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +commit a44bd65d03f1d6a79bf818584c0ae37ef46478d4 +Author: Pieter Hintjens +Date: Tue Oct 8 10:46:47 2013 +0200 + + Fixed NEWS for 4.0.1 release + + NEWS | 28 ++++++++++++++++------------ + 1 file changed, 16 insertions(+), 12 deletions(-) + +commit 437e4070a37367a4d6c272b4c39ea9b92c31c2b3 +Merge: c852620 0bfcd4d +Author: Pieter Hintjens +Date: Tue Oct 8 01:36:58 2013 -0700 + + Merge pull request #19 from hintjens/master + + Updated NEWS for 4.0.1 + +commit 0bfcd4da2f50c215836c878d00175e73e6fa4d46 +Author: Pieter Hintjens +Date: Tue Oct 8 10:33:50 2013 +0200 + + Updated NEWS for 4.0.1 + + NEWS | 33 ++++++++++++++++++++++++++++++--- + 1 file changed, 30 insertions(+), 3 deletions(-) + +commit c852620f5f33d50698817be0b66f85fbc7ac59a3 +Merge: 163aebb ca122e9 +Author: Pieter Hintjens +Date: Tue Oct 8 00:20:40 2013 -0700 + + Merge pull request #18 from hintjens/master + + Cherry picking changes from libzmq master + +commit ca122e9d01f44194bb2a107ed1f8275a0b17c319 +Author: Volodymyr Korniichuk <9173519@gmail.com> +Date: Tue Oct 8 00:40:30 2013 +0300 + + Typo in type name "emTPy_slots_t" + + https://zeromq.jira.com/browse/LIBZMQ-565 + + src/ctx.hpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e7db680f5b709ce821f79b1e8956f4cbd1931c11 +Author: Dylan Cali +Date: Fri Oct 4 02:19:07 2013 -0500 + + distinguish between options and defaults + + include/zmq.h | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 4fb74539250d83e82e40e85d39e2e756eccdb8a3 +Author: Dylan Cali +Date: Fri Oct 4 01:45:42 2013 -0500 + + replace macro constants with enum types for user facing constants + + include/zmq.h | 222 +++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 121 insertions(+), 101 deletions(-) + +commit 813166019e1c6955776ff3fab1918b1b4b4c5445 +Author: Brandon Carpenter +Date: Mon Oct 7 10:55:40 2013 -0700 + + Add tests/test_abstract_ipc to .gitignore. + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 127cd7585a992a2f9a2a30c172f624fd2dc1196e +Author: Brandon Carpenter +Date: Mon Oct 7 10:42:39 2013 -0700 + + Fix detection of abstract ipc pathname and length calculation. + + Abstract socket pathnames must have a NULL character in the first + position, but the second character must also be checked to differentiate + an abstract name from the empty string. The address length must also + indicate the length of the pathname because the kernel uses the entire + address as the name, including NULL characters. ZMQ uses + NULL-terminated strings for the address, so the abstract address length + is the length of the string following the initial NULL byte plus 3; two + bytes for the address family and one for the initial NULL character. + + src/ipc_address.cpp | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +commit 0666152b216fe20e54c082461924e034af2efd11 +Author: Brandon Carpenter +Date: Mon Oct 7 10:41:20 2013 -0700 + + Add note on Linux abstract namespace to ipc documentation. + + doc/zmq_ipc.txt | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 9293153f71e7fa9c34eecb3951fc08f71c9630bb +Author: Volodymyr Korniichuk +Date: Fri Oct 4 21:54:52 2013 +0300 + + useless checks were removed + + src/ctx.cpp | 6 ++---- + src/mtrie.cpp | 3 +-- + src/session_base.cpp | 3 +-- + src/stream_engine.cpp | 9 +++------ + src/trie.cpp | 3 +-- + src/yqueue.hpp | 6 ++---- + 6 files changed, 10 insertions(+), 20 deletions(-) + +commit 163aebbacfc904bf5b29454a641ddb7a597b3552 +Merge: b20573c 80d657a +Author: Pieter Hintjens +Date: Sat Oct 5 00:20:49 2013 -0700 + + Merge pull request #17 from hintjens/master + + Cherry picking changes from libzmq master + +commit 80d657a2c529a1d847eab4cf6285c2279aae208c +Author: Brandon Carpenter +Date: Thu Oct 3 16:35:30 2013 -0700 + + Add test for abstract namespace support in ipc sockets on Linux. + + See issue 567. + + configure.ac | 3 +++ + tests/Makefile.am | 8 +++++- + tests/test_abstract_ipc.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 67 insertions(+), 1 deletion(-) + +commit 668f000cb148ee9e06b90d3b0b9504a16a3e7c52 +Author: Brandon Carpenter +Date: Thu Oct 3 16:21:42 2013 -0700 + + Add abstract namespace support for IPC sockets on Linux. + + Converts an initial strudel or "at sign" (@) in the Unix socket path to + a NULL character ('\0') indicating that the socket uses the abstract + namespace instead of the filesystem namespace. For instance, binding a + socket to 'ipc://@/tmp/tester' will not create a file associated with + the socket whereas binding to 'ipc:///tmp/tester' will create the file + /tmp/tester. See issue 567 for more information. + + AUTHORS | 1 + + src/ipc_address.cpp | 12 ++++++++++++ + 2 files changed, 13 insertions(+) + +commit a570b18931b52ac1d4b26eef88fe7dc630a4d192 +Author: KIU Shueng Chuan +Date: Sat Oct 5 00:51:47 2013 +0800 + + WinSock2.h filename should be all lowercase + + tests/test_system.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5493d4d180924f67c755e2c44d615910b25402ce +Author: KIU Shueng Chuan +Date: Sat Oct 5 00:48:52 2013 +0800 + + test for _MSC_VER before using MSVC specific code + + tests/testutil.hpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit b20573c8412f822cde267d93cccb981815251501 +Merge: 34471cd 814b93e +Author: Pieter Hintjens +Date: Fri Oct 4 00:19:57 2013 -0700 + + Merge pull request #16 from hintjens/master + + Cherry picking changes from libzmq master + +commit 814b93e0cff2e2437c6b33b2bcb007ad79ad42ee +Author: Martin Hurton +Date: Fri Oct 4 08:20:55 2013 +0200 + + Stop curve handshake when cookie box verification fails + + src/curve_server.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d723b08c134e5f07897c48aaa99fc0b7b2afff02 +Author: Pieter Hintjens +Date: Tue Sep 24 15:31:10 2013 +0200 + + Updated libzmq CURVE to track RFC 27 + + * The INITIATE command vouch box is Box[C',S](C->S') instead of Box[C'](C->S), + as recommended by https://codesinchaos.wordpress.com/2012/09/09/curvecp-1/, + to reduce the risk of client impersonation. + + * Mirrors the change in libcurve and CurveZMQ specifications. + + src/curve_client.cpp | 25 ++++++++++++++----------- + src/curve_server.cpp | 26 ++++++++++++-------------- + 2 files changed, 26 insertions(+), 25 deletions(-) + +commit 62fd6fa8614f86a25ab9f4b2a3fab548c7eb6eaa +Author: Matt Connolly +Date: Tue Sep 24 08:07:10 2013 +1000 + + git ignore test run output files: tests/test*.{log|trs} + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit a78ccf293fbef3d18e05e904a78d54bb7b2d7e0c +Author: Pieter Hintjens +Date: Wed Oct 2 12:15:31 2013 +0200 + + Disabled randomly failing part of test + + tests/test_spec_rep.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit d82ba6bd534e20fbad35bae1e8504624967e02fb +Author: Pieter Hintjens +Date: Wed Oct 2 12:05:14 2013 +0200 + + Clarified that zmq.h constants are part of the public contract + + include/zmq.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 9da52ddf59127858e89f5c6ca7e54dcd1c769f1e +Author: Dylan Cali +Date: Wed Oct 2 02:59:44 2013 -0500 + + fix minor typo in zmq_ctx_get doc example + + doc/zmq_ctx_get.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a69fa9ecde029db8052cc2df94e4f7ae1eca26ba +Author: Pieter Hintjens +Date: Mon Sep 30 15:14:02 2013 +0200 + + Packaging for zmq_curve_keypair function + + * Added new man page for this + * Added test case, in tests/test_security_curve.cpp + * Noted in zmq_utils.h that these methods are documented + + doc/Makefile.am | 2 +- + doc/zmq.txt | 9 +++++++ + doc/zmq_curve_keypair.txt | 56 +++++++++++++++++++++++++++++++++++++++++ + doc/zmq_z85_decode.txt | 2 +- + doc/zmq_z85_encode.txt | 1 + + include/zmq_utils.h | 24 ++++++++++-------- + tests/test_security_curve.cpp | 24 ++++++++++++------ + 7 files changed, 98 insertions(+), 20 deletions(-) + +commit facb96ffca8a6ef505348ba449dd447ba2dcb52e +Author: MinRK +Date: Sun Sep 29 13:05:27 2013 -0700 + + use zmq_curve_keypair in curve_keygen + + tools/curve_keygen.c | 34 ++++++++++++---------------------- + 1 file changed, 12 insertions(+), 22 deletions(-) + +commit 3c469d04c1e4879610fae795046c7373abdabd2a +Author: MinRK +Date: Sun Sep 29 13:07:51 2013 -0700 + + return NULL and set EINVAL on bad z85 input + + asserts aren't appropriate for checking user input. + + src/zmq_utils.cpp | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit 870233522c4be1202ba2ed333f32d1c2738698d4 +Author: MinRK +Date: Sun Sep 29 13:02:39 2013 -0700 + + add zmq_curve_keypair to zmq_utils + + include/zmq_utils.h | 4 ++++ + src/zmq_utils.cpp | 37 ++++++++++++++++++++++++++++++++++++- + 2 files changed, 40 insertions(+), 1 deletion(-) + +commit 34471cd59110d5adb9d428a93db3df45ae9a4ec8 +Merge: 17d12a6 453ceb6 +Author: Pieter Hintjens +Date: Sun Sep 29 08:04:10 2013 -0700 + + Merge pull request #12 from hintjens/master + + Backporting fixes from master + +commit 453ceb65b4a5e47fd8afe01035fda6b71512addb +Author: Pieter Hintjens +Date: Sun Sep 29 17:03:44 2013 +0200 + + Fixed merge conflict error + + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +commit 4d82544c34990423a2195385b6a7d0cdb2c0abc0 +Author: Matt Connolly +Date: Sun Sep 29 21:19:50 2013 +1000 + + config for libsodium in alternate path, using CPP flags for both C and C++ sources. + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit bd6bca7c8209a5503eee1e2dba07c4674058e66a +Author: MinRK +Date: Sat Sep 28 15:42:52 2013 -0700 + + include missing platform.hpp in curve_keygen + + it was excluded, so HAVE_SODIUM would never be defined, + leading to curve_keygen always reporting "recompile with libsodium" + + tools/curve_keygen.c | 1 + + 1 file changed, 1 insertion(+) + +commit 087ddac593570b8efb115d592318bafe7b6748e3 +Author: MinRK +Date: Sat Sep 28 15:42:00 2013 -0700 + + declare z85_encode / decode in zmq_utils + + they are used by curve_keygen, but not available + + include/zmq_utils.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit d1b686b644f834b319378d65935a23a59c997b5c +Author: Matt Connolly +Date: Fri Sep 27 11:20:09 2013 +0000 + + Disable compiler warning for Solaris + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit 4dc36c0dba23c93703450ad73ecbd0587d772e31 +Author: Matt Connolly +Date: Fri Sep 27 11:12:16 2013 +0000 + + Add '-lssp' linker flag for Solaris. Check for libraries after host specific setup. + + configure.ac | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 46 insertions(+), 4 deletions(-) + +commit 17d12a6be192210f0c67b50eda024a1b65a81d69 +Merge: cd452d5 89b97cb +Author: Pieter Hintjens +Date: Thu Sep 26 05:48:49 2013 -0700 + + Merge pull request #9 from hintjens/master + + Cherry picking changes from libzmq master + +commit 89b97cbe5955d3fd34734656f9a589968d90189c +Author: Pieter Hintjens +Date: Thu Sep 26 14:32:47 2013 +0200 + + Updated CMake project for test_issue_566 + + CMakeLists.txt | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit b0059211d53f9d7919fe461c681cee0f0c9ecdbe +Author: Pieter Hintjens +Date: Thu Sep 26 14:18:40 2013 +0200 + + Added test case for issue 566 + + * Tests dealer-to-router connection 100 times + * This was failing in ZMQ v4.0.0 RC1 + + .gitignore | 1 + + src/stream_engine.cpp | 2 +- + tests/Makefile.am | 4 ++- + tests/test_issue_566.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 90 insertions(+), 2 deletions(-) + +commit cd452d501967d6d753ed132305252970d9608436 +Merge: 9cbcc49 dd185e1 +Author: Pieter Hintjens +Date: Thu Sep 26 03:32:10 2013 -0700 + + Merge pull request #8 from hintjens/master + + Backporting fixes from master + +commit dd185e13bf0e502e38412cc712717ce2bc771302 +Author: Pieter Hintjens +Date: Thu Sep 26 12:31:43 2013 +0200 + + Bumped version for 4.0.1 + + NEWS | 13 +++++++++++++ + include/zmq.h | 2 +- + 2 files changed, 14 insertions(+), 1 deletion(-) + +commit 517601de10450635fd9d6cef5f7a8d9ef88a6a56 +Author: Pieter Hintjens +Date: Thu Sep 26 11:35:52 2013 +0200 + + curve_keygen needed assert.h + + tools/curve_keygen.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5e25b32c3679752b40c7a7aa0d25c83150b688d1 +Author: Pieter Hintjens +Date: Thu Sep 26 11:33:44 2013 +0200 + + Build/test errors on OS/X with clang++ + + src/options.cpp | 2 +- + tests/test_stream.cpp | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit a5152245bdd39caa747ae7f38374faa945cb51ed +Author: Martin Hurton +Date: Thu Sep 26 09:38:09 2013 +0200 + + Call flush after writing the identity message + + src/stream_engine.cpp | 1 + + 1 file changed, 1 insertion(+) + +commit 9cbcc49a4acee8d84890f70698b8233debefb1cf +Merge: 2d5bad9 8a931a7 +Author: Pieter Hintjens +Date: Tue Sep 24 03:32:02 2013 -0700 + + Merge pull request #6 from ipechorin/master + + stdint.h is not available on all platforms + +commit 2d5bad96e3c4b1bc5dd9cd822afca5b4e6f01ce5 +Merge: b04df2c c99b727 +Author: Pieter Hintjens +Date: Tue Sep 24 03:31:08 2013 -0700 + + Merge pull request #7 from hintjens/master + + Fixed build for MSVC 2008 + +commit c99b727f6dbbc8fdfa70d1ca2a5ca538601805a1 +Author: Pieter Hintjens +Date: Tue Sep 24 12:29:29 2013 +0200 + + Fixed build for MSVC 2008 + + include/zmq_utils.h | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 8a931a7554931d9a387edaa07fd76b5d41257b1e +Author: Ivan Pechorin +Date: Tue Sep 24 14:00:08 2013 +0400 + + stdint.h is not available on all platforms + + include/zmq.h | 3 +++ + include/zmq_utils.h | 1 - + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit b04df2c5309f049202c4f7da78258e3f4fb5432a +Merge: ad1bae2 4df7cb0 +Author: Pieter Hintjens +Date: Tue Sep 24 00:12:03 2013 -0700 + + Merge pull request #4 from hintjens/master + + Updated library ABI version + +commit 4df7cb043e3649550de7fadbc53635056fb2f4ed +Author: Pieter Hintjens +Date: Tue Sep 24 09:11:17 2013 +0200 + + Bumped library version and age + + configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 201454e8660477fd683aa29d9dadc379c60f5c5a +Author: Pieter Hintjens +Date: Fri Sep 20 23:17:01 2013 +0200 + + Move away from port 8080 which is occupied on some boxes + + tests/test_stream.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ad1bae21608710e3f85253f9ad7fb4ecf1431fc8 +Merge: 61d8bf9 77f394a +Author: Richard Newton +Date: Fri Sep 20 12:48:29 2013 -0700 + + Merge pull request #3 from vortechs2000/fix_aix + + Revert "Reference platform.h by ../src/platform.h - AIX is ignoring -I flags" + +commit 77f394a6813fcf238eb44c9c320116f9921fd1f7 +Author: AJ Lewis +Date: Fri Sep 20 14:39:01 2013 -0500 + + Revert "Reference platform.h by ../src/platform.h - AIX is ignoring -I flags" + + This reverts commit 1e8e4d79c885b27831e2196d94987cc2817e0f04. + + perf/inproc_lat.cpp | 3 +-- + perf/inproc_thr.cpp | 3 +-- + tests/testutil.hpp | 3 +-- + 3 files changed, 3 insertions(+), 6 deletions(-) + +commit 61d8bf9b11e11cfd49302d850dacb5feda33b4aa +Merge: c0c8ce5 1e8e4d7 +Author: Pieter Hintjens +Date: Fri Sep 20 09:54:03 2013 -0700 + + Merge pull request #2 from vortechs2000/fix_aix + + Reference platform.h by ../src/platform.h - AIX is ignoring -I flags + +commit 1e8e4d79c885b27831e2196d94987cc2817e0f04 +Author: AJ Lewis +Date: Fri Sep 20 11:43:53 2013 -0500 + + Reference platform.h by ../src/platform.h - AIX is ignoring -I flags + + perf/inproc_lat.cpp | 3 ++- + perf/inproc_thr.cpp | 3 ++- + tests/testutil.hpp | 3 ++- + 3 files changed, 6 insertions(+), 3 deletions(-) + +commit c0c8ce550888272b155400457661e8315546822f +Author: Pieter Hintjens +Date: Fri Sep 20 16:41:08 2013 +0200 + + File was missing from Makefile.am + + src/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 66b1bc6d7f3e04df298270c10f16bf07cc7ef326 +Author: Pieter Hintjens +Date: Fri Sep 20 16:15:53 2013 +0200 + + Added link to security tutorial + + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f5ecc826d963d72affb8cf79c6fd279662fd4b7a +Merge: 8f0a757 a31fe95 +Author: Pieter Hintjens +Date: Fri Sep 20 07:06:48 2013 -0700 + + Merge pull request #1 from hintjens/master + + Preparation for 4.0.0 release + +commit a31fe9565aa26d73aa4d8bbb0091552056cb5751 +Author: Pieter Hintjens +Date: Fri Sep 20 16:03:14 2013 +0200 + + Source distribution was broken + + src/Makefile.am | 1 - + tools/Makefile.am | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit 2f4905500d862bb9f0f3871c367d67fb020384b0 +Author: Pieter Hintjens +Date: Fri Sep 20 16:02:55 2013 +0200 + + Version number is 4.0.0 + + include/zmq.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c10a3ec526a0cc226ad64b74fed6c1b3b04b8daa +Author: Pieter Hintjens +Date: Fri Sep 20 15:53:27 2013 +0200 + + Updated NEWS for 4.0.0 + + NEWS | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 109 insertions(+), 2 deletions(-) + +commit e0676a2b26c5b215d07061c8b6606b12a9e0c961 +Author: Pieter Hintjens +Date: Fri Sep 20 15:30:04 2013 +0200 + + Renamed new socket options to be clearer + + * ZMQ_REQ_STRICT was negative option (default 1) which goes against + the standard, where defaults are zero. I renamed this to + ZMQ_REQ_RELAXED. + + * ZMQ_REQ_REQUEST_IDS felt clumsy and describes the technical solution + rather than the problem/requirement. I changed to ZMQ_REQ_CORRELATE + which seems more explicit. + + .gitignore | 4 +- + CMakeLists.txt | 4 +- + doc/zmq_getsockopt.txt | 4 +- + doc/zmq_setsockopt.txt | 26 +++--- + include/zmq.h | 4 +- + src/req.cpp | 6 +- + tests/Makefile.am | 8 +- + tests/test_req_correlate.cpp | 177 ++++++++++++++++++++++++++++++++++++++++ + tests/test_req_relaxed.cpp | 116 ++++++++++++++++++++++++++ + tests/test_req_request_ids.cpp | 177 ---------------------------------------- + tests/test_req_strict.cpp | 117 -------------------------- + 11 files changed, 321 insertions(+), 322 deletions(-) + +commit b411a3561d2f9f2de29bf42820ca4d408b602107 +Author: Pieter Hintjens +Date: Fri Sep 20 14:39:35 2013 +0200 + + Removed inaccurate note in zmq_poll man page + + doc/zmq_poll.txt | 4 ---- + 1 file changed, 4 deletions(-) + +commit 4ce9b4240596f3146a15c97d11f5a3068a805883 +Author: Pieter Hintjens +Date: Fri Sep 20 14:28:06 2013 +0200 + + Built zmq_send_const man page properly + + doc/Makefile.am | 2 +- + doc/zmq.txt | 1 + + doc/zmq_send_const.txt | 2 +- + 3 files changed, 3 insertions(+), 2 deletions(-) + +commit fef4fa8fc54eb267575e534bff35cd0009485d26 +Author: Pieter Hintjens +Date: Fri Sep 20 14:23:43 2013 +0200 + + Renamed test_connect_delay to test_immediate + + * The ZMQ_CONNECT_DELAY option was renamed to ZMQ_IMMEDIATE + + .gitignore | 2 +- + CMakeLists.txt | 2 +- + tests/Makefile.am | 4 +- + tests/test_connect_delay.cpp | 229 ------------------------------------------ + tests/test_immediate.cpp | 229 ++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 233 insertions(+), 233 deletions(-) + +commit 4298f71cbf94cf391a9b6f6e6bc9971843f06bd6 +Author: Pieter Hintjens +Date: Fri Sep 20 13:28:25 2013 +0200 + + Updated NEWS for 3.2.x releases + + NEWS | 37 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 36 insertions(+), 1 deletion(-) + +commit 8f0a757f08f66688ccffdc43ca01b9d07464f032 +Merge: 90867a4 78cabfe +Author: Pieter Hintjens +Date: Thu Sep 19 06:09:13 2013 -0700 + + Merge pull request #671 from ricnewton/master + + Testing github jenkins integration + +commit 78cabfe8eabd252cd7a75a6a2b8af8ef1552dd51 +Author: Richard Newton +Date: Thu Sep 19 12:58:58 2013 +0100 + + More testing github jenkins integration + + AUTHORS | 1 - + 1 file changed, 1 deletion(-) + +commit d503e19381e96d7cf0a07d78b33cdb55c880cac4 +Merge: 544575d 90867a4 +Author: Richard Newton +Date: Thu Sep 19 12:37:54 2013 +0100 + + Merge branch 'master' of https://github.com/zeromq/libzmq + +commit 544575d18ca4c81827c0becb8fa27c03e78f64bf +Author: Richard Newton +Date: Thu Sep 19 12:28:21 2013 +0100 + + Revert "More testing github jenkins integratio" + + This reverts commit 0640d6d2baa014ad93ba57ad2f692af8f9081eb0. + + AUTHORS | 1 + + 1 file changed, 1 insertion(+) + +commit 0640d6d2baa014ad93ba57ad2f692af8f9081eb0 +Author: Richard Newton +Date: Thu Sep 19 12:11:50 2013 +0100 + + More testing github jenkins integratio + + AUTHORS | 1 - + 1 file changed, 1 deletion(-) + +commit 575ff39bfe6b9c51b159e1e10d7881c017ef7d62 +Author: Richard Newton +Date: Thu Sep 19 12:02:17 2013 +0100 + + Testing github jenkins integration + + AUTHORS | 1 + + 1 file changed, 1 insertion(+) + +commit 90867a4e8f23c9a360c7b276b93521b1a61b7866 +Merge: 39de9be 7a747b5 +Author: Pieter Hintjens +Date: Thu Sep 19 02:42:31 2013 -0700 + + Merge pull request #670 from ricnewton/master + + Fix cmake build + +commit 7a747b5797e4976012cfe1f96f44e224b5f643f0 +Author: Richard Newton +Date: Thu Sep 19 09:46:26 2013 +0100 + + Fix cmake build + + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 39de9bebcb53ad08f745c29befe8e13c88c0cf57 +Merge: de91c73 e055560 +Author: Richard Newton +Date: Thu Sep 19 00:43:49 2013 -0700 + + Merge pull request #669 from hintjens/master + + Renamed inproc connect test (name was too long) + +commit e05556075f446c1b5004e6854a157648fe077f8b +Author: Pieter Hintjens +Date: Thu Sep 19 09:36:43 2013 +0200 + + Renamed inproc connect test (name was too long) + + .gitignore | 3 +- + tests/Makefile.am | 4 +- + tests/test_inproc_connect.cpp | 339 +++++++++++++++++++++++++++++ + tests/test_inproc_connect_before_bind.cpp | 339 ----------------------------- + 4 files changed, 342 insertions(+), 343 deletions(-) + +commit de91c7362cd6ca64a1a964b126658768c45e2814 +Merge: 94c98ab b132305 +Author: Richard Newton +Date: Wed Sep 18 04:09:51 2013 -0700 + + Merge pull request #668 from mrothe/no-public-tests + + tests: don't listen on public ports + +commit 94c98abba3cfcdbd1127840e7ba5a06d63d467af +Merge: dc79171 825052f +Author: Richard Newton +Date: Wed Sep 18 04:07:35 2013 -0700 + + Merge pull request #667 from hintjens/master + + Reverted pull request 666 + +commit b13230510ceced26f2dd6ee4707d9403f645da15 +Author: Markus Rothe +Date: Wed Sep 18 12:58:19 2013 +0200 + + tests: don't listen on public ports + + tests/test_connect_delay.cpp | 8 ++++---- + tests/test_disconnect_inproc.cpp | 2 +- + tests/test_probe_router.cpp | 2 +- + tests/test_req_request_ids.cpp | 2 +- + tests/test_req_strict.cpp | 2 +- + tests/test_security_curve.cpp | 2 +- + tests/test_security_null.cpp | 12 ++++++------ + tests/test_security_plain.cpp | 2 +- + tests/test_spec_dealer.cpp | 2 +- + tests/test_spec_pushpull.cpp | 2 +- + tests/test_spec_rep.cpp | 2 +- + tests/test_spec_req.cpp | 2 +- + tests/test_spec_router.cpp | 2 +- + tests/test_stream.cpp | 4 ++-- + 14 files changed, 23 insertions(+), 23 deletions(-) + +commit 825052f83fd32179d0c52478ae4eb9266e2c4a6b +Author: Pieter Hintjens +Date: Tue Sep 17 14:05:55 2013 +0200 + + Revert "makes curve keys symetric as in libcurve + factorisation" + + This reverts commit bfd472f97cad5e37fa384b687a906f515600bac4. + + include/zmq.h | 21 +++----- + src/curve_client.cpp | 54 +++++++++---------- + src/curve_client.hpp | 30 +++++------ + src/curve_server.cpp | 54 +++++++++---------- + src/curve_server.hpp | 20 +++---- + src/options.cpp | 120 ++++++++++++++++++++++++----------------- + src/options.hpp | 10 ++-- + tests/test_security_curve.cpp | 37 ++++++------- + 8 files changed, 178 insertions(+), 168 deletions(-) + +commit 22eb4d600b237cee894c7f32c6cdc8d5594fb9e3 +Author: Pieter Hintjens +Date: Tue Sep 17 14:05:41 2013 +0200 + + Revert "oblige the application to explicitely set the node type for PLAIN" + + This reverts commit 1206f4572b4b3bb405a14cc60605b75d53b819a0. + + include/zmq.h | 4 ++-- + src/options.cpp | 16 +++++++++------- + tests/test_security_curve.cpp | 4 ++-- + tests/test_security_plain.cpp | 9 +++------ + 4 files changed, 16 insertions(+), 17 deletions(-) + +commit 9e66685c0874210cbd74eb4a4c1283f249863973 +Author: Pieter Hintjens +Date: Tue Sep 17 13:33:24 2013 +0200 + + Reformatted text + + doc/zmq_setsockopt.txt | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit dc79171fc37597613c827f5ab00aa71fee3d2ac9 +Merge: ad0b325 1206f45 +Author: Pieter Hintjens +Date: Tue Sep 17 04:32:45 2013 -0700 + + Merge pull request #666 from lalebarde/master + + curve key names as in libcurve, symetry design, a few logic improvements + +commit 1206f4572b4b3bb405a14cc60605b75d53b819a0 +Author: Laurent Alebarde +Date: Tue Sep 17 12:47:21 2013 +0200 + + oblige the application to explicitely set the node type for PLAIN + + include/zmq.h | 4 ++-- + src/options.cpp | 16 +++++++--------- + tests/test_security_curve.cpp | 4 ++-- + tests/test_security_plain.cpp | 9 ++++++--- + 4 files changed, 17 insertions(+), 16 deletions(-) + +commit bfd472f97cad5e37fa384b687a906f515600bac4 +Author: Laurent Alebarde +Date: Tue Sep 17 12:44:14 2013 +0200 + + makes curve keys symetric as in libcurve + factorisation + + include/zmq.h | 21 +++++--- + src/curve_client.cpp | 54 +++++++++---------- + src/curve_client.hpp | 30 +++++------ + src/curve_server.cpp | 54 +++++++++---------- + src/curve_server.hpp | 20 +++---- + src/options.cpp | 120 +++++++++++++++++------------------------ + src/options.hpp | 10 ++-- + tests/test_security_curve.cpp | 37 +++++++------ + 8 files changed, 168 insertions(+), 178 deletions(-) + +commit ad0b325e4a0f172438700d933b8bcaee7caf4d73 +Merge: 67013f1 7bb2b6a +Author: Martin Hurton +Date: Tue Sep 17 01:53:59 2013 -0700 + + Merge pull request #665 from hintjens/master + + Added test case for NULL domains + +commit 7bb2b6ae11cafd241a6007bb2d564d4765ff8cf9 +Author: Pieter Hintjens +Date: Tue Sep 17 10:04:57 2013 +0200 + + Fixed length of domain setting + + tests/test_security_null.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7735ca5f8dcc98f71e24ca15c980fd6e2715c036 +Author: Pieter Hintjens +Date: Tue Sep 17 09:48:32 2013 +0200 + + Added test case for NULL domains + + tests/test_security_null.cpp | 90 +++++++++++++++++++++++++++++++----------- + 1 file changed, 67 insertions(+), 23 deletions(-) + +commit 67013f19f6fd37c1abe9cc89102e7bb38628ebea +Merge: 971b275 321a8ff +Author: Ian Barber +Date: Mon Sep 16 06:20:21 2013 -0700 + + Merge pull request #664 from hintjens/master + + NULL mechanism was not dealing with ZAP denials properly + +commit 321a8ffea91583535a7cddf7b970cff7f9414b4c +Author: Pieter Hintjens +Date: Mon Sep 16 15:09:55 2013 +0200 + + NULL mechanism was not dealing with ZAP denials properly + + src/null_mechanism.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 971b275f7acc3573575f5375453dd2a93e2605fd +Merge: 276cd1f fe9815a +Author: Ian Barber +Date: Mon Sep 16 02:04:44 2013 -0700 + + Merge pull request #663 from hintjens/master + + Fixed random failures in test_security_plain and _curve + +commit fe9815a7892404deef3989d9ff35a9e78935bc83 +Author: Pieter Hintjens +Date: Mon Sep 16 10:56:49 2013 +0200 + + Fixed random failures in test_security_plain and _curve + + * ZAP handler thread was not getting time to start up + * Code now creates and binds handler socket in parent thread and + passes the socket to the zap_handler, so this always gets the + authentication requests. + + tests/test_security_curve.cpp | 55 ++++++++++++++++++++--------------------- + tests/test_security_null.cpp | 45 +++++++++++++++++---------------- + 2 files changed, 49 insertions(+), 51 deletions(-) + +commit 276cd1f1dae6e1404a143edfe7e1323314224e16 +Merge: fbe1b79 6f35100 +Author: Pieter Hintjens +Date: Mon Sep 16 01:32:55 2013 -0700 + + Merge pull request #662 from ricnewton/master + + Fix windows build + +commit 6f351007d4a710207ad4730923add9635873af11 +Author: Richard Newton +Date: Mon Sep 16 09:23:47 2013 +0100 + + Fix windows build + + tests/testutil.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fbe1b79188eb45deaa67a95e9a21a62a52e54b7e +Merge: d76f3f7 dc1f5e9 +Author: Pieter Hintjens +Date: Sun Sep 15 15:36:00 2013 -0700 + + Merge pull request #661 from lalebarde/master + + simplify test_security_curve.cpp with zmq_z85_encode + +commit dc1f5e9f7c0c2331b0eb5edc487b711f257bc89b +Author: Laurent Alebarde +Date: Mon Sep 16 00:06:24 2013 +0200 + + simplify test_security_curve.cpp with zmq_z85_encode + + tests/test_security_curve.cpp | 35 +---------------------------------- + 1 file changed, 1 insertion(+), 34 deletions(-) + +commit d76f3f7c036d02e7ac36d444bec471425cd36d5c +Merge: 5c7b392 576e3ca +Author: Ian Barber +Date: Sun Sep 15 11:37:16 2013 -0700 + + Merge pull request #660 from hintjens/master + + Added z85 codec to ZMQ API + +commit 576e3ca5e0f0d67f673e1ef30ec1071d19cb6b3a +Author: Pieter Hintjens +Date: Sun Sep 15 20:07:33 2013 +0200 + + Added z85 codec to ZMQ API + + * Removed redundant Z85 code and include files from project + * Simplified use of headers in test cases (now they all just use testutil.hpp) + * Export zmq_z85_encode() and zmq_z85_decode() in API + * Added man pages for these two functions + + doc/Makefile.am | 3 +- + doc/zmq_curve.txt | 2 + + doc/zmq_z85_decode.txt | 50 +++++++++++++ + doc/zmq_z85_encode.txt | 56 +++++++++++++++ + include/zmq.h | 6 ++ + include/zmq_utils.h | 5 ++ + src/Makefile.am | 1 - + src/options.cpp | 14 ++-- + src/z85_codec.hpp | 109 ----------------------------- + src/zmq_utils.cpp | 91 ++++++++++++++++++++++-- + tests/test_conflate.cpp | 2 - + tests/test_connect_delay.cpp | 6 -- + tests/test_connect_resolve.cpp | 3 - + tests/test_ctx_destroy.cpp | 3 - + tests/test_ctx_options.cpp | 2 - + tests/test_disconnect_inproc.cpp | 2 - + tests/test_fork.cpp | 10 +-- + tests/test_hwm.cpp | 3 - + tests/test_inproc_connect_before_bind.cpp | 2 - + tests/test_invalid_rep.cpp | 4 +- + tests/test_iov.cpp | 5 -- + tests/test_last_endpoint.cpp | 2 - + tests/test_linger.cpp | 3 - + tests/test_monitor.cpp | 4 -- + tests/test_msg_flags.cpp | 2 - + tests/test_pair_inproc.cpp | 1 - + tests/test_pair_ipc.cpp | 1 - + tests/test_pair_tcp.cpp | 1 - + tests/test_probe_router.cpp | 3 - + tests/test_req_request_ids.cpp | 2 - + tests/test_req_strict.cpp | 3 - + tests/test_reqrep_device.cpp | 3 - + tests/test_reqrep_inproc.cpp | 1 - + tests/test_reqrep_ipc.cpp | 1 - + tests/test_reqrep_tcp.cpp | 1 - + tests/test_router_mandatory.cpp | 3 - + tests/test_security_curve.cpp | 4 -- + tests/test_security_null.cpp | 3 - + tests/test_security_plain.cpp | 3 - + tests/test_shutdown_stress.cpp | 4 -- + tests/test_spec_dealer.cpp | 2 - + tests/test_spec_pushpull.cpp | 2 - + tests/test_spec_rep.cpp | 2 - + tests/test_spec_req.cpp | 3 - + tests/test_spec_router.cpp | 2 - + tests/test_stream.cpp | 2 - + tests/test_sub_forward.cpp | 4 -- + tests/test_system.cpp | 15 ++-- + tests/test_term_endpoint.cpp | 4 -- + tests/test_timeo.cpp | 5 -- + tests/testutil.hpp | 14 +++- + tools/curve_keygen.c | 46 +----------- + tools/z85_codec.h | 109 ----------------------------- + 53 files changed, 237 insertions(+), 397 deletions(-) + +commit 5c7b39275f322799d1baa9be79340943071fa950 +Merge: 9066851 193d0bb +Author: Ian Barber +Date: Sun Sep 15 09:51:09 2013 -0700 + + Merge pull request #659 from hintjens/master + + Fixed Z85 methods to be static + +commit 193d0bb63400d1a0f9a4c970e08c4807358244eb +Author: Pieter Hintjens +Date: Sun Sep 15 17:30:18 2013 +0200 + + Fixed Z85 methods to be static and not pollute library + + src/z85_codec.hpp | 4 ++-- + tests/test_security_curve.cpp | 41 +++++++++++++++++++++++++++++++++++++++-- + tools/curve_keygen.c | 39 +++++++++++++++++++++++++++++++++++++-- + tools/z85_codec.h | 4 ++-- + 4 files changed, 80 insertions(+), 8 deletions(-) + +commit 65ef76bb59255c2614055910748359276656c996 +Author: Pieter Hintjens +Date: Sun Sep 15 15:45:37 2013 +0200 + + Minor simplification to makefile + + tools/Makefile.am | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 90668517da4d29383470a794c51bb1647b2cc8ab +Merge: 133c32d 4e6c56e +Author: Pieter Hintjens +Date: Sun Sep 15 06:19:00 2013 -0700 + + Merge pull request #658 from ricnewton/inproc_connect_before_bind + + Support high water mark on inproc socket connect before bind. + +commit 4e6c56e081a00f9963af337f5d49c73e2ac8afc3 +Merge: b929882 133c32d +Author: Richard Newton +Date: Sun Sep 15 13:36:07 2013 +0100 + + Merge branch 'master' of https://github.com/zeromq/libzmq into inproc_connect_before_bind + +commit b9298823b4b42dd5beeedfcf8e06cb5f57ecd3bb +Author: Richard Newton +Date: Sun Sep 15 13:35:44 2013 +0100 + + Set hwm on connect socket before bind has happend to just that of connects hwm. + + src/pipe.cpp | 4 +- + src/socket_base.cpp | 8 ++- + tests/test_hwm.cpp | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++- + 3 files changed, 163 insertions(+), 5 deletions(-) + +commit 7841b0dd0f94e050bce753c394cd034ab3184ee9 +Author: Richard Newton +Date: Sat Sep 14 17:27:18 2013 +0100 + + Support high water mark on inproc socket connect before bind. + + src/ctx.cpp | 97 ++++++++++++++++++++++--------------- + src/ctx.hpp | 2 + + src/object.hpp | 3 +- + src/pipe.cpp | 5 ++ + src/pipe.hpp | 3 ++ + tests/test_hwm.cpp | 134 +++++++++++++++++++++++++++++++++++++++------------- + 6 files changed, 171 insertions(+), 73 deletions(-) + +commit 133c32d5ed523c8bd7976f1fd43663083d9456ff +Merge: 3298e5a 0db2bbe +Author: Richard Newton +Date: Fri Sep 13 00:52:12 2013 -0700 + + Merge pull request #657 from hintjens/master + + Build didn't work if libsodium wasn't installed + +commit 0db2bbe29d4b4096ecb863c1702cb29d3eadbd29 +Author: Pieter Hintjens +Date: Fri Sep 13 09:47:23 2013 +0200 + + Build didn't work if libsodium wasn't installed + + tools/curve_keygen.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 3298e5a206ccab9c441c69a165332a97cbf6ccb9 +Merge: c1fabf5 b9c0906 +Author: Pieter Hintjens +Date: Thu Sep 12 13:46:37 2013 -0700 + + Merge pull request #656 from ricnewton/inproc_connect_before_bind + + Allow inproc sockets to connect before bind + +commit b9c09064d5760e015b33c716aace846eb3802c43 +Author: Richard Newton +Date: Thu Sep 12 21:22:47 2013 +0100 + + Fix whitespace + + src/socket_base.cpp | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit d5bd68b60b0311699b0fad411db0f1a09f3ee030 +Merge: 379bcb0 c1fabf5 +Author: Richard Newton +Date: Thu Sep 12 21:09:30 2013 +0100 + + Merge branch 'master' of https://github.com/zeromq/libzmq into inproc_connect_before_bind + +commit 379bcb088153cf4207e46b82bebd50f9fcf7e359 +Author: Richard Newton +Date: Thu Sep 12 21:07:29 2013 +0100 + + Send identities when connecting pending sockets. + + src/ctx.cpp | 39 ++++++++++++---- + src/ctx.hpp | 7 +-- + src/object.cpp | 2 +- + src/object.hpp | 2 +- + src/socket_base.cpp | 3 +- + tests/test_inproc_connect_before_bind.cpp | 71 +++++++++++++++++++++++++---- + 6 files changed, 102 insertions(+), 22 deletions(-) + +commit c1fabf5ca9e7e9c575ab7a6e8a648a9f0e0ebf2a +Merge: 60f4704 345bf14 +Author: Ian Barber +Date: Thu Sep 12 10:27:57 2013 -0700 + + Merge pull request #655 from hintjens/master + + Fixed overwrite in zmq_getsockopt + +commit 7c3496a76acfad992ebd7f1af1c2b22174b79530 +Author: Richard Newton +Date: Thu Sep 12 18:09:37 2013 +0100 + + Fix race condition and support multiple socket connects before bind. + + .gitignore | 1 + + src/command.hpp | 1 + + src/ctx.cpp | 43 +++++-- + src/ctx.hpp | 4 +- + src/object.cpp | 16 ++- + src/object.hpp | 3 +- + src/socket_base.cpp | 46 +------- + tests/Makefile.am | 4 +- + tests/test_inproc_connect_before_bind.cpp | 180 ++++++++++++++++++++++++++++- + 9 files changed, 232 insertions(+), 66 deletions(-) + +commit 60f470450d5d541eed604b437252b0c300f1f6ee +Merge: 168efb9 6c84a54 +Author: Pieter Hintjens +Date: Thu Sep 12 09:53:26 2013 -0700 + + Merge pull request #654 from lalebarde/master + + add exhaustive comparison in testutil bounce + +commit 6c84a543882c8ac4e673c5de40df11a27ab76c75 +Author: Laurent Alebarde +Date: Thu Sep 12 18:17:31 2013 +0200 + + add exhaustive comparison in testutil bounce + + tests/testutil.hpp | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 345bf146f151cbc62fd8b000dbe1316463d2a82d +Author: Pieter Hintjens +Date: Thu Sep 12 18:03:23 2013 +0200 + + Fixed overwrite in zmq_getsockopt + + On ZMQ_CURVE_xxxKEY fetches, would return 41 bytes into caller's 40-byte + buffer. Now these fetches only return 41 bytes if the caller explicitly + provides a 41-byte buffer (i.e. the option size is 41). + + doc/zmq_getsockopt.txt | 12 +++++++----- + src/options.cpp | 6 +++--- + src/options.hpp | 2 +- + src/z85_codec.hpp | 3 ++- + tools/z85_codec.h | 3 ++- + 5 files changed, 15 insertions(+), 11 deletions(-) + +commit 6fefa4166acae14edf69473bb739a34d46128a70 +Merge: 5f20d63 168efb9 +Author: Richard Newton +Date: Thu Sep 12 15:13:25 2013 +0100 + + Merge remote-tracking branch 'upstream/master' into inproc_connect_before_bind + +commit 5f20d63665c0ddbd3ff8824a9d1eda33bea07735 +Author: Richard Newton +Date: Thu Sep 12 14:44:44 2013 +0100 + + First attempt at inproc connect before bind + + CMakeLists.txt | 3 +- + src/ctx.cpp | 28 +++++++ + src/ctx.hpp | 13 +++ + src/object.cpp | 15 ++++ + src/object.hpp | 5 ++ + src/socket_base.cpp | 127 ++++++++++++++++++++--------- + tests/test_ctx_destroy.cpp | 3 + + tests/test_inproc_connect_before_bind.cpp | 114 ++++++++++++++++++++++++++ + tests/test_pair_inproc.cpp | 2 +- + 9 files changed, 270 insertions(+), 40 deletions(-) + +commit 168efb9739eb3064bbbffc7c5849e4682e47547b +Merge: 0d14efe 0f9e5f6 +Author: Martin Hurton +Date: Thu Sep 12 05:21:25 2013 -0700 + + Merge pull request #653 from mattconnolly/master + + Fix preprocessor typoe + +commit 6ff65a8aa4c97ddf442c4d72a74a95a81be5057f +Author: Pieter Hintjens +Date: Thu Sep 12 13:16:22 2013 +0200 + + Builds and installs curve_keygen tool + + tools/Makefile.am | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 0d14efe73a9c39b263240614ad4a40ac5020e55e +Merge: 0f7141c ac8c72c +Author: Richard Newton +Date: Thu Sep 12 03:56:27 2013 -0700 + + Merge pull request #652 from hintjens/master + + Minor fixes to project packaging + +commit ac8c72cea68235faffe71b248bf45ae57fe5619f +Author: Pieter Hintjens +Date: Thu Sep 12 12:47:14 2013 +0200 + + Added test_ctx_destroy to .gitignore + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit d1ba8a50d2fad55dbb000065326e2e9138bfd1d0 +Author: Pieter Hintjens +Date: Thu Sep 12 12:46:43 2013 +0200 + + Extended TravisCI build to use libsodium + + .travis.yml | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit 52370bff4485d6aa3e84ccf49f4f6020b50b76af +Author: Pieter Hintjens +Date: Thu Sep 12 12:46:23 2013 +0200 + + Removed debugging printfs + + tests/test_security_curve.cpp | 2 -- + tests/test_security_null.cpp | 2 -- + tests/test_security_plain.cpp | 2 -- + 3 files changed, 6 deletions(-) + +commit 0f9e5f60498cdd2146c24a8133356d59d963d806 +Author: Matt Connolly +Date: Thu Sep 12 20:30:16 2013 +1000 + + Fix preprocessor typoe + + tests/test_system.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0f7141c21a2eb5adc6cb14530b7cce7d048ccbd6 +Merge: bba0dd1 8e6b5ad +Author: Pieter Hintjens +Date: Wed Sep 11 09:33:08 2013 -0700 + + Merge pull request #651 from ricnewton/master + + Fix Makefile.am for test_ctx_destroy + +commit 8e6b5ad17ef963d2ecafa3b25659a226fa1d212c +Author: Richard Newton +Date: Wed Sep 11 15:02:16 2013 +0100 + + Fix Makefile.am for test_ctx_destroy + + tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit bba0dd19a1886ed818c537abd8ca7896bafc2f68 +Merge: 25c89ca ccf0e61 +Author: Pieter Hintjens +Date: Tue Sep 10 07:03:40 2013 -0700 + + Merge pull request #650 from ricnewton/master + + Implement non-blocking shutdown command + +commit ccf0e61b770bde35b6ce7d46ca026c15a2101b1c +Merge: 64e1c18 25c89ca +Author: Richard Newton +Date: Tue Sep 10 13:30:11 2013 +0100 + + Merge remote-tracking branch 'upstream/master' + +commit 64e1c181f71299614975b2809e112803719221b1 +Author: Richard Newton +Date: Tue Sep 10 13:30:00 2013 +0100 + + Implement non-blocking shutdown command that unblocks other threads waiting on blocking operations. + + CMakeLists.txt | 1 + + doc/zmq_ctx_shutdown.txt | 52 +++++++++++++++++++++++++ + include/zmq.h | 1 + + src/ctx.cpp | 19 ++++++++++ + src/ctx.hpp | 9 +++++ + src/zmq.cpp | 10 +++++ + tests/Makefile.am | 1 + + tests/test_ctx_destroy.cpp | 90 ++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 183 insertions(+) + +commit 25c89cace164c50434ec0300aa2fd50337064561 +Merge: 4edad54 6725c46 +Author: Martin Hurton +Date: Mon Sep 9 12:12:36 2013 -0700 + + Merge pull request #649 from hintjens/master + + Fixed minor error in NULL mechanism (spec was wrong) + +commit 6725c4644f111ba3f3ab3b0aba5a53cea0265391 +Author: Pieter Hintjens +Date: Mon Sep 9 20:40:34 2013 +0200 + + Added ZMQ_ZAP_DOMAIN socket option + + * This is passed to the ZAP handler in the 'domain' field + + * If not set, or empty, then NULL security does not call the ZAP handler + + * This resolves the phantom ZAP request syndrome seen with sockets where + security was never intended (e.g. in test cases) + + * This means if you install a ZAP handler, it will not get any requests + for new connections until you take some explicit action, which can be + setting a username/password for PLAIN, a key for CURVE, or the domain + for NULL. + + doc/zmq_getsockopt.txt | 50 +++++++++++++++++---------- + doc/zmq_setsockopt.txt | 76 +++++++++++++++++++++++++---------------- + include/zmq.h | 5 +-- + src/curve_server.cpp | 7 ++-- + src/null_mechanism.cpp | 9 +++-- + src/options.cpp | 53 +++++++++++++++++----------- + src/options.hpp | 11 +++--- + src/plain_mechanism.cpp | 7 ++-- + tests/test_security_curve.cpp | 22 ++++++------ + tests/test_security_null.cpp | 27 ++++++++------- + tests/test_security_plain.cpp | 16 +++++---- + 11 files changed, 171 insertions(+), 112 deletions(-) + +commit c45d91a10611b8a9812691f404fd3e30f002585a +Author: Pieter Hintjens +Date: Mon Sep 9 19:58:31 2013 +0200 + + Fixed comments on curve_keygen tool + + tools/curve_keygen.c | 26 ++++++++++---------------- + 1 file changed, 10 insertions(+), 16 deletions(-) + +commit 635a03d2404129d0d5cee0ad517591befeba4f14 +Author: Pieter Hintjens +Date: Mon Sep 9 19:58:18 2013 +0200 + + Was sending NULL mechanism name with extra null (fixed) + + src/null_mechanism.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 4edad545372774c5d8aaae87d45490f27d171884 +Merge: 498dc37 a601b3f +Author: Pieter Hintjens +Date: Fri Sep 6 03:19:45 2013 -0700 + + Merge pull request #648 from ricnewton/master + + Fix tests on windows + +commit a601b3f6f40e8d5a2926dbf61c00d9b416e33560 +Author: Richard Newton +Date: Fri Sep 6 10:25:00 2013 +0100 + + Remove windows debug code. + + tests/test_system.cpp | 1 - + 1 file changed, 1 deletion(-) + +commit 7485b09cba0d335de271949f41bb6a5b77ee08c4 +Author: Richard Newton +Date: Fri Sep 6 10:08:11 2013 +0100 + + Fix tests on windows + + tests/test_security_curve.cpp | 2 +- + tests/test_system.cpp | 33 +++++++++++++++++++++++++++++++++ + 2 files changed, 34 insertions(+), 1 deletion(-) + +commit 498dc3798878c611392b27064efa1e2161d1d9bf +Merge: 1f03710 4c75306 +Author: Martin Hurton +Date: Fri Sep 6 00:54:51 2013 -0700 + + Merge pull request #645 from hintjens/master + + Updated libzmq to match RFCs + +commit 4c753060236caf12102194b313abfb28dccaa7ff +Author: Pieter Hintjens +Date: Fri Sep 6 09:22:09 2013 +0200 + + Fixed test_stream case + + - was not looping to read all input from peer + - broke on OS/X specifically + + tests/test_stream.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 9dd324aab23d8540260c8da93ae3927854542ecb +Author: Pieter Hintjens +Date: Thu Sep 5 15:18:42 2013 +0200 + + z85 encoding buffer overrun + + tests/test_security_curve.cpp | 2 +- + tools/curve_keygen.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 1f037109806081468f250dda4f2762cec8e1f452 +Merge: 7b02f1c 11deee4 +Author: Pieter Hintjens +Date: Wed Sep 4 12:12:28 2013 -0700 + + Merge pull request #647 from sebastien/master + + Clarified zmq_socket.txt ZMQ_STREAM section, added HTTP server example + +commit 11deee4e3eafb0f97aae95b786e39007e335ca41 +Merge: f918884 7b02f1c +Author: Sebastien Pierre +Date: Wed Sep 4 15:02:50 2013 -0400 + + Merge branch 'master' of github.com:sebastien/libzmq + +commit f9188841b02b90fbba493c803f17be082d47f4d1 +Author: Sebastien Pierre +Date: Wed Sep 4 14:58:07 2013 -0400 + + Clarified zmq_socket.txt ZMQ_STREAM section, added example + + doc/zmq_socket.txt | 45 +++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 43 insertions(+), 2 deletions(-) + +commit 0a9261472f6c28e4092b0564da3960146bdfd743 +Author: Pieter Hintjens +Date: Wed Sep 4 19:41:33 2013 +0200 + + Removed test_raw_socket + + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 32fa426e61b92bdd0929990cebc799839cc335a7 +Author: Pieter Hintjens +Date: Wed Sep 4 19:38:15 2013 +0200 + + Added system check at start of selftests + + - tests that system can provide at least 1,000 sockets + - we could expand on this but this covers the main case of OS/X + having a too-low default limit of 256 handles per process + + .gitignore | 1 + + tests/Makefile.am | 4 +++- + tests/test_system.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 55 insertions(+), 1 deletion(-) + +commit 7b02f1c966cc7b615b6cfd5df81f09478be2dcb0 +Merge: ef207e4 bb34885 +Author: Pieter Hintjens +Date: Wed Sep 4 09:42:39 2013 -0700 + + Merge pull request #646 from minrk/xfail-linger + + mark test_linger as expected failure + +commit bb348858f14e797ef125f8ba95a3218ddbc3180a +Author: MinRK +Date: Wed Sep 4 09:38:54 2013 -0700 + + mark test_linger as expected failure + + rather than pretending it passes + + tests/Makefile.am | 3 ++- + tests/test_linger.cpp | 3 --- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 6612280946a40ae3d0d48ff729a1a81c23046ca8 +Author: Pieter Hintjens +Date: Wed Sep 4 18:10:47 2013 +0200 + + Removed temporary patch on tests/Makefile.am + + tests/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 28b0a5fa2711b43e2378b7c16367ce14604df096 +Author: Pieter Hintjens +Date: Wed Sep 4 17:59:45 2013 +0200 + + Updated libzmq to match RFC 23, 24, 25, 26 + + * Command names changed from null terminated to length-specified + * Command frames use the correct flag (bit 2) + * test_stream acts as test case for command frames + * Some code cleanups + + src/curve_client.cpp | 24 +++++++-------- + src/curve_client.hpp | 8 ++--- + src/curve_server.cpp | 24 +++++++-------- + src/curve_server.hpp | 8 ++--- + src/mechanism.hpp | 8 ++--- + src/msg.hpp | 3 +- + src/null_mechanism.cpp | 8 ++--- + src/null_mechanism.hpp | 4 +-- + src/plain_mechanism.cpp | 66 +++++++++++++++++++++-------------------- + src/plain_mechanism.hpp | 20 ++++++------- + src/stream_engine.cpp | 20 ++++++------- + src/stream_engine.hpp | 8 ++--- + src/v2_decoder.cpp | 2 ++ + src/v2_encoder.cpp | 2 ++ + src/v2_protocol.hpp | 3 +- + tests/Makefile.am | 3 +- + tests/test_security_curve.cpp | 2 +- + tests/test_stream.cpp | 8 ++--- + 18 files changed, 114 insertions(+), 107 deletions(-) + +commit 1844a27c82fbd72a83ffd28b59c2e5ab1f2ddab7 +Author: Pieter Hintjens +Date: Wed Sep 4 15:00:05 2013 +0200 + + Removed test_raw_sock test case (replaced by test_stream) + + tests/Makefile.am | 6 +- + tests/test_raw_sock.cpp | 166 ----------------------------------------------- + 2 files changed, 1 insertion(+), 171 deletions(-) + +commit ef207e45ce88d5aab6c92b0f8f4322881fb73b44 +Merge: 7561ff7 873d80c +Author: Pieter Hintjens +Date: Wed Sep 4 04:19:34 2013 -0700 + + Merge pull request #644 from ipechorin/master + + Fix MSVC 2008 and 2010 project files + +commit 873d80c9fecc823d903b7e458b959f9877598d8c +Author: Ivan Pechorin +Date: Wed Sep 4 15:13:14 2013 +0400 + + fix MSVC 2008 project: include the source files added recently + + builds/msvc/libzmq/libzmq.vcproj | 62 ++++++++++++++++++++++++++++++++------ + 1 file changed, 53 insertions(+), 9 deletions(-) + +commit e071d3a4ae1421941127d360e31284eac5451047 +Author: Ivan Pechorin +Date: Wed Sep 4 15:00:59 2013 +0400 + + fix MSVC10 project: include the source files added recently + + builds/msvc/libzmq/libzmq.vcxproj | 10 +++++++++- + builds/msvc/libzmq/libzmq.vcxproj.filters | 24 ++++++++++++++++++++++++ + 2 files changed, 33 insertions(+), 1 deletion(-) + +commit 7561ff70f36b23f40366c1ac721f1b4fbd16c4fa +Merge: 0ff896d 4696f00 +Author: Pieter Hintjens +Date: Mon Sep 2 16:10:07 2013 -0700 + + Merge pull request #643 from ricnewton/master + + Fix cmake file for security tests + +commit 4696f002ca5c36d19967f414ffd673c9d156a3fc +Author: Richard Newton +Date: Mon Sep 2 23:41:17 2013 +0100 + + Fix cmake file for security tests + + CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0ff896d094100b530ec253b71f2c9c0a76dac1d7 +Merge: 3a50aa4 fb67e16 +Author: Ian Barber +Date: Mon Sep 2 10:30:49 2013 -0700 + + Merge pull request #642 from hintjens/master + + Fixed ZAP authentication + +commit fb67e160a11db104f89043c702000b7c974d7537 +Author: Pieter Hintjens +Date: Mon Sep 2 18:21:36 2013 +0200 + + Fixed ZAP authentication + + - if ZAP server returns anything except 200, connection is closed + - all security tests now pass correctly + - test_security_curve now does proper client key authentication using test key + - test_security_plain now does proper password authentication + + src/curve_server.cpp | 4 ++++ + src/plain_mechanism.cpp | 4 ++++ + tests/test_security_curve.cpp | 46 ++++++++++++++++++++++++++--------------- + tests/test_security_plain.cpp | 27 ++++++++++++------------ + tests/testutil.hpp | 11 +++++----- + 5 files changed, 56 insertions(+), 36 deletions(-) + +commit 3a50aa4473a0d808da3530f1d2977e5298ebe272 +Merge: c128fac fba5612 +Author: Ian Barber +Date: Mon Sep 2 08:32:09 2013 -0700 + + Merge pull request #641 from hintjens/master + + Fixed regression tests + +commit fba56120262c18b8c54902509f85a544f06048d1 +Author: Pieter Hintjens +Date: Mon Sep 2 17:22:24 2013 +0200 + + Fixed 'make check' failures + + - Split off NULL security check from PLAIN + - Cleaned up test_linger code a little + - Got all tests to pass, added TODOs for outstanding issues + - Added ZAP authentication for NULL test case + - NULL mechanism was not passing server identity - fixed + - cleaned up test_security_plain and removed option double-checks (made code ugly) + - lowered timeout on expect_bounce_fail to 150 msec to speed up checks + - removed all sleeps from test_fork and simplified code (it still passes :-) + + .gitignore | 5 + + include/zmq_utils.h | 4 +- + src/curve_server.cpp | 2 +- + src/null_mechanism.cpp | 8 ++ + src/plain_mechanism.cpp | 2 +- + tests/Makefile.am | 8 +- + tests/test_fork.cpp | 115 ++++++---------- + tests/test_linger.cpp | 98 +++++++------- + tests/test_security.cpp | 292 ----------------------------------------- + tests/test_security_curve.cpp | 242 +++++++++++++++------------------- + tests/test_security_null.cpp | 109 +++++++++++++++ + tests/test_security_plain.cpp | 154 ++++++++++++++++++++++ + tests/testutil.hpp | 10 +- + 13 files changed, 482 insertions(+), 567 deletions(-) + +commit 01b336f1f179d62d096e2629956fbcd95c504664 +Author: Pieter Hintjens +Date: Mon Sep 2 15:08:36 2013 +0200 + + Whitespace fixes + + tests/test_security.cpp | 4 ++-- + tests/test_security_curve.cpp | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit c128fac7a7401421e179bf8fd19c1faf2ecf0bd7 +Merge: 6fa274e c646ac9 +Author: Pieter Hintjens +Date: Mon Sep 2 06:06:58 2013 -0700 + + Merge pull request #639 from minrk/test_linger + + add test_linger + +commit 6fa274ebeff1c5f34e523fc3f2297ea7969bcae8 +Merge: 282765c 1771755 +Author: Pieter Hintjens +Date: Mon Sep 2 06:06:31 2013 -0700 + + Merge pull request #640 from mattconnolly/fork + + Adding ability for a context to be terminated in a forked child process + +commit 282765cab41ca49eb1b4083f56aaa4aaed3c1b12 +Merge: ca8ac83 436cad3 +Author: Pieter Hintjens +Date: Mon Sep 2 06:04:51 2013 -0700 + + Merge pull request #628 from ianbarber/master + + Remove delay options + +commit 1771755888a1b7bb8b17a111d5be93b7f2d4d9be +Author: Matt Connolly +Date: Mon Sep 2 07:13:46 2013 +1000 + + test_fork.cpp: adding missing headers for linux + + tests/test_fork.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit c646ac96c084f618d2267ce8c738ca561a5c1bdf +Author: MinRK +Date: Sun Sep 1 13:50:18 2013 -0700 + + cast rc to size_t for comparisons + + avoids -Wall failures comparing int to uint + + tests/test_linger.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c3adc86d6b9da02603e665822df295372778e06c +Author: Matt Connolly +Date: Mon Sep 2 06:49:30 2013 +1000 + + Fix unused variable when using eventfd + + src/signaler.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit ca8ac83e97d48e97c332da6935f80dca042b7d58 +Merge: 8ef7fbb 9d94640 +Author: Pieter Hintjens +Date: Sun Sep 1 10:18:50 2013 -0700 + + Merge pull request #637 from minrk/test_plain_inauth + + test failed auth for both PLAIN and CURVE + +commit a3d9d01af87a8f4817df0d369c605931ea9ebf03 +Author: Matt Connolly +Date: Sun Sep 1 20:40:45 2013 +1000 + + test_fork: update test to verify communication between parent and child + + tests/test_fork.cpp | 69 ++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 55 insertions(+), 14 deletions(-) + +commit ff2900fd5286013ae37c00fd0d578bc1eab93140 +Author: Matt Connolly +Date: Sat Aug 31 21:17:11 2013 +1000 + + Terminate context in a child process of fork() to replace file descriptors to not interfere with parent process's context + + src/ctx.cpp | 16 ++++++++++++++ + src/ctx.hpp | 5 +++++ + src/kqueue.cpp | 10 +++++++++ + src/kqueue.hpp | 6 ++++++ + src/mailbox.cpp | 1 - + src/mailbox.hpp | 7 ++++++ + src/reaper.cpp | 11 ++++++++++ + src/reaper.hpp | 5 +++++ + src/signaler.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/signaler.hpp | 20 +++++++++++++++++- + 10 files changed, 141 insertions(+), 2 deletions(-) + +commit 0478ee04f4f4525715e78f31a3209de6880a0a5e +Author: Matt Connolly +Date: Sun Sep 1 20:19:58 2013 +1000 + + Adding test showing failure to close socket/context in forked child + + .gitignore | 1 + + configure.ac | 2 +- + tests/Makefile.am | 4 ++- + tests/test_fork.cpp | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 80 insertions(+), 2 deletions(-) + +commit 58b370df699c5f535e2d5ae6e0a631d2ca330435 +Author: MinRK +Date: Sat Aug 31 18:27:50 2013 -0700 + + add test_linger + + tests that default LINGER (-1) ensures message delivery. + + Note: it fails for large messages ( > 1MB, depending on the system). + + tests/Makefile.am | 2 + + tests/test_linger.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 105 insertions(+) + +commit 8ef7fbb4a4a1b1f9062046ed3d268433c974c38d +Merge: 82a00e3 6a18f59 +Author: Ian Barber +Date: Sat Aug 31 13:35:21 2013 -0700 + + Merge pull request #638 from shawnjgoff/master + + Change name of icanhasall to subscribe_to_all + +commit 6a18f59532e8361384519f0f637baabe17380e2a +Author: Shawn J. Goff +Date: Sat Aug 31 09:53:47 2013 -0400 + + Change name of icanhasall to subscribe_to_all + + icanhasall is cute (for now), but the effect of the variable is clear + only after tracking down its origin reading the commit. This change is + intended to make it easier for people to have some intuition about its + effect from its name. + + src/dealer.cpp | 6 +++--- + src/dealer.hpp | 2 +- + src/pair.cpp | 6 +++--- + src/pair.hpp | 2 +- + src/pull.cpp | 6 +++--- + src/pull.hpp | 2 +- + src/push.cpp | 6 +++--- + src/push.hpp | 2 +- + src/router.cpp | 6 +++--- + src/router.hpp | 2 +- + src/socket_base.cpp | 10 +++++----- + src/socket_base.hpp | 4 ++-- + src/stream.cpp | 6 +++--- + src/stream.hpp | 2 +- + src/xpub.cpp | 6 +++--- + src/xpub.hpp | 2 +- + src/xsub.cpp | 6 +++--- + src/xsub.hpp | 2 +- + 18 files changed, 39 insertions(+), 39 deletions(-) + +commit 9d94640edc5b6fc6a7d3a2b66abea680f478921e +Author: MinRK +Date: Fri Aug 30 17:56:59 2013 -0700 + + test failed CURVE auth + + adds expect_bounce_fail test function + + which is like bounce, but fails if messages arrive. + + tests/test_security.cpp | 17 +-------- + tests/test_security_curve.cpp | 83 ++++++++++++++++++++++++++++++++++++++++- + tests/testutil.hpp | 37 ++++++++++++++++++ + 3 files changed, 119 insertions(+), 18 deletions(-) + +commit 0cac56fe524bd5a85c4f1e08f5a4492bab1c2b30 +Author: MinRK +Date: Fri Aug 30 15:28:16 2013 -0700 + + test PLAIN auth with failed login + + This test fails because PLAIN authentication doesn't actually reject connections + + tests/test_security.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 79 insertions(+), 1 deletion(-) + +commit 82a00e3a985c6c13e34f385fd19624d521620c5d +Merge: 22f05fa da52806 +Author: Pieter Hintjens +Date: Fri Aug 30 13:38:27 2013 -0700 + + Merge pull request #636 from ricnewton/master + + Disable failing tests on windows. + +commit da52806d68cd663495ec9c58a2a712bb5561b64c +Author: Richard Newton +Date: Fri Aug 30 19:04:32 2013 +0100 + + Disable failing tests on windows. + + CMakeLists.txt | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit 22f05fa2fa43a72de8a0f9b195514749665447a7 +Merge: 4ca6ab2 93a068a +Author: Martin Hurton +Date: Thu Aug 29 12:37:15 2013 -0700 + + Merge pull request #635 from guidog/master + + Fixed silly port number. + +commit 93a068a832ae64f294e68f54fa828cb6be24f93e +Author: Guido Goldstein +Date: Thu Aug 29 20:55:23 2013 +0200 + + Fixed silly port number. + + tests/test_conflate.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4ca6ab26fa8b026215515355b6179966e4fa77ed +Merge: 83e547f 455739f +Author: Martin Hurton +Date: Thu Aug 29 04:54:55 2013 -0700 + + Merge pull request #634 from guidog/master + + Fixed markup so documentation can be built. + +commit 455739f94258c021bfdc001f3aa315374058e912 +Author: Guido Goldstein +Date: Thu Aug 29 09:35:17 2013 +0200 + + Fixed markup so documentation can be built. + + doc/zmq_setsockopt.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 83e547f09f985a4bf1e4a19bdc13f03315f450ef +Merge: 2e9385a eaf227d +Author: Pieter Hintjens +Date: Sat Aug 24 14:31:16 2013 -0700 + + Merge pull request #633 from eburkitt/vs2012-clean-compile + + get to clean compile under vs2012 + +commit eaf227d4deb3bc43c5507f7b86d8c46ec4912b06 +Author: Evan Burkitt +Date: Fri Aug 23 17:14:03 2013 -0700 + + get to clean compile under vs2012 + + Added some missing (but existing in branch) files to libzmq11 project needed + to compile as static library by VS2012 (at least), and fixed some warnings. + One warning remains in raw_decoder.cpp, which I'm leaving for now because I'm + not sure how project owners would like to fix it. + + builds/msvc/libzmq/libzmq11.vcxproj | 4 ++++ + src/dealer.cpp | 2 +- + src/mutex.hpp | 2 +- + src/req.cpp | 4 ++-- + src/router.cpp | 6 +++--- + 5 files changed, 11 insertions(+), 7 deletions(-) + +commit 2e9385ac02d14ce78837deb2c9f76155eacdda14 +Merge: d485404 19ca8a0 +Author: Pieter Hintjens +Date: Wed Aug 21 01:35:43 2013 -0700 + + Merge pull request #631 from jrossi/master + + Add the Socket Identity info to the ZAP Messages + +commit 436cad37ece8bc81d333b8a33d38af4ebaea26db +Author: Ian Barber +Date: Tue Aug 20 22:49:19 2013 +0100 + + fix type on HWM + + src/pipe.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a9baa051dd42e584d382a62a98fb31bac47674fa +Merge: 531d3eb d485404 +Author: Ian Barber +Date: Tue Aug 20 22:48:04 2013 +0100 + + Merge in master changes + +commit d485404aab6efa15a1bdcb881874a4fad4b0b5a8 +Merge: cb6b5a6 3f3777d +Author: Ian Barber +Date: Tue Aug 20 14:37:52 2013 -0700 + + Merge pull request #626 from dkrikun/master + + Add ZMQ_CONFLATE socket option + +commit 19ca8a0fc0a13e3da6af6636bf3756d77397734f +Author: Jeremy Rossi +Date: Tue Aug 20 13:48:05 2013 -0400 + + Add the Socket Identity info to the ZAP Messages + + This change adds the socket identity infomartion from the socket to the + zap frames. In doing this the ZAP is able preform different operations + based on different sockets. This is not compaitable with the current ZAP + RFC, but that can be updated. As the ZAP rfc is currently draft for I + did not change the version number. + + Tests also modified and passing. + + src/curve_server.cpp | 8 ++++++++ + src/plain_mechanism.cpp | 8 ++++++++ + tests/test_security.cpp | 5 +++++ + tests/test_security_curve.cpp | 5 +++++ + 4 files changed, 26 insertions(+) + +commit cb6b5a65fcee87d343cf6d12b792c28a2625aa77 +Merge: bcfe863 fd8b0fe +Author: Ian Barber +Date: Mon Aug 19 05:55:07 2013 -0700 + + Merge pull request #629 from ulikoehler/init_data_assert + + Minor doc & assert fixes + +commit fd8b0fec077c6f4724b6dd17018ed4edd0bbe6c4 +Author: Uli Köhler +Date: Mon Aug 19 14:49:29 2013 +0200 + + Re-add comment line from cmsg branch + + src/msg.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit a28c38efa5084ba92ec98f1f055bbe22881548a6 +Author: Uli Köhler +Date: Mon Aug 19 14:45:29 2013 +0200 + + Fix spaces before comments + + src/msg.hpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 3f3777d05bada63414339bedb7aefc56051836c2 +Author: danielkr +Date: Mon Aug 19 15:34:11 2013 +0300 + + Add test for ZMQ_CONFLATE option + + tests/Makefile.am | 4 ++- + tests/test_conflate.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 80 insertions(+), 1 deletion(-) + +commit 9c2740d9fad86fb3b983ba30cde10b4cf5b4c7cc +Author: Uli Köhler +Date: Sun Aug 18 22:50:50 2013 +0200 + + Minor fixes to doc ; added zmq_msg_init_data() assert preventing deferred segfault + + src/msg.cpp | 6 ++++-- + src/msg.hpp | 5 ++++- + src/zmq.cpp | 2 +- + 3 files changed, 9 insertions(+), 4 deletions(-) + +commit bcfe863fd4d8500217ea0b9e22296101249867fa +Merge: b3ca7fd 121a838 +Author: Ian Barber +Date: Mon Aug 19 01:11:07 2013 -0700 + + Merge pull request #630 from ulikoehler/cmsg + + Optimized zmq::msg_t for constant messages + +commit da4a70d59d14f68d5cb463cce01e9a772f6ca5a2 +Author: danielkr +Date: Mon Aug 19 08:18:20 2013 +0300 + + Fix indentation + + src/pipe.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 121a838a0ce824f40ef57dbc24234409f368ebdb +Author: Uli Köhler +Date: Sun Aug 18 23:40:38 2013 +0200 + + Added message type for constant messages + + src/msg.cpp | 44 +++++++++++++++++++++++++++++++------------- + src/msg.hpp | 13 ++++++++++++- + 2 files changed, 43 insertions(+), 14 deletions(-) + +commit 531d3ebc096c65b3e2772958acde9bf329136b18 +Author: Ian Barber +Date: Sun Aug 18 11:16:21 2013 +0100 + + Remove delay options + + These were exposed to users, but have subsequently been removed as + sockopts. They are currently only being used by ZAP, so I've moved it to + a simpl function call (actually it's only used in one case even in that, + so there may be a further simplification possible there). + + src/options.cpp | 2 -- + src/options.hpp | 8 -------- + src/pipe.cpp | 15 ++++++++++----- + src/pipe.hpp | 9 ++++++--- + src/session_base.cpp | 10 +++++----- + src/socket_base.cpp | 6 ++---- + 6 files changed, 23 insertions(+), 27 deletions(-) + +commit b3ca7fd4253531ad3f001196ba3eafbec931b2f9 +Merge: 1011e8a cb35fd7 +Author: Pieter Hintjens +Date: Sun Aug 18 00:58:03 2013 -0700 + + Merge pull request #627 from ianbarber/master + + Attempt to fix disconnect not respecting linger + +commit 1011e8ad2078e923541f16ec738837550e710b6e +Merge: ed272fe 70a1fbe +Author: Pieter Hintjens +Date: Sun Aug 18 00:51:39 2013 -0700 + + Merge pull request #624 from ricnewton/master + + Port tests to windows and add to cmake build. + +commit cb35fd7bfed767a303da43da523c91b98321a58f +Author: Ian Barber +Date: Sun Aug 18 07:50:53 2013 +0100 + + Attempt to fix disconnect not respecting linger + + Looks like linger is honoured properly, but shutting down the session + causes the pipe termination to come from that side - because the local + pipe then shuts down right away it seems to trigger a terminated on the + other end instead of waiting. This way we trigger the termination from + the local end and then terminate the session. + + src/socket_base.cpp | 20 +++++++++++++------- + src/socket_base.hpp | 5 +++-- + 2 files changed, 16 insertions(+), 9 deletions(-) + +commit ed272fe56d3b16c9f111aa4db97432d3327d92d8 +Merge: eccfede e23d396 +Author: Ian Barber +Date: Sat Aug 17 23:27:17 2013 -0700 + + Merge pull request #625 from ulikoehler/zmq_send_const + + Add zmq_send_const for constant data + +commit f59c1a5c5aec15cd6117eee951ad51ac302ca1ad +Author: danielkr +Date: Sat Aug 17 23:55:00 2013 +0300 + + Update doc for ZMQ_CONFLATE socket option + + doc/zmq_setsockopt.txt | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit daa7a8021f6802d12d8fcfd771dda3101d192f15 +Author: danielkr +Date: Sat Aug 17 23:08:07 2013 +0300 + + Plug in dbuffer to serve the ZMQ_CONFLATE option + + ZMQ_CONFLATE option is passed to pipepair() which creates a usual + ypipe_t or ypipe_conflate_t and plugs it into pipe_t under a common + abstract base. + + src/Makefile.am | 5 +- + src/pipe.cpp | 51 ++++++++++++++----- + src/pipe.hpp | 15 ++++-- + src/session_base.cpp | 17 +++++-- + src/socket_base.cpp | 27 ++++++++-- + src/ypipe.hpp | 3 +- + src/ypipe_base.hpp | 44 +++++++++++++++++ + src/ypipe_conflate.hpp | 127 ++++++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 263 insertions(+), 26 deletions(-) + +commit 4c35b88acbc7d1237e86833253737632cfd6a216 +Author: danielkr +Date: Sat Aug 17 23:00:46 2013 +0300 + + Implement double buffer for conflate option + + Add simple double buffer implementation tailored to handle msg_t, + i.e invoke msg_t::close instead of destructor and so on. + Seems to me mutex is good enough at this point. + + src/dbuffer.hpp | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 134 insertions(+) + +commit d020dd677f9c8c4f89f244b19f1b809fb9b3a635 +Author: danielkr +Date: Sat Aug 17 22:59:07 2013 +0300 + + Declare ZMQ_CONFLATE option + + include/zmq.h | 1 + + src/options.cpp | 21 ++++++++++++++++++++- + src/options.hpp | 6 ++++++ + 3 files changed, 27 insertions(+), 1 deletion(-) + +commit 4eac7e3e4fc443d3ad058d245f88f52ae7a1a817 +Author: danielkr +Date: Sat Aug 17 22:55:04 2013 +0300 + + Add scoped_lock_t syntactic sugar + + src/mutex.hpp | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit 87c84a252abc59bf34895a42f799278f2f9e478f +Author: danielkr +Date: Sat Aug 17 22:54:29 2013 +0300 + + Add try_lock() to mutex_t + + src/mutex.hpp | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 503da83fceac8c2d6c37ff6fbfac0c4c31e59a91 +Author: danielkr +Date: Sat Aug 17 22:53:02 2013 +0300 + + Add #include to string.h in blob.hpp + + Required for memmove(), memcpy() + + src/blob.hpp | 1 + + 1 file changed, 1 insertion(+) + +commit e23d3963d337985c80523327a29480625a009d37 +Author: Uli Köhler +Date: Sat Aug 17 20:39:10 2013 +0200 + + Fix doc typo + + doc/zmq_send_const.txt | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 10becae7eb7c43e7ec854c5f7d9f365566e1deef +Author: Uli Köhler +Date: Sat Aug 17 20:37:07 2013 +0200 + + Added zmq_send_const test + + tests/test_pair_inproc.cpp | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit e2c322cf80e158a59d5b917a76693afc39f5de4e +Author: Uli Köhler +Date: Sat Aug 17 20:22:50 2013 +0200 + + Implemented zmq_send_const + + doc/zmq_send.txt | 1 + + doc/zmq_send_const.txt | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 1 + + src/zmq.cpp | 26 ++++++++++++ + 4 files changed, 131 insertions(+) + +commit 70a1fbee7a94a7e2ace3c5b5f376c997ccc68ea7 +Author: Richard Newton +Date: Sat Aug 17 14:39:38 2013 +0100 + + Fix running tests from cmake on linux. + + CMakeLists.txt | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit e1b2b649fb7459203939cc0dd0446df4f88bb273 +Merge: a83baa9 eccfede +Author: Richard Newton +Date: Sat Aug 17 14:23:42 2013 +0100 + + Merge branch 'master' of https://github.com/zeromq/libzmq + +commit a83baa9b0b35a3664d22a48b918e644c77b47114 +Author: Richard Newton +Date: Sat Aug 17 14:23:22 2013 +0100 + + Fix up threading code from port tests to windows. + + include/zmq_utils.h | 4 +++- + src/zmq_utils.cpp | 4 ++-- + tests/test_monitor.cpp | 15 ++++++--------- + tests/test_security.cpp | 5 +---- + tests/test_security_curve.cpp | 5 +---- + tests/test_shutdown_stress.cpp | 6 ++---- + tests/testutil.hpp | 3 +++ + 7 files changed, 18 insertions(+), 24 deletions(-) + +commit 7f74fc7c998cba2efd2bc286ab2aad711fb5c475 +Author: Richard Newton +Date: Sat Aug 17 13:43:45 2013 +0100 + + Port tests to windows and add to cmake build. + + CMakeLists.txt | 52 +++++++++++++++++++++++++++++++++++--- + include/zmq_utils.h | 6 +++++ + src/zmq_utils.cpp | 15 +++++++++++ + tests/test_connect_delay.cpp | 12 ++++----- + tests/test_connect_resolve.cpp | 5 ++-- + tests/test_ctx_options.cpp | 5 ++-- + tests/test_disconnect_inproc.cpp | 3 ++- + tests/test_hwm.cpp | 4 +-- + tests/test_invalid_rep.cpp | 5 ++-- + tests/test_iov.cpp | 10 ++++---- + tests/test_last_endpoint.cpp | 5 ++-- + tests/test_monitor.cpp | 23 ++++++++--------- + tests/test_msg_flags.cpp | 5 ++-- + tests/test_pair_inproc.cpp | 1 + + tests/test_pair_ipc.cpp | 1 + + tests/test_pair_tcp.cpp | 1 + + tests/test_probe_router.cpp | 4 +-- + tests/test_raw_sock.cpp | 5 ++-- + tests/test_req_request_ids.cpp | 2 +- + tests/test_req_strict.cpp | 7 +++-- + tests/test_reqrep_device.cpp | 5 ++-- + tests/test_reqrep_inproc.cpp | 1 + + tests/test_reqrep_ipc.cpp | 1 + + tests/test_reqrep_tcp.cpp | 1 + + tests/test_router_mandatory.cpp | 4 +-- + tests/test_security.cpp | 9 +++---- + tests/test_security_curve.cpp | 9 +++---- + tests/test_shutdown_stress.cpp | 15 +++++------ + tests/test_spec_dealer.cpp | 1 + + tests/test_spec_pushpull.cpp | 1 + + tests/test_spec_rep.cpp | 1 + + tests/test_spec_req.cpp | 6 ++--- + tests/test_spec_router.cpp | 1 + + tests/test_stream.cpp | 5 ++-- + tests/test_sub_forward.cpp | 8 +++--- + tests/test_term_endpoint.cpp | 12 ++++----- + tests/test_timeo.cpp | 16 ++++-------- + tests/testutil.hpp | 12 +++++++++ + 38 files changed, 171 insertions(+), 108 deletions(-) + +commit eccfede10d73bf8505a841b3d75c6f200d31728a +Merge: 749c391 e16a6af +Author: Ian Barber +Date: Thu Aug 8 11:42:53 2013 -0700 + + Merge pull request #623 from ricnewton/master + + Fix compile error on windows. + +commit e16a6af0c7430ecc0efac674e75fe3f66b0f6ee5 +Author: Richard Newton +Date: Thu Aug 8 17:27:49 2013 +0100 + + Fix compile error on windows. + + src/ip.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 749c391b3414cc57afbb4a108867ebc062b2195f +Merge: fe30cc6 423ca36 +Author: Ian Barber +Date: Sat Aug 3 12:42:53 2013 -0700 + + Merge pull request #622 from ckamm/req-strict + + Rename ZMQ_REQ_SEND_RESETS -> ZMQ_REQ_STRICT. + +commit 423ca36b17264ca7b71b23e4a110aa847fd7ac27 +Author: Christian Kamm +Date: Sat Aug 3 14:35:18 2013 +0200 + + Rename ZMQ_REQ_SEND_RESETS -> ZMQ_REQ_STRICT. + + It defaults to enabled. Switch it off to be able to send a new message + before the previous reply has been received. + + .gitignore | 2 +- + doc/zmq_setsockopt.txt | 15 ++--- + include/zmq.h | 2 +- + src/req.cpp | 10 ++-- + src/req.hpp | 4 +- + tests/Makefile.am | 4 +- + tests/test_req_send_resets.cpp | 120 --------------------------------------- + tests/test_req_strict.cpp | 121 ++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 140 insertions(+), 138 deletions(-) + +commit fe30cc6d99d82eebb4145575bc0f95888cc9ff8e +Merge: 9f4526f f5c5955 +Author: Pieter Hintjens +Date: Sat Aug 3 02:44:53 2013 -0700 + + Merge pull request #619 from ckamm/req-send-resets + + Add ZMQ_REQ_SEND_RESETS option. + +commit 9f4526f59a4252f75639178d11a716a7250065ba +Merge: 637f794 39ddc69 +Author: Martin Hurton +Date: Mon Jul 29 06:11:03 2013 -0700 + + Merge pull request #621 from hintjens/master + + Added note to clarify policy for embedded apps + +commit 39ddc695bc99905382affa4f075f7512851665cf +Author: Pieter Hintjens +Date: Mon Jul 29 10:42:15 2013 +0200 + + Added note about tivotisation + + COPYING.LESSER | 2 ++ + 1 file changed, 2 insertions(+) + +commit f5c59556bd232064230b39c05d858ce69d59ae09 +Author: Christian Kamm +Date: Mon Jul 29 09:33:10 2013 +0200 + + REQ: Unset reply_pipe if it terminates. + + * Fixes a terminate() call on a dangling pointer in the SEND_RESETS + case. + * Fixes recv_reply_pipe() never receiving a message once the pipe it is + waiting on is terminated. + + src/req.cpp | 15 +++++++++++---- + src/req.hpp | 1 + + 2 files changed, 12 insertions(+), 4 deletions(-) + +commit a0cc87a9d922dd3187f07962536ee676033e0ef8 +Author: Christian Kamm +Date: Sun Jul 21 13:16:47 2013 +0200 + + Add ZMQ_REQ_SEND_RESETS option. + + This allows making a new request on a REQ socket by sending a new + message. Without the option set, calling send() after the first message + is done will continue to return an EFSM error. + + It's useful for when a REQ is not getting a response. Previously that + meant creating a new socket or switching to DEALER. + + .gitignore | 1 + + doc/zmq_setsockopt.txt | 30 ++++++++-- + include/zmq.h | 1 + + src/req.cpp | 23 ++++++-- + src/req.hpp | 7 ++- + tests/Makefile.am | 4 +- + tests/test_req_send_resets.cpp | 120 ++++++++++++++++++++++++++++++++++++++++ + 7 files changed, 174 insertions(+), 12 deletions(-) + +commit 637f79419325952d0b3e63fe09ead81769884785 +Merge: 6473dfd b9646f2 +Author: Ian Barber +Date: Fri Jul 26 15:41:29 2013 -0700 + + Merge pull request #620 from ckamm/req-id + + Add ZMQ_REQ_REQUEST_IDS option. + +commit b9646f2aacf414eb30044a9be3a03d2bd9230c7f +Author: Christian Kamm +Date: Fri Jul 26 21:13:43 2013 +0200 + + Add ZMQ_REQ_REQUEST_IDS option. + + * Documentation: + The default behavior of REQ sockets is to rely on the ordering of messages + to match requests and responses and that is usually sufficient. When this option + is set to 1, the REQ socket will prefix outgoing messages with an extra frame + containing a request id. That means the full message is (request id, 0, + user frames...). The REQ socket will discard all incoming messages that don't + begin with these two frames. + + * Behavior change: When a REQ socket gets an invalid reply, it used to + discard the message and return EAGAIN. REQ sockets still discard + invalid messages, but keep looking at the next one automatically + until a good one is found or there are no more messages. + * Add test_req_request_ids. + + .gitignore | 1 + + doc/zmq_setsockopt.txt | 17 ++++ + include/zmq.h | 1 + + src/req.cpp | 77 ++++++++++++++--- + src/req.hpp | 12 +++ + tests/Makefile.am | 4 +- + tests/test_req_request_ids.cpp | 179 ++++++++++++++++++++++++++++++++++++++++ + 7 files changed, 277 insertions(+), 14 deletions(-) + +commit 6473dfd8f43beaa62b233f30ea839e25caf47382 +Merge: 4944095 4a5358f +Author: Ian Barber +Date: Thu Jul 18 03:26:21 2013 -0700 + + Merge pull request #617 from hurtonm/zap_updates + + Zap updates + +commit 4a5358f4d0f227844b5e66a5724fd4df930b25e1 +Author: Martin Hurton +Date: Thu Jul 18 10:10:10 2013 +0200 + + Implement ZAP for NULL mechanism + + src/null_mechanism.cpp | 155 +++++++++++++++++++++++++++++++++++++++++++++++- + src/null_mechanism.hpp | 16 ++++- + src/stream_engine.cpp | 3 +- + 3 files changed, 169 insertions(+), 5 deletions(-) + +commit 53bc53da04a4fb2fe666e6607c29d11bec780984 +Author: Martin Hurton +Date: Thu Jul 18 09:49:42 2013 +0200 + + Update PLAIN mechanism to the latest ZAP revision + + src/plain_mechanism.cpp | 31 ++++++++++++++++++++++--------- + src/plain_mechanism.hpp | 3 +++ + src/stream_engine.cpp | 3 ++- + tests/test_security.cpp | 6 +++++- + 4 files changed, 32 insertions(+), 11 deletions(-) + +commit d65231be1ced9f6411427a1be971525e7f19f5e9 +Author: Martin Hurton +Date: Thu Jul 18 09:39:19 2013 +0200 + + Update CURVE mechanism to the latest ZAP revision + + src/curve_server.cpp | 29 ++++++++++++++++++++++------- + src/curve_server.hpp | 3 +++ + src/stream_engine.cpp | 6 +++++- + src/stream_engine.hpp | 2 ++ + tests/test_security_curve.cpp | 5 ++++- + 5 files changed, 36 insertions(+), 9 deletions(-) + +commit 7541debe6de46308ada745e08348eb457623acba +Author: Martin Hurton +Date: Thu Jul 18 09:28:56 2013 +0200 + + Add get_peer_ip_address utility function + + The functon returns string representation of peer's + IP address. We will need this to update ZAP implementation. + + src/ip.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ + src/ip.hpp | 7 ++++++- + 2 files changed, 46 insertions(+), 1 deletion(-) + +commit 49440952621cdea052e8539aaa0542de42f6759b +Merge: 1068bc0 d46c2ee +Author: Ian Barber +Date: Mon Jul 15 00:15:55 2013 -0700 + + Merge pull request #615 from hintjens/master + + Last step in test_spec_req is still failing; disabled it. + +commit 1068bc0795f11f6dd543997126150758c8f2b8c4 +Merge: 4fb004f 409721b +Author: Pieter Hintjens +Date: Sun Jul 14 14:48:17 2013 -0700 + + Merge pull request #616 from steve-o/master + + Add static libraries to CMake, minor housekeeping. + +commit 409721b9d2657b937d1de6c7eca7111d16c4a125 +Author: Steven McCoy +Date: Sun Jul 14 13:58:46 2013 -0400 + + Add CMake support for static libraries. + + CMakeLists.txt | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit 21fe600848a01f4014aa97b04cc301669502db69 +Author: Steven McCoy +Date: Sun Jul 14 13:36:30 2013 -0400 + + Move CMake dependencies together. + + CMakeLists.txt | 6 +- + builds/cmake/Modules/FindAsciiDoc.cmake | 24 + + builds/cmake/Modules/TestZMQVersion.cmake | 18 + + builds/cmake/Modules/ZMQSourceRunChecks.cmake | 129 ++++ + builds/cmake/NSIS.template32.in | 952 ++++++++++++++++++++++++ + builds/cmake/NSIS.template64.in | 960 +++++++++++++++++++++++++ + cmake/Modules/FindAsciiDoc.cmake | 24 - + cmake/Modules/TestZMQVersion.cmake | 18 - + cmake/Modules/ZMQSourceRunChecks.cmake | 129 ---- + cmake/NSIS.template32.in | 952 ------------------------ + cmake/NSIS.template64.in | 960 ------------------------- + 11 files changed, 2086 insertions(+), 2086 deletions(-) + +commit ae86c56d74a4cc549629829714ff189369027a29 +Author: Steven McCoy +Date: Sun Jul 14 13:26:55 2013 -0400 + + README file moved to GitHub format and extension, drop from packaging and default to NEWS file for popup. + + CMakeLists.txt | 7 +++---- + cmake/NSIS.template32.in | 2 +- + cmake/NSIS.template64.in | 2 +- + 3 files changed, 5 insertions(+), 6 deletions(-) + +commit d46c2ee2fc566a6ddceae2820a552dbce1c15bff +Author: Pieter Hintjens +Date: Sun Jul 14 13:04:31 2013 +0200 + + Disabled last step in test_spec_req so build can complete + + tests/test_spec_req.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 4fb004f59b81a09a8b428409b61baa79b642712d +Merge: bccf3d6 7de23c0 +Author: Pieter Hintjens +Date: Sun Jul 14 03:00:06 2013 -0700 + + Merge pull request #614 from ckamm/fix-spec-req-fail + + Fix intermittent failure in test_spec_req. + +commit 7de23c0c8dafe9305fc89203ff420da9b191d814 +Author: Christian Kamm +Date: Sun Jul 14 11:55:57 2013 +0200 + + Fix intermittent failure in test_spec_req. + + There still is a problem when a stale peer's message + arrives at the REQ just after a request was sent to that peer. + + tests/test_spec_req.cpp | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit bccf3d61268b3809cb609e9c9a4ec98575fee179 +Merge: 93b9f90 bbc9a61 +Author: Pieter Hintjens +Date: Sun Jul 14 02:32:20 2013 -0700 + + Merge pull request #613 from ckamm/coding-style-spec-tests + + Fix coding style in spec tests. + +commit 93b9f9021c76c7812adb592bf29d29ad9eed2ac5 +Merge: 524bd7a c56d797 +Author: Pieter Hintjens +Date: Sun Jul 14 02:30:21 2013 -0700 + + Merge pull request #608 from ckamm/req-drops-unwanted + + REQ sockets drop replies from unasked peers. + +commit bbc9a611979aaa62c67eaa768d7f0735d1f53272 +Author: Christian Kamm +Date: Sun Jul 14 08:32:35 2013 +0200 + + Fix coding style in spec tests. + + tests/test_spec_dealer.cpp | 66 +++++++++++++--------------- + tests/test_spec_pushpull.cpp | 99 ++++++++++++++++++------------------------ + tests/test_spec_rep.cpp | 57 +++++++++++------------- + tests/test_spec_req.cpp | 8 ++-- + tests/test_spec_router.cpp | 61 ++++++++++++-------------- + 5 files changed, 130 insertions(+), 161 deletions(-) + +commit c56d797bf915e0774646e651dbbce89b8e566f45 +Author: Christian Kamm +Date: Tue Jul 2 20:05:20 2013 +0200 + + REQ sockets drop replies from unasked peers. + + * Add lb_t::sendpipe() that returns the pipe that was used for sending, + similar to fq_t::recvpipe(). + * Add forwarder functions to dealer_t to access these two. + * Add logic to req_t to ignore replies on pipes that are not the one + where the request was sent. + * Enable test in test_spec_req. + + AUTHORS | 1 + + src/dealer.cpp | 14 ++++++++++++-- + src/dealer.hpp | 4 ++++ + src/lb.cpp | 10 +++++++++- + src/lb.hpp | 7 +++++++ + src/req.cpp | 39 +++++++++++++++++++++++++++++++++++---- + src/req.hpp | 9 +++++++++ + tests/test_spec_req.cpp | 3 +-- + 8 files changed, 78 insertions(+), 9 deletions(-) + +commit 524bd7ac765d33e537ffcf981e7f3d06899a9aca +Merge: 7560910 6bf4ffe +Author: Pieter Hintjens +Date: Sat Jul 13 16:27:41 2013 -0700 + + Merge pull request #612 from ulikoehler/markdown + + Converted README to markdown + +commit 6bf4ffe7270d5079de5760e471595f24acdcc788 +Author: Uli Köhler +Date: Sun Jul 14 00:55:40 2013 +0200 + + Converted README to markdown + added travis build img + + README | 39 --------------------------------------- + README.md | 38 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 38 insertions(+), 39 deletions(-) + +commit 7560910f505c06d29191bdff1659133342ceadfa +Merge: 5ac1964 0f28b72 +Author: Pieter Hintjens +Date: Sat Jul 13 10:39:06 2013 -0700 + + Merge pull request #611 from pijyoi/master + + update Makefile to include new files + +commit 0f28b729140900f6dcb7a560e13cbcd85537f2d1 +Author: KIU Shueng Chuan +Date: Sat Jul 13 14:31:46 2013 +0800 + + update to include stream.cpp and curve related + + builds/mingw32/Makefile.mingw32 | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +commit 5ac19647d9c097a7657d7532f9dfecb16f471e9c +Merge: 08622a7 9ca6898 +Author: Ian Barber +Date: Mon Jul 8 04:12:06 2013 -0700 + + Merge pull request #610 from hintjens/master + + Problem: new spec test cases don't all work + +commit 9ca6898f24d3c5b4b550f7bd5c8882d2aaf4fcc7 +Author: Pieter Hintjens +Date: Sun Jul 7 12:49:24 2013 +0200 + + Got new test cases working with libzmq + + * disabled the specific tests that do not work (yet) on libzmq + * cleaned up one source (test_spec_rep.c) but the others need similar work + * added sleep in test_spec_rep to allow connects time to happen; this would + not be needed if we connected out to the REP peers instead in from them, + but I didn't want to change the logic of the test code. + + .gitignore | 5 +++ + tests/test_spec_dealer.cpp | 41 ++++++++---------- + tests/test_spec_pushpull.cpp | 3 +- + tests/test_spec_req.cpp | 97 +++++++++++++++++++++--------------------- + tests/test_spec_router.cpp | 3 +- + tests/testutil.hpp | 16 +++---- + 6 files changed, 80 insertions(+), 85 deletions(-) + +commit 08622a7788f6e14cb26eb15e19f90939a0bd7696 +Merge: 5038ef7 dfba19c +Author: Pieter Hintjens +Date: Fri Jul 5 15:36:14 2013 -0700 + + Merge pull request #609 from ckamm/tests + + Make pipeline/reqrep tests try tcp:// endpoints. + +commit dfba19c4b652fb064138f0b3c47b1f27cc8464a8 +Author: Christian Kamm +Date: Fri Jul 5 17:58:01 2013 +0200 + + Make pipeline/reqrep tests try tcp:// endpoints. + + The inproc:// endpoints sometimes use different code paths so + testing with regular tcp:// endpoints as well can show different + issues. + + tests/test_spec_dealer.cpp | 98 ++++++++++++++++++------------- + tests/test_spec_pushpull.cpp | 132 ++++++++++++++++++++++++++++++------------ + tests/test_spec_rep.cpp | 58 ++++++++++++------- + tests/test_spec_req.cpp | 78 +++++++++++++++---------- + tests/test_spec_router.cpp | 77 ++++++++++++++++-------- + tests/testutil.hpp | 11 ++++ + 6 files changed, 300 insertions(+), 154 deletions(-) + +commit 5038ef74b5bc0aa972cce80e085fcaaa64eaa536 +Merge: e093bd9 8fd163c +Author: Pieter Hintjens +Date: Fri Jul 5 08:18:41 2013 -0700 + + Merge pull request #606 from ckamm/master + + Add tests for Request-Reply and Pipeline pattern sockets. + +commit 8fd163cf5c82eaa483a00ca31a8e0b433a696657 +Author: Christian Kamm +Date: Fri Jul 5 15:20:42 2013 +0200 + + Add tests for PUSH/PULL sockets. + + tests/Makefile.am | 4 +- + tests/test_spec_pushpull.cpp | 250 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 253 insertions(+), 1 deletion(-) + +commit e093bd99234b37bb479889a90bcf467a1cb3fdd4 +Merge: 78e4791 7b7f7e4 +Author: Pieter Hintjens +Date: Wed Jul 3 15:43:09 2013 -0700 + + Merge pull request #607 from cjuniet/master + + [LIBZMQ-544] Fix compilation errors with Clang + +commit 7b7f7e4ebdcba8a52cdd76e4cb911ec7c6e7dbf9 +Author: Christophe Juniet +Date: Wed Jul 3 22:30:48 2013 +0200 + + Fix compilation warnings on unsigned comparisons. + + Fix two unsigned comparisons to zero or more being always true. Clang + won't compile this with -Werror. + + src/options.cpp | 4 ++-- + src/z85_codec.hpp | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 798b394087d27201e3d4a16594ea867bf5eecf08 +Author: Christian Kamm +Date: Tue Jul 2 15:04:31 2013 +0200 + + Add tests for Request-Reply pattern sockets. + + * See http://rfc.zeromq.org/spec:28/REQREP + * Not all testable statements are covered. + * At this point, there are several failures: + - test_spec_req: The REQ socket does not correctly discard messages + from peers that are not currently being talked to. + - test_spec_dealer/router: On disconnect, the queues seem to not be + emptied. The DEALER can still receive a message the disconnected + peer sent, the ROUTER can still send to the identity of the dis- + connected peer. + + tests/Makefile.am | 12 ++- + tests/test_spec_dealer.cpp | 248 ++++++++++++++++++++++++++++++++++++++++++++ + tests/test_spec_rep.cpp | 144 +++++++++++++++++++++++++ + tests/test_spec_req.cpp | 230 ++++++++++++++++++++++++++++++++++++++++ + tests/test_spec_router.cpp | 180 ++++++++++++++++++++++++++++++++ + tests/testutil.hpp | 80 +++++++++++++- + 6 files changed, 891 insertions(+), 3 deletions(-) + +commit 78e47912d2c5dd2795bf45479c0c2552e3f41d14 +Merge: 5a30022 9986106 +Author: Pieter Hintjens +Date: Mon Jul 1 04:41:46 2013 -0700 + + Merge pull request #605 from ricnewton/master + + Fix tab/space formatting issue + +commit 998610602e6c1494131680ca89030663dc62ab0c +Author: Richard Newton +Date: Mon Jul 1 12:10:57 2013 +0100 + + Fix tab/space formatting issue + + tests/test_monitor.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5a30022045eed8eb3b10acb8bae73bcd2b1af2b0 +Merge: a3e16c1 f6e972d +Author: Ian Barber +Date: Mon Jul 1 04:08:25 2013 -0700 + + Merge pull request #603 from ricnewton/master + + Add monitor event for when monitoring is stopped so we can unblock any sockets waiting on monitor socket. + +commit a3e16c18b19102e6a96f9362cbf1fd7429ba8bee +Merge: 1cfee8d 01dd6eb +Author: Ian Barber +Date: Mon Jul 1 04:07:44 2013 -0700 + + Merge pull request #604 from ricnewton/cmake_fix + + Fix cmake build + +commit 01dd6eb1103da9b38c25209ac25295aa82e8386a +Author: Richard Newton +Date: Mon Jul 1 11:52:39 2013 +0100 + + Fix cmake build + Fix build on windows, uint isn't a standard type, unsigned int is. + + CMakeLists.txt | 1 + + src/z85_codec.hpp | 12 ++++++------ + 2 files changed, 7 insertions(+), 6 deletions(-) + +commit f6e972d54619935835604e7bb4dd2f86564c2eab +Author: Richard Newton +Date: Mon Jul 1 10:31:57 2013 +0000 + + Fix montior tests to handle the monitor stopped event correctly + + tests/test_monitor.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit d4d23caf326409a18cb6677dd7225f9d6550b269 +Author: Richard Newton +Date: Mon Jul 1 11:00:46 2013 +0100 + + Add new socket monitor event for when socket monitoring is stopped. + + include/zmq.h | 4 +++- + src/socket_base.cpp | 6 ++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit 1cfee8d1e79264e783b1ce2e48120eb8bc4ffc5b +Merge: 2a4aef9 4671108 +Author: Pieter Hintjens +Date: Mon Jul 1 02:14:07 2013 -0700 + + Merge pull request #601 from leewoosung/hotfixes/patched + + [LIBZMQ-541] pub socket sending fail issue + +commit 2a4aef9223bb8c6b101a882f2d9182666852cd07 +Merge: 58b1082 783bb89 +Author: Pieter Hintjens +Date: Mon Jul 1 02:06:29 2013 -0700 + + Merge pull request #602 from hurtonm/master + + Implement socket type checking + +commit 783bb890a9c7184b8c8acfe7aad6a75fdd60001a +Author: Martin Hurton +Date: Mon Jul 1 10:04:54 2013 +0200 + + Check socket types during mechanism handshake + + src/curve_client.cpp | 9 --------- + src/curve_client.hpp | 3 --- + src/curve_server.cpp | 9 --------- + src/curve_server.hpp | 3 --- + src/mechanism.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++---- + src/mechanism.hpp | 4 ++++ + src/null_mechanism.cpp | 9 --------- + src/null_mechanism.hpp | 4 ---- + src/plain_mechanism.cpp | 9 --------- + src/plain_mechanism.hpp | 5 ----- + tests/test_raw_sock.cpp | 2 +- + tests/test_stream.cpp | 4 ++-- + 12 files changed, 51 insertions(+), 58 deletions(-) + +commit 4671108e571b442e5565c399c42d5e7c8f48bde8 +Author: ganesh.vr +Date: Mon Jul 1 15:57:06 2013 +0900 + + LIBZMQ-541 issue fix + + src/dist.cpp | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 58b1082467ffd7af3294052d921bd097136a4399 +Merge: 11947b1 afe9afa +Author: Pieter Hintjens +Date: Sat Jun 29 23:56:04 2013 -0700 + + Merge pull request #600 from hurtonm/master + + Set socket buffers before establishing TCP connection + +commit afe9afa2a54f092327af62ce23a50547ab94e513 +Author: Martin Hurton +Date: Sun Jun 30 06:41:36 2013 +0200 + + Set socket buffers before establishing TCP connection + + The window scale option carried in SYN segment is computed from socket's + receive buffer size. So we need to set this buffer size before calling + connect or bind. + + src/stream_engine.cpp | 19 ------------------- + src/tcp.cpp | 22 ++++++++++++++++++++++ + src/tcp.hpp | 6 ++++++ + src/tcp_connecter.cpp | 6 ++++++ + src/tcp_listener.cpp | 6 ++++++ + 5 files changed, 40 insertions(+), 19 deletions(-) + +commit 11947b1ccb8002ee715b791ded6a7f2d14bfbfe9 +Merge: a71d64a c9bdb89 +Author: Ian Barber +Date: Sat Jun 29 09:36:50 2013 -0700 + + Merge pull request #597 from hintjens/master + + Problem: working with binary keys is painful + +commit a71d64ab95880bd01f9d49abe8025e3e1a9c6243 +Merge: 7460d00 aef2171 +Author: Ian Barber +Date: Sat Jun 29 09:34:47 2013 -0700 + + Merge pull request #599 from hurtonm/master + + Minor code refactoring + +commit aef2171e8390864d484186265ba8f7237d0d368c +Author: Martin Hurton +Date: Sat Jun 29 17:24:30 2013 +0200 + + Make last_endpoint attribute of socket object + + src/options.cpp | 8 -------- + src/options.hpp | 3 --- + src/socket_base.cpp | 20 +++++++++++++++----- + src/socket_base.hpp | 3 +++ + 4 files changed, 18 insertions(+), 16 deletions(-) + +commit c9bdb893f8fd9705a79ecdeabb2e7e1a39f35816 +Author: Martin Hurton +Date: Sat Jun 29 11:24:46 2013 +0200 + + Use generic session class whenever possible + + src/dealer.cpp | 12 ------------ + src/dealer.hpp | 15 --------------- + src/pair.cpp | 12 ------------ + src/pair.hpp | 15 --------------- + src/pub.cpp | 12 ------------ + src/pub.hpp | 15 --------------- + src/pull.cpp | 12 ------------ + src/pull.hpp | 15 --------------- + src/push.cpp | 12 ------------ + src/push.hpp | 15 --------------- + src/rep.cpp | 12 ------------ + src/rep.hpp | 15 --------------- + src/req.cpp | 8 ++++---- + src/req.hpp | 2 +- + src/router.cpp | 12 ------------ + src/router.hpp | 15 --------------- + src/session_base.cpp | 43 +------------------------------------------ + src/stream.cpp | 12 ------------ + src/stream.hpp | 15 --------------- + src/sub.cpp | 12 ------------ + src/sub.hpp | 15 --------------- + src/xpub.cpp | 12 ------------ + src/xpub.hpp | 15 --------------- + src/xsub.cpp | 12 ------------ + src/xsub.hpp | 15 --------------- + 25 files changed, 6 insertions(+), 344 deletions(-) + +commit 7460d00bacadf8df1c173daca28ebc3ec197543c +Merge: 1beec5e fd7e9b8 +Author: Pieter Hintjens +Date: Sat Jun 29 02:36:30 2013 -0700 + + Merge pull request #598 from hurtonm/master + + Use generic session class whenever possible + +commit fd7e9b8c4637679a9fe2a142771f7f977120df4a +Author: Martin Hurton +Date: Sat Jun 29 11:24:46 2013 +0200 + + Use generic session class whenever possible + + src/dealer.cpp | 12 ------------ + src/dealer.hpp | 15 --------------- + src/pair.cpp | 12 ------------ + src/pair.hpp | 15 --------------- + src/pub.cpp | 12 ------------ + src/pub.hpp | 15 --------------- + src/pull.cpp | 12 ------------ + src/pull.hpp | 15 --------------- + src/push.cpp | 12 ------------ + src/push.hpp | 15 --------------- + src/rep.cpp | 12 ------------ + src/rep.hpp | 15 --------------- + src/req.cpp | 8 ++++---- + src/req.hpp | 2 +- + src/router.cpp | 12 ------------ + src/router.hpp | 15 --------------- + src/session_base.cpp | 43 +------------------------------------------ + src/stream.cpp | 12 ------------ + src/stream.hpp | 15 --------------- + src/sub.cpp | 12 ------------ + src/sub.hpp | 15 --------------- + src/xpub.cpp | 12 ------------ + src/xpub.hpp | 15 --------------- + src/xsub.cpp | 12 ------------ + src/xsub.hpp | 15 --------------- + 25 files changed, 6 insertions(+), 344 deletions(-) + +commit 70417701089e5918452996d7cbe48c89e35a39e0 +Author: Pieter Hintjens +Date: Fri Jun 28 22:10:22 2013 +0200 + + Added Z85 support + + The use of binary for CURVE keys is painful; you cannot easily copy + these in e.g. email, or use them directly in source code. There are + various encoding possibilities. Base16 and Base64 are not optimal. + Ascii85 is not safe for source (it generates quotes and escapes). + + So, I've designed a new Base85 encoding, Z85, which is safe to use + in code and elsewhere, and I've modified libzmq to use this where + it also uses binary keys (in get/setsockopt). + + Very simply, if you use a 32-byte value, it's Base256 (binary), + and if you use a 40-byte value, it's Base85 (Z85). + + I've put the Z85 codec into z85_codec.hpp, it's not elegant C++ + but it is minimal and it works. Feel free to rewrap as a real class + if this annoys you. + + Makefile.am | 6 +-- + configure.ac | 12 +++-- + doc/zmq_curve.txt | 36 +++++++++++--- + doc/zmq_getsockopt.txt | 58 +++++++++++++++++++--- + doc/zmq_setsockopt.txt | 32 +++++++----- + src/Makefile.am | 1 + + src/options.cpp | 39 ++++++++++++++- + src/options.hpp | 5 +- + src/z85_codec.hpp | 108 +++++++++++++++++++++++++++++++++++++++++ + tests/test_security_curve.cpp | 55 +++++++-------------- + tools/Makefile.am | 1 + + tools/curve_keygen.c | 40 +++++++++++---- + tools/z85_codec.h | 108 +++++++++++++++++++++++++++++++++++++++++ + 13 files changed, 418 insertions(+), 83 deletions(-) + +commit 1beec5e960646eead85df5a91e1e9b986af0ce28 +Merge: ba1ae7d 76df045 +Author: Martin Hurton +Date: Fri Jun 28 05:05:54 2013 -0700 + + Merge pull request #596 from hintjens/master + + Problem: mechanisms are lagging behind specs + +commit 76df0459503de64fe5fabb916420faeed2ca667c +Author: Pieter Hintjens +Date: Fri Jun 28 12:04:01 2013 +0200 + + Return EINVAL when trying to use CURVE without libsodium + + src/options.cpp | 27 +++++++-------------------- + 1 file changed, 7 insertions(+), 20 deletions(-) + +commit 357a9c45fbfb195a23ad42365153c279c49ea8d9 +Author: Martin Hurton +Date: Fri Jun 28 11:24:14 2013 +0200 + + Simplify ZMQ_STREAM socket implementation, part II + + src/stream.cpp | 57 ++++++++++++++++++++------------------------------------ + src/stream.hpp | 3 --- + 2 files changed, 20 insertions(+), 40 deletions(-) + +commit 7832addd202a20f65e218d74df6621147c7b8eb9 +Author: Pieter Hintjens +Date: Fri Jun 28 11:42:54 2013 +0200 + + Updated security mechanisms to use variable-length commands + + RFC23, RFC24, RFC26 now use variable-length command names that + end in null octet (valid C strings) instead of fixed-length + space padded strings. + + src/curve_client.cpp | 32 +++++------ + src/curve_server.cpp | 34 +++++------ + src/mechanism.cpp | 2 +- + src/null_mechanism.cpp | 10 ++-- + src/plain_mechanism.cpp | 12 ++-- + tests/Makefile.am | 2 +- + tests/test_raw_sock.cpp | 19 +++--- + tests/test_security.cpp | 128 +++++++++++------------------------------ + tests/test_security_curve.cpp | 105 ++++++++------------------------- + tests/test_stream.cpp | 19 +++--- + tests/testutil.hpp | 32 +++++++++++ + 11 files changed, 153 insertions(+), 242 deletions(-) + +commit ba1ae7d639aa07bec60687bb70ff99c1a1f753d5 +Merge: fe2753d 7b27c12 +Author: Pieter Hintjens +Date: Fri Jun 28 02:28:23 2013 -0700 + + Merge pull request #595 from hurtonm/master + + Another ZMQ_STREAM simplification + +commit 7b27c125dc3025fe16b1f259695f7bbaa78ee9f0 +Author: Martin Hurton +Date: Fri Jun 28 11:24:14 2013 +0200 + + Simplify ZMQ_STREAM socket implementation, part II + + src/stream.cpp | 57 ++++++++++++++++++++------------------------------------ + src/stream.hpp | 3 --- + 2 files changed, 20 insertions(+), 40 deletions(-) + +commit dd14d4e01b5188d89fa45d0c8189cf550b22d1ae +Author: Pieter Hintjens +Date: Fri Jun 28 10:16:50 2013 +0200 + + Minor whitespace fixes in man page + + doc/zmq_setsockopt.txt | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit c4ae74f8161b3f68f5933993bc89acc9209d4ced +Author: Pieter Hintjens +Date: Fri Jun 28 09:41:05 2013 +0200 + + Fixed zmq_errno function definition + + src/zmq.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fe2753da0af6df9931f164aedd04d9d37ebb7f66 +Merge: d8f1376 a1bb5e8 +Author: Pieter Hintjens +Date: Fri Jun 28 01:15:02 2013 -0700 + + Merge pull request #594 from hurtonm/master + + Simplify ZMQ_STREAM socket implementation + +commit a1bb5e83ffd837e9d074bf727152d62583e7a516 +Author: Martin Hurton +Date: Fri Jun 28 09:08:54 2013 +0200 + + Simplify ZMQ_STREAM socket implementation + + src/stream.cpp | 87 +++++++++++++------------------------------------------- + src/stream.hpp | 18 ++---------- + 2 files changed, 22 insertions(+), 83 deletions(-) + +commit d8f13760083bd5ae302dd8c38af9c4cd6ac4b1d3 +Merge: 4a4d222 ad77937 +Author: Martin Hurton +Date: Thu Jun 27 14:09:04 2013 -0700 + + Merge pull request #593 from hintjens/master + + Problem: ROUTER+RAW was not a clean API + +commit ad7793795692e93595f01e12773467fb9270e9ec +Author: Pieter Hintjens +Date: Thu Jun 27 20:47:34 2013 +0200 + + Added ZMQ_STREAM socket type + + - designed for TCP clients and servers + - added HTTP client / server example in tests/test_stream.cpp + - same as ZMQ_ROUTER + ZMQ_ROUTER_RAW + ZMQ_ROUTER_MANDATORY + - includes b893ce set ZMQ_IDENTITY on outgoing connect + - deprecates ZMQ_ROUTER_RAW + + .gitignore | 2 + + doc/zmq_msg_send.txt | 2 + + doc/zmq_send.txt | 2 + + doc/zmq_sendmsg.txt | 2 + + doc/zmq_setsockopt.txt | 2 + + doc/zmq_socket.txt | 42 +++++- + include/zmq.h | 1 + + src/Makefile.am | 2 + + src/mechanism.cpp | 4 +- + src/router.cpp | 7 +- + src/session_base.cpp | 5 + + src/socket_base.cpp | 4 + + src/stream.cpp | 335 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/stream.hpp | 127 ++++++++++++++++++ + tests/Makefile.am | 9 +- + tests/test_stream.cpp | 228 ++++++++++++++++++++++++++++++++ + 16 files changed, 763 insertions(+), 11 deletions(-) + +commit 4a4d222ec45c10da66c9514713d3959c31b44709 +Merge: e9d11c6 b893ce2 +Author: Pieter Hintjens +Date: Sun Jun 23 23:29:44 2013 -0700 + + Merge pull request #592 from gavinmcniff/master + + Store identity for raw socket + +commit b893ce250301b408d040c75933993cd85560b1ce +Author: Gavin +Date: Sun Jun 23 18:16:33 2013 +0100 + + Store identity for raw socket + + Identity stored during connect procedure. Can be read using + zmq_getsockopt and used as the identity frame when sending messages. + This allows the implementation of a raw socket client. + + src/router.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +commit e9d11c6611f76ad5aebddeaf7ca73a04d6b7d65d +Merge: ec943ac b12be41 +Author: Ian Barber +Date: Sun Jun 23 01:07:59 2013 -0700 + + Merge pull request #591 from hurtonm/master + + Rename parse_properties to parse_metadata + +commit b12be41736ee4bc1e2137a8553f8183f9b60514d +Author: Martin Hurton +Date: Sun Jun 23 08:52:27 2013 +0200 + + Rename parse_properties to parse_metadata + + src/curve_client.cpp | 4 ++-- + src/curve_server.cpp | 4 ++-- + src/mechanism.cpp | 4 ++-- + src/mechanism.hpp | 10 ++++++---- + src/null_mechanism.cpp | 2 +- + src/plain_mechanism.cpp | 4 ++-- + 6 files changed, 15 insertions(+), 13 deletions(-) + +commit ec943ac5de7a7572b84b75f41c0ba6ae2bccebb7 +Merge: 19cf076 99d4974 +Author: Ian Barber +Date: Sat Jun 22 14:19:02 2013 -0700 + + Merge pull request #590 from hurtonm/master + + Refactor how properties are parsed + +commit 99d4974580bb6c77c0eccf5f92afe81f761e801d +Author: Martin Hurton +Date: Sat Jun 22 19:02:08 2013 +0200 + + Refactor how properties are parsed + + src/curve_client.cpp | 43 +++++------------------------------ + src/curve_client.hpp | 3 ++- + src/curve_server.cpp | 43 +++++------------------------------ + src/curve_server.hpp | 4 +++- + src/mechanism.cpp | 50 +++++++++++++++++++++++++++++++++++++++++ + src/mechanism.hpp | 14 ++++++++++++ + src/null_mechanism.cpp | 57 +++++++++++++---------------------------------- + src/null_mechanism.hpp | 4 ++++ + src/plain_mechanism.cpp | 43 +++++------------------------------ + src/plain_mechanism.hpp | 7 ++++-- + 10 files changed, 112 insertions(+), 156 deletions(-) + +commit 19cf076f8c79ec511a0859d0a50b92c65a747615 +Merge: 73e1952 13df8e6 +Author: Martin Hurton +Date: Sat Jun 22 08:28:03 2013 -0700 + + Merge pull request #589 from ianbarber/master + + Add test for CURVE mechanism + +commit 13df8e6546d85d5308657d6475bd3a867b181e70 +Merge: 211bf2b 73e1952 +Author: Ian Barber +Date: Sat Jun 22 16:19:26 2013 +0100 + + Merge branch 'master' of git://github.com/zeromq/libzmq + +commit 211bf2b08e312a7f9ae1e165085f79788854df0c +Author: Ian Barber +Date: Sat Jun 22 16:17:25 2013 +0100 + + Added security curve test + + Test is skipped if no libsodium. + Added warning if libsodium not configured + + configure.ac | 2 +- + tests/Makefile.am | 2 + + tests/test_security_curve.cpp | 224 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 227 insertions(+), 1 deletion(-) + +commit 73e195279ae201f99b38c4afcba86c5663c0eea4 +Merge: 2bf5124 084e879 +Author: Pieter Hintjens +Date: Sat Jun 22 07:25:26 2013 -0700 + + Merge pull request #588 from hurtonm/master + + Small code cleanup + +commit 084e8792de2115e08a5d6bb84d176e4fe8302066 +Author: Martin Hurton +Date: Sat Jun 22 13:40:32 2013 +0200 + + Small cleanup in pipe.cpp + + src/pipe.cpp | 20 ++++++++------------ + src/pipe.hpp | 2 +- + 2 files changed, 9 insertions(+), 13 deletions(-) + +commit 2bf51247feeb02276eddb325883a993e740bfb7f +Merge: 8bb79b5 fa0f0e2 +Author: Ian Barber +Date: Sat Jun 22 07:14:28 2013 -0700 + + Merge pull request #587 from hurtonm/master + + Make ZAP optional for CURVE mechanism + +commit fa0f0e21b82808383e549d872a52a1b7de7e2f37 +Author: Martin Hurton +Date: Sat Jun 22 16:05:34 2013 +0200 + + Make ZAP optional for PLAIN mechanism + + src/plain_mechanism.cpp | 141 ++++++++++++++++++++++++----------------------- + src/plain_mechanism.hpp | 6 ++ + 2 files changed, 78 insertions(+), 69 deletions(-) + +commit 8bb79b5eb1fabfd5e430fc09a29a35c661feb053 +Merge: acaaaa5 5975e00 +Author: Pieter Hintjens +Date: Sat Jun 22 06:42:26 2013 -0700 + + Merge pull request #586 from hurtonm/master + + Make ZAP optional for CURVE mechanism + +commit 5975e00fd1bedfcdd99664baf52fffcc7982120a +Author: Martin Hurton +Date: Sat Jun 22 15:33:44 2013 +0200 + + Make ZAP optional for CURVE mechanism + + src/curve_server.cpp | 42 ++++++++++++++++-------------------------- + src/curve_server.hpp | 5 ++++- + 2 files changed, 20 insertions(+), 27 deletions(-) + +commit acaaaa53517cbe6f5f20b424e41a65a8240bbc5e +Merge: 675bd46 fadfcac +Author: Ian Barber +Date: Sat Jun 22 05:19:01 2013 -0700 + + Merge pull request #585 from hintjens/master + + Problem: allows CURVE security even if libzmq was built without libsodium + +commit fadfcac1dec8e3b36bf1498b0d38f818e8d233e7 +Author: Pieter Hintjens +Date: Sat Jun 22 13:50:22 2013 +0200 + + Fixed compile error, needed unistd.h + + tests/test_monitor.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 1ea06883c0694486324ed9a7adc2fba4334987f7 +Author: Pieter Hintjens +Date: Sat Jun 22 13:39:20 2013 +0200 + + Fixed spelling in comments + + src/lb.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fb43d5a0fef8349b49a573a9fc82aea4f62c95f7 +Author: Pieter Hintjens +Date: Sat Jun 22 13:39:02 2013 +0200 + + Whitespace fix to man page + + doc/zmq_setsockopt.txt | 1 + + 1 file changed, 1 insertion(+) + +commit f4848ddb32612be96eba308c3e7e3361c4c33f98 +Author: Pieter Hintjens +Date: Sat Jun 22 13:38:14 2013 +0200 + + Prints message and exits if app tries to use CURVE without libsodium + + src/options.cpp | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 675bd4640bf3646b4d8420984681948e7556d33f +Merge: 9eb2521 1b86324 +Author: Pieter Hintjens +Date: Sat Jun 22 04:18:27 2013 -0700 + + Merge pull request #584 from hurtonm/master + + Fix test_disconnect_inproc to work on ILP64 systems + +commit 1b86324396fcbe77455645d2a39f5c5b696beaed +Author: Martin Hurton +Date: Sat Jun 22 13:00:33 2013 +0200 + + Fix test_disconnect_inproc to work on ILP64 systems + + tests/test_disconnect_inproc.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 9eb2521537ed1fec2f7be0740b0817802e19c1a9 +Merge: 91bc740 694543e +Author: Pieter Hintjens +Date: Sat Jun 22 03:25:44 2013 -0700 + + Merge pull request #583 from ianbarber/master + + Small stream engine issue and test_monitor tidy up + +commit 694543e3a20f2e6763b12c8930d6351da2c7be45 +Merge: f4c51db 91bc740 +Author: Ian Barber +Date: Sat Jun 22 10:59:16 2013 +0100 + + Merge branch 'master' of git://github.com/zeromq/libzmq + +commit f4c51db842f78182a4b0392c96cd706251c770e9 +Author: Ian Barber +Date: Sat Jun 22 10:58:16 2013 +0100 + + Fix small streamengine issue w/ term and handshake + + Also tidy up monitor test a little. + + src/stream_engine.cpp | 6 ++++++ + tests/test_monitor.cpp | 23 +++++++++++++---------- + 2 files changed, 19 insertions(+), 10 deletions(-) + +commit 91bc74089ff0655966c6adf566b67796ab12b5ab +Merge: c9638fc 8af208f +Author: Pieter Hintjens +Date: Sat Jun 22 02:57:34 2013 -0700 + + Merge pull request #582 from hurtonm/master + + Implement CurveZMQ message encryption and authentication + +commit 8af208fab7388c1ee37daaf4403d73a887eeb71f +Author: Martin Hurton +Date: Sat Jun 22 11:48:33 2013 +0200 + + Implement ZMTP/3.0 CURVE mechanism + + src/stream_engine.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++-- + src/stream_engine.hpp | 4 ++++ + 2 files changed, 59 insertions(+), 2 deletions(-) + +commit e4a211870c43d9a8c96ad16c8b751b37a3cfa53d +Author: Martin Hurton +Date: Sat Jun 22 11:46:40 2013 +0200 + + Implement CurveZMQ message encryption and authentication + + src/curve_client.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/curve_client.hpp | 2 + + src/curve_server.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/curve_server.hpp | 2 + + src/mechanism.hpp | 4 ++ + 5 files changed, 222 insertions(+) + +commit c9638fceb4886f13a6aeb7db7bdc521ab923a132 +Merge: c5078ea 8c0ded5 +Author: Martin Hurton +Date: Sat Jun 22 02:12:39 2013 -0700 + + Merge pull request #581 from hintjens/master + + Problem: code isn't setting mechanism to CURVE properly + +commit 8c0ded5076d9f5afe7c272d0dcd17316af7c66d8 +Author: Pieter Hintjens +Date: Sat Jun 22 11:05:01 2013 +0200 + + Properly set mechanism to CURVE when setting a curve option + + src/options.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c5078ea1b8123f74bcd9361bc52c650c7855eea5 +Merge: 92b02b9 20a7978 +Author: Ian Barber +Date: Sat Jun 22 01:08:35 2013 -0700 + + Merge pull request #580 from hurtonm/master + + Stop ZMTP handshake when an unexpected message comes + +commit 20a7978d679c653eb58e67753f66feb19e55c001 +Author: Martin Hurton +Date: Sat Jun 22 08:11:55 2013 +0200 + + Stop ZMTP handshake when an unexpected message comes + + src/curve_client.cpp | 3 ++- + src/curve_server.cpp | 2 +- + src/plain_mechanism.cpp | 3 ++- + src/stream_engine.cpp | 2 -- + 4 files changed, 5 insertions(+), 5 deletions(-) + +commit 92b02b98cd3d08378033eac6cb9ea347b20e8fbd +Merge: 1fe7820 cabf4e6 +Author: Pieter Hintjens +Date: Fri Jun 21 09:00:18 2013 -0700 + + Merge pull request #579 from ianbarber/master + + Clean up socket_type_string + +commit cabf4e658f2e4ad4d18377b53566d3a4a353c274 +Author: Ian Barber +Date: Fri Jun 21 16:56:45 2013 +0100 + + Comments to clarify the socket name function + + src/mechanism.hpp | 2 ++ + src/stream_engine.hpp | 2 -- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 1fe7820629f5f8bf5441ddf810901060984da797 +Merge: c5a9fa5 10f69c1 +Author: Ian Barber +Date: Thu Jun 20 11:09:20 2013 -0700 + + Merge pull request #577 from hintjens/master + + API for CURVE configuration + +commit c5a9fa5b5e56ede6c794e8ca6b2bd0cab27f665d +Merge: 65c84ab 3b355fe +Author: Pieter Hintjens +Date: Thu Jun 20 09:47:22 2013 -0700 + + Merge pull request #578 from gonzus/master + + Changes to sanity tag in ctx + +commit 3b355fec9ac5825ccd5b241aa3e4fbdbbfb989a9 +Author: Gonzalo Diethelm +Date: Thu Jun 20 12:43:32 2013 -0400 + + Introduced private constants for the context sanity tag values. + Ignored more MSVC intermmediate files. + + .gitignore | 2 +- + src/ctx.cpp | 9 ++++++--- + 2 files changed, 7 insertions(+), 4 deletions(-) + +commit 10f69c1500af39e7405b8a07b16be11c01827d70 +Author: Pieter Hintjens +Date: Thu Jun 20 18:30:30 2013 +0200 + + Clarified man pages on mixed security + + doc/zmq_curve.txt | 13 ++++++++----- + doc/zmq_setsockopt.txt | 6 ++++-- + 2 files changed, 12 insertions(+), 7 deletions(-) + +commit d9bb16725ebe52faa3655ddd39cf2b8d0c82d0a3 +Author: Pieter Hintjens +Date: Thu Jun 20 18:09:12 2013 +0200 + + Added options for CURVE security + + - ZMQ_CURVE_PUBLICKEY for clients and servers + - ZMQ_CURVE_SECRETKEY for clients + - ZMQ_CURVE_SERVERKEY for clients + - ZMQ_CURVE_SERVER for servers + - added tools/curve_keygen.c as example + - updated man pages + + .gitignore | 2 ++ + doc/zmq.txt | 6 ++-- + doc/zmq_curve.txt | 41 ++++++++++++++++++++++------ + doc/zmq_setsockopt.txt | 71 +++++++++++++++++++++++++++++++++++++++++++----- + include/zmq.h | 9 +++--- + src/curve_client.cpp | 11 ++------ + src/curve_server.cpp | 3 +- + src/options.cpp | 57 ++++++++++++++++++++++++++++++++++++++ + src/options.hpp | 15 +++++----- + tools/curve_keygen.c | 47 ++++++++++++++++++++++++++++++++ + 10 files changed, 222 insertions(+), 40 deletions(-) + +commit 65c84abdb538de24de4cfa9dac7b4db789a0787e +Merge: 9273022 37b99c0 +Author: Pieter Hintjens +Date: Thu Jun 20 05:27:49 2013 -0700 + + Merge pull request #576 from hurtonm/zmtp_curve + + Implement ZMTP/3.0 CURVE handshake + +commit 37b99c0b4b706437e4298de7440c681b1b6ff218 +Author: Martin Hurton +Date: Tue Jun 18 23:38:24 2013 +0200 + + Implement ZMTP/3.0 CURVE handshake + + CMakeLists.txt | 2 + + src/Makefile.am | 4 + + src/curve_client.cpp | 344 +++++++++++++++++++++++++++++++ + src/curve_client.hpp | 109 ++++++++++ + src/curve_server.cpp | 547 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/curve_server.hpp | 113 +++++++++++ + src/options.hpp | 9 + + 7 files changed, 1128 insertions(+) + +commit 927302226096c6cbbc2fec28d1e293588f35887d +Merge: 1195092 9bd8d9a +Author: Pieter Hintjens +Date: Mon Jun 17 06:38:33 2013 -0700 + + Merge pull request #575 from murphybytes/master + + Missing files in cmake generated build. + +commit 9bd8d9a7269c0a04704e4dda978d1486a759b1b9 +Author: John Murphy +Date: Sun Jun 16 18:42:51 2013 -0500 + + added missing files required to build + + CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1195092c61befa2fceb9d16780a4570ec3f9f4a7 +Merge: 5c54bc3 3832792 +Author: Ian Barber +Date: Sat Jun 15 01:27:38 2013 -0700 + + Merge pull request #574 from pijyoi/master + + fix memory leak in ipc_listener wildcard + +commit 38327927ceda89422ae32f9223f40a0532f60b57 +Author: xinchuan +Date: Sat Jun 15 16:11:50 2013 +0800 + + fix memory leak in tempnam() usage + + src/ipc_listener.cpp | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit 5c54bc358e8d6fb1f4bc5bfc4ef64c26b84b2a4f +Merge: 6b8569d 627190c +Author: Pieter Hintjens +Date: Mon Jun 10 03:34:23 2013 -0700 + + Merge pull request #573 from shripchenko/master + + another iteration on ZMQ_PROBE_ROUTER + +commit 627190c8bee128032d74ce27e218e28323b535fd +Author: shripchenko +Date: Mon Jun 10 02:31:00 2013 -0700 + + another iteration on ZMQ_PROBE_ROUTER + now it properly works for ROUTER + + src/dealer.cpp | 4 ++-- + src/router.cpp | 29 +++++++++++++---------------- + tests/test_probe_router.cpp | 4 +--- + 3 files changed, 16 insertions(+), 21 deletions(-) + +commit 6b8569d78abb16f764cf366bbe62cfbc61d1c226 +Merge: 210fcbb 6ff51ee +Author: Martin Hurton +Date: Fri Jun 7 07:33:25 2013 -0700 + + Merge pull request #572 from hintjens/master + + Updated ZAP PLAIN request to follow latest draft + +commit 6ff51ee909fd3389f038ac5b1767a4a88716f3a6 +Author: Pieter Hintjens +Date: Fri Jun 7 15:50:36 2013 +0200 + + Updated ZAP request for changed protocol draft + + - username and password sent as two string frames + - fixed test case to match + + src/plain_mechanism.cpp | 21 ++++++++++--------- + tests/test_security.cpp | 51 +++++++++++++++++++---------------------------- + 2 files changed, 32 insertions(+), 40 deletions(-) + +commit 656ff5b208bbb06335b7b32453d054d7f668636e +Author: Pieter Hintjens +Date: Fri Jun 7 13:28:47 2013 +0200 + + Small fixes to documentation + + - REQ and REP sockets don't have HWM issues + - ZMQ_DONTWAIT applies to DEALER and PUSH only + + doc/zmq_msg_send.txt | 7 ++++--- + doc/zmq_send.txt | 7 ++++--- + doc/zmq_sendmsg.txt | 7 ++++--- + doc/zmq_socket.txt | 20 ++++---------------- + 4 files changed, 16 insertions(+), 25 deletions(-) + +commit 210fcbbbeb927a63271374a60ed7923b2db158d0 +Merge: 7a43c02 2928c91 +Author: Ian Barber +Date: Thu Jun 6 04:41:55 2013 -0700 + + Merge pull request #571 from hurtonm/master + + Add ZAP support + +commit 2928c91a6dba5ba19f5e481ead40c00100169aed +Author: Martin Hurton +Date: Thu Jun 6 13:13:10 2013 +0200 + + Implement ZAP and integrate it with PLAIN mechanism + + src/i_engine.hpp | 2 + + src/mechanism.hpp | 3 + + src/pgm_receiver.hpp | 1 + + src/pgm_sender.hpp | 1 + + src/plain_mechanism.cpp | 152 ++++++++++++++++++++++++++++++++++++++++++++--- + src/plain_mechanism.hpp | 9 ++- + src/session_base.cpp | 143 +++++++++++++++++++++++++++++++++++++------- + src/session_base.hpp | 15 +++++ + src/stream_engine.cpp | 48 ++++++++------- + src/stream_engine.hpp | 8 +-- + tests/test_security.cpp | 131 ++++++++++++++++++++++++++++++++++++++++ + 11 files changed, 458 insertions(+), 55 deletions(-) + +commit 4e47084dd4ca9244158c2d55b2e6e315ee23dfc4 +Author: Martin Hurton +Date: Thu Jun 6 11:00:41 2013 +0200 + + Minor cleanups + + src/pipe.cpp | 2 +- + src/plain_mechanism.cpp | 17 ++++++++--------- + src/session_base.cpp | 8 ++++---- + src/session_base.hpp | 4 ++-- + 4 files changed, 15 insertions(+), 16 deletions(-) + +commit c3e40736ded9c96981ddd2e399cd1b43c9f5980f +Author: Martin Hurton +Date: Tue May 28 16:49:24 2013 +0200 + + Rename terminated->pipe_terminated + + src/dealer.cpp | 6 +++--- + src/dealer.hpp | 2 +- + src/dist.cpp | 2 +- + src/dist.hpp | 2 +- + src/fq.cpp | 2 +- + src/fq.hpp | 2 +- + src/lb.cpp | 2 +- + src/lb.hpp | 2 +- + src/pair.cpp | 2 +- + src/pair.hpp | 2 +- + src/pipe.cpp | 2 +- + src/pipe.hpp | 2 +- + src/pull.cpp | 4 ++-- + src/pull.hpp | 2 +- + src/push.cpp | 4 ++-- + src/push.hpp | 2 +- + src/router.cpp | 4 ++-- + src/router.hpp | 2 +- + src/session_base.cpp | 2 +- + src/session_base.hpp | 2 +- + src/socket_base.cpp | 4 ++-- + src/socket_base.hpp | 4 ++-- + src/xpub.cpp | 4 ++-- + src/xpub.hpp | 2 +- + src/xsub.cpp | 6 +++--- + src/xsub.hpp | 2 +- + 26 files changed, 36 insertions(+), 36 deletions(-) + +commit 7a43c02aaf331e3821fdf15841798ca5512d9e65 +Merge: d5f6036 a9679da +Author: Ian Barber +Date: Thu Jun 6 01:18:37 2013 -0700 + + Merge pull request #570 from hintjens/master + + Packaging of probe function + +commit a9679da764a279b368603b9160c0f81a419c2160 +Author: Pieter Hintjens +Date: Wed Jun 5 15:55:15 2013 +0200 + + Packaging on ZMQ_PROBE_ROUTER + + - renamed to ZMQ_PROBE_ROUTER + + .gitignore | 2 +- + doc/zmq_setsockopt.txt | 14 ++++---- + include/zmq.h | 2 +- + src/dealer.cpp | 14 ++++---- + src/dealer.hpp | 4 +-- + src/router.cpp | 16 ++++----- + src/router.hpp | 4 +-- + tests/Makefile.am | 4 +-- + tests/test_probe_router.cpp | 77 +++++++++++++++++++++++++++++++++++++++++++ + tests/test_router_probe.cpp | 75 ----------------------------------------- + 10 files changed, 105 insertions(+), 107 deletions(-) + +commit 2344131db3800e95a05e3ed11ca0e31aed468166 +Author: Pieter Hintjens +Date: Wed Jun 5 15:25:52 2013 +0200 + + Packaging of ZMQ_PROBE + + - Cleaned up man page a little + - Wrote test case tests/test_router_probe.cpp + + .gitignore | 1 + + doc/zmq_setsockopt.txt | 26 ++++++++------- + tests/Makefile.am | 2 ++ + tests/test_router_probe.cpp | 75 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 92 insertions(+), 12 deletions(-) + +commit dbd58f8e151681dfe210af93be3e2b72c10dc40f +Author: Pieter Hintjens +Date: Wed Jun 5 12:42:25 2013 +0200 + + Fixed out-of-date reference + + doc/zmq_socket.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9c980e17dd6f83bc01f9b4442fe90d53e9562850 +Author: shripchenko +Date: Fri May 24 07:09:53 2013 -0700 + + changed option name. +documentation changes + + doc/zmq_setsockopt.txt | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 97324398a7d647c3a2cdba7597db2b8057c60c30 +Author: shripchenko +Date: Thu May 23 01:49:40 2013 -0700 + + refactored ZMQ_ROUTER_ANNOUNCE_SELF code. renamed it to ZMQ_PROBE_NEW_PEERS. + implement it for DEALER tocket. + +documentation + + doc/zmq_setsockopt.txt | 10 ++++------ + src/dealer.cpp | 6 +++--- + src/router.cpp | 7 +++++-- + 3 files changed, 12 insertions(+), 11 deletions(-) + +commit d5f603690f48c219c35419726f796a9ceb4de369 +Merge: d1f011d 42ab0e8 +Author: Pieter Hintjens +Date: Sat Jun 1 01:08:48 2013 -0700 + + Merge pull request #569 from jpoliv/master + + Make "./configure --with-system-pgm" detect the OpenPGM 5.2 system library. + +commit 42ab0e82176f98aa80bed1e874dd36b72bc314b4 +Author: Jose Pedro Oliveira +Date: Sat Jun 1 03:39:40 2013 +0100 + + Make + ./configure --with-system-pgm + detect the OpenPGM 5.2 system library. + + Note that OpenPGM installs a versioned pkgconfig file + (openpgm-5.2.pc, openpgm-5.1.pc). + + configure.ac | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +commit d1f011d7e5087649b51e0e6dde9c8e8832e7ea86 +Merge: 6caa173 43d0497 +Author: Pieter Hintjens +Date: Fri May 31 16:14:02 2013 -0700 + + Merge pull request #568 from jmgao/patch-2 + + Fold constant expression into constant. + +commit 43d049741f86a2385d7743d6065336d971c73118 +Author: Josh Gao +Date: Fri May 31 13:22:51 2013 -0700 + + Fix mistaken use of xor in "2^31 - 1". + + src/mechanism.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6caa17373b766a002e32906c6cacea0f743114a2 +Merge: 240eff3 9a0b2c8 +Author: Pieter Hintjens +Date: Wed May 29 14:13:13 2013 -0700 + + Merge pull request #567 from ianbarber/master + + Fixed memory leak in stream engine + +commit 9a0b2c897039b6fa35287e065b3803104b622ac2 +Author: Ian Barber +Date: Wed May 29 21:58:20 2013 +0100 + + Pieter's change to fix memory leak on mechanism + + src/stream_engine.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +commit 240eff384aa924e366c1709f41b9afa94d0d7890 +Merge: 9d63ebf f805e4d +Author: Pieter Hintjens +Date: Wed May 29 09:03:54 2013 -0700 + + Merge pull request #563 from shripchenko/master + + Refactoring of 'ZMQ_ROUTER_ANNOUNCE_SELF' + +commit 9d63ebf6d624d374bedfe0d9050d145665a0c92c +Merge: f781eb7 4e4803e +Author: Pieter Hintjens +Date: Tue May 28 04:51:47 2013 -0700 + + Merge pull request #564 from hurtonm/master + + Rename pipe states so they are more mnemonic + +commit 4e4803e07faad51b17fe05bddad300e863ed1afa +Author: Martin Hurton +Date: Tue May 28 13:18:19 2013 +0200 + + Rename pipe states to make it more mnemonic + + src/pipe.cpp | 76 ++++++++++++++++++++++++++++++---------------------------- + src/pipe.hpp | 30 ++++++++++++----------- + 2 files changed, 56 insertions(+), 50 deletions(-) + +commit f805e4dd03d012e644b4153866c70e99490b0349 +Author: shripchenko +Date: Fri May 24 07:09:53 2013 -0700 + + changed option name. +documentation changes + + doc/zmq_setsockopt.txt | 10 ++++++---- + include/zmq.h | 2 +- + src/dealer.cpp | 2 +- + src/router.cpp | 2 +- + 4 files changed, 9 insertions(+), 7 deletions(-) + +commit aec989fb5dcdbd9043057c94035621dbac8b8e33 +Author: shripchenko +Date: Thu May 23 02:02:18 2013 -0700 + + small refactoring + + src/dealer.cpp | 6 +++--- + src/router.cpp | 7 ++----- + 2 files changed, 5 insertions(+), 8 deletions(-) + +commit 51750a7d2a0ddceb1c51096cac7cd79a442bce42 +Author: shripchenko +Date: Thu May 23 01:49:40 2013 -0700 + + refactored ZMQ_ROUTER_ANNOUNCE_SELF code. renamed it to ZMQ_PROBE_NEW_PEERS. + implement it for DEALER tocket. + +documentation + + doc/zmq_setsockopt.txt | 15 +++++++++++++++ + include/zmq.h | 2 +- + src/dealer.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- + src/dealer.hpp | 4 ++++ + src/router.cpp | 35 ++++++++++++++++++++++------------- + src/router.hpp | 8 ++++---- + 6 files changed, 86 insertions(+), 19 deletions(-) + +commit f781eb7e7bb53c8fa7bd5f9ff1116c7abadc2076 +Merge: 13643b2 fbd1729 +Author: Martin Hurton +Date: Wed May 22 07:05:20 2013 -0700 + + Merge pull request #562 from hintjens/master + + Removed tracing on router option setting + +commit fbd1729cbda254442c48c272f827c1f7bbaad551 +Author: Pieter Hintjens +Date: Wed May 22 00:17:03 2013 +0200 + + Removed tracing for Travis builds + + src/router.cpp | 6 ------ + 1 file changed, 6 deletions(-) + +commit 13643b2aec307fb7d799fe0371e88918f9875b40 +Merge: d113495 910b469 +Author: Pieter Hintjens +Date: Tue May 21 14:32:05 2013 -0700 + + Merge pull request #561 from shripchenko/master + + Add ROUTER socket option to introduce self(send an empty message) to new peers, to allow ROUTER<->ROUTER auto-discovery problem. + +commit 910b46922419c0622a5917ea02f6af820b14c578 +Merge: ed3a115 ec7f711 +Author: shripchenko +Date: Tue May 21 10:26:11 2013 -0700 + + Merge branch 'master' of https://github.com/shripchenko/libzmq + +commit ed3a115da9111766d010f45db615503def10dfed +Author: shripchenko +Date: Tue May 21 10:20:24 2013 -0700 + + Add ROUTER socket option to introduce self(send an empty message) to new peers, to allow ROUTER<->ROUTER auto-discovery problem. + + include/zmq.h | 1 + + src/router.cpp | 19 ++++++++++++++++++- + src/router.hpp | 3 +++ + 3 files changed, 22 insertions(+), 1 deletion(-) + +commit ec7f711c5883299eb4062fd98adb239ba1c06320 +Author: root +Date: Tue May 21 10:20:24 2013 -0700 + + Add ROUTER socket option to introduce self(send an empty message) to new peers, to allow ROUTER<->ROUTER auto-discovery problem. + + include/zmq.h | 1 + + src/router.cpp | 19 ++++++++++++++++++- + src/router.hpp | 3 +++ + 3 files changed, 22 insertions(+), 1 deletion(-) + +commit c7c865da75c8ba2d7db2455e4a9ce273f54e197f +Author: Pieter Hintjens +Date: Tue May 21 18:52:44 2013 +0200 + + Whitespace fixes + + tests/test_connect_delay.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d11349550092bc50cfe3984cddc73a4db15b4d24 +Merge: 536ea4f 4112693 +Author: Pieter Hintjens +Date: Tue May 21 09:03:51 2013 -0700 + + Merge pull request #560 from hintjens/master + + Working on Travis builds + +commit 4112693051909cbfee5d9ab8a5c7f895f65f547b +Author: Pieter Hintjens +Date: Tue May 21 15:15:16 2013 +0200 + + Cleaned up router option code + - made consistent with options.cpp code + - added trace print for ongoing issue with Travis CI builds + + src/router.cpp | 51 +++++++++++++++++++++++++++++++++------------------ + 1 file changed, 33 insertions(+), 18 deletions(-) + +commit 536ea4fc24f08f2821449ea2f8b05fc87ce58647 +Merge: e9e44c6 bf96cb4 +Author: Ian Barber +Date: Tue May 21 00:39:58 2013 -0700 + + Merge pull request #559 from hintjens/master + + Adding support for Travis CI + +commit bf96cb44e24faf2ae3c3983263c0693d156b369b +Author: Pieter Hintjens +Date: Tue May 21 09:32:13 2013 +0200 + + Fixed name of Travis file + + .travis.yaml | 2 -- + .travis.yml | 2 ++ + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 59a164d2b5beafce60971b5a35902e69581e0aa2 +Author: Pieter Hintjens +Date: Tue May 21 09:20:39 2013 +0200 + + Added support for Travis CI + + .travis.yaml | 2 ++ + 1 file changed, 2 insertions(+) + +commit e9e44c6b09e4bada7ec89b45bf116722d784dbdf +Merge: 5d2a8b1 31ee92f +Author: Martin Hurton +Date: Sun May 19 02:05:57 2013 -0700 + + Merge pull request #558 from hintjens/master + + stdint.h isn't available on all platforms + +commit 31ee92f2fda594be8be57652a4fd5f83720f0ee8 +Author: Pieter Hintjens +Date: Sun May 19 10:01:33 2013 +0100 + + stdint.h is not available on all platforms + + include/zmq.h | 16 +++++++++++++++- + src/mechanism.hpp | 3 +-- + 2 files changed, 16 insertions(+), 3 deletions(-) + +commit 73562112b831c61c95688d7ce3957ab2193b475d +Author: Pieter Hintjens +Date: Sat May 18 11:53:20 2013 +0100 + + Whitespace fixes + + src/plain_mechanism.cpp | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit fa5c0e18e304946cdad4fa747f52af141a561934 +Author: Pieter Hintjens +Date: Sat May 18 11:53:10 2013 +0100 + + Trivial fix to man page + + doc/zmq_curve.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d2a8b18e5fabe748b7dc3a00ef5420a6915dc27 +Merge: 342e576 f06abca +Author: Martin Hurton +Date: Fri May 17 09:46:53 2013 -0700 + + Merge pull request #557 from hintjens/master + + Added as_server to options + +commit f06abca04683d0e50e298cb5617b5afdbed562ee +Author: Pieter Hintjens +Date: Fri May 17 17:26:54 2013 +0100 + + Disable failing test for now + + tests/test_security.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f909b9c7222a8265cfeb8538900add46abd0f2f7 +Author: Pieter Hintjens +Date: Fri May 17 17:46:30 2013 +0200 + + plain_mechanism now uses options.as_server + - we need to switch to PLAIN according to options.mechanism + - we need to catch case when both peers are as-server (or neither is) + - and to use username/password from options, for client + + src/ipc_connecter.cpp | 2 +- + src/ipc_listener.cpp | 2 +- + src/options.cpp | 10 ++-- + src/options.hpp | 3 +- + src/plain_mechanism.cpp | 123 +++++++++++++++++++++-------------------------- + src/plain_mechanism.hpp | 2 +- + src/stream_engine.cpp | 10 ++-- + src/stream_engine.hpp | 4 +- + src/tcp_connecter.cpp | 2 +- + src/tcp_listener.cpp | 2 +- + tests/test_security.cpp | 84 +++++++++++++++++++++++++------- + 11 files changed, 140 insertions(+), 104 deletions(-) + +commit da1e9a178a0651431d20ec440b5a366ea7153ba4 +Author: Pieter Hintjens +Date: Thu May 16 20:29:55 2013 +0200 + + Cleaned up test pingpong code + + tests/testutil.hpp | 48 ++++++++++++++++++++++++++---------------------- + 1 file changed, 26 insertions(+), 22 deletions(-) + +commit 342e576ec83653a51fb788cf68aec095ed1794f5 +Merge: fbcbb06 182a224 +Author: Pieter Hintjens +Date: Fri May 17 09:20:16 2013 -0700 + + Merge pull request #556 from hurtonm/master + + Use socket options to select security mechanism + +commit 182a224bb0607c59a5951034e994fdaf72a96450 +Author: Martin Hurton +Date: Fri May 17 15:49:26 2013 +0200 + + Use socket options to select security mechanism + + src/plain_mechanism.cpp | 11 +++++------ + src/stream_engine.cpp | 8 ++++++-- + 2 files changed, 11 insertions(+), 8 deletions(-) + +commit fbcbb06b466865a87264a2b7263d41ce57200dbf +Merge: 593010f e1f797b +Author: Pieter Hintjens +Date: Wed May 15 08:56:06 2013 -0700 + + Merge pull request #555 from hintjens/master + + Added options for PLAIN security + +commit e1f797b0482d7887bd44238bdec28194b0c83628 +Author: Pieter Hintjens +Date: Wed May 15 17:54:03 2013 +0200 + + Added configuration for PLAIN security + + * ZMQ_PLAIN_SERVER, ZMQ_PLAIN_USERNAME, ZMQ_PLAIN_PASSWORD options + * Man page changes to zmq_setsockopt and zmq_getsockopt + * Man pages for ZMQ_NULL, ZMQ_PLAIN, and ZMQ_CURVE + * Test program test_security + + .gitignore | 1 + + doc/Makefile.am | 5 +- + doc/zmq.txt | 17 ++ + doc/zmq_curve.txt | 40 +++ + doc/zmq_getsockopt.txt | 58 ++++- + doc/zmq_null.txt | 27 ++ + doc/zmq_plain.txt | 37 +++ + doc/zmq_setsockopt.txt | 76 +++++- + include/zmq.h | 12 + + src/options.cpp | 631 ++++++++++++++++++++++++----------------------- + src/options.hpp | 9 +- + src/zmq.cpp | 4 +- + tests/Makefile.am | 2 + + tests/test_security.cpp | 117 +++++++++ + 14 files changed, 710 insertions(+), 326 deletions(-) + +commit 8ea779c8f72e72ee1a62a5703d32ddc79972761a +Author: Pieter Hintjens +Date: Wed May 15 14:11:15 2013 +0200 + + Fixed sizeof usage in man pages + + doc/zmq_msg_recv.txt | 2 +- + doc/zmq_recvmsg.txt | 2 +- + doc/zmq_setsockopt.txt | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 593010fbeb965a1b945d16c7e887c8b0065b2499 +Merge: 131b0a7 4eecda8 +Author: Pieter Hintjens +Date: Tue May 14 14:02:52 2013 -0700 + + Merge pull request #554 from hurtonm/master + + Implement ZMTP/3.0 PLAIN mechanism + +commit 4eecda8af371b8c6afd43d499c86ae79aa788a05 +Author: Martin Hurton +Date: Tue May 14 10:41:37 2013 +0200 + + Implement ZMTP/3.0 PLAIN mechanism + + This implements protocol handshake. + We still need to design and implement 1) API changes so a user + can set username and password, and 2) a mechanism for engine + to authenticate users. + + src/Makefile.am | 2 + + src/ipc_connecter.cpp | 3 +- + src/ipc_listener.cpp | 3 +- + src/plain_mechanism.cpp | 359 +++++++++++++++++++++++++++++++++++++++++++++++ + src/plain_mechanism.hpp | 74 ++++++++++ + src/stream_engine.cpp | 15 +- + src/stream_engine.hpp | 6 +- + src/tcp_connecter.cpp | 3 +- + src/tcp_listener.cpp | 3 +- + 9 files changed, 460 insertions(+), 8 deletions(-) + +commit d47295db708cb19a46070bc5f88d76d117abc339 +Author: Martin Hurton +Date: Mon May 13 22:34:27 2013 +0200 + + Abstract security mechanism + + src/Makefile.am | 4 ++ + src/mechanism.cpp | 73 +++++++++++++++++++ + src/mechanism.hpp | 73 +++++++++++++++++++ + src/null_mechanism.cpp | 152 +++++++++++++++++++++++++++++++++++++++ + src/null_mechanism.hpp | 51 +++++++++++++ + src/stream_engine.cpp | 185 ++++++++++++------------------------------------ + src/stream_engine.hpp | 11 +-- + 7 files changed, 406 insertions(+), 143 deletions(-) + +commit 131b0a7148eaf7abda8a234aa60028136b178c74 +Merge: 3ef3b94 e918fd4 +Author: Ian Barber +Date: Wed May 8 11:51:02 2013 -0700 + + Merge pull request #553 from hintjens/master + + Some changes to building and packaging + +commit e918fd4d694c795e32327bf6383b3d4b9c97bb17 +Author: Pieter Hintjens +Date: Tue May 7 14:47:07 2013 +0200 + + Use correct libsodium call for detection + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ff268b7c8a364a29cfb7e90dd943bef46502fe50 +Author: Pieter Hintjens +Date: Tue May 7 14:44:55 2013 +0200 + + Fixed packaging for Windows - was missing errno sources + + builds/msvc/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fa346fddd39369fe93478ecf5ac87f54ec4adb72 +Author: Pieter Hintjens +Date: Sat Apr 27 17:08:32 2013 +0200 + + Added configure check for libsodium + + configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 3ef3b9405c9994533eba9dd39be2b9f85cc7cdd8 +Merge: df01235 a7032e9 +Author: Pieter Hintjens +Date: Sun Apr 28 09:37:23 2013 -0700 + + Merge pull request #552 from hurtonm/master + + Implement ZMTP/3.0 NULL mechanism + +commit a7032e9ca8a75fea4c599c51dd9fce5e9ca7c9f3 +Author: Martin Hurton +Date: Sun Apr 28 10:40:52 2013 +0200 + + Update test_raw_sock to work with ZMTP/3.0 + + tests/test_raw_sock.cpp | 57 ++++++++++++++++++++++++++++++++++------------- + 1 file changed, 41 insertions(+), 16 deletions(-) + +commit cd4d8bb15a18831e1f4d45f2c5bee11d0c30b436 +Author: Martin Hurton +Date: Sun Apr 28 10:15:25 2013 +0200 + + Implement ZMTP/3.0 NULL mechanism + + src/stream_engine.cpp | 203 +++++++++++++++++++++++++++++++++++++++++++++++-- + src/stream_engine.hpp | 33 ++++++-- + 2 files changed, 224 insertions(+), 12 deletions(-) + +commit df012358712d4ec150a264edd0d80d4c9339cb9d +Merge: 522765b cb2ee7a +Author: Ian Barber +Date: Sat Apr 27 06:27:24 2013 -0700 + + Merge pull request #551 from hintjens/master + + zmq_msg_close clarification in man pages + +commit cb2ee7a5c21d50289ffc82a5417c6e39999e25e7 +Author: Pieter Hintjens +Date: Sat Apr 27 14:52:19 2013 +0200 + + Fixed up test_iov case + + .gitignore | 1 + + tests/Makefile.am | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 7e129a405ce42724df42cfbd2102e5938b3595cd +Author: Pieter Hintjens +Date: Sat Apr 27 12:48:29 2013 +0200 + + Clarified zmq_msg_close not needed after zmq_msg_send + + doc/zmq_msg_close.txt | 3 ++- + doc/zmq_msg_send.txt | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 522765be1ee7a32e687a3777c969a7a310fe1d09 +Merge: 0bf5a31 56ead84 +Author: Pieter Hintjens +Date: Thu Apr 25 14:28:11 2013 -0700 + + Merge pull request #550 from JonDyte/iovec + + Experimental function zmq_recviov doesnt work correctly in a couple of c... + +commit 56ead8449092ef2f6ea056f1d070dd7c73af29c5 +Author: Jon Dyte +Date: Thu Apr 25 21:58:26 2013 +0100 + + Experimental function zmq_recviov doesnt work correctly in a couple of cases + 1) VSM - you cannot hand out the 'data' address as it was not allocated on the heap + 2) for other messages the 'data' address cannot be handed out either, as it not the address + originally returned by malloc and hence cannot be passed to 'free'. + see msg.cpp + u.lmsg.content = (content_t*) malloc (sizeof (content_t) + size_); + .... + u.lmsg.content->data = u.lmsg.content + 1; + + So the function is changed to always malloc a data buffer and copy the data into it. + There is a possible optimisation using memmove for the non-VSM case but that is not done yet. + + src/zmq.cpp | 23 +++++------ + tests/Makefile.am | 3 +- + tests/test_iov.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 125 insertions(+), 12 deletions(-) + +commit 0bf5a31494604f6d1769b458bf410a2fdd0425c1 +Merge: 9703dd8 b5e5e10 +Author: Martin Hurton +Date: Tue Apr 23 17:20:04 2013 -0700 + + Merge pull request #549 from methodmissing/sigpipe-declare-err + + Fix return code redeclaration for platforms with SO_NOSIGPIPE + +commit b5e5e101263d6ab7ccb14eaa3944e9a4a3aab3e1 +Author: Lourens Naudé +Date: Tue Apr 23 22:58:28 2013 +0100 + + Fix return code redeclaration for platforms with SO_NOSIGPIPE + + src/stream_engine.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9703dd806a4bf70377edce9c6916109efd9c1df7 +Merge: 0880d5b 710f38f +Author: Ian Barber +Date: Tue Apr 23 05:28:25 2013 -0700 + + Merge pull request #548 from hintjens/master + + Fixed issue LIBZMQ-526 + +commit 710f38f1cca6e2fc4d886541073325c09e074c33 +Author: Pieter Hintjens +Date: Mon Apr 22 15:12:53 2013 +0200 + + Fixed syntax error + + src/tcp_connecter.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f4dbccd4fb230c6f911c518619cf97b84fa20dbb +Author: Pieter Hintjens +Date: Mon Apr 22 14:50:56 2013 +0200 + + Fix for LIBZMQ-526 + + src/tcp_connecter.cpp | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) + +commit 0880d5b8ed976305e98a4748af2f1c7926dedf46 +Merge: d0c58d2 f0cf409 +Author: Martin Hurton +Date: Thu Apr 18 08:30:50 2013 -0700 + + Merge pull request #547 from hintjens/master + + Fixed issue LIBZMQ-525 + +commit f0cf4095b5055eb41e9cd8f841542944ddf7e771 +Author: Pieter Hintjens +Date: Thu Apr 18 17:23:57 2013 +0200 + + Fixed issue #525 - multipart upstreaming from xsub to xpub + + src/xpub.cpp | 36 +++++++++++++++++++++--------------- + src/xpub.hpp | 4 ++-- + src/xsub.cpp | 2 +- + 3 files changed, 24 insertions(+), 18 deletions(-) + +commit d0c58d24093264ace762b2a846b8996e21f9b507 +Merge: f4a07b3 9df7c70 +Author: Ian Barber +Date: Mon Apr 15 11:01:37 2013 -0700 + + Merge pull request #546 from hintjens/master + + Throughput perf test was borked, fixed it + +commit 9df7c70abad3b572b8201dca666a055bd3fadf57 +Author: Pieter Hintjens +Date: Mon Apr 15 17:21:58 2013 +0200 + + Cleaned up copyright statements in perftest tools + + perf/inproc_lat.cpp | 4 +--- + perf/local_lat.cpp | 4 +--- + perf/remote_lat.cpp | 4 +--- + 3 files changed, 3 insertions(+), 9 deletions(-) + +commit c980820d29d483da05e203858bd1a38b718f334f +Author: Pieter Hintjens +Date: Mon Apr 15 17:18:03 2013 +0200 + + I'm reverting the various changes to the throughput test programs since as far + as I can see, these didn't work any more. At the very least, the command line + API was broken and forced the user to enter new, exotic arguments. Patches + should not break existing APIs. But also, the internals of these programs had + become weird. + + If we want to build more complex performance tests, that's fine, but we should + make new programs, not break the old ones. We need minimal, safe performance + tests in 0MQ. + + Also, the code was quite horrid. So it's gone. If anyone wants to bring it back + please make the code neat, and build new APIs instead of breaking the old ones. + + Cheers + Pieter + + perf/local_thr.cpp | 283 +++++++---------------------------------- + perf/remote_thr.cpp | 348 ++++++--------------------------------------------- + 2 files changed, 86 insertions(+), 545 deletions(-) + +commit 67e02ca8bc78208befd10c6b45bba50e2d6e93ed +Author: Pieter Hintjens +Date: Thu Apr 11 18:53:02 2013 +0200 + + Use of named authors on man pages is no longer a good idea since it puts off + contributors and doesn't reflect the real process. I've taken out all named + authors and referred to the contribution policy. Hopefully this will improve + the contributions to the man pages. + + doc/zmq.txt | 4 ++-- + doc/zmq_bind.txt | 4 ++-- + doc/zmq_close.txt | 4 ++-- + doc/zmq_connect.txt | 4 ++-- + doc/zmq_ctx_destroy.txt | 3 ++- + doc/zmq_ctx_get.txt | 3 ++- + doc/zmq_ctx_new.txt | 3 ++- + doc/zmq_ctx_set.txt | 3 ++- + doc/zmq_ctx_term.txt | 3 ++- + doc/zmq_disconnect.txt | 4 ++-- + doc/zmq_errno.txt | 4 ++-- + doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_init.txt | 4 ++-- + doc/zmq_inproc.txt | 4 ++-- + doc/zmq_ipc.txt | 8 ++------ + doc/zmq_msg_close.txt | 4 ++-- + doc/zmq_msg_copy.txt | 4 ++-- + doc/zmq_msg_data.txt | 4 ++-- + doc/zmq_msg_get.txt | 4 ++-- + doc/zmq_msg_init.txt | 4 ++-- + doc/zmq_msg_init_data.txt | 4 ++-- + doc/zmq_msg_init_size.txt | 4 ++-- + doc/zmq_msg_more.txt | 4 ++-- + doc/zmq_msg_move.txt | 4 ++-- + doc/zmq_msg_recv.txt | 5 ++--- + doc/zmq_msg_send.txt | 5 ++--- + doc/zmq_msg_set.txt | 3 ++- + doc/zmq_msg_size.txt | 4 ++-- + doc/zmq_pgm.txt | 5 +++-- + doc/zmq_poll.txt | 4 ++-- + doc/zmq_proxy.txt | 3 ++- + doc/zmq_recv.txt | 5 ++--- + doc/zmq_recvmsg.txt | 5 ++--- + doc/zmq_send.txt | 4 ++-- + doc/zmq_sendmsg.txt | 5 ++--- + doc/zmq_setsockopt.txt | 6 ++++-- + doc/zmq_socket.txt | 6 ++++-- + doc/zmq_socket_monitor.txt | 4 ++-- + doc/zmq_strerror.txt | 5 +++-- + doc/zmq_tcp.txt | 4 ++-- + doc/zmq_term.txt | 4 ++-- + doc/zmq_unbind.txt | 4 ++-- + doc/zmq_version.txt | 5 +++-- + 43 files changed, 93 insertions(+), 88 deletions(-) + +commit f4a07b3951979a3cb3dc00f499211dfea4e29bc6 +Merge: c5721f9 e52c436 +Author: Pieter Hintjens +Date: Sun Apr 14 14:27:32 2013 -0700 + + Merge pull request #545 from hurtonm/master + + Interoperate with higher versions of ZMTP protocol + +commit e52c43625281f077dda2d584a16692150fd44486 +Author: Martin Hurton +Date: Sun Apr 14 22:47:17 2013 +0200 + + Interoperate with higher versions of ZMTP protocol + + src/stream_engine.cpp | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit c5721f99883d27bd52bf85092df8ff2cca93f3b5 +Merge: d2b5f1f d079190 +Author: Pieter Hintjens +Date: Sat Apr 13 02:55:02 2013 -0700 + + Merge pull request #544 from steve-o/libzmq-446 + + [#LIBZMQ-446] Silence error on setting PGM_TOS on REL 4. + +commit d079190efa9de7e4a9eb61b005b18a0b54671d72 +Author: Steven McCoy +Date: Fri Apr 12 23:55:04 2013 -0400 + + [#LIBZMQ-446] Silence error on setting PGM_TOS due to some platforms raising an error at runtime. Noted are RHEL 4. + + src/pgm_socket.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit d2b5f1f49ecc78635c8239c6e066f878fb91624a +Merge: a3713cb a432ea1 +Author: Pieter Hintjens +Date: Fri Apr 12 13:22:41 2013 -0700 + + Merge pull request #543 from steve-o/vc110_fix + + MSVC local_thr & remote_thr dependency fix + +commit a432ea14d220eb24a494571994b2b8591cf6b296 +Author: Steven McCoy +Date: Fri Apr 12 11:59:24 2013 -0400 + + Add vc80 project dependency on platform.hpp for local & remote throughput tests. + + builds/msvc/c_local_thr/c_local_thr.vcproj | 2 ++ + builds/msvc/c_remote_thr/c_remote_thr.vcproj | 2 ++ + 2 files changed, 4 insertions(+) + +commit cd31f67a806839e68ce407b417cd389fe9e961a9 +Author: Steven McCoy +Date: Fri Apr 12 11:55:27 2013 -0400 + + Add platform.hpp as project dependency to vc100 and vc110 projects for local & remote throughput tests. + + builds/msvc/c_local_thr/c_local_thr.vcxproj | 20 ++++++++++++++++++++ + builds/msvc/c_local_thr/c_local_thr11.vcxproj | 22 +++++++++++++++++++++- + builds/msvc/c_remote_thr/c_remote_thr.vcxproj | 20 ++++++++++++++++++++ + builds/msvc/c_remote_thr/c_remote_thr11.vcxproj | 22 +++++++++++++++++++++- + 4 files changed, 82 insertions(+), 2 deletions(-) + +commit a3713cb750b27de7e046ebe3db2f7891a179cfcc +Merge: fd42be9 9d79ac2 +Author: Pieter Hintjens +Date: Fri Apr 12 07:02:04 2013 -0700 + + Merge pull request #542 from hurtonm/master + + Use state functions for message flow + +commit 9d79ac283061c1531c1ab2878a2765afdaba9d77 +Author: Martin Hurton +Date: Fri Apr 12 11:59:49 2013 +0200 + + Use state functions for message flow + + The patch makes the code somewhat simpler and prepares it for + more complex initialization handshakes. + + src/stream_engine.cpp | 100 +++++++++++++++++++++++++------------------------ + src/stream_engine.hpp | 24 +++++------- + 2 files changed, 62 insertions(+), 62 deletions(-) + +commit fd42be9dbab047d0ed35572ead3be755177a60d2 +Merge: 91f1e13 7942db7 +Author: Pieter Hintjens +Date: Thu Apr 11 09:57:54 2013 -0700 + + Merge pull request #541 from hurtonm/rework_message_flow + + Refactor code so that messages go through engines + +commit 7942db7606c76f71b77863f8f883047ec69ffc5f +Author: Martin Hurton +Date: Mon Mar 18 02:00:00 2013 +0100 + + Refactor code so that messages go through engines + + src/Makefile.am | 2 - + src/decoder.hpp | 94 +++++------------- + src/encoder.hpp | 62 ++++++------ + src/i_decoder.hpp | 15 +-- + src/i_encoder.hpp | 15 ++- + src/i_msg_sink.hpp | 43 --------- + src/i_msg_source.hpp | 44 --------- + src/pgm_receiver.cpp | 137 ++++++++++++++------------ + src/pgm_receiver.hpp | 11 ++- + src/pgm_sender.cpp | 34 +++++-- + src/pgm_sender.hpp | 8 ++ + src/raw_decoder.cpp | 66 +++---------- + src/raw_decoder.hpp | 25 +++-- + src/raw_encoder.cpp | 53 +--------- + src/raw_encoder.hpp | 10 +- + src/req.cpp | 10 +- + src/req.hpp | 1 - + src/session_base.cpp | 30 ------ + src/session_base.hpp | 25 ++--- + src/stream_engine.cpp | 258 +++++++++++++++++++++++++++++++------------------ + src/stream_engine.hpp | 37 +++++-- + src/v1_decoder.cpp | 73 ++++++-------- + src/v1_decoder.hpp | 12 +-- + src/v1_encoder.cpp | 51 ++-------- + src/v1_encoder.hpp | 10 +- + src/v2_decoder.cpp | 82 ++++++---------- + src/v2_decoder.hpp | 15 ++- + src/v2_encoder.cpp | 53 ++-------- + src/v2_encoder.hpp | 13 +-- + src/wire.hpp | 8 +- + 30 files changed, 527 insertions(+), 770 deletions(-) + +commit 91f1e13125497683f9c8b604ff70617c540a3946 +Merge: c396144 6d19e40 +Author: Ian Barber +Date: Thu Apr 11 03:10:38 2013 -0700 + + Merge pull request #540 from hintjens/master + + Small clarification about connect and ROUTER + +commit 6d19e400f1c824696d402591d12a8bed13df00f2 +Author: Pieter Hintjens +Date: Thu Apr 11 09:48:41 2013 +0200 + + Added clarification about connect on ROUTER + + doc/zmq_connect.txt | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit c3961442163a57c1a6bf17d2ef2a1b2f1c0f4f27 +Merge: 106d962 2aec837 +Author: Pieter Hintjens +Date: Mon Apr 8 06:33:29 2013 -0700 + + Merge pull request #539 from TTimo/master + + Adds a needed Windows system library dependency + +commit 2aec837218c4b9d2cdea7f33005ce4c3ad57f6c5 +Author: Timothee "TTimo" Besset +Date: Sun Apr 7 12:44:48 2013 -0500 + + InitializeSecurityDescriptor needs Advapi32.lib + + builds/msvc/libzmq/libzmq11.vcxproj | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 106d962311386cba98e708b3c57b2265405c5367 +Author: Timothee "TTimo" Besset +Date: Sat Apr 6 19:39:06 2013 -0500 + + restore fixed MSVC 2010 projects, fork new MSVC 2012 projects + + builds/msvc/c_local_lat/c_local_lat.vcxproj | 6 +- + builds/msvc/c_local_lat/c_local_lat11.vcxproj | 91 ++++++ + builds/msvc/c_local_thr/c_local_thr.vcxproj | 6 +- + builds/msvc/c_local_thr/c_local_thr11.vcxproj | 91 ++++++ + builds/msvc/c_remote_lat/c_remote_lat.vcxproj | 6 +- + builds/msvc/c_remote_lat/c_remote_lat11.vcxproj | 91 ++++++ + builds/msvc/c_remote_thr/c_remote_thr.vcxproj | 6 +- + builds/msvc/c_remote_thr/c_remote_thr11.vcxproj | 91 ++++++ + builds/msvc/inproc_lat/inproc_lat.vcxproj | 6 +- + builds/msvc/inproc_lat/inproc_lat11.vcxproj | 110 +++++++ + builds/msvc/inproc_thr/inproc_thr.vcxproj | 6 +- + builds/msvc/inproc_thr/inproc_thr11.vcxproj | 110 +++++++ + builds/msvc/libzmq/libzmq.vcxproj | 10 +- + builds/msvc/libzmq/libzmq11.vcxproj | 346 +++++++++++++++++++++++ + builds/msvc/msvc11.sln | 150 ++++++++++ + 15 files changed, 1087 insertions(+), 39 deletions(-) + +commit b5ace90e8ea8ba0b6df0c762a11bdee3b8c2a13a +Merge: 1e7db60 44df35c +Author: Pieter Hintjens +Date: Mon Apr 1 03:09:42 2013 -0700 + + Merge pull request #538 from TTimo/master + + MSVC fixes + +commit 44df35cb1e5bf7f64a01a48bf19e37112c071ad6 +Author: Timothee "TTimo" Besset +Date: Sun Mar 31 18:18:05 2013 -0500 + + Use Multithreaded DLL Runtime, Debug/Release accordingly - need consistency for the czmq configurations + + builds/msvc/libzmq/libzmq.vcxproj | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 5973b4c665c4a02d4bd5fce2370bd5cfaa821266 +Author: Timothee "TTimo" Besset +Date: Sun Mar 31 09:10:56 2013 -0500 + + Windows friendly replacement for gettimeofday + + perf/local_thr.cpp | 44 ++++++++++++++++++++++++++++++++++++++------ + perf/remote_thr.cpp | 42 +++++++++++++++++++++++++++++++++++------- + 2 files changed, 73 insertions(+), 13 deletions(-) + +commit 574fe35b3261edc50956d44d09a1413597af061d +Author: Timothee "TTimo" Besset +Date: Sun Mar 31 09:09:50 2013 -0500 + + Fix MSVC project files. + + builds/msvc/c_local_lat/c_local_lat.vcxproj | 4 ++++ + builds/msvc/c_local_thr/c_local_thr.vcxproj | 4 ++++ + builds/msvc/c_remote_lat/c_remote_lat.vcxproj | 4 ++++ + builds/msvc/c_remote_thr/c_remote_thr.vcxproj | 4 ++++ + builds/msvc/inproc_lat/inproc_lat.vcxproj | 6 ++++- + builds/msvc/inproc_thr/inproc_thr.vcxproj | 6 ++++- + builds/msvc/libzmq/libzmq.vcxproj | 12 ++++++++-- + builds/msvc/libzmq/libzmq.vcxproj.filters | 12 +++++----- + builds/msvc/msvc10.sln | 32 +++++++++++++++++++++++-- + 9 files changed, 72 insertions(+), 12 deletions(-) + +commit 1e7db60e9ad5a17faa6d307105ceff5aec4974fc +Merge: 01fef41 f8e7d46 +Author: Pieter Hintjens +Date: Sun Mar 24 16:08:45 2013 -0700 + + Merge pull request #537 from TTimo/master + + mingw32 fixes + +commit f8e7d462a6c988c0a06c31ae14297fafe3bfba8a +Author: Timothee Besset +Date: Sun Mar 24 23:32:21 2013 +0100 + + mingw32 fixes + + builds/mingw32/Makefile.mingw32 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 01fef415753d00acca7200b60835fe4027adcdf6 +Merge: 09a00de 257debf +Author: Martin Hurton +Date: Sun Mar 24 07:49:25 2013 -0700 + + Merge pull request #536 from hintjens/master + + Fixed test_last_endpoint (#80) + +commit 257debf65903783fc54792ed90ee6439cda87cff +Author: Pieter Hintjens +Date: Sun Mar 24 15:12:34 2013 +0100 + + Removed IPC endpoint from test; not portable, and fragile (#80) + + tests/test_last_endpoint.cpp | 1 - + 1 file changed, 1 deletion(-) + +commit 09a00de80384826bb1fb0d50dcae2417595ee27a +Merge: 5ba7445 8c96deb +Author: Ian Barber +Date: Thu Mar 21 05:07:46 2013 -0700 + + Merge pull request #534 from hintjens/master + + Reverted cleanups of copyrghts + +commit 5ba7445b7aac823688f83f06526e8a5a4e7c0020 +Merge: 39214b3 3286bf5 +Author: Pieter Hintjens +Date: Wed Mar 20 10:34:48 2013 -0700 + + Merge pull request #535 from ken-tilera/master + + Optimize atomics implementaiton for the Tile architecture + +commit 3286bf5ab66c5ea00237af642967a25043581353 +Author: Ken Steele +Date: Wed Mar 20 12:54:38 2013 -0400 + + On the Tile architecture, use atomic instructions for atomic ptr and counter. + + For atomic_counter and atomic_ptr classes, detect the Tile architecture + using #if defined __tile__ matching ARM and Solaris and then use the + Tile atomic instructions. Without this change, the default Mutex + implementation is used, which is slower. + + AUTHORS | 1 + + src/atomic_counter.hpp | 10 ++++++++++ + src/atomic_ptr.hpp | 8 ++++++++ + 3 files changed, 19 insertions(+) + +commit 8c96deb900cde8759ade482ef6c660d7fc35a03c +Author: Pieter Hintjens +Date: Wed Mar 20 11:59:23 2013 +0100 + + Added corporate copyrights + + AUTHORS | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit 39214b3e40cca54c020368378e9fd8135f54f1eb +Merge: 3b132e3 03c2841 +Author: Pieter Hintjens +Date: Mon Mar 18 02:46:45 2013 -0700 + + Merge pull request #533 from mika-fischer/workaround-for-496 + + Work around for LIBZMQ-496 + +commit 03c28411d892da23ae1a17728a368e38b9a072ad +Author: Mika Fischer +Date: Tue Feb 19 11:01:13 2013 +0100 + + Work around for LIBZMQ-496 + + The problem is that other threads might still be in mailbox::send() when + it is destroyed. So as a workaround, we just acquire the mutex in the + destructor. Therefore the running send will finish before the mailbox is + destroyed. + + See also the fix for LIBZMQ-281 in zeromq2-x. + + Signed-off-by: Mika Fischer + + src/mailbox.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 3b132e337ee7c99db5d1dc3c1447de496b2f2f04 +Merge: 9ea20b8 8181840 +Author: Pieter Hintjens +Date: Mon Mar 18 01:05:38 2013 -0700 + + Merge pull request #532 from hurtonm/pgm_build_fix + + Update PGM with recent changes + +commit 81818401e83ac31e5746e7a4b6490468b99566f7 +Author: Martin Hurton +Date: Mon Mar 18 02:05:51 2013 +0100 + + Update PGM with recent changes + + src/pgm_receiver.cpp | 5 +++-- + src/pgm_receiver.hpp | 6 +++--- + src/pgm_sender.hpp | 4 ++-- + 3 files changed, 8 insertions(+), 7 deletions(-) + +commit 16f8ea3e95f3e7897ed9d1a7536e7acccaaf54f0 +Author: Pieter Hintjens +Date: Sun Mar 17 11:30:49 2013 +0100 + + Clarified HWM=0 means infinite + + doc/zmq_getsockopt.txt | 6 ++++-- + doc/zmq_setsockopt.txt | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 9ea20b82cc7fffd233d4db854fed4013711ce639 +Merge: c7cb5ab c69e797 +Author: Pieter Hintjens +Date: Wed Mar 13 12:45:37 2013 -0700 + + Merge pull request #531 from murrekatt/master + + Fixed CMake building after encoder/decoder changes + +commit c69e79706e88d8946ea58b173ac041a214f9c780 +Author: Tommy Back +Date: Wed Mar 13 20:27:49 2013 +0100 + + Fix to building libzmq with CMake as sub-project (git submodule). + + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 601eedb7f3624e1e8c334ce396b64fff91b8a3e8 +Author: Tommy Back +Date: Wed Mar 13 20:10:00 2013 +0100 + + Updated CMake building to work after encoder/decoder changes. + + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c7cb5ab7c0c1d72fe54799cef4ac4f26fa224cc3 +Merge: 1810f10 f1738b9 +Author: Ian Barber +Date: Tue Mar 12 14:00:20 2013 -0700 + + Merge pull request #530 from hintjens/master + + Fixed copyrights in sources + +commit f1738b9b9219ffa78bb57fdedc703590abaf5ac2 +Author: Pieter Hintjens +Date: Tue Mar 12 17:04:51 2013 +0100 + + More copyright cleanups + + tests/test_connect_delay.cpp | 4 ++-- + tests/test_connect_resolve.cpp | 3 +-- + tests/test_ctx_options.cpp | 3 +-- + tests/test_disconnect_inproc.cpp | 19 +++++++++++++++++++ + tests/test_hwm.cpp | 4 +--- + tests/test_invalid_rep.cpp | 4 +--- + tests/test_last_endpoint.cpp | 4 +--- + tests/test_monitor.cpp | 4 +--- + tests/test_msg_flags.cpp | 4 +--- + tests/test_pair_inproc.cpp | 3 +-- + tests/test_pair_ipc.cpp | 3 +-- + tests/test_pair_tcp.cpp | 4 +--- + tests/test_raw_sock.cpp | 3 +-- + tests/test_reqrep_device.cpp | 4 +--- + tests/test_reqrep_inproc.cpp | 3 +-- + tests/test_reqrep_ipc.cpp | 3 +-- + tests/test_reqrep_tcp.cpp | 4 +--- + tests/test_router_mandatory.cpp | 3 +-- + tests/test_shutdown_stress.cpp | 4 +--- + tests/test_sub_forward.cpp | 4 +--- + tests/test_term_endpoint.cpp | 4 +--- + tests/test_timeo.cpp | 4 +--- + tests/testutil.hpp | 4 +--- + 23 files changed, 42 insertions(+), 57 deletions(-) + +commit 0e77d65f128251cd63dada27ce95849b3b815d29 +Author: Pieter Hintjens +Date: Tue Mar 12 16:15:54 2013 +0100 + + Removed pointless comment + + src/dealer.cpp | 6 ------ + src/router.cpp | 7 ------- + 2 files changed, 13 deletions(-) + +commit 8358d4e8328895456399f8c2ee8a0f273fa3f8dc +Author: Pieter Hintjens +Date: Tue Mar 12 16:11:19 2013 +0100 + + Renamed ZMQ_DELAY_ATTACH_ON_CONNECT_COULD_THIS_BE_ANY_LONGER to ZMQ_IMMEDIATE + + doc/zmq_setsockopt.txt | 15 +++++++++------ + include/zmq.h | 10 +++++----- + src/options.cpp | 10 +++++----- + src/options.hpp | 2 +- + src/session_base.cpp | 2 +- + src/socket_base.cpp | 4 ++-- + 6 files changed, 23 insertions(+), 20 deletions(-) + +commit 12c7db8c42ac04d3aaed6674ae43af91c39d29bf +Author: Pieter Hintjens +Date: Tue Mar 12 15:56:10 2013 +0100 + + Code name clean up + + src/stream_engine.cpp | 20 ++++++++++---------- + src/stream_engine.hpp | 21 ++++++++------------- + 2 files changed, 18 insertions(+), 23 deletions(-) + +commit d826c53b9b163e33952abb515718bb04526b8940 +Author: Pieter Hintjens +Date: Tue Mar 12 15:38:48 2013 +0100 + + Bumped ZMTP revision to 2 + + * Starting draft ZMTP/2.1 protocol (revision 2) + * Basis for adding security to the wire protocol + * Maintains backward compatibility + + src/stream_engine.cpp | 24 ++++++++++++------------ + src/stream_engine.hpp | 7 +++++++ + src/v2_protocol.hpp | 1 - + tests/test_raw_sock.cpp | 6 +++--- + 4 files changed, 22 insertions(+), 16 deletions(-) + +commit 785ef41f678399f2d1835492b3d593ca7b54a498 +Author: Pieter Hintjens +Date: Tue Mar 12 15:26:07 2013 +0100 + + Refactored codecs to match ZMTP version numbers + + src/Makefile.am | 10 +-- + src/decoder.cpp | 164 ----------------------------------------------- + src/decoder.hpp | 31 --------- + src/encoder.cpp | 99 ---------------------------- + src/encoder.hpp | 24 ------- + src/stream_engine.cpp | 55 ++++++++-------- + src/tcp_connecter.cpp | 2 +- + src/v1_decoder.cpp | 141 ++++++++++++++++++++-------------------- + src/v1_decoder.hpp | 21 ++---- + src/v1_encoder.cpp | 60 ++++++++--------- + src/v1_encoder.hpp | 15 ++--- + src/v1_protocol.hpp | 42 ------------ + src/v2_decoder.cpp | 160 +++++++++++++++++++++++++++++++++++++++++++++ + src/v2_decoder.hpp | 60 +++++++++++++++++ + src/v2_encoder.cpp | 100 +++++++++++++++++++++++++++++ + src/v2_encoder.hpp | 56 ++++++++++++++++ + src/v2_protocol.hpp | 39 +++++++++++ + src/xsub.cpp | 8 +-- + tests/test_raw_sock.cpp | 2 +- + 19 files changed, 570 insertions(+), 519 deletions(-) + +commit f0f16505e5c3468b9cc598abd797f0aa650447a6 +Author: Pieter Hintjens +Date: Tue Mar 12 13:17:00 2013 +0100 + + Removed corporate advertisements from source file headers + + Copyrights had become ads for Sustrik's corporate sponsors, going against the original + agreement to share copyrights with the community (that agreement was: one line stating + iMatix copyright + one reference to AUTHORS file). The proliferation of corporate ads + is also unfair to the many individual authors. I've removed ALL corporate title from + the source files so the copyright statements can now be centralized in AUTHORS and + source files can be properly updated on an annual basis. + + include/zmq.h | 5 +---- + include/zmq_utils.h | 3 +-- + src/address.cpp | 3 +-- + src/address.hpp | 3 +-- + src/array.hpp | 4 +--- + src/atomic_counter.hpp | 4 +--- + src/atomic_ptr.hpp | 4 +--- + src/blob.hpp | 3 +-- + src/clock.cpp | 3 +-- + src/clock.hpp | 3 +-- + src/command.hpp | 4 +--- + src/config.hpp | 4 +--- + src/ctx.cpp | 4 +--- + src/ctx.hpp | 4 +--- + src/dealer.cpp | 4 +--- + src/dealer.hpp | 3 +-- + src/decoder.cpp | 4 +--- + src/decoder.hpp | 4 +--- + src/devpoll.cpp | 4 +--- + src/devpoll.hpp | 4 +--- + src/dist.cpp | 4 +--- + src/dist.hpp | 3 +-- + src/encoder.cpp | 5 +---- + src/encoder.hpp | 4 +--- + src/epoll.cpp | 4 +--- + src/epoll.hpp | 4 +--- + src/err.cpp | 4 +--- + src/err.hpp | 4 +--- + src/fd.hpp | 3 +-- + src/fq.cpp | 5 +---- + src/fq.hpp | 4 +--- + src/i_decoder.hpp | 3 +-- + src/i_encoder.hpp | 3 +-- + src/i_engine.hpp | 4 +--- + src/i_msg_sink.hpp | 3 +-- + src/i_msg_source.hpp | 3 +-- + src/i_poll_events.hpp | 4 +--- + src/io_object.cpp | 4 +--- + src/io_object.hpp | 4 +--- + src/io_thread.cpp | 4 +--- + src/io_thread.hpp | 4 +--- + src/ip.cpp | 4 +--- + src/ip.hpp | 4 +--- + src/ipc_address.cpp | 3 +-- + src/ipc_address.hpp | 3 +-- + src/ipc_connecter.cpp | 3 +-- + src/ipc_connecter.hpp | 3 +-- + src/ipc_listener.cpp | 3 +-- + src/ipc_listener.hpp | 3 +-- + src/kqueue.cpp | 4 +--- + src/kqueue.hpp | 4 +--- + src/lb.cpp | 5 +---- + src/lb.hpp | 4 +--- + src/likely.hpp | 3 +-- + src/mailbox.cpp | 4 +--- + src/mailbox.hpp | 4 +--- + src/msg.cpp | 6 ++---- + src/msg.hpp | 5 +---- + src/mtrie.cpp | 4 +--- + src/mtrie.hpp | 4 +--- + src/mutex.hpp | 4 +--- + src/object.cpp | 4 +--- + src/object.hpp | 4 +--- + src/options.cpp | 5 +---- + src/options.hpp | 5 +---- + src/own.cpp | 3 +-- + src/own.hpp | 3 +-- + src/pair.cpp | 4 +--- + src/pair.hpp | 4 +--- + src/pgm_receiver.cpp | 5 +---- + src/pgm_receiver.hpp | 5 +---- + src/pgm_sender.cpp | 5 +---- + src/pgm_sender.hpp | 5 +---- + src/pgm_socket.cpp | 5 +---- + src/pgm_socket.hpp | 5 +---- + src/pipe.cpp | 5 +---- + src/pipe.hpp | 5 +---- + src/poll.cpp | 4 +--- + src/poll.hpp | 4 +--- + src/poller.hpp | 4 +--- + src/poller_base.cpp | 3 +-- + src/poller_base.hpp | 3 +-- + src/precompiled.cpp | 3 +-- + src/precompiled.hpp | 3 +-- + src/proxy.cpp | 3 +-- + src/proxy.hpp | 3 +-- + src/pub.cpp | 4 +--- + src/pub.hpp | 4 +--- + src/pull.cpp | 4 +--- + src/pull.hpp | 4 +--- + src/push.cpp | 4 +--- + src/push.hpp | 4 +--- + src/random.cpp | 3 +-- + src/random.hpp | 3 +-- + src/raw_decoder.cpp | 4 +--- + src/raw_decoder.hpp | 4 +--- + src/raw_encoder.cpp | 5 +---- + src/raw_encoder.hpp | 4 +--- + src/reaper.cpp | 3 +-- + src/reaper.hpp | 3 +-- + src/rep.cpp | 4 +--- + src/rep.hpp | 4 +--- + src/req.cpp | 5 +---- + src/req.hpp | 5 +---- + src/router.cpp | 5 +---- + src/router.hpp | 5 +---- + src/select.cpp | 4 +--- + src/select.hpp | 4 +--- + src/session_base.cpp | 5 +---- + src/session_base.hpp | 5 +---- + src/signaler.cpp | 3 +-- + src/signaler.hpp | 3 +-- + src/socket_base.cpp | 5 +---- + src/socket_base.hpp | 5 +---- + src/stdint.hpp | 3 +-- + src/stream_engine.cpp | 4 +--- + src/stream_engine.hpp | 4 +--- + src/sub.cpp | 4 +--- + src/sub.hpp | 4 +--- + src/tcp.cpp | 4 +--- + src/tcp.hpp | 4 +--- + src/tcp_address.cpp | 4 +--- + src/tcp_address.hpp | 4 +--- + src/tcp_connecter.cpp | 4 +--- + src/tcp_connecter.hpp | 4 +--- + src/tcp_listener.cpp | 4 +--- + src/tcp_listener.hpp | 4 +--- + src/thread.cpp | 4 +--- + src/thread.hpp | 4 +--- + src/trie.cpp | 5 +---- + src/trie.hpp | 5 +---- + src/v1_decoder.cpp | 4 +--- + src/v1_decoder.hpp | 4 +--- + src/v1_encoder.cpp | 5 +---- + src/v1_encoder.hpp | 4 +--- + src/v1_protocol.hpp | 3 +-- + src/windows.hpp | 4 +--- + src/wire.hpp | 3 +-- + src/xpub.cpp | 4 +--- + src/xpub.hpp | 3 +-- + src/xsub.cpp | 4 +--- + src/xsub.hpp | 3 +-- + src/ypipe.hpp | 4 +--- + src/yqueue.hpp | 4 +--- + src/zmq.cpp | 4 +--- + src/zmq_utils.cpp | 4 +--- + 146 files changed, 147 insertions(+), 427 deletions(-) + +commit cb69986d743df388944d7dc5ea4bb12f7c49d2ed +Author: Pieter Hintjens +Date: Fri Mar 8 14:22:58 2013 +0100 + + Comment change + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 898ad19851ba81b4175696028bd5427a38c86614 +Author: Pieter Hintjens +Date: Tue Feb 26 12:43:52 2013 +0100 + + It's its not it's + + doc/zmq_pgm.txt | 4 ++-- + doc/zmq_socket_monitor.txt | 22 +++++++++++----------- + 2 files changed, 13 insertions(+), 13 deletions(-) + +commit 1810f1025f633a7d3c6edafb4ac4650b7c06de69 +Merge: ba2dda4 d78d497 +Author: Pieter Hintjens +Date: Fri Mar 8 10:03:19 2013 -0800 + + Merge pull request #529 from guidog/master + + Adapted zmq_socket_monitor man page to new API. + +commit d78d4972ae3eed299ce9245a734c95b94c161af1 +Author: Guido Goldstein +Date: Fri Mar 8 16:58:04 2013 +0100 + + Adapted man page to API. + + doc/zmq_socket_monitor.txt | 229 +++++++++++++++++++------------------------- + 1 file changed, 100 insertions(+), 129 deletions(-) + +commit ba2dda407d73d009851cb19f7fa831d6576f4a76 +Merge: 656258c b0b8ab2 +Author: Pieter Hintjens +Date: Fri Mar 8 05:21:25 2013 -0800 + + Merge pull request #528 from guidog/master + + Changed message structure for event notifications + +commit b0b8ab27c5a3734aa2e9103a61e1a850e14d7dd3 +Author: Guido Goldstein +Date: Fri Mar 8 13:48:18 2013 +0100 + + Changed message structure for event notifications. + + include/zmq.h | 6 ++-- + src/socket_base.cpp | 67 +++++++++++++++-------------------------- + src/socket_base.hpp | 5 +--- + src/zmq.cpp | 10 ------- + tests/test_monitor.cpp | 78 ++++++++++++++++++++++++++---------------------- + 5 files changed, 70 insertions(+), 96 deletions(-) + +commit 656258c1d4ec3f3d71f4ea85783d95576aff2bf5 +Merge: 068909f 21eeb03 +Author: Pieter Hintjens +Date: Fri Mar 8 02:24:46 2013 -0800 + + Merge pull request #527 from guidog/master + + Simplified zmq_event_t structure. + +commit 21eeb03b6cab29e5f4cb60b195272314f6375678 +Author: Guido Goldstein +Date: Fri Mar 8 10:34:25 2013 +0100 + + Simplified the zmq_event_t structure for easier access and better usability towards language bindings. + + include/zmq.h | 48 ++++---------------------------------- + src/socket_base.cpp | 60 ++++++++++++++++++++++++------------------------ + src/zmq.cpp | 37 +++-------------------------- + tests/test_monitor.cpp | 39 ++++++++++++------------------- + 4 files changed, 52 insertions(+), 132 deletions(-) + +commit 068909f4445381f597337bd0f51786f45ba0df35 +Merge: be11608 7e37cc8 +Author: Ian Barber +Date: Tue Mar 5 08:00:59 2013 -0800 + + Merge pull request #526 from breese/master + + Fixed Linux compilation problem + +commit 7e37cc8ed471ef06554ea88e20dbf5315dcc2bb9 +Author: Bjorn Reese +Date: Tue Mar 5 11:52:47 2013 +0100 + + Linux build fails due to undeclared variable + + perf/remote_thr.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit be1160832e91f757a65ff37c3450e4f26ce3daff +Merge: f420f0a 679869d +Author: Pieter Hintjens +Date: Sun Mar 3 01:14:00 2013 -0800 + + Merge pull request #525 from pijyoi/master + + remote_thr.cpp: port pthreads usage to win32 api + +commit 679869d98144adf70e738fa269f4d4c89e2f08a3 +Author: KIU Shueng Chuan +Date: Sun Mar 3 15:39:44 2013 +0800 + + add simple Makefile to build with mingw32 + + builds/mingw32/Makefile.mingw32 | 31 +++++++++++++++++++++++++++++++ + builds/mingw32/platform.hpp | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 63 insertions(+) + +commit 3176509e6029ec269e340d266b99059f97b5c065 +Author: KIU Shueng Chuan +Date: Sun Mar 3 15:28:00 2013 +0800 + + include source directory version of zmq.h and zmq_utils.h + + this follows what {local,remote}_lat.cpp and inproc_{thr,lat}.cpp do. + + perf/local_thr.cpp | 4 ++-- + perf/remote_thr.cpp | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 402f9fd243dfd150e7dc567ce6e045d3a7d14b50 +Author: KIU Shueng Chuan +Date: Sun Mar 3 15:18:54 2013 +0800 + + remote_thr.cpp: port pthreads usage to win32 api + + perf/remote_thr.cpp | 74 ++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 49 insertions(+), 25 deletions(-) + +commit f420f0aff78c1734d335f9304bbca658ba30d7ec +Merge: 22d9d95 1e52a45 +Author: Ian Barber +Date: Thu Feb 28 14:14:31 2013 -0800 + + Merge pull request #524 from dlittleton/master + + Windows: Fix rounding error in now_us. [Jira LIBZMQ-514] + +commit 1e52a451d68bd274635d7338f114ff708bc0294f +Author: Duane Littleton +Date: Wed Feb 27 13:53:07 2013 -0500 + + Windows: Fix rounding error when calculating now_us + + Improve accuracy of time calculations and avoid division by zero when + ticksPerSecond.QuadPart < 1000000. + + src/clock.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 22d9d95dd26bf3e39119e10d652ffbc97c46ca6d +Merge: deb9773 a22714d +Author: Pieter Hintjens +Date: Tue Feb 26 12:33:26 2013 -0800 + + Merge pull request #523 from ambitslix/perf + + Improvements and fixes for performance of PUSH/PULL in local_thr and rem... + +commit a22714dd79021279ce64e7795be7f25ede8c1f83 +Author: Attila Mark +Date: Tue Feb 26 12:10:27 2013 -0800 + + Improvements and fixes for performance of PUSH/PULL in local_thr and remote_thr. + + - option to set number of zmq threads on the command line for local_thr + - option to set number of zmq_threads and workers in remote_thr + - option to set SND/RCV buffer sizes on command line + - option to set whether to PUSH/PULL on command line + - option to set to use zmq_recv or zmq_msg for transfer on command line + - better timing function + - corrected and improved throughput reporting + - HWM and DELAY socket options + + AUTHORS | 1 + + perf/local_thr.cpp | 253 +++++++++++++++++++++++++++++++++++-------- + perf/remote_thr.cpp | 299 +++++++++++++++++++++++++++++++++++++++++++-------- + 3 files changed, 466 insertions(+), 87 deletions(-) + +commit deb977345c85939551551c73fe710fc1f9252100 +Merge: fb45685 066f3d2 +Author: Ian Barber +Date: Mon Feb 25 05:30:11 2013 -0800 + + Merge pull request #522 from hintjens/master + + Fixed overflow in results calculation + +commit 066f3d2c9bf3126f91a4339be1f9862fea25cb77 +Author: Pieter Hintjens +Date: Mon Feb 25 14:13:15 2013 +0100 + + Fixed overflow in local_thr results calculation + + perf/local_thr.cpp | 36 ++++++++++++------------------------ + 1 file changed, 12 insertions(+), 24 deletions(-) + +commit fb45685aa82689f6024c5eb91a65adb5059f3acf +Merge: 0434366 0ecc96b +Author: Ian Barber +Date: Sun Feb 24 09:04:26 2013 -0800 + + Merge pull request #521 from SRombauts/master + + Static Library Linking for Windows + +commit 0ecc96bf33b66413bff1db1ae72bec67a6522824 +Author: Sebastien Rombauts +Date: Sun Feb 24 16:10:17 2013 +0100 + + Adding missing new ZeroMQ_Static.props and Static.props files + + + ignore StaticRelease & StaticDebug intermediate files + + .gitignore | 4 ++-- + builds/msvc/properties/Static.props | 15 +++++++++++++++ + builds/msvc/properties/ZeroMQ_Static.props | 23 +++++++++++++++++++++++ + 3 files changed, 40 insertions(+), 2 deletions(-) + +commit b3bcd8e323773c3ede84ec1fe7ab7e4df045e063 +Author: Sebastien Rombauts +Date: Sun Feb 24 15:44:14 2013 +0100 + + Static Library Linking for Windows + + - New ZMQ_STATIC flag to enable "libzmq.lib" Windows static library (or "libzmq_d.lib" in Debug mode). + - ZMQ_STATIC needs also to be defined by projects using static linking against "libzmq.lib" + - New StaticDebug & StaticRelease configurations for libzmq Win32 projects under MSVC 2008 & 2010 + - Tested with Visual Studio 2008 Express under Windows 7, and Visual Studio 2010 Express under Windows 8. + + builds/msvc/Makefile.am | 4 +- + builds/msvc/libzmq/libzmq.vcproj | 1776 +++++++++++++++++++---------------- + builds/msvc/libzmq/libzmq.vcxproj | 40 +- + builds/msvc/msvc.sln | 6 + + builds/msvc/msvc10.sln | 6 + + builds/msvc/properties/ZeroMQ.props | 1 - + include/zmq.h | 4 +- + include/zmq_utils.h | 4 +- + 8 files changed, 1013 insertions(+), 828 deletions(-) + +commit 0434366088ac519c9a4a8bc1f5b37b6b7662d927 +Merge: 25dc715 d175676 +Author: Pieter Hintjens +Date: Fri Feb 22 00:27:56 2013 -0800 + + Merge pull request #520 from xantares/master + + Fixed module path with cmake < 2.8.3 + +commit d17567626a54a60fea6ec8bd29ba8548c90ac7eb +Author: Michel Zou +Date: Fri Feb 22 09:01:41 2013 +0100 + + Fixed module path with cmake < 2.8.3 + + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25dc715b7bf7c0fa0cbd274c5b500d8380e321ba +Merge: 897023c a61535a +Author: Ian Barber +Date: Wed Feb 20 11:45:14 2013 -0800 + + Merge pull request #519 from SRombauts/master + + Corrected linking error in MSVC 2010 build + perf/projects compilation + +commit 897023c3c1cecacdbd32f3215f45ee68410d61ee +Merge: ccf2b9b a85c9f4 +Author: Ian Barber +Date: Wed Feb 20 11:44:22 2013 -0800 + + Merge pull request #518 from hintjens/master + + Fixed MAXMSGSIZE setsockopt, which I'd broken + +commit a61535a23a6388c13239882129d6876acf7ade91 +Author: Sébastien Rombauts +Date: Wed Feb 20 16:08:18 2013 +0100 + + VS2008 & VS2010: adding the pre-build command to copy platform.hpp in perf/ directory to the two appropriate projects, for each MSVC version + + builds/msvc/inproc_lat/inproc_lat.vcproj | 350 +++++++++++++++-------------- + builds/msvc/inproc_lat/inproc_lat.vcxproj | 22 +- + builds/msvc/inproc_thr/inproc_thr.vcproj | 350 +++++++++++++++-------------- + builds/msvc/inproc_thr/inproc_thr.vcxproj | 22 +- + builds/msvc/libzmq/libzmq.vcxproj | 20 +- + 5 files changed, 411 insertions(+), 353 deletions(-) + +commit a85c9f45d14a52f66c414e743fd609d9a7324685 +Author: Pieter Hintjens +Date: Wed Feb 20 14:05:55 2013 +0100 + + MAXMSGSIZE broke when I cleaned up this code - fixed + + src/options.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 157bf4523ef00dce8fe89d0806da4f0b01c55aa8 +Author: Sébastien Rombauts +Date: Tue Feb 19 22:16:40 2013 +0100 + + VS2010: adding another pre-build command to copy platform.hpp in perf/ directory + + builds/msvc/libzmq/libzmq.vcxproj | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 23db53d0aa720e2f26c67ecd94eeacfbdffc4cda +Author: Sébastien Rombauts +Date: Tue Feb 19 22:01:50 2013 +0100 + + Corrected linking error in MSVC 2010 build + + - raw_encoder.cpp and raw_decoder.cpp where missing in Visual Studio 2010 project + + builds/msvc/libzmq/libzmq.vcxproj | 4 ++++ + builds/msvc/libzmq/libzmq.vcxproj.filters | 12 ++++++++++++ + 2 files changed, 16 insertions(+) + +commit ccf2b9b46665f37a579f5f04f7b80848e97944a6 +Merge: a5ef501 57f84d6 +Author: Pieter Hintjens +Date: Tue Feb 19 10:31:26 2013 -0800 + + Merge pull request #517 from SRombauts/master + + Windows CE support : using standard _WIN32_WCE flag instead of WINCE + +commit 57f84d68111b1005e9f216b94070e837a3b65407 +Author: Sébastien Rombauts +Date: Tue Feb 19 18:57:12 2013 +0100 + + Windows CE support : some more #if !defined _WIN32_WCE + + - Windows CE does not manage security attributes (no SetSecurityDescriptorDacl(), SetEvent (NULL, xxx) ...) + - Windows CE does not inheritance of sockets for child process (SetHandleInformation ((HANDLE) *w_, HANDLE_FLAG_INHERIT...) + - see comments about story "Porting ZeroMQ to Windows Mobile" on webpage http://www.zeromq.org/story:5 + + src/signaler.cpp | 14 +++++++++++++- + src/tcp_listener.cpp | 4 ++++ + 2 files changed, 17 insertions(+), 1 deletion(-) + +commit 05bb0ead54815d0b8262a9e0063e37f289bc307a +Author: Sébastien Rombauts +Date: Tue Feb 19 18:55:01 2013 +0100 + + Windows CE support : uncommenting #define EACCES needed + + - tested for Windows CE 5.0 under Visual Studio 2008 Pro + - tested for Windows XP under Visual Studio 2008 Pro + + builds/msvc/errno.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 41d79bc19eb4b53c6e6c7ea0477a1607ff0b59a7 +Author: Sébastien Rombauts +Date: Tue Feb 19 16:49:23 2013 +0100 + + Windows CE support : using standard _WIN32_WCE flag instead of WINCE + + - when compiling for Windows CE, a C++ project must define the preprocessor definitions: UNDER_CE=$(CEVersion),_WIN32_WCE=$(CEVersion) + - choosing the "_WIN32_CE" form for uniformization with "_WIN32" and "_WIN32_WINNT" already used in libzmq (boost is using both forms) + - see http://msdn.microsoft.com/en-us/library/ee479161(v=winembedded.60).aspx + + builds/msvc/errno.cpp | 2 +- + include/zmq.h | 2 +- + src/clock.cpp | 2 +- + src/err.cpp | 2 +- + src/err.hpp | 2 +- + src/socket_base.cpp | 2 +- + src/thread.cpp | 2 +- + src/windows.hpp | 2 +- + 8 files changed, 8 insertions(+), 8 deletions(-) + +commit a5ef50141c24c3f658595865d69cbeb132a492ab +Merge: a8dfcb3 927000f +Author: Pieter Hintjens +Date: Tue Feb 19 05:33:42 2013 -0800 + + Merge pull request #516 from SRombauts/master + + Corrected some more linking errors in MSVC build + +commit 927000fe2ff7182f55ebd400b959ef3d62d8aa17 +Author: Sébastien Rombauts +Date: Tue Feb 19 14:18:50 2013 +0100 + + Fixed 7 MSVC2008 Compiler Warning (level 3) C4800: 'const int' : forcing value to bool 'true' or 'false' (performance warning) + + - added explicit test "(xxx != 0)" to get a "bool" value out of the "int" expression + - see the MSDN recommandation http://msdn.microsoft.com/en-us/library/b6801kcy(v=vs.90).aspx + + src/ctx.cpp | 2 +- + src/options.cpp | 4 ++-- + src/router.cpp | 4 ++-- + src/socket_base.cpp | 2 +- + src/xpub.cpp | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) + +commit 42be4d13a7f96089e97d58a9d35ea38baa850fac +Author: Sébastien Rombauts +Date: Tue Feb 19 13:46:52 2013 +0100 + + Corrected more linking error in MSVC build + + - raw_encoder.cpp and raw_decoder.cpp in missing in MSVC project + + builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit a8dfcb3c7de53b8b2ec7a5495532e83dd44ee16d +Merge: 08be168 e628421 +Author: Ian Barber +Date: Mon Feb 18 12:19:11 2013 -0800 + + Merge pull request #515 from hintjens/master + + Updated NEWS for 3.2.2 stable + +commit e628421ed5a7f2a9e2bc92ecfa513d24d8e45cb1 +Author: Pieter Hintjens +Date: Mon Feb 18 21:14:14 2013 +0100 + + Updated NEWS for 3.2.2 stable + + NEWS | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit 08be168dd0011ab259f8f34b0817027bb1ac645c +Merge: 7094a70 8c71ac4 +Author: Pieter Hintjens +Date: Fri Feb 15 08:44:30 2013 -0800 + + Merge pull request #514 from pijyoi/fixcs + + release critical section on failure to create signaler fdpair + +commit 8c71ac47e83dc4ae116ab4abb5e4a76e8249d888 +Author: KIU Shueng Chuan +Date: Fri Feb 15 10:45:43 2013 +0800 + + release critical section on failure to create signaler fdpair + + src/signaler.cpp | 48 +++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 37 insertions(+), 11 deletions(-) + +commit 7094a706123a73c95492dd3a5f4ebc2566eb44f2 +Merge: 9a6b875 51cfcb1 +Author: Ian Barber +Date: Sun Feb 10 01:23:13 2013 -0800 + + Merge pull request #513 from hintjens/master + + Fixed test_connect_resolve + +commit 51cfcb117a488d8411b34dff483312c4e0fa405b +Author: Pieter Hintjens +Date: Sun Feb 10 08:39:27 2013 +0100 + + Some DNSs will resolve ANY domain name so I made more reliable errors. + + tests/test_connect_resolve.cpp | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 9a6b875f2181ef46baf65d3baf33135bb67f2864 +Merge: 6b2304a 1a13554 +Author: Ian Barber +Date: Thu Feb 7 04:23:56 2013 -0800 + + Merge pull request #512 from montoyaedu/master + + broken tests compilation. Makefile.am + +commit 1a13554fe0fc94bd1fc5619e270c3abc50cd5b63 +Author: montoyaedu +Date: Thu Feb 7 12:27:33 2013 +0100 + + solved broken tests compilation + + tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6b2304ad9749819a7325feae12aa141a5cd1e443 +Merge: f27eb67 ec04ccb +Author: Pieter Hintjens +Date: Tue Feb 5 15:13:12 2013 -0800 + + Merge pull request #511 from mjasperse/patch-2 + + Corrected linking error in MSVC build + +commit ec04ccba79d70abfe7355e6584f5ff79a94793a7 +Author: mjasperse +Date: Wed Feb 6 10:09:07 2013 +1100 + + Corrected linking error in MSVC build + + MSVC build fails with linking errors for unresolved symbols SetSecurityDescriptorDacl and InitializeSecurityDescriptor in signaler.obj + Adding the relevant link library (Advapi32.lib) to VCLinkerTool fixes this (tested MSVC2010 on XP and Win7) + + builds/msvc/libzmq/libzmq.vcproj | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f27eb67e1abb0484c41050e454404cce30647b63 +Merge: a3ae0d4 2c1a3c5 +Author: Pieter Hintjens +Date: Fri Feb 1 00:54:36 2013 -0800 + + Merge pull request #510 from miniway/master + + LIBZMQ-497 there could be unsent bytes in encoder + +commit 2c1a3c55f73a504b82c32b75790c59426cde76e9 +Author: Min(Dongmin Yu) +Date: Fri Feb 1 17:32:28 2013 +0900 + + LIBZMQ-497 there could be unsent bytes in encoder + + When we send a large message, the message can be splitted into two chunks. + One is in the encoder buffer and the other is the zero-copy pointer. + The session could get the term before the last chunk is sent. + + src/encoder.hpp | 5 +++++ + src/i_encoder.hpp | 1 + + src/stream_engine.cpp | 12 ++++++++++++ + src/stream_engine.hpp | 1 + + 4 files changed, 19 insertions(+) + +commit a3ae0d4c16c892a4e6c96d626a7c8b7068450336 +Merge: b60689e 8ab3c4a +Author: Chuck Remes +Date: Thu Jan 31 13:40:02 2013 -0800 + + Merge pull request #509 from hintjens/master + + Added IPv6 option to context + +commit 8ab3c4a1bfbde44f45bd97eb40cbd27236239d10 +Author: Pieter Hintjens +Date: Thu Jan 31 21:52:30 2013 +0100 + + Fixed issue #500 + + .gitignore | 3 +++ + doc/zmq_ctx_get.txt | 6 ++++- + doc/zmq_ctx_set.txt | 11 +++++++++ + src/ctx.cpp | 20 ++++++++++++---- + src/ctx.hpp | 3 +++ + src/options.hpp | 1 - + src/socket_base.cpp | 1 + + tests/Makefile.am | 6 ++--- + tests/test_ctx_options.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++ + 9 files changed, 97 insertions(+), 10 deletions(-) + +commit b60689e59df90068396c52acbccf9986b6a55514 +Merge: 049931f 309740e +Author: Chuck Remes +Date: Thu Jan 31 11:54:42 2013 -0800 + + Merge pull request #508 from hintjens/master + + IPv6 related changes and cleanups to test cases + +commit 309740e1972565fdcbfe886439977a4603a7d10e +Author: Pieter Hintjens +Date: Thu Jan 31 20:47:45 2013 +0100 + + Fixed issue #499 + + doc/zmq_getsockopt.txt | 21 ++++++++++--- + doc/zmq_setsockopt.txt | 24 +++++++++++---- + src/options.cpp | 29 +++++++++--------- + src/options.hpp | 6 ++-- + src/socket_base.cpp | 2 +- + src/tcp_address.cpp | 77 +++++++++++++++++++++--------------------------- + src/tcp_address.hpp | 15 ++++------ + src/tcp_listener.cpp | 7 +++-- + 8 files changed, 98 insertions(+), 83 deletions(-) + +commit 963c6a8e2f15e077c40c461ede7b5cf777a30dd4 +Author: Pieter Hintjens +Date: Thu Jan 31 19:46:22 2013 +0100 + + Lots of cleanups to self-tests + * Removed or truncated sleeps so the tests run faster + * Removed dependencies on zmq_utils + * Rewrote a few tests that were confusing + * Minor code cleanups + + tests/test_connect_delay.cpp | 195 +++++++++++++++++--------------------- + tests/test_connect_resolve.cpp | 2 - + tests/test_disconnect_inproc.cpp | 23 ++--- + tests/test_hwm.cpp | 7 +- + tests/test_invalid_rep.cpp | 2 - + tests/test_monitor.cpp | 152 ++++++++++++++--------------- + tests/test_msg_flags.cpp | 12 +-- + tests/test_pair_inproc.cpp | 2 - + tests/test_pair_ipc.cpp | 2 - + tests/test_pair_tcp.cpp | 2 - + tests/test_raw_sock.cpp | 8 +- + tests/test_reqrep_device.cpp | 10 +- + tests/test_reqrep_inproc.cpp | 2 - + tests/test_reqrep_ipc.cpp | 2 - + tests/test_reqrep_tcp.cpp | 2 - + tests/test_router_mandatory.cpp | 1 - + tests/test_shutdown_stress.cpp | 2 - + tests/test_sub_forward.cpp | 24 +++-- + tests/test_term_endpoint.cpp | 28 +++--- + tests/test_timeo.cpp | 107 ++++++++------------- + tests/testutil.hpp | 4 +- + 21 files changed, 248 insertions(+), 341 deletions(-) + +commit c39cb0bde14c53009f745ce0e5669156cc76a8a7 +Author: Pieter Hintjens +Date: Thu Jan 31 16:26:28 2013 +0100 + + Rewrote completely, was bogusly testing EAGAIN + + tests/test_router_mandatory.cpp | 89 +++++++++++++++------------------------ + 1 file changed, 35 insertions(+), 54 deletions(-) + +commit 3a558fcc4b8bfa72c649834b76d2fc7e9c93c74e +Author: Pieter Hintjens +Date: Thu Jan 31 15:00:17 2013 +0100 + + Rewrote raw test completely + + tests/test_raw_sock.cpp | 286 +++++++++++++++-------------------------------- + 1 file changed, 88 insertions(+), 198 deletions(-) + +commit 8c9289342a1702d557b412487342e2f9a8bbf265 +Author: Pieter Hintjens +Date: Thu Jan 31 09:10:49 2013 +0100 + + Fixed use of deprecated zmq_init/term + + tests/test_connect_resolve.cpp | 4 ++-- + tests/test_hwm.cpp | 4 ++-- + tests/test_invalid_rep.cpp | 7 +++++-- + tests/test_last_endpoint.cpp | 11 ++++++++++- + tests/test_monitor.cpp | 4 ++-- + tests/test_msg_flags.cpp | 10 ++++++++-- + tests/test_pair_inproc.cpp | 4 ++-- + tests/test_pair_ipc.cpp | 4 ++-- + tests/test_pair_tcp.cpp | 4 ++-- + tests/test_raw_sock.cpp | 1 - + tests/test_reqrep_device.cpp | 4 ++-- + tests/test_reqrep_inproc.cpp | 4 ++-- + tests/test_reqrep_ipc.cpp | 4 ++-- + tests/test_reqrep_tcp.cpp | 4 ++-- + tests/test_router_mandatory.cpp | 4 ++-- + tests/test_shutdown_stress.cpp | 6 +++--- + tests/test_sub_forward.cpp | 4 ++-- + tests/test_term_endpoint.cpp | 10 ++++------ + tests/test_timeo.cpp | 4 ++-- + 19 files changed, 56 insertions(+), 41 deletions(-) + +commit 5f009e5234fc7a4e79f5add942098abd71a58ee2 +Author: Pieter Hintjens +Date: Wed Jan 30 23:53:23 2013 +0100 + + Various cleanups to test programs + + tests/test_connect_delay.cpp | 6 ++---- + tests/test_disconnect_inproc.cpp | 11 ++--------- + tests/test_last_endpoint.cpp | 9 ++++----- + tests/test_raw_sock.cpp | 36 +++++++++++++++++------------------- + 4 files changed, 25 insertions(+), 37 deletions(-) + +commit 18a14aedead54354aac1a886a0e65c0fcd7afead +Author: Pieter Hintjens +Date: Wed Jan 30 23:53:09 2013 +0100 + + Added ZMQ_IPV6 option, cleaned up setsockopt code, it was nasty + + include/zmq.h | 3 +- + src/options.cpp | 427 +++++++++++++++++++++++-------------------------------- + 2 files changed, 181 insertions(+), 249 deletions(-) + +commit aa21e090e19496bedc2b87bae1cb8f6bc4356885 +Author: Pieter Hintjens +Date: Fri Jan 18 11:38:49 2013 +0100 + + Updated .gitignore + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 049931fc1eeb3e680c6b251a33ed983f8f6585cb +Merge: 470d06b f1e77f2 +Author: Pieter Hintjens +Date: Wed Jan 30 08:04:31 2013 -0800 + + Merge pull request #507 from bjoto/master + + LIBZMQ-498 - Remove heap allocations in zmq_poll for small poll item sets + +commit f1e77f2246726e5e0303eef79f15cd44c4c4a383 +Author: Bjorn Topel +Date: Wed Jan 30 16:46:45 2013 +0100 + + Removed heap allocation for in zmq_poll for small item sets + + Until now, zmq_poll always allocates the poll items on the heap. + Now, small item sets, up to ZMQ_POLLITEMS_DFLT, are stack allocated + and only larger sets are allocated on the heap. + + include/zmq.h | 2 ++ + src/zmq.cpp | 20 ++++++++++++++------ + 2 files changed, 16 insertions(+), 6 deletions(-) + +commit 470d06bb9ef3bb33920a9f6240340ec668e6fb1a +Merge: e8cbfac e464a91 +Author: Pieter Hintjens +Date: Sun Jan 27 15:18:11 2013 -0800 + + Merge pull request #506 from arsenm/master + + Fix using wrong name for windows.h check with cmake + +commit e464a91086386de9bd65e0d9c3c55a38dff056a6 +Author: Matt Arsenault +Date: Sun Jan 27 18:09:32 2013 -0500 + + Fix using wrong name for windows.h check in cmake + + CMakeLists.txt | 2 +- + builds/cmake/platform.hpp.in | 5 +---- + 2 files changed, 2 insertions(+), 5 deletions(-) + +commit e8cbfac9663169ffe1ab0deb47db2a8796a78172 +Merge: abc8907 ba3e18f +Author: Pieter Hintjens +Date: Wed Jan 23 11:55:48 2013 -0800 + + Merge pull request #503 from chazmcgarvey/define-dummy-eproto + + define a dummy EPROTO for platforms that don't use it + +commit abc8907e440f0ccb4f1a8758892bf79d93a9847f +Merge: 93618e7 f01bab6 +Author: Pieter Hintjens +Date: Wed Jan 23 11:55:17 2013 -0800 + + Merge pull request #505 from arsenm/master + + Fix perf-tools build on Linux with cmake + +commit 93618e7d02b83171c5db7672dfa795978194dd1e +Merge: 7bc3e53 0a1bd45 +Author: Pieter Hintjens +Date: Wed Jan 23 11:55:02 2013 -0800 + + Merge pull request #504 from o172/master + + Adds tests/test_disconnect_inproc to .gitignore + +commit f01bab6633c170315f2a7d1aee71a46e122a4b0b +Author: Matt Arsenault +Date: Wed Jan 23 14:31:02 2013 -0500 + + Fix cmake not linking librt to perf-tools + + CMakeLists.txt | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 0a1bd457210da2cff41ad36aefdedee2f6ed0757 +Author: o172(xenovo) +Date: Wed Jan 23 19:20:52 2013 +0000 + + Added tests/test_disconnect_inproc to .gitignore + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 7bc3e53b53fa43da46ff9f56113793abc7ad592e +Merge: eeaa2c8 d850272 +Author: Pieter Hintjens +Date: Mon Jan 21 21:18:08 2013 -0800 + + Merge pull request #502 from ianbarber/master + + Add bounds check on upstream XSUB messages + +commit ba3e18f700659202247e38a7f48ea16d32bd8e79 +Author: Charles McGarvey +Date: Mon Jan 21 17:14:26 2013 -0700 + + define a dummy EPROTO for platforms that don't use it + + This accomplishes the same thing as 2e2ef7fd in a potentially cleaner way. + + src/err.hpp | 5 +++++ + src/ipc_listener.cpp | 7 +------ + src/tcp_listener.cpp | 7 +------ + 3 files changed, 7 insertions(+), 12 deletions(-) + +commit d850272417dd7a3be4c5e0f429118f0005a0285b +Author: Ian Barber +Date: Mon Jan 21 16:11:27 2013 -0800 + + Add size check on XSUB message sends + + Ensures 0 length messages aren't being checked for subscribtion status on whatever data happens to be following the data pointer. + + src/xsub.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit eeaa2c8e426b797be412f09c1a4071db1f6b2d01 +Merge: 3a63218 2e2ef7f +Author: Pieter Hintjens +Date: Mon Jan 21 14:47:35 2013 -0800 + + Merge pull request #501 from chazmcgarvey/conditional-eproto + + do not use EPROTO on platforms that do not have it + +commit 2e2ef7fd330cd009c20b349a85d54e220d714f48 +Author: Charles McGarvey +Date: Mon Jan 21 15:00:55 2013 -0700 + + do not use EPROTO on platforms that do not have it + + src/ipc_listener.cpp | 7 ++++++- + src/tcp_listener.cpp | 7 ++++++- + 2 files changed, 12 insertions(+), 2 deletions(-) + +commit 3a632185a625c9025393a624559624d2de078f60 +Merge: 29a1d8e 7918175 +Author: Pieter Hintjens +Date: Sun Jan 20 03:43:49 2013 -0800 + + Merge pull request #500 from haf/fixes/asciidoc-title + + Shortening the =-chars to make asciidoc work + +commit 791817571702f8d84379184bcbbe7b81b0c613dd +Author: Henrik +Date: Sat Jan 19 18:02:24 2013 +0100 + + Shortening the =-chars to make asciidoc work + + doc/zmq_ctx_term.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29a1d8ec6032e2ca9636ca112ed4ec033058772d +Merge: f467011 21c97f0 +Author: Pieter Hintjens +Date: Thu Jan 17 23:49:52 2013 -0800 + + Merge pull request #499 from minrk/ac_header + + Minor autoconf tweaks + +commit f467011dbc718b251890a22cb6439cfc8b3d4424 +Merge: 21fc2a9 edd43e1 +Author: Pieter Hintjens +Date: Thu Jan 17 23:49:32 2013 -0800 + + Merge pull request #498 from minrk/zmq_ctx_term + + deprecate zmq_ctx_destroy in favor of zmq_ctx_term + +commit 21c97f0cc27ae8de2887fe0bad22e3fef60a3e26 +Author: MinRK +Date: Thu Jan 17 16:00:38 2013 -0800 + + AM_CONFIG_HEADER -> AC_CONFIG_HEADERS + + AM_CONFIG_HEADER raises an 'obsolete error' with automake 1.13. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 64c019e24d14bdefd91faaa345174bc36c4e738e +Author: MinRK +Date: Thu Jan 17 15:59:11 2013 -0800 + + move configure.in -> configure.ac + + autotools warns that configure.in + should actually be named configure.ac + + configure.ac | 428 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.in | 428 ---------------------------------------------------------- + 2 files changed, 428 insertions(+), 428 deletions(-) + +commit edd43e1ca45b86b649cbcbdada801b04d2895001 +Author: MinRK +Date: Thu Jan 17 14:36:38 2013 -0800 + + deprecate zmq_ctx_destroy in favor of zmq_ctx_term + + in order to avoid logical collisions with pre-existing notions of context destruction in bindings (czmq, pyzmq). + + builds/redhat/zeromq.spec.in | 1 + + doc/Makefile.am | 2 +- + doc/zmq.txt | 2 +- + doc/zmq_ctx_destroy.txt | 4 +-- + doc/zmq_ctx_new.txt | 2 +- + doc/zmq_ctx_term.txt | 66 ++++++++++++++++++++++++++++++++++++++ + doc/zmq_term.txt | 2 +- + include/zmq.h | 3 +- + src/zmq.cpp | 9 ++++-- + tests/test_connect_delay.cpp | 10 +++--- + tests/test_disconnect_inproc.cpp | 2 +- + 11 files changed, 88 insertions(+), 15 deletions(-) + +commit 21fc2a9946f65df7e03e852760b02833dd655018 +Merge: c2fbb72 bbc5bef +Author: Ian Barber +Date: Mon Jan 14 19:54:38 2013 -0800 + + Merge pull request #497 from hintjens/master + + Clarified how icp:// works with zmq_bind + +commit bbc5befc66f187a769982b57b64712dbcc317250 +Author: Pieter Hintjens +Date: Mon Jan 14 17:49:19 2013 +0100 + + Clarified zmq_bind on icp:// + + doc/zmq_ipc.txt | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit c2fbb722a4de76dd894702da893517d6c5f5ab98 +Merge: 7d475ad 35f18ae +Author: Pieter Hintjens +Date: Sat Jan 12 08:33:33 2013 -0800 + + Merge pull request #496 from amuraru/master + + Fixed el5/el6 deps in RPM spec file / newline fix + +commit 35f18aef74bf016e00ba60b84af267054a38968f +Author: Adrian Muraru +Date: Fri Jan 11 22:51:08 2013 +0200 + + Fixed newline in test_disconnect_inproc + + tests/test_disconnect_inproc.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fb0beb6f2942cfadb2a22fde97b809f26103741d +Author: Adrian Muraru +Date: Fri Jan 11 22:50:31 2013 +0200 + + Fixed el5/el6 deps in RPM spec file + + builds/redhat/zeromq.spec.in | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 7d475add7e798dca20f445453de43b88ef3eb0ac +Merge: c1f76e4 d997d88 +Author: Ian Barber +Date: Tue Jan 8 06:22:27 2013 -0800 + + Merge pull request #495 from hintjens/master + + Whitespace and comment cleanups + +commit d997d88096f8588c0d80712a7fd2c212d36241d6 +Author: Pieter Hintjens +Date: Tue Jan 8 09:18:38 2013 +0100 + + Revert "Old change to move ports off 5555 (was conflicting with other stuff)" + + This reverts commit da0efaa81771aba497a961d70f2166f500a52afd. + + tests/test_connect_delay.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aff14067135f66aa9ce7816e08bac3a9b661b3e2 +Author: Pieter Hintjens +Date: Tue Jan 8 09:18:23 2013 +0100 + + Revert "Test cases were failing on bind" + + This reverts commit 8ba097f3da8d1a752755a52b1d3ec967c23f0643. + + tests/test_raw_sock.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit a4bedc52552b6e4f8a903c3781b7e9897b310741 +Author: Pieter Hintjens +Date: Tue Jan 8 09:16:50 2013 +0100 + + Whitespace and comment fixes + + src/xpub.cpp | 17 ++++++++--------- + src/xsub.cpp | 20 +++++++++++--------- + 2 files changed, 19 insertions(+), 18 deletions(-) + +commit da0efaa81771aba497a961d70f2166f500a52afd +Author: Pieter Hintjens +Date: Tue Jan 8 09:09:27 2013 +0100 + + Old change to move ports off 5555 (was conflicting with other stuff) + + tests/test_connect_delay.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b0f0d3fcb49de6f1ebb9227ae664b9f426ece290 +Author: Pieter Hintjens +Date: Sun Dec 23 17:59:34 2012 +0100 + + Clarification on zmq_msg_more + + doc/zmq_msg_more.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 12a648db0773960e8b374a3b0ed57de36c62174a +Author: Pieter Hintjens +Date: Sun Dec 23 17:57:35 2012 +0100 + + Specified that it's safe to call zmq_msg_more after zmq_msg_close + + doc/zmq_msg_more.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ef186fe15bfc7344fca015bc212eb2e98d8d3ed7 +Author: Pieter Hintjens +Date: Sun Dec 23 17:47:44 2012 +0100 + + Spelling fixes + + src/stream_engine.cpp | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit af934f85caf5ec1e56514270c81ec57a92e106d9 +Author: Pieter Hintjens +Date: Sun Dec 23 17:47:32 2012 +0100 + + Removed use of deprecated API methods + + doc/zmq_msg_get.txt | 2 +- + doc/zmq_msg_more.txt | 2 +- + doc/zmq_recv.txt | 2 -- + doc/zmq_recvmsg.txt | 1 - + doc/zmq_send.txt | 2 -- + doc/zmq_sendmsg.txt | 2 -- + doc/zmq_socket_monitor.txt | 6 +++--- + 7 files changed, 5 insertions(+), 12 deletions(-) + +commit 8ba097f3da8d1a752755a52b1d3ec967c23f0643 +Author: Pieter Hintjens +Date: Fri Nov 23 17:25:46 2012 +0900 + + Test cases were failing on bind + + tests/test_connect_delay.cpp | 2 +- + tests/test_raw_sock.cpp | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit c1f76e433f2180544e834587ae884adc60f02d97 +Merge: 98a91e8 d32e392 +Author: Pieter Hintjens +Date: Tue Jan 8 00:05:07 2013 -0800 + + Merge pull request #494 from jgm-radez/master + + allow XSUB/XPUB to send/recv messages unrelated to sub/unsub + +commit d32e3922785f170ce24159ab5e4b44badc473ec1 +Author: John Muehlhausen +Date: Mon Jan 7 22:24:24 2013 -0600 + + allow XSUB/XPUB to send/recv messages unrelated to sub/unsub (LIBZMQ-490) + + zmq::xpub_t::xread_activated() – change to process messages without 0 + or 1 prefix, but without affecting subscriptions + + zmq::xsub_t::xsend() – change to send rather than discard messages + without 0 or 1 prefix, but without affecting subscriptions + + Update documentation + + doc/zmq_socket.txt | 6 ++++-- + src/xpub.cpp | 3 +++ + src/xsub.cpp | 11 ++++------- + 3 files changed, 11 insertions(+), 9 deletions(-) + +commit 98a91e852e87ae70dd320bd73d217c42c7eb950a +Merge: 949d157 45f504d +Author: Ian Barber +Date: Wed Jan 2 12:51:43 2013 -0800 + + Merge pull request #493 from arsenm/master + + Fix minor problem with cmake bulid + +commit 45f504d3e24930eea540c4a0a76a64094c56fbda +Author: Matt Arsenault +Date: Wed Jan 2 15:50:04 2013 -0500 + + Fix looking for rc sources in toplevel binary directory + + CMakeLists.txt | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 949d1578977ef11a46dfa1a991a2cc2affc0d9cc +Merge: c7009d2 6ce4644 +Author: Pieter Hintjens +Date: Wed Jan 2 00:32:15 2013 -0800 + + Merge pull request #492 from arsenm/master + + Make CMake build usable for other systems + +commit 6ce464414bb453a40abadaa9d79389e5e3282fda +Author: Matt Arsenault +Date: Tue Jan 1 04:26:04 2013 -0500 + + Fix typos + + src/socket_base.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f770954d309c0778f1fe65a38b8e54c1063c8474 +Author: Matt Arsenault +Date: Tue Jan 1 05:42:46 2013 -0500 + + Fix a couple more warnings + + src/object.cpp | 1 + + src/options.cpp | 7 +++++-- + src/signaler.cpp | 4 ++-- + 3 files changed, 8 insertions(+), 4 deletions(-) + +commit 6ecb796e77dd5d48b65d7e78c40be6ee95696f96 +Author: Matt Arsenault +Date: Tue Jan 1 17:16:50 2013 -0500 + + Fix warnings with MinGW + + src/ip.cpp | 3 +++ + src/signaler.cpp | 6 ++++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit 1ffc5d11dce5bbea970b9d9354e70d4e40346d38 +Author: Matt Arsenault +Date: Tue Jan 1 04:24:51 2013 -0500 + + Fix some of the -Wshadows + + src/options.cpp | 6 +++--- + src/socket_base.cpp | 26 +++++++++++++------------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +commit 14d3245e02f27857a80dba6ad6b7babed564a3d9 +Author: Matt Arsenault +Date: Tue Jan 1 04:01:24 2013 -0500 + + Fix -Wmismatched-tags + + src/i_decoder.hpp | 3 ++- + src/i_msg_sink.hpp | 3 ++- + src/i_msg_source.hpp | 3 ++- + 3 files changed, 6 insertions(+), 3 deletions(-) + +commit edb5a05add41de964170a1b72ae8038d30a00e17 +Author: Matt Arsenault +Date: Tue Jan 1 03:56:34 2013 -0500 + + Fix -Wmissing-field-initializers + + src/tcp_listener.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 3ebab09ce4da3cd7e40355e5bd91a5e5a66d826b +Author: Matt Arsenault +Date: Tue Jan 1 03:26:31 2013 -0500 + + Fix unused argument warnings + + CMakeLists.txt | 12 +++++++++--- + src/decoder.hpp | 2 +- + src/zmq.cpp | 4 ++-- + 3 files changed, 12 insertions(+), 6 deletions(-) + +commit e88dc494007e43a548c22e23b952e56832e60906 +Author: Matt Arsenault +Date: Tue Jan 1 06:53:56 2013 -0500 + + Fix random 3 space tabs + + CMakeLists.txt | 116 +++++++++++++++++++++++++++----------------------------- + 1 file changed, 55 insertions(+), 61 deletions(-) + +commit 59cafecd9696817e0faa2ba00404aef75b3c1187 +Author: Matt Arsenault +Date: Tue Jan 1 21:04:19 2013 -0500 + + Fix MinGW32 build + + Fix link errors when using -m32 with MinGW + + CMakeLists.txt | 93 +++++++++++++++++++++++++----------------- + builds/cmake/platform.hpp.in | 4 ++ + 2 files changed, 59 insertions(+), 38 deletions(-) + +commit 3c7d4840a1ff54b4a0de8be08481dbdf9b3c257a +Author: Matt Arsenault +Date: Tue Jan 1 02:25:15 2013 -0500 + + Fix NSIS installer errors, MinGW build. + + The CPack NSIS installer was in a state where it would always give a + useless error. I think it was using stuff intended for running cpack + separately from cmake. + + CMakeLists.txt | 89 ++++++++++++++++---------------------- + cmake/Modules/FindAsciiDoc.cmake | 7 ++- + 2 files changed, 44 insertions(+), 52 deletions(-) + +commit a1d6a222ede4faec7cb27c5f0b67c1f7a0321e5d +Author: Matt Arsenault +Date: Mon Dec 31 18:23:25 2012 -0500 + + Generated header is not in ../src/ + + perf/inproc_lat.cpp | 2 +- + perf/inproc_thr.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 4704159f7317b73dc779819f132516f8d273f0db +Author: Matt Arsenault +Date: Tue Jan 1 05:22:05 2013 -0500 + + Fix cmake build with sun studio + + CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 74763e2c8ee5eccf2bea0ca64e7f784be4307404 +Author: Matt Arsenault +Date: Tue Jan 1 05:34:44 2013 -0500 + + Don't use the toplevel cmake paths so the build works as a subproject + + CMakeLists.txt | 101 ++++++++++++++++++++++++------------ + cmake/Modules/TestZMQVersion.cmake | 47 ++++++----------- + 2 files changed, 82 insertions(+), 66 deletions(-) + +commit f3901b35d46c91ebd6a8f8b7b2110c15b54b90da +Author: Matt Arsenault +Date: Tue Jan 1 05:06:09 2013 -0500 + + Comments about ICC build failure with 12.x were crazy + + Fix warnings with ICC. + + CMakeLists.txt | 9 -- + builds/cmake/platform.hpp.in | 3 - + cmake/Modules/AutoconfHelper.cmake | 298 ------------------------------------ + src/stream_engine.hpp | 2 +- + 4 files changed, 1 insertion(+), 311 deletions(-) + +commit 0362c310a58f3304653592bf8c38f0d068e51c16 +Author: Matt Arsenault +Date: Mon Dec 31 17:52:32 2012 -0500 + + First pass at getting cmake build to work with non-Windows systems. + + Make doc building option dependent on asciidoc being installed + Fix MSVC build requiring cygwin. + Don't use try_run to get the version + + CMakeLists.txt | 939 +++++++++++++++++++++----------- + builds/cmake/platform.hpp.in | 90 +++ + cmake/Modules/AutoconfHelper.cmake | 298 ++++++++++ + cmake/Modules/FindAsciiDoc.cmake | 19 + + cmake/Modules/TestZMQVersion.cmake | 2 +- + cmake/Modules/ZMQSourceRunChecks.cmake | 129 +++++ + cmake/Modules/zmq_version.cpp | 31 -- + src/libzmq.pc.cmake.in | 10 + + 8 files changed, 1164 insertions(+), 354 deletions(-) + +commit 73c370dd1772e09be476ec8dcbe097fb5de939e9 +Author: Matt Arsenault +Date: Sun Dec 30 17:58:27 2012 -0500 + + Fix inconsistently using #if or #ifdef instead of #if defined + + src/ip.cpp | 4 ++-- + src/zmq.cpp | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit c7009d274ecfe49eee8ae064a9d148dda98c3196 +Merge: 1eee9ce 151a806 +Author: Pieter Hintjens +Date: Tue Jan 1 08:32:12 2013 -0800 + + Merge pull request #491 from pijyoi/issue84 + + fix for LIBZMQ-84: Address already in use (signaler.cpp) + +commit 1eee9ce035585096e9ce33fc1a149b6cf147d5b5 +Merge: 8dda553 322808b +Author: Pieter Hintjens +Date: Sat Dec 29 02:26:06 2012 -0800 + + Merge pull request #490 from pijyoi/master + + eliminate dead code moved into zmq_utils.cpp + +commit 151a80619bf3f9c4696788f79cd2c934ed26246d +Author: KIU Shueng Chuan +Date: Sat Dec 29 18:05:15 2012 +0800 + + set SO_LINGER on first signaler socket to close in order to avoid + TIME_WAIT state. + + src/signaler.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 322808be9c9077bcd0acc921df6ceacc57a3c029 +Author: KIU Shueng Chuan +Date: Sat Dec 29 13:21:50 2012 +0800 + + eliminate code moved into zmq_utils.cpp + + src/zmq.cpp | 29 ----------------------------- + 1 file changed, 29 deletions(-) + +commit 8dda553ac4cad4504e7f9007dc0e8e471aec89a1 +Merge: ce24557 942c654 +Author: Pieter Hintjens +Date: Thu Dec 27 05:46:20 2012 -0800 + + Merge pull request #489 from pijyoi/master + + win32: fix Event handle leak + +commit 942c654d1cb556a91b4cca00bd4f0e50d5010a04 +Author: KIU Shueng Chuan Date: Thu Dec 27 21:31:12 2012 +0800 win32: close zmq-signaler-port-sync event object to avoid handle leak - src/signaler.cpp | 4 ++++ + src/signaler.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ce24557b11cc26b10cb217f1c7556101f64b7095 +Merge: 4febe88 2e9d4d4 +Author: Pieter Hintjens +Date: Tue Dec 11 22:34:52 2012 -0800 + + Merge pull request #488 from steve-o/openpgm-next + + Pull upstream OpenPGM 5.2.122 for multi-platform minor fixes. + +commit 2e9d4d413206f5ae307e5017c3744d267254feef +Author: Steven McCoy +Date: Tue Dec 11 21:41:10 2012 -0500 + + Pull upstream OpenPGM 5.2.122 for multi-platform minor fixes. + + CMakeLists.txt | 5 +++-- + configure.in | 2 +- + foreign/openpgm/libpgm-5.1.118~dfsg.tar.gz | Bin 1046589 -> 0 bytes + foreign/openpgm/libpgm-5.2.122~dfsg.tar.gz | Bin 0 -> 951536 bytes + 4 files changed, 4 insertions(+), 3 deletions(-) + +commit 4febe88b2be300f8712a2e9ec57c351ccc39a102 +Merge: 2a7b219 a0cecc7 +Author: Pieter Hintjens +Date: Tue Dec 11 08:09:08 2012 -0800 + + Merge pull request #487 from miniway/master + + returns -1 with EAGAIN when mandatory is set and pipe is full + +commit a0cecc718d3d95279dcc7b0d9b6c1d09fb4cfd97 +Author: Min(Dongmin Yu) +Date: Tue Dec 11 19:41:36 2012 +0900 + + returns -1 with EAGAIN when mandatory is set and pipe is full + + src/router.cpp | 12 ++++++------ + tests/test_router_mandatory.cpp | 9 ++++----- + 2 files changed, 10 insertions(+), 11 deletions(-) + +commit 2a7b219f073d3bccb062379d3fc4ef933c8bab56 +Merge: 8da6b7a 394d755 +Author: Pieter Hintjens +Date: Sun Dec 9 01:25:51 2012 -0800 + + Merge pull request #486 from miniway/master + + return EHOSTUNREACH at full only when mandatory is set + +commit 394d755cf303ad6c263e877ebcda97108ad8666e +Author: Min(Dongmin Yu) +Date: Sun Dec 9 16:52:45 2012 +0900 + + return EHOSTUNREACH at full only when mandatory is set + + src/router.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8da6b7a6fdb176aa184584001325920a04674be7 +Merge: 95d36f4 9382941 +Author: Pieter Hintjens +Date: Fri Dec 7 23:19:20 2012 -0800 + + Merge pull request #485 from miniway/master + + returns EHOSTUNREACH when a peer is full if ZMQ_ROUTER_MANDATORY is set + +commit 9382941adc664f98535fd962d1262ff50fce3b71 +Author: Min(Dongmin Yu) +Date: Sat Dec 8 10:20:42 2012 +0900 + + returns EHOSTUNREACH when a peer is full if ZMQ_ROUTER_MANDATORY is set + + src/router.cpp | 9 ++++++-- + tests/test_router_mandatory.cpp | 46 ++++++++++++++++++++++++++++++++++++++- + 2 files changed, 52 insertions(+), 3 deletions(-) + +commit 95d36f42eea67b1752e819c9c49b19c74d6b938e +Merge: ebd1bf9 6706efb +Author: Martin Hurton +Date: Fri Dec 7 01:54:56 2012 -0800 + + Merge pull request #484 from pijyoi/master + + fix wrong boolean operator in router_raw test code + +commit 6706efba2857b5b352a19a7f5ac575d7e3369ed7 +Author: KIU Shueng Chuan +Date: Fri Dec 7 17:45:05 2012 +0800 + + fix wrong boolean operator + + tests/test_raw_sock.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ebd1bf9bcf41fb812e452101b97eef55503b2b67 +Merge: b2f6741 21345ff +Author: Martin Hurton +Date: Tue Dec 4 14:05:48 2012 -0800 + + Merge pull request #482 from sradomski/master + + Close pipes for inproc sockets on zmq_disconnect + +commit 21345ffa5076aa587611e7099678f9cacdc9f160 +Author: Stefan Radomski +Date: Tue Dec 4 17:40:43 2012 +0100 + + Break early when pipe to be removed was found + + src/socket_base.cpp | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit f9770e93efb75827410b13a20b83bcf08b13819d +Author: Stefan Radomski +Date: Tue Dec 4 17:31:46 2012 +0100 + + Fixed iterator when erasing from inprocs multimap + + src/socket_base.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 624dd1e5b5258d581149c173f3e95aff1e03a73f +Author: Stefan Radomski +Date: Tue Dec 4 17:10:32 2012 +0100 + + Removal of terminated pipes from inproc and ignoring peer ends + + src/socket_base.cpp | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 66c22456b97e1278ec0b24dcd1ff66e619d8fca2 +Author: Stefan Radomski +Date: Tue Dec 4 15:14:21 2012 +0100 + + Close pipes for inproc sockets on zmq_disconnect + + - fixes LIBZMQ-476 and LIBZMQ-475 + + AUTHORS | 1 + + doc/zmq_disconnect.txt | 2 + + src/socket_base.cpp | 33 ++++++++++- + src/socket_base.hpp | 4 ++ + tests/Makefile.am | 5 +- + tests/test_disconnect_inproc.cpp | 119 ++++++++++++++++++++++++++++++++++++++ + 6 files changed, 162 insertions(+), 2 deletions(-) + +commit b2f6741bcb73892fca4f7d374f18aecbf89435cb +Merge: 013a99d 75161b5 +Author: Pieter Hintjens +Date: Sat Dec 1 00:53:02 2012 -0800 + + Merge pull request #481 from ianbarber/master + + Simplify test_connect_delay + +commit 75161b5c62f5f37e00573b3894cf8dc2b960e654 +Author: Ian Barber +Date: Fri Nov 30 23:07:12 2012 +0000 + + Serialise test_connect_delay + + Simplify the test connect delay test script, removing the threads and + moving to a serialised version. AFAICS this should provide the same + test, but without the race conditions that happened with the previous + test. + + tests/test_connect_delay.cpp | 215 +++++++++++++++++++++--------------------- + 1 file changed, 106 insertions(+), 109 deletions(-) + +commit 013a99daabeb6e31234341da8130a9ce7f7fb882 +Merge: a4a7316 3fc8c70 +Author: Martin Hurton +Date: Fri Nov 30 13:41:54 2012 -0800 + + Merge pull request #480 from vperron/master + + Tiny fix + +commit 3fc8c7073d68235f0f6506d3c705778b40b86d15 +Author: Victor Perron +Date: Fri Nov 30 22:16:20 2012 +0100 + + Same fix, in-line style + + src/decoder.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 33f42efb48af75194a31c5be8cd01868a12062f8 +Author: Victor Perron +Date: Fri Nov 30 21:39:22 2012 +0100 + + Change NULL to 0 to keep compatibility with some cross-compiling GCC + versions + + src/decoder.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a4a731652a2e7db91a8fa692c073da8c1dce0834 +Merge: cae5d3b 1d11f19 +Author: Pieter Hintjens +Date: Mon Nov 26 08:23:43 2012 -0800 + + Merge pull request #479 from ianbarber/master + + Update RPM spec file + +commit 1d11f196b1c556516177fa645c351bfadfa8a31c +Author: Ian Barber +Date: Mon Nov 26 16:12:25 2012 +0000 + + Update SPEC file + + Update the RPM spec file with Justin Cook's changes to fix the build for 3.2.2. (https://zeromq.jira.com/browse/LIBZMQ-473) + + builds/redhat/zeromq.spec.in | 28 +++++++++++++++++++--------- + 1 file changed, 19 insertions(+), 9 deletions(-) + +commit cae5d3b817fc6bbfc67b41e89585989900d6bbd3 +Merge: d1cbf96 359a505 +Author: Pieter Hintjens +Date: Thu Nov 22 01:16:55 2012 -0800 + + Merge pull request #478 from methodmissing/event-messages-3.2 + + Event message memory corruption fixes + +commit d1cbf96cdee1677ebee6a1384dbdff4ef0f23a37 +Merge: a28322c e6da46f +Author: Martin Hurton +Date: Thu Nov 22 00:03:02 2012 -0800 + + Merge pull request #477 from hintjens/master + + Added autogen.sh hint to INSTALL + +commit e6da46ff8c8243419a16069bca364eb0adbbfca0 +Author: Pieter Hintjens +Date: Thu Nov 22 12:09:02 2012 +0900 + + Added autogen.sh hint + + INSTALL | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 359a50594930b3522d354d790fdbca73a92ef52b +Author: Lourens Naudé +Date: Thu Nov 22 00:12:17 2012 +0000 + + Prefer malloc to new for event address allocation as per Martin's recommendation + + src/socket_base.cpp | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit a28322cd0cf7a62e4f41d70fa3896a438c23db9d +Merge: 8db8c45 a8721c3 +Author: Pieter Hintjens +Date: Wed Nov 21 14:15:59 2012 -0800 + + Merge pull request #476 from hurtonm/master + + Check decoder's state function for NULL before calling it + +commit a8721c3c04f41f0b90a4b1ebaf4bcd767c45a6ab +Author: Martin Hurton +Date: Wed Nov 21 22:50:55 2012 +0100 + + Check decoder's state function for NULL before calling it + + Fixes bug reported by Peter Friend + (http://lists.zeromq.org/pipermail/zeromq-dev/2012-November/019425.html) + + src/decoder.hpp | 4 ++++ 1 file changed, 4 insertions(+) -commit 911387cfbbc238b409cdb115e04554cd8baaa495 -Merge: a91779b 2131e85 -Author: Martin Hurton -Date: Tue Dec 4 08:50:44 2012 -0800 +commit b1f4850153dbddb66c8e32fe3ce70361e954a38a +Author: Lourens Naudé +Date: Wed Nov 21 18:27:53 2012 +0000 + + Let socket event messages initialize with zmq_msg_init_data and let the framework handle cleanup + + src/socket_base.cpp | 6 ++++-- + src/socket_base.hpp | 5 +++++ + src/zmq.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 50 insertions(+), 2 deletions(-) - Merge pull request #70 from sradomski/master - - Removal of terminated pipes from inproc and ignoring peer ends +commit f78ca629b5b923c4a0485238d16e78c9eb131618 +Merge: 6d245eb 8db8c45 +Author: Lourens Naudé +Date: Wed Nov 21 18:04:05 2012 +0000 -commit 2131e85cd76152f965a1891a643bfb3bb16db78e -Author: Stefan Radomski -Date: Tue Dec 4 17:41:08 2012 +0100 + Merge branch 'master' of github.com:zeromq/libzmq - Break early when pipe to be removed was found +commit 8db8c45b185557a2e8abd7818ba8d0c260725d7d +Merge: 7e6c304 be4cc2f +Author: Pieter Hintjens +Date: Tue Nov 20 13:27:43 2012 -0800 - src/socket_base.cpp | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) + Merge pull request #475 from ianbarber/master + + Add ZMTP link to zmq_tcp doc. -commit fbfd3c34d901f5af985b3861e87f9c5f7700876a -Author: Stefan Radomski -Date: Tue Dec 4 17:32:38 2012 +0100 +commit be4cc2f80aaeb202f7fc63ff0e729b428fbcdcd0 +Author: Ian Barber +Date: Tue Nov 20 19:10:47 2012 +0000 - Fixed iterator when erasing from inprocs multimap + Update zmq_tcp to include a reference to RFC + + Include a note with a link to ZMQ RFC 15 for the ZMTP protocol + description. - src/socket_base.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + doc/zmq_tcp.txt | 2 ++ + 1 file changed, 2 insertions(+) -commit 1965e2d05df1bcb88c7ac6e1bec32cd206543bac -Author: Stefan Radomski -Date: Tue Dec 4 17:03:58 2012 +0100 +commit 7e6c304a9871891f96a7d3c9254c863ad98a4e17 +Merge: 1a18c7b 1489857 +Author: Ian Barber +Date: Mon Nov 19 02:40:36 2012 -0800 - Removal of terminated pipes from inproc and ignoring peer ends + Merge pull request #474 from hintjens/master + + Fixed doc for SNDHWM - src/socket_base.cpp | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) +commit 14898579734ffe14d37a9b5ea74c880582eddabf +Author: Pieter Hintjens +Date: Mon Nov 19 16:32:58 2012 +0900 -commit a91779baf141788af86c366572f5f873b750304a -Merge: ba1fd8e 8e6fdc5 -Author: Martin Hurton -Date: Tue Dec 4 05:49:13 2012 -0800 + Fixed ZMQ_SNDHWM description - Merge pull request #69 from sradomski/master - - Close pipes for inproc sockets on zmq_disconnect + doc/zmq_setsockopt.txt | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit 8e6fdc56e1f1ca7692ee3694a732f002fcb81d1b -Author: Stefan Radomski -Date: Tue Dec 4 14:14:46 2012 +0100 +commit 7533ebb33d1cc6f23061e0228bf7eb22713aaa17 +Author: Pieter Hintjens +Date: Mon Nov 19 10:20:56 2012 +0900 - Changed errno to ENOENT for disconnecting unconnected endpoints + Clarified that SNDHWM is per part, not message - doc/zmq_disconnect.txt | 2 +- - src/socket_base.cpp | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) + doc/zmq_setsockopt.txt | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) -commit b0563c21039cfaec805cf3ae31bca1ab111bc7d8 -Author: Stefan Radomski -Date: Tue Dec 4 13:52:23 2012 +0100 +commit 6d245eb6bc614c050d7650c564fd1a986475cc67 +Author: Lourens Naudé +Date: Sat Nov 17 11:29:47 2012 +0000 - Set errno and update documentation on zmq_disconnect + Copy monitor specific event endpoints to event messages as the engine etc. can be released at anytime - doc/zmq_disconnect.txt | 2 ++ - src/socket_base.cpp | 8 ++++++-- - 2 files changed, 8 insertions(+), 2 deletions(-) + src/ipc_connecter.cpp | 8 +++---- + src/ipc_listener.cpp | 10 ++++---- + src/socket_base.cpp | 61 +++++++++++++++++++++++++++++++------------------ + src/socket_base.hpp | 27 ++++++++++++---------- + src/stream_engine.cpp | 2 +- + src/tcp_connecter.cpp | 8 +++---- + src/tcp_listener.cpp | 8 +++---- + 7 files changed, 72 insertions(+), 52 deletions(-) -commit 2388f27bfe334d9a98f417bb0c87cfea5727fce6 -Author: Stefan Radomski -Date: Tue Dec 4 13:14:56 2012 +0100 +commit ce4d32168440d5767805b7ee7cbfaac2f4c3f272 +Author: Lourens Naudé +Date: Sat Nov 17 10:06:09 2012 +0000 - Close inproc socket pairs on zmq_disconnect + Revert "Merge pull request #473 from methodmissing/fix-engine-endpoint" - This patch fixes LIBZMQ-476 and LIBZMQ-475 + This reverts commit 1a18c7b0a816e10f8a8a770b2141d47f661f0302, reversing + changes made to bef9a41bdb991b867981317e0e20ee174ecd6fea. - AUTHORS | 1 + - src/socket_base.cpp | 28 +++++++++ - src/socket_base.hpp | 4 ++ - tests/Makefile.am | 5 +- - tests/test_disconnect_inproc.cpp | 119 +++++++++++++++++++++++++++++++++++++++ - 5 files changed, 156 insertions(+), 1 deletion(-) + src/stream_engine.cpp | 6 ++---- + src/stream_engine.hpp | 2 +- + 2 files changed, 3 insertions(+), 5 deletions(-) -commit ba1fd8e82a427231d99c629265956f37db5c0487 -Merge: 7541e38 6d4e2ce +commit 1a18c7b0a816e10f8a8a770b2141d47f661f0302 +Merge: bef9a41 fdf162a Author: Ian Barber -Date: Fri Nov 30 14:11:26 2012 -0800 +Date: Fri Nov 16 13:06:24 2012 -0800 - Merge pull request #68 from vperron/master + Merge pull request #473 from methodmissing/fix-engine-endpoint - ARM toolchain compatibility + [LIBZMQ-450] Copy the stream engine endpoint - string reference caused memory corruption -commit 6d4e2ce93b1cd12040d2a030869d95225a3093bf -Author: Victor Perron -Date: Fri Nov 30 22:58:03 2012 +0100 +commit fdf162a117782720ed8b7a1cbb71194f0c5136a9 +Author: Lourens Naudé +Date: Fri Nov 16 17:21:07 2012 +0000 - Change NULL to 0 to keep compatibility with some cross-compiling GCC - versions + [LIBZMQ-450] Copy the stream engine endpoint - string reference caused memory corruption - src/decoder.hpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/stream_engine.cpp | 6 ++++-- + src/stream_engine.hpp | 2 +- + 2 files changed, 5 insertions(+), 3 deletions(-) -commit 7541e38205315ba5da312218fa7ca9a788ed8813 -Merge: ed8ab63 c7786d4 +commit bef9a41bdb991b867981317e0e20ee174ecd6fea +Merge: 01b9bc3 b8d5d3f Author: Pieter Hintjens -Date: Mon Nov 26 08:24:16 2012 -0800 +Date: Thu Nov 15 17:58:44 2012 -0800 - Merge pull request #67 from ianbarber/master + Merge pull request #472 from jgm-radez/master - Update RPM spec file + Issue 468 -commit c7786d4374029cf44d741072105e27ee6026e9d3 -Author: Ian Barber -Date: Mon Nov 26 16:21:06 2012 +0000 +commit b8d5d3fa695c5026c2af36daa8e357978ab135ac +Author: John Muehlhausen +Date: Thu Nov 15 15:30:30 2012 -0600 - Update SPEC file + Issue 468 - Update the RPM spec file with Justin Cook's changes to fix the build for 3.2.2. (https://zeromq.jira.com/browse/LIBZMQ-473) + XPUB "verbose" mode excludes unsubscriptions - builds/redhat/zeromq.spec.in | 28 +++++++++++++++++++--------- - 1 file changed, 19 insertions(+), 9 deletions(-) + src/xpub.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit ed8ab632c6124d71129f66d6e73b8a66973c3b33 +commit 01b9bc36631f168ec2096e88a4d280cc45912557 +Merge: 37f8ce6 5205415 Author: Pieter Hintjens -Date: Fri Nov 23 17:05:43 2012 +0900 +Date: Wed Nov 14 02:12:29 2012 -0800 + + Merge pull request #471 from methodmissing/fix-disconnect-event-addr + + Fix addresses on triggered events - Updated version to 3.2.3 for next stable release +commit 5205415beb7631200a0dc150d1e6acf8089b65ff +Author: Lourens Naudé +Date: Wed Nov 14 09:51:24 2012 +0000 - include/zmq.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + Fix addresses on triggered events -commit 2ae1bd2088555193daf34dd0a9bffebb85b8e3cb -Merge: 025e218 3b268c6 -Author: Pieter Hintjens -Date: Thu Nov 22 23:58:03 2012 -0800 + src/socket_base.cpp | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) - Merge pull request #66 from hintjens/master +commit 37f8ce69c17c7200605d3c3e688bf1a9e191e121 +Merge: 30eaadd 6559da3 +Author: Martin Hurton +Date: Tue Nov 13 12:13:58 2012 -0800 + + Merge pull request #470 from cdolan/master - One fix to NEWS + Fixed test compilation issue by using memset/memmove rather than bzero/bcopy -commit 3b268c6943dff8e36d88f7f846bb5726ea4eac8f -Author: Pieter Hintjens -Date: Fri Nov 23 16:57:23 2012 +0900 +commit 6559da3033f20bd978a9647d21343f5978b311ec +Author: Christopher Dolan +Date: Tue Nov 13 19:33:18 2012 +0000 - Added NEWS entry for issue 465 + Use memset/memmove rather than bzero/bcopy - NEWS | 1 + - 1 file changed, 1 insertion(+) + tests/test_raw_sock.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 025e2186293c4a3d84f5b0f9b904dfe1a09b611a -Merge: 12f3f8a 61b9368 -Author: Pieter Hintjens -Date: Thu Nov 22 23:54:06 2012 -0800 +commit 30eaadddc3d95e194966e96e8b4a011ee7e5638b +Merge: c179ad1 9013ee0 +Author: Ian Barber +Date: Tue Nov 13 04:29:44 2012 -0800 - Merge pull request #65 from hintjens/master + Merge pull request #469 from hurtonm/code_cleanup - Release 3.2.2 stable + Minor code cleanup -commit 61b936893d7048c47c61daf3d42bb2d16392bfbf -Author: Pieter Hintjens -Date: Fri Nov 23 16:52:50 2012 +0900 +commit 9013ee0d52bb88a5ea08b78c1d31ea5b1b0cd95d +Author: Martin Hurton +Date: Tue Nov 13 13:06:29 2012 +0100 - Updated NEWS for release 3.2.2 + Minor code cleanup - NEWS | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) + src/epoll.cpp | 5 +++-- + src/kqueue.cpp | 5 +++-- + src/poll.cpp | 6 +++--- + src/select.cpp | 5 +++-- + 4 files changed, 12 insertions(+), 9 deletions(-) -commit bcf8916e17b00b2092df56e3b9c89ba294583ad7 +commit c179ad11730cfe742ccd74577372aef43fed2fa1 +Merge: 99f7144 c543b2c Author: Pieter Hintjens -Date: Fri Nov 23 16:42:13 2012 +0900 +Date: Tue Nov 13 03:56:01 2012 -0800 + + Merge pull request #468 from hurtonm/issue_465 + + Resolve LIBZMQ-465 + +commit c543b2ce8cb0dd8790e7bdc89b08ef49812616d4 +Author: Martin Hurton +Date: Sat Nov 10 23:05:10 2012 +0100 - Backported latest socket event framework + Resolve LIBZMQ-465 - src/ipc_connecter.cpp | 11 +++-- - src/ipc_listener.cpp | 10 ++-- - src/socket_base.cpp | 109 ++++++++++++++++++++++++------------------- - src/socket_base.hpp | 28 +++++++---- - src/stream_engine.cpp | 2 +- - src/tcp_connecter.cpp | 11 +++-- - src/tcp_listener.cpp | 8 ++-- - src/zmq.cpp | 63 ++++++++++++++++++++----- - tests/test_connect_delay.cpp | 6 +-- - 9 files changed, 157 insertions(+), 91 deletions(-) + src/decoder.cpp | 5 ----- + src/decoder.hpp | 24 ++++++++++++++++++------ + src/i_decoder.hpp | 2 +- + src/raw_decoder.cpp | 2 +- + src/raw_decoder.hpp | 2 +- + src/stream_engine.cpp | 17 +++++++++++------ + src/stream_engine.hpp | 4 +++- + src/v1_decoder.cpp | 5 ----- + src/v1_decoder.hpp | 2 -- + 9 files changed, 35 insertions(+), 28 deletions(-) -commit 12f3f8a7f68d44fe73e5b4fe20752c323453e23e -Merge: efdb5cf 9120741 +commit 99f714445f67d552eb2add6ed5f818d546dce901 +Merge: 793895c 66dc4d8 Author: Pieter Hintjens -Date: Wed Nov 21 19:20:21 2012 -0800 +Date: Fri Nov 9 08:45:22 2012 -0800 - Merge pull request #64 from hintjens/master + Merge pull request #467 from hurtonm/code_cleanup - Backported fix for LIBZMQ-472 + Code cleanup -commit 9120741719d7d842fd430eff3f7c028b060b045a +commit 66dc4d8b542ca8571b66cc7fcf97daa87734e36f Author: Martin Hurton -Date: Wed Nov 21 22:50:55 2012 +0100 - - Check decoder's state function for NULL before calling it - - Fixes bug reported by Peter Friend - (http://lists.zeromq.org/pipermail/zeromq-dev/2012-November/019425.html) +Date: Fri Nov 9 17:17:43 2012 +0100 - src/decoder.hpp | 4 ++++ - 1 file changed, 4 insertions(+) + Don't pass flags to xrecv method -commit efdb5cf076348446a1f25e98a47cb0bca789e192 -Merge: f9b6da0 ae8c4a4 + src/dealer.cpp | 5 +---- + src/dealer.hpp | 2 +- + src/pair.cpp | 5 +---- + src/pair.hpp | 2 +- + src/pub.cpp | 2 +- + src/pub.hpp | 2 +- + src/pull.cpp | 5 +---- + src/pull.hpp | 2 +- + src/rep.cpp | 6 +++--- + src/rep.hpp | 2 +- + src/req.cpp | 8 ++++---- + src/req.hpp | 2 +- + src/router.cpp | 5 +---- + src/router.hpp | 2 +- + src/socket_base.cpp | 8 ++++---- + src/socket_base.hpp | 2 +- + src/xpub.cpp | 5 +---- + src/xpub.hpp | 2 +- + src/xsub.cpp | 5 +---- + src/xsub.hpp | 2 +- + 20 files changed, 28 insertions(+), 46 deletions(-) + +commit 7865f96e97e6e225d19e9f75317196e62f378cd9 +Author: Martin Hurton +Date: Fri Nov 9 17:08:03 2012 +0100 + + Don't pass flags to xsend method + + src/dealer.cpp | 4 ++-- + src/dealer.hpp | 2 +- + src/dist.cpp | 13 +++++-------- + src/dist.hpp | 6 +++--- + src/lb.cpp | 5 +---- + src/lb.hpp | 2 +- + src/pair.cpp | 4 ++-- + src/pair.hpp | 2 +- + src/push.cpp | 4 ++-- + src/push.hpp | 2 +- + src/rep.cpp | 6 +++--- + src/rep.hpp | 2 +- + src/req.cpp | 6 +++--- + src/req.hpp | 2 +- + src/router.cpp | 5 +---- + src/router.hpp | 2 +- + src/socket_base.cpp | 6 +++--- + src/socket_base.hpp | 2 +- + src/sub.cpp | 4 ++-- + src/sub.hpp | 2 +- + src/xpub.cpp | 4 ++-- + src/xpub.hpp | 2 +- + src/xsub.cpp | 6 +++--- + src/xsub.hpp | 2 +- + 24 files changed, 43 insertions(+), 52 deletions(-) + +commit 793895c477cab1da4edd1565d9f70bc8f7d485a8 +Merge: d1e0889 b78800e +Author: Pieter Hintjens +Date: Fri Nov 9 06:51:04 2012 -0800 + + Merge pull request #466 from hurtonm/code_cleanup + + Simplify implementation of DEALER socket + +commit b78800e467cb56820f07484e25e2360254ce8c5b +Author: Martin Hurton +Date: Fri Nov 9 15:45:25 2012 +0100 + + Simplify implementation of DEALER socket + + src/dealer.cpp | 26 ++------------------------ + src/dealer.hpp | 6 ------ + 2 files changed, 2 insertions(+), 30 deletions(-) + +commit d1e0889ab02b093233bb4fae26723c9b8daecb3b +Merge: 3eaf4a9 6290054 +Author: Martin Hurton +Date: Fri Nov 9 06:19:23 2012 -0800 + + Merge pull request #463 from hintjens/master + + Addded ROUTER-ROUTER (back) as valid combination + +commit 3eaf4a967c6e9ea2dee9ec5f7bbb6753f4c17900 +Merge: de33978 19a8ea4 Author: Pieter Hintjens -Date: Wed Nov 21 19:10:12 2012 -0800 +Date: Fri Nov 9 06:13:18 2012 -0800 - Merge pull request #63 from hintjens/master + Merge pull request #465 from steve-o/cmake-minor - Added autogen.sh hint to INSTALL + Cmake minor version labeling and sync with 3.x -commit ae8c4a4adf7f6cc90fa84b4e37ae0587c4f891d2 -Author: Pieter Hintjens -Date: Thu Nov 22 12:09:31 2012 +0900 +commit 19a8ea4584f63d9fbdb695347f1d9b359f70698f +Author: Steven McCoy +Date: Fri Nov 9 08:54:14 2012 -0500 - Added autogen.sh hint + Update source list with raw codec. - INSTALL | 7 +++++++ - 1 file changed, 7 insertions(+) + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) -commit f9b6da0e78f3672e577e0eb15312d9601df99ccd -Merge: 65a29e8 f5a9c32 +commit 3ba401d7da3b01f97fd8a0409aace71d7f81a6a3 +Author: Steven McCoy +Date: Fri Nov 9 08:48:59 2012 -0500 + + Bring along CMake patchset from zeromq3-x for adding minor version to Windows labeling. + + CMakeLists.txt | 96 +++++++++++++++++++++++++++++----------------- + cmake/NSIS.template64.in | 20 +++++----- + 2 files changed, 70 insertions(+), 46 deletions(-) + +commit de339785f261ad85146dfdf23d6b6c89ea3011fa +Merge: ec08241 ea19b7b Author: Pieter Hintjens -Date: Sun Nov 18 23:33:54 2012 -0800 +Date: Fri Nov 9 05:19:05 2012 -0800 - Merge pull request #61 from hintjens/master + Merge pull request #464 from hurtonm/code_cleanup - Fixed doc for SNDHWM + Code cleanup -commit f5a9c328e99eddfc12ba057e2052fa94be83a0ec -Author: Pieter Hintjens -Date: Mon Nov 19 16:33:20 2012 +0900 +commit ea19b7b65801669308b776c644acb056fa29a4e9 +Author: Martin Hurton +Date: Fri Nov 9 14:12:11 2012 +0100 - Fixed ZMQ_SNDHWM description + Small cleanups - doc/zmq_setsockopt.txt | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/options.cpp | 2 +- + src/req.cpp | 1 - + src/session_base.cpp | 2 -- + src/socket_base.cpp | 14 +++++--------- + 4 files changed, 6 insertions(+), 13 deletions(-) -commit 65a29e85ee66c292b78d9fa1eef3ee577659377c -Merge: 7f81575 f0383bf -Author: Pieter Hintjens -Date: Sun Nov 18 17:22:24 2012 -0800 +commit 925a53066344f24279763205d01dde4dfcf3ff7c +Author: Martin Hurton +Date: Fri Nov 9 14:02:19 2012 +0100 - Merge pull request #60 from hintjens/master - - Fixed doc for SNDHWM + Use const_cast operator to remove const modifier -commit f0383bffad74a7377c880b5f6196ea42b477874f -Author: Pieter Hintjens -Date: Mon Nov 19 10:21:46 2012 +0900 + src/socket_base.cpp | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) - Clarified that SNDHWM is per part, not message +commit 82999f2d203295265f323ec44799296012959db4 +Author: Martin Hurton +Date: Fri Nov 9 13:49:27 2012 +0100 - doc/zmq_setsockopt.txt | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) + Don't forward identities to DEALER sockets -commit a7438de239bb1fc6925c9dd0fcbfa994aa55e2da -Author: John Muehlhausen -Date: Thu Nov 15 15:30:30 2012 -0600 + src/dealer.cpp | 12 +----------- + 1 file changed, 1 insertion(+), 11 deletions(-) - Issue 468 - - XPUB "verbose" mode excludes unsubscriptions +commit 6290054f00596a1b4b29b3a2e2c2d7c1a00549e3 +Author: Pieter Hintjens +Date: Fri Nov 9 21:10:34 2012 +0900 - src/xpub.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Added ROUTER-ROUTER as legal combination + + doc/zmq_socket.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 7f8157524525ee8544f6637fb9bcf4acb9b14915 -Merge: f976e8c c05a1b1 +commit ec0824142ec6bc4932919b53f5d511b6f983693e +Merge: 4e028ec c1e960b Author: Pieter Hintjens -Date: Wed Nov 14 02:38:02 2012 -0800 +Date: Thu Nov 8 17:02:50 2012 -0800 - Merge pull request #59 from hintjens/master + Merge pull request #462 from hurtonm/raw_fixes - Backported fix for LIBZMQ-450 + Fix raw mode on reconnect -commit c05a1b1f26497adf0f4adce2d62cc37c4349bba3 -Author: Lourens Naudé -Date: Wed Nov 14 09:51:24 2012 +0000 +commit c1e960b31d0a2ffdcb3016e7301b9da5ca612493 +Author: Martin Hurton +Date: Thu Nov 8 18:17:11 2012 +0100 - Backported fix for addresses on triggered events + Never exchange identities for sockets in raw mode + + Zeromq shall never send/receive socket identifiers for sockets in raw + mode. The existing implementation breaks this requirement after + reconnection. - src/socket_base.cpp | 120 ++++++++++++++++++++++++++++------------------------ - 1 file changed, 65 insertions(+), 55 deletions(-) + src/session_base.cpp | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) -commit f976e8cc98b15e987550ec0dd6417d07080547b6 -Merge: 69fa792 07122ee -Author: Pieter Hintjens -Date: Tue Nov 13 17:03:48 2012 -0800 +commit aec47b364225c347a7edca778185f407308c2e83 +Author: Martin Hurton +Date: Thu Nov 8 14:31:26 2012 +0100 - Merge pull request #58 from hintjens/master + Extend ZMQ_ROUTER_RAW test - Addded ROUTER-ROUTER and DEALER-DEALER (back) as valid combinations + Add test when the zeromq socket connects to a TCP socket. + The test now fails due to bug in the zeromq library. + + tests/test_raw_sock.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 103 insertions(+) -commit 07122eefec4d542745cc096138195a0f5d861a6b +commit 872ef76f3c45bcd1cc30eb45b8eb3545b70808f1 Author: Pieter Hintjens -Date: Wed Nov 14 10:03:11 2012 +0900 +Date: Wed Nov 7 17:23:37 2012 +0100 - Updated doc to allow DEALER-DEALER and ROUTER-ROUTER + Added DEALER-DEALER as legal combination - doc/zmq_socket.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + doc/zmq_socket.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 69fa792caeee4930d2a66c43bdfe580a20d1b29a -Merge: 36736e6 30738e1 +commit 4e028ecb30a9fcd8d8c26c9e92de8077c306ef93 +Merge: 5da9712 e51a1f0 Author: Pieter Hintjens -Date: Tue Nov 13 04:40:49 2012 -0800 +Date: Tue Nov 6 21:20:54 2012 -0800 - Merge pull request #57 from hintjens/master + Merge pull request #461 from hurtonm/code_cleanup - Backported fixes for LIBZMQ-465 - -commit 30738e1123550a511060d5b871218894e1a9cb33 -Author: Pieter Hintjens -Date: Tue Nov 13 21:39:59 2012 +0900 + session_base: code cleanup - Backported fix for ZMQ-465 +commit e51a1f04c9812bd77c4d0062d53f6874ec5efa62 +Author: Martin Hurton +Date: Tue Nov 6 23:47:43 2012 +0100 - src/decoder.hpp | 1 - - 1 file changed, 1 deletion(-) + session_base: code cleanup + + - add unlikely hints + - drop unnecessary assertion + - style fixes + + There is no need to require the 'more' flag in the provided message + structure be 0 when pulling message from the session. -commit 50b6da0c1cc992293603915aa62769e739a41b3f -Author: Martin Hurton -Date: Tue Nov 13 13:06:29 2012 +0100 + src/session_base.cpp | 30 +++++++++++++----------------- + 1 file changed, 13 insertions(+), 17 deletions(-) - Minor code cleanup +commit 5da971275dcccb7d41dadf2b8e030983d57c18aa +Merge: 80aef8d 777c38a +Author: Ian Barber +Date: Tue Nov 6 07:05:52 2012 -0800 - src/epoll.cpp | 5 +++-- - src/kqueue.cpp | 5 +++-- - src/poll.cpp | 6 +++--- - src/select.cpp | 5 +++-- - 4 files changed, 12 insertions(+), 9 deletions(-) + Merge pull request #460 from hintjens/master + + Renamed ZMQ_ROUTER_RAW_SOCK to ZMQ_ROUTER_RAW -commit 0c0a351fa5ffed3b66206eac6b77cef2fb316151 -Author: Martin Hurton -Date: Sat Nov 10 23:05:10 2012 +0100 +commit 777c38ae32a5d1799b3275d38ff8d587c885dd55 +Author: Pieter Hintjens +Date: Tue Nov 6 13:18:58 2012 +0100 - Backported fix for ZMQ-465 + Renamed raw option to ZMQ_ROUTER_RAW - src/decoder.cpp | 5 ----- - src/decoder.hpp | 31 +++++++++++++++++++++++++------ - src/i_decoder.hpp | 2 +- - src/stream_engine.cpp | 17 +++++++++++------ - src/stream_engine.hpp | 4 +++- - src/v1_decoder.cpp | 5 ----- - src/v1_decoder.hpp | 2 -- - 7 files changed, 40 insertions(+), 26 deletions(-) + doc/zmq_setsockopt.txt | 17 +++++++++++++++++ + include/zmq.h | 2 +- + src/router.cpp | 4 ++-- + tests/test_raw_sock.cpp | 2 +- + 4 files changed, 21 insertions(+), 4 deletions(-) -commit 36736e64cc10b4e2bfbea9b93eb4b4c8bdc8badd -Merge: 87c6ebb 50e9d72 +commit 80aef8dfda2bea1efcf20da983ca45cdd287385f +Merge: 1348924 41dc2e6 Author: Pieter Hintjens -Date: Tue Nov 6 04:01:22 2012 -0800 +Date: Tue Nov 6 00:47:59 2012 -0800 - Merge pull request #56 from hintjens/master + Merge pull request #459 from hurtonm/issue_459 - Backported fixes for LIBZMQ-459 + Resolve LIBZMQ-459 -commit 50e9d72dc4015e2c582bd7cadf5928e7e47dc38b +commit 41dc2e60493ff1f10a8d2c4c8ae41f55ee4c327e Author: Martin Hurton Date: Fri Nov 2 11:11:14 2012 +0100 @@ -998,19 +8556,19 @@ Ref: https://zeromq.jira.com/browse/LIBZMQ-459 - src/stream_engine.cpp | 9 ++++++++- + src/stream_engine.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) -commit 87c6ebb135f4a774dbd13677b269b0ba0b98249e -Merge: ed9c744 4527d8d -Author: Pieter Hintjens -Date: Mon Nov 5 09:44:33 2012 -0800 +commit 13489242513a6b1b67c23a5baa39ed9ab4ca7cea +Merge: 2deb2e0 f67a199 +Author: Martin Hurton +Date: Mon Nov 5 09:41:56 2012 -0800 - Merge pull request #55 from vortechs2000/remove_cpp_comments_from_zmq_h + Merge pull request #458 from vortechs2000/remove_cpp_comments_from_zmq_h Older versions of C compilers don't like C++ comments -commit 4527d8db6f970e2b3f788b2dd04b7cff4803e11a +commit f67a19933202c01a1ead80aa2943356c8e7915bf Author: AJ Lewis Date: Mon Nov 5 11:27:13 2012 -0600 @@ -1018,58 +8576,106 @@ There's no need to exclude older compilers by putting C++ style comments in the C API header. - - Signed-off-by: AJ Lewis - include/zmq.h | 6 +++--- + include/zmq.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -commit ed9c7440d2cdf8a9100f06684ee82c19d9e7cc94 -Merge: f56c6fa fec6497 +commit 2deb2e095eead548f52e837d679e17a9d96574d2 +Merge: cdd7cd1 1e60d17 Author: Pieter Hintjens -Date: Thu Nov 1 08:43:41 2012 -0700 +Date: Thu Nov 1 21:47:23 2012 -0700 + + Merge pull request #457 from mjasperse/patch-1 + + Update builds/msvc/libzmq/libzmq.vcproj + +commit 1e60d17a23ce943ac7575185acfe5049e70c7e2a +Author: mjasperse +Date: Fri Nov 2 11:29:46 2012 +1100 + + Update builds/msvc/libzmq/libzmq.vcproj + + Without the LinkDLL statement, command-line compile using vcbuild attempts to compile EXE and complains about entrypoint + The LinkDLL statement forces the linker to produce desired output - Merge pull request #54 from hintjens/master + builds/msvc/libzmq/libzmq.vcproj | 3 +++ + 1 file changed, 3 insertions(+) + +commit cdd7cd10c95897c299febb1a6856ca9cdc5579f2 +Merge: 04e716a 7c66e8f +Author: Ian Barber +Date: Thu Nov 1 07:04:17 2012 -0700 + + Merge pull request #456 from hurtonm/issue_464 - Backported fixes for LIBZMQ-464 + Resolve LIBZMQ-464 -commit fec6497976a37b86cb0214303d6260c07c1f7341 +commit 7c66e8f807881e0e98d6b8b5f28908777375b4c5 Author: Martin Hurton Date: Thu Nov 1 14:37:42 2012 +0100 Resolve LIBZMQ-464 - src/msg.cpp | 9 ++++++++- + src/msg.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) -commit f56c6faf657d2c6571313716ef77d5dc5f0ff13b -Merge: fff2670 1d9a3fd -Author: Pieter Hintjens -Date: Tue Oct 30 20:38:56 2012 -0700 +commit 04e716ac9967c6d3318c2db3bdb9d83f54a1db60 +Merge: 0404b3b 79da450 +Author: Ian Barber +Date: Wed Oct 31 01:16:05 2012 -0700 - Merge pull request #53 from hintjens/master + Merge pull request #455 from hintjens/master - Fixed formatting on zmq_getsockopt.txt + zmq_getsockopt man page was malformatted -commit 1d9a3fd480aa60a63d21792d3aefcad01215f133 +commit 79da450b8b3e4d100b3fa2eaca467850f481adb4 Author: Pieter Hintjens -Date: Wed Oct 31 04:38:19 2012 +0100 +Date: Wed Oct 31 04:28:53 2012 +0100 Fixed formatting in man page - doc/zmq_getsockopt.txt | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) + .gitignore | 1 + + doc/zmq_getsockopt.txt | 16 ++++++++-------- + 2 files changed, 9 insertions(+), 8 deletions(-) + +commit 0404b3b60a8e1b95c928f26c304b1ee7ff7ffa7c +Merge: abbe34c 9d8eb1f +Author: Pieter Hintjens +Date: Tue Oct 30 04:24:21 2012 -0700 + + Merge pull request #454 from hurtonm/code_cleanup + + Style fixes + +commit 9d8eb1f9b94da7330b7c7ef2735c6a329a640a71 +Author: Martin Hurton +Date: Tue Oct 30 12:18:13 2012 +0100 + + Style fixes -commit fff267071dc89a43470920d10666ed2f1d29c9dd -Merge: 08b0af5 ec8d935 + src/decoder.hpp | 5 +- + src/i_decoder.hpp | 2 +- + src/options.hpp | 2 +- + src/raw_decoder.cpp | 2 +- + src/raw_decoder.hpp | 2 +- + src/raw_encoder.cpp | 1 - + src/raw_encoder.hpp | 1 - + src/router.cpp | 36 ++++++------- + src/session_base.cpp | 14 ++--- + src/stream_engine.cpp | 17 ++++--- + tests/test_raw_sock.cpp | 129 +++++++++++++++++++++-------------------------- + 11 files changed, 99 insertions(+), 112 deletions(-) + +commit abbe34cdc2c5889e3de021bdc237a297ffa654a6 +Merge: 4bc405a d16e0a5 Author: Pieter Hintjens -Date: Tue Oct 30 03:13:50 2012 -0700 +Date: Tue Oct 30 03:12:46 2012 -0700 - Merge pull request #52 from hintjens/master + Merge pull request #453 from hurtonm/issue_458 - Backported fixes for LIBZMQ-458 + Resolve LIBZMQ-458 -commit ec8d935acc0127d9a344ef2308641ddb37131e92 +commit d16e0a534263eb80331b4b79c583b16e726a58dd Author: Martin Hurton Date: Tue Oct 30 11:03:41 2012 +0100 @@ -1077,61 +8683,169 @@ Ref: https://zeromq.jira.com/browse/LIBZMQ-458 - tests/test_router_mandatory.cpp | 2 +- + tests/test_router_mandatory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 08b0af50752c4c707b53119a120cd9a6af323f5b -Merge: b0576e8 5b9de45 +commit 4bc405a366db75567dbc3175b8bb3578cce7685b +Merge: 7523b9e 83387b4 +Author: Pieter Hintjens +Date: Mon Oct 29 21:00:15 2012 -0700 + + Merge pull request #452 from hshardeesi/master + + New socket option (ZMQ_ROUTER_RAW_SOCK) for ZMQ_ROUTER sockets + +commit 7523b9ed29869b7bbe8d5b9c567675f756b565ff +Merge: dcf0693 3aa3032 Author: Pieter Hintjens -Date: Mon Oct 29 22:29:33 2012 -0700 +Date: Mon Oct 29 03:21:33 2012 -0700 - Merge pull request #51 from hintjens/master + Merge pull request #451 from hurtonm/use_correct_types_in_stream_engine - Backported fixes for LIBZMQ-447 + Use correct types when returning value in read/write methods -commit b0576e8c543507ff0d13326f53cb0a34b859e207 -Merge: 2996b25 a5da31e +commit dcf0693d6eb20e143d38a58fb389c2d9068a4080 +Merge: 19f77a1 03deb2c Author: Pieter Hintjens -Date: Mon Oct 29 22:28:16 2012 -0700 +Date: Mon Oct 29 03:21:09 2012 -0700 - Merge pull request #47 from steve-o/master + Merge pull request #450 from hurtonm/issue_447 - Improve PGM build integration for Windows + Resolve LIBZMQ-447 + +commit 3aa30329d18109cfdfefbacfb53cbc927ce7a964 +Author: Martin Hurton +Date: Sat Sep 29 13:28:25 2012 +0200 + + Use correct types when returning value in read/write methods + + src/stream_engine.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 5b9de45a89b46f9b2a07236efcee7182ff1c2dee +commit 03deb2c97aa6447005d49128f24e253a941b98d7 Author: Martin Hurton Date: Mon Oct 29 10:09:00 2012 +0100 Resolve LIBZMQ-447 - src/socket_base.cpp | 10 +++++----- + src/socket_base.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) -commit 2996b25039a7e30de4c186fb376b58f5671875d2 -Merge: ceb388e 09c56c4 +commit 83387b4073233955c5033d377e6d21e74fafc793 +Author: Hardeep +Date: Mon Oct 29 00:03:36 2012 -0700 + + Added support for non-zmq tcp client connections to router socket. + - Created a new option ZMQ_ROUTER_RAW_SOCK + - Added new raw_encoder and raw_decoder to receive and send messages in raw form to remote client + - Added test case file tests/test_raw_sock.cpp + + o To create a raw router sock set the ZMQ_ROUTER_RAW_SOCK option + o ZMQ_MSGMORE flag is ignored for non-id messages + o To terminate a remote connection send id message followed by zero length data message + + AUTHORS | 1 + + include/zmq.h | 1 + + src/Makefile.am | 6 +- + src/decoder.hpp | 5 ++ + src/i_decoder.hpp | 3 +- + src/options.cpp | 1 + + src/options.hpp | 3 + + src/raw_decoder.cpp | 99 ++++++++++++++++++++++++++++ + src/raw_decoder.hpp | 69 ++++++++++++++++++++ + src/raw_encoder.cpp | 87 ++++++++++++++++++++++++ + src/raw_encoder.hpp | 69 ++++++++++++++++++++ + src/router.cpp | 74 +++++++++++++++------ + src/router.hpp | 1 + + src/session_base.cpp | 14 ++++ + src/stream_engine.cpp | 42 +++++++++--- + tests/Makefile.am | 4 +- + tests/test_raw_sock.cpp | 167 +++++++++++++++++++++++++++++++++++++++++++++++ + 17 files changed, 615 insertions(+), 31 deletions(-) + +commit 19f77a1ccfaf431afec221c5a66888541a48152f +Merge: 6b45262 0bf8a4d +Author: Ian Barber +Date: Sat Oct 27 18:25:42 2012 -0700 + + Merge pull request #449 from hintjens/master + + Fixed code formatting + +commit 0bf8a4d2d2474a738f883db718a4d65beb7138e9 Author: Pieter Hintjens -Date: Fri Oct 26 17:45:30 2012 -0700 +Date: Sun Oct 28 07:36:18 2012 +0900 + + Code formatting + + src/xsub.cpp | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 6b45262086133cc9f9e130de0c656543d063078a +Merge: bb59dc1 500f6cf +Author: Pieter Hintjens +Date: Sat Oct 27 14:01:48 2012 -0700 + + Merge pull request #448 from jgm-radez/master + + resolve issue 456 + +commit 500f6cffe36504a70980a1ac4904fe4e9c3b727c +Author: John Muehlhausen +Date: Sat Oct 27 15:51:03 2012 -0500 + + patch for issue 456 + + Do not filter out duplicate subscriptions on the XSUB side of + XSUB/XPUB, so that ZMQ_XPUB_VERBOSE doesn't get blocked by forwarding + devices (as long as the devices all use ZMQ_XPUB_VERBOSE) + + src/xsub.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) - Merge pull request #49 from hintjens/master +commit bb59dc1b2a426a4f9be9a84ace774e8372dbc43a +Merge: 0b13872 171897f +Author: Ian Barber +Date: Fri Oct 26 19:50:32 2012 -0700 + + Merge pull request #447 from hintjens/master - Backported fixes for LIBZMQ-452 and LIBZMQ-415 + Cleanups to man pages -commit 09c56c44932eaf309bcd74f2400bc2b204d9bcec +commit 171897f4e8550e9f339e5e3607335c5e8d6b9d1f Author: Pieter Hintjens -Date: Sat Oct 27 09:45:01 2012 +0900 +Date: Sat Oct 27 09:43:19 2012 +0900 Cleanups to man pages - doc/zmq_bind.txt | 49 +++++++++++++---------- - doc/zmq_connect.txt | 57 ++++++++++++++------------- - doc/zmq_inproc.txt | 28 ++++++------- - doc/zmq_ipc.txt | 39 ++++++++++-------- - doc/zmq_pgm.txt | 32 +++++++-------- - doc/zmq_socket.txt | 52 ++++++++++++------------ - doc/zmq_tcp.txt | 111 ++++++++++++---------------------------------------- + doc/zmq_bind.txt | 49 +++++++++++++---------- + doc/zmq_connect.txt | 57 +++++++++++++------------- + doc/zmq_inproc.txt | 28 ++++++------- + doc/zmq_ipc.txt | 39 ++++++++++-------- + doc/zmq_pgm.txt | 32 +++++++-------- + doc/zmq_socket.txt | 52 ++++++++++++------------ + doc/zmq_tcp.txt | 111 ++++++++++++--------------------------------------- 7 files changed, 158 insertions(+), 210 deletions(-) -commit d9d7d9be545635b929d6803b94e70a8caf564dd5 +commit 0b13872ff4483c72e586abbd93e500f35d0f7440 +Merge: 01be614 ef79492 +Author: Pieter Hintjens +Date: Thu Oct 25 02:21:31 2012 -0700 + + Merge pull request #446 from hurtonm/issue_452 + + Resolve LIBZMQ-452 + +commit 01be614593e4cc44403c6274cd9e307b0ba3ce49 +Merge: d2ee38a 4824237 +Author: Pieter Hintjens +Date: Thu Oct 25 02:15:46 2012 -0700 + + Merge pull request #445 from hurtonm/issue_417 + + Resolve LIBZMQ-417 + +commit ef794925b437c643a3a0d5681eb22e008975ebe2 Author: Martin Hurton Date: Wed Oct 24 23:46:58 2012 +0200 @@ -1139,10 +8853,10 @@ Ref: https://zeromq.jira.com/browse/LIBZMQ-452 - tests/test_connect_delay.cpp | 9 +++++---- + tests/test_connect_delay.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) -commit d95f8c5f5575dd88b475fda2ad94fa7fb783d923 +commit 4824237761c79a8e21b350fd32b1ef177996e331 Author: Martin Hurton Date: Wed Oct 24 22:05:45 2012 +0200 @@ -1150,19 +8864,19 @@ Ref: https://zeromq.jira.com/browse/LIBZMQ-417 - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit ceb388e3715df5c8ae0c1081af78780d9099e0a0 -Merge: c391966 888c1bd +commit d2ee38acfe732ac1216699da51609fdb4d24fc97 +Merge: 2675a9d 422c418 Author: Pieter Hintjens -Date: Tue Oct 23 17:01:36 2012 -0700 +Date: Wed Oct 24 06:50:02 2012 -0700 - Merge pull request #48 from vortechs2000/fix_aix + Merge pull request #444 from vortechs2000/fix_aix Fix Build Regression #449: Move socket_base.hpp and err.hpp after poll.h include -commit 888c1bdb5b1f87184bee882d42a42a75f140a410 +commit 422c418a15b69001f679e6b51f1cfffbd2ded625 Author: AJ Lewis Date: Tue Oct 23 16:18:36 2012 -0500 @@ -1172,132 +8886,151 @@ chain, so must be included after poll.h is included for builds to work on AIX. - src/proxy.cpp | 7 +++++-- + src/proxy.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -commit a5da31eb0766cac578941f37cc7a94f5b7bcebcf -Author: Steven McCoy -Date: Sat Oct 20 14:56:00 2012 -0400 - - Update NSIS x64 install to use different registry keys to x86. +commit 2675a9d31b9fb74c671c25ba7769831c11a2fa70 +Merge: 7abb6cc 4ba34c9 +Author: Ian Barber +Date: Tue Oct 23 18:02:48 2012 -0700 - cmake/NSIS.template64.in | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) + Merge pull request #443 from hintjens/master + + Fixed whitespace and style -commit bbff2fc3f82eee90767d5aba52d4212cd8e283ff -Author: Steven McCoy -Date: Sat Oct 20 14:49:27 2012 -0400 +commit 4ba34c9d70986f17429a06c0171005ad05b66ef3 +Author: Pieter Hintjens +Date: Wed Oct 24 09:18:52 2012 +0900 - Expand Windows PGM build integration to support multiple CRTs and use registered versions. - Add libpgm to linker as now removed upstream. - Add version details to ZeroMQ library names. - Add multi-CRT dependencies to packaging. - Add x64 postfix to Win64 packages to avoid conflict with x86 installs. + Whitespace and style fixes - CMakeLists.txt | 96 ++++++++++++++++++++++++++++++++++++---------------------- - 1 file changed, 60 insertions(+), 36 deletions(-) + src/address.cpp | 12 +-- + src/ipc_connecter.cpp | 3 +- + src/mtrie.cpp | 23 +++-- + src/pgm_sender.cpp | 14 +-- + src/pgm_socket.cpp | 9 +- + src/pipe.cpp | 41 +++++---- + src/poller_base.cpp | 3 +- + src/router.cpp | 3 +- + src/session_base.cpp | 3 +- + src/signaler.cpp | 3 +- + src/socket_base.cpp | 148 ++++++++++++++++-------------- + src/sub.cpp | 3 +- + src/tcp_connecter.cpp | 3 +- + src/trie.cpp | 239 +++++++++++++++++++++++++------------------------ + src/zmq.cpp | 22 ++--- + 15 files changed, 282 insertions(+), 247 deletions(-) -commit c391966fbbb9021df49c9e1794e65272abbd4226 -Merge: 30e2da0 24ea41c +commit 7abb6ccb6aa1d95d6e47d079d792fbd5faef5e29 +Merge: 7f63fc6 0666063 Author: Ian Barber -Date: Fri Oct 19 15:05:41 2012 -0700 +Date: Fri Oct 19 15:05:23 2012 -0700 - Merge pull request #46 from hintjens/master + Merge pull request #442 from hintjens/master Fixed build regression #449 -commit 24ea41ce7a4efcee2c259ff6190dbb9dd57379a9 +commit 066606322c131f73f5fa9a6e673fd0df6771e540 Author: Pieter Hintjens -Date: Fri Oct 19 16:23:59 2012 +0900 +Date: Fri Oct 19 16:23:21 2012 +0900 Added unbind/disconnect man pages, notes to deprecated methods - doc/Makefile.am | 17 ++++++++++------- - doc/zmq_recvmsg.txt | 2 ++ - doc/zmq_sendmsg.txt | 1 + + doc/Makefile.am | 17 ++++++++++------- + doc/zmq_recvmsg.txt | 2 ++ + doc/zmq_sendmsg.txt | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) -commit d0eed09f6fb378efcec9753510386d58ac0d1c72 +commit ee21fac8b8a276b084547ac5dc8e0df4b13ae88b Author: Pieter Hintjens -Date: Fri Oct 19 15:16:15 2012 +0900 +Date: Fri Oct 19 15:16:36 2012 +0900 Added ZMQ_FAIL_UNROUTABLE alias back as deprecated - include/zmq.h | 1 + + include/zmq.h | 1 + 1 file changed, 1 insertion(+) -commit 5e4f858c8e6ccaf28a06365baf6760c9a07abd4a +commit a3889d00c346bccb47b67ebf4bf3839b00b0821f Author: Pieter Hintjens -Date: Fri Oct 19 15:10:34 2012 +0900 +Date: Fri Oct 19 15:09:52 2012 +0900 Fixed issue #451 - doc/zmq_setsockopt.txt | 7 ++----- - src/router.cpp | 2 +- + doc/zmq_setsockopt.txt | 7 ++----- + src/router.cpp | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) -commit bdbdf8bb7edbbc8cf29f3b034e55272668a39ae2 +commit 45c063725bbf577b7f577f7f3b4a01077bacc15a Author: Pieter Hintjens -Date: Thu Oct 18 11:34:16 2012 +0900 +Date: Thu Oct 18 11:32:13 2012 +0900 Fixed issue #449 - src/proxy.cpp | 28 +++++++++++++++++++++++++++- + src/proxy.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) -commit 30e2da05a10d7307e158313c2cf45542c9d2fef2 -Merge: da7427b 2fe4a35 +commit 7f63fc6579dc335553d4e8f8ece9d7a30909e67c +Merge: 9bab346 9681157 Author: Ian Barber -Date: Wed Oct 17 19:21:38 2012 -0700 +Date: Wed Oct 17 19:21:26 2012 -0700 - Merge pull request #45 from hintjens/master + Merge pull request #441 from hintjens/master Fixed build regression -commit 2fe4a355fd3fdae3881e898f22ec1c8d31cdf10b +commit 96811575c303e92d4926d841240192aaf6f2e41c Author: Pieter Hintjens -Date: Thu Oct 18 11:10:21 2012 +0900 +Date: Thu Oct 18 11:04:51 2012 +0900 Fixed issue #448 - src/socket_base.cpp | 3 ++- - src/socket_base.hpp | 1 + + src/socket_base.cpp | 3 ++- + src/socket_base.hpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) -commit da7427b771f2032664de23cfb4901907deeea708 -Merge: 05bd3ea e18b69b +commit 9bab3466904884f41be56cb5474859be16a0dad3 +Merge: 6e676af 3a43bd7 Author: Ian Barber -Date: Mon Oct 15 23:32:25 2012 -0700 +Date: Mon Oct 15 23:32:16 2012 -0700 - Merge pull request #44 from hintjens/master + Merge pull request #440 from hintjens/master Packages did not build - fixed -commit e18b69bfa1e710078435cee730e374d622befaa0 +commit 3a43bd735426543334902dbd0569a45dbb493e50 Author: Pieter Hintjens -Date: Tue Oct 16 10:00:43 2012 +0900 +Date: Tue Oct 16 10:01:26 2012 +0900 Several include files were missing - src/Makefile.am | 9 +++++++++ + src/Makefile.am | 9 +++++++++ 1 file changed, 9 insertions(+) -commit 05bd3ea8b90a0e6ec38ca3d236a78908b0b90333 -Merge: a7b2e9d 7735322 +commit 6e676af45edfb0c17607625531befed0098b850f +Merge: cdcaca2 351eff5 Author: Ian Barber -Date: Mon Oct 15 09:46:59 2012 -0700 +Date: Mon Oct 15 04:33:24 2012 -0700 - Merge pull request #43 from hintjens/master + Merge pull request #439 from hintjens/master - Updated zeromq3-x version to 3.2.2 for next release + Updated master version to 3.2.2 + +commit 351eff5448eba050dc7c9d53d07b2b057399ab7d +Author: Pieter Hintjens +Date: Mon Oct 15 13:23:00 2012 +0900 + + Bumped version to 3.3.0 + + include/zmq.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 773532215148bdee4dbc68d9c54c06c929811869 +commit 8e7892b72fc4dfcf8fdb462d1f21afa55153656a Author: Pieter Hintjens -Date: Mon Oct 15 13:07:52 2012 +0900 +Date: Mon Oct 15 13:06:19 2012 +0900 - Updated version for next release + Upated version for next release - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a7b2e9d017ae8aa020a88cc91d1d5345eb12e82b @@ -1306,7 +9039,7 @@ Upated NEWS for 3.2.1 - NEWS | 39 +++++++++++++++++++++++++++++++++++++++ + NEWS | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) commit cdcaca2dc4db0ac4ef1b2ff427e43ceb4740e72c @@ -1324,7 +9057,7 @@ Update to libzmq source set. - CMakeLists.txt | 5 ++++- + CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 7a1a5f9f7f3d0e3e382b7105ba7f35dd1e6b4475 @@ -1333,7 +9066,7 @@ Update AsciiDoc version details with CMake detected ZeroMQ version. - CMakeLists.txt | 2 +- + CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8ddb9fc7ea3dc8fb5ee77f1c2e683e7e7e6e94b4 @@ -1342,7 +9075,7 @@ Enable parallel make and LTO by default. - CMakeLists.txt | 10 ++++++++++ + CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) commit dfe7d15a889a097aa653913ca538b9b6023db2f0 @@ -1351,7 +9084,7 @@ MSVC11 not getting defined in CMake 2.8.9, punt to version string. - cmake/Modules/TestZMQVersion.cmake | 6 +++--- + cmake/Modules/TestZMQVersion.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit ebe4eab477acba7b65b1465f38e9d8fd4646b602 @@ -1360,8 +9093,8 @@ Detect compiler version to tag libraries. - CMakeLists.txt | 10 +++++----- - cmake/Modules/TestZMQVersion.cmake | 10 +++++++++- + CMakeLists.txt | 10 +++++----- + cmake/Modules/TestZMQVersion.cmake | 10 +++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) commit 046c8ec7ebc4dc3bebc50880d8a29967b81dc6cb @@ -1370,8 +9103,8 @@ Add metadata to CMake options; mark executables advanced to hide from default view; fix WoW64 redirections. - CMakeLists.txt | 18 +++++++++--------- - cmake/NSIS.template64.in | 12 ++++++++++-- + CMakeLists.txt | 18 +++++++++--------- + cmake/NSIS.template64.in | 12 ++++++++++-- 2 files changed, 19 insertions(+), 11 deletions(-) commit 56bb3df1f6d1d44b1516cfe9884a41d929a1f1fb @@ -1380,13 +9113,13 @@ Detect ZeroMQ version at build time; hide NSIS dependencies in new cmake folder. - CMakeLists.txt | 9 +- - NSIS.template32.in | 952 ------------------------------------- - NSIS.template64.in | 952 ------------------------------------- - cmake/Modules/TestZMQVersion.cmake | 27 ++ - cmake/Modules/zmq_version.cpp | 31 ++ - cmake/NSIS.template32.in | 952 +++++++++++++++++++++++++++++++++++++ - cmake/NSIS.template64.in | 952 +++++++++++++++++++++++++++++++++++++ + CMakeLists.txt | 9 +- + NSIS.template32.in | 952 ------------------------------------ + NSIS.template64.in | 952 ------------------------------------ + cmake/Modules/TestZMQVersion.cmake | 27 + + cmake/Modules/zmq_version.cpp | 31 ++ + cmake/NSIS.template32.in | 952 ++++++++++++++++++++++++++++++++++++ + cmake/NSIS.template64.in | 952 ++++++++++++++++++++++++++++++++++++ 7 files changed, 1965 insertions(+), 1910 deletions(-) commit b42e45adb85e6f4dc148f187875ccb8aa63c2574 @@ -1395,7 +9128,7 @@ Make OpenPGM a CMake option, default disabled. - CMakeLists.txt | 47 +++++++++++++++++++++++++---------------------- + CMakeLists.txt | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) commit c53cf0d2392c8e957008c0c405bff053002f663e @@ -1404,7 +9137,7 @@ Minor refactor of CMake build script. - CMakeLists.txt | 28 ++++++++++++++++++++++------ + CMakeLists.txt | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) commit 000d1a5fba4d51aacedb4710367c1c75bc71f788 @@ -1415,7 +9148,7 @@ Removed check for COPYING.txt - CMakeLists.txt | 2 +- + CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 58f7c2179f2db84a87b734d6262ed3bbae342346 @@ -1424,9 +9157,9 @@ added artificacts for windows and openpgm build - CMakeLists.txt | 339 +++++++++++++++++++ - NSIS.template32.in | 952 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - NSIS.template64.in | 952 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + CMakeLists.txt | 339 +++++++++++++++++++ + NSIS.template32.in | 952 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + NSIS.template64.in | 952 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2243 insertions(+) commit 73537e67e39f39b0fe10e02490c0bfb1ff99ce3d @@ -1444,7 +9177,7 @@ fixed trailing whitespace - src/pgm_socket.cpp | 6 +++--- + src/pgm_socket.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a438e63498e0a357da8e20a2d68f90938d58ac11 @@ -1453,7 +9186,7 @@ explicit comments on multicast loopback - src/pgm_socket.cpp | 4 ++-- + src/pgm_socket.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 11c22912d71528958c1111b29d0a9116535409e3 @@ -1462,7 +9195,7 @@ commented out TOS related opt for PGM - src/pgm_socket.cpp | 3 ++- + src/pgm_socket.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 1ef63bc2adc3d50c2e5e5fb7b5c9f9c50cb469f8 @@ -1480,14 +9213,14 @@ Renamed ZMQ_ROUTER_BEHAVIOR to ZMQ_ROUTER_MANDATORY for clarity - .gitignore | 2 +- - doc/zmq_setsockopt.txt | 33 +++++++++++----------- - include/zmq.h | 5 +++- - src/router.cpp | 10 ++++--- - src/router.hpp | 2 +- - tests/Makefile.am | 4 +-- - tests/test_router_behavior.cpp | 62 ----------------------------------------- - tests/test_router_mandatory.cpp | 62 +++++++++++++++++++++++++++++++++++++++++ + .gitignore | 2 +- + doc/zmq_setsockopt.txt | 33 ++++++++++----------- + include/zmq.h | 5 +++- + src/router.cpp | 10 ++++--- + src/router.hpp | 2 +- + tests/Makefile.am | 4 +-- + tests/test_router_behavior.cpp | 62 --------------------------------------- + tests/test_router_mandatory.cpp | 62 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 92 insertions(+), 88 deletions(-) commit db690e3d99d25731f72ee130fe60b7050176b45d @@ -1505,10 +9238,10 @@ Fixed issue #443 - doc/zmq_setsockopt.txt | 14 ++++++++++++++ - include/zmq.h | 1 + - src/xpub.cpp | 18 +++++++++++++++++- - src/xpub.hpp | 5 +++++ + doc/zmq_setsockopt.txt | 14 ++++++++++++++ + include/zmq.h | 1 + + src/xpub.cpp | 18 +++++++++++++++++- + src/xpub.hpp | 5 +++++ 4 files changed, 37 insertions(+), 1 deletion(-) commit e41e071b052bf7c6cfad8870ed7bbc1c2c5300da @@ -1526,7 +9259,7 @@ Minor documentation fix: zmq_msg_recv instead of zmq_msg_send - doc/zmq_msg_recv.txt | 4 ++-- + doc/zmq_msg_recv.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d6e0ae24f32707810162edbde42dbc77d1720da8 @@ -1535,8 +9268,8 @@ Prepared for release 3.2.1 - NEWS | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - include/zmq.h | 4 +-- + NEWS | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 4 +-- 2 files changed, 100 insertions(+), 2 deletions(-) commit 2440863292c7af3e6d5621a00aa320e157eaa505 @@ -1559,8 +9292,8 @@ If accept() call fails due to insuffient OS resources the new connection is rejected. - src/ipc_listener.cpp | 4 +++- - src/tcp_listener.cpp | 9 +++++++-- + src/ipc_listener.cpp | 4 +++- + src/tcp_listener.cpp | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) commit 81482ec84a812f996e95572f70c50be205b92df3 @@ -1580,7 +9313,7 @@ See also https://zeromq.jira.com/browse/LIBZMQ-433 - src/stream_engine.cpp | 26 +++++++++++++++++++------- + src/stream_engine.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) commit 343ec62282e614cbc01aefb374bd3c0f15a6473a @@ -1611,7 +9344,7 @@ This patch makes a REP socket to discard and silently ignore such malformed requests. - src/rep.cpp | 24 ++++++++++++++++++------ + src/rep.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) commit a49e392e34d18643257b974553858ced6fc38188 @@ -1631,7 +9364,7 @@ Visual Studio 2008 compiler defines min/max as macros in its even if is not included at all. This patch defines NOMINMAX to remove these macros and fix compilation on Visual Studio 2008. - src/encoder.hpp | 6 ++++++ + src/encoder.hpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 396b4e3046ad32ec9ee40586894c7df3307cdc67 @@ -1642,8 +9375,8 @@ This patch fixes the two headers added recently to include our own "stdint.hpp" instead of system because the latter is not available in Visual Studio versions prior to 2010. - src/i_decoder.hpp | 2 +- - src/i_encoder.hpp | 2 +- + src/i_decoder.hpp | 2 +- + src/i_encoder.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 4de27b6c10066006a0b7737138e3d9a381c80b84 @@ -1654,7 +9387,7 @@ This patch updates MSVC2008 project after device was renamed to proxy and new files were added (tcp.cpp, v1_encoder.cpp and v1_decoder.cpp). - builds/msvc/libzmq/libzmq.vcproj | 40 ++++++++++++++++++++++++++++++++++++---- + builds/msvc/libzmq/libzmq.vcproj | 40 ++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) commit 2eb849ccda48ceb2f2a765c8c80d1e90ecbfd780 @@ -1674,8 +9407,8 @@ This patch updates MSVC2010 project after device was renamed to proxy and new files were added (v1_encoder.cpp and v1_decoder.cpp). - builds/msvc/libzmq/libzmq.vcxproj | 8 +++++++- - builds/msvc/libzmq/libzmq.vcxproj.filters | 24 +++++++++++++++++++++--- + builds/msvc/libzmq/libzmq.vcxproj | 8 +++++++- + builds/msvc/libzmq/libzmq.vcxproj.filters | 24 +++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) commit 9056c13e1ebbfd7798ddd7b5cfdb9950933c710e @@ -1686,7 +9419,7 @@ Visual Studio didn’t have until 2010, therefore we had a bunch of typedefs for int8_t, int16_t and the likes in "stdint.hpp". This patch limits these typedefs to Visual Studio versions older than 2010 and uses compiler-shipped on 2010 and newer. - src/stdint.hpp | 2 +- + src/stdint.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ff264cb0442955f7b5da389fc571b6656374c5fc @@ -1707,7 +9440,7 @@ Fixes reported issue with PGM receiver on 32bit Suse where asserts were hit due to the msg flags not being zeroed. - src/pgm_receiver.cpp | 1 + + src/pgm_receiver.cpp | 1 + 1 file changed, 1 insertion(+) commit 2a209140f7cac86f8d9312b30222262197aa2bf4 @@ -1743,7 +9476,7 @@ This change allows forward declaration of struct zmq_msg_t. - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8a57e4a5d777c7da6471de958838eb0cd943802e @@ -1759,26 +9492,26 @@ Significantly reworked the monitoring infrastructure with a more granular per socket API and to play well with monitoring endpoints in application threads - doc/Makefile.am | 4 +- - doc/zmq_ctx_set_monitor.txt | 223 ---------------------------------- - doc/zmq_socket_monitor.txt | 288 +++++++++++++++++++++++++++++++++++++++++++ - include/zmq.h | 19 +-- - src/ctx.cpp | 70 +---------- - src/ctx.hpp | 8 -- - src/ipc_connecter.cpp | 9 +- - src/ipc_connecter.hpp | 3 + - src/ipc_listener.cpp | 10 +- - src/session_base.cpp | 13 +- - src/session_base.hpp | 4 +- - src/socket_base.cpp | 181 +++++++++++++++++++++++++-- - src/socket_base.hpp | 26 +++- - src/stream_engine.cpp | 6 +- - src/stream_engine.hpp | 4 + - src/tcp_connecter.cpp | 9 +- - src/tcp_connecter.hpp | 3 + - src/tcp_listener.cpp | 8 +- - src/zmq.cpp | 20 +-- - tests/test_monitor.cpp | 290 +++++++++++++++++++++++++++++++++----------- + doc/Makefile.am | 4 +- + doc/zmq_ctx_set_monitor.txt | 223 --------------------------------- + doc/zmq_socket_monitor.txt | 288 ++++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 19 +-- + src/ctx.cpp | 70 +---------- + src/ctx.hpp | 8 -- + src/ipc_connecter.cpp | 9 +- + src/ipc_connecter.hpp | 3 + + src/ipc_listener.cpp | 10 +- + src/session_base.cpp | 13 +- + src/session_base.hpp | 4 +- + src/socket_base.cpp | 181 +++++++++++++++++++++++++-- + src/socket_base.hpp | 26 +++- + src/stream_engine.cpp | 6 +- + src/stream_engine.hpp | 4 + + src/tcp_connecter.cpp | 9 +- + src/tcp_connecter.hpp | 3 + + src/tcp_listener.cpp | 8 +- + src/zmq.cpp | 20 +-- + tests/test_monitor.cpp | 290 +++++++++++++++++++++++++++++++++---------- 20 files changed, 767 insertions(+), 431 deletions(-) commit d981c91f809a91a7db66375703e8d888796b9f55 @@ -1796,7 +9529,7 @@ Update doc/zmq_msg_get.txt - doc/zmq_msg_get.txt | 5 +++-- + doc/zmq_msg_get.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 86eb7bcae09fd9182d89d6e8b92ed0e2e8665fc4 @@ -1816,7 +9549,7 @@ This test case uses pthreads, but doesn't include the header. - tests/test_connect_delay.cpp | 1 + + tests/test_connect_delay.cpp | 1 + 1 file changed, 1 insertion(+) commit 7a40df6d3aeba02d02a5a670a2ebf3b20fed3940 @@ -1836,17 +9569,17 @@ * zmq_device is now a wrapper that calls zmq_proxy * zmq_proxy adds capture socket - doc/Makefile.am | 2 +- - doc/zmq.txt | 12 +++-- - doc/zmq_device.txt | 125 ----------------------------------------------------- - doc/zmq_proxy.txt | 97 +++++++++++++++++++++++++++++++++++++++++ - include/zmq.h | 11 ++--- - src/Makefile.am | 4 +- - src/device.cpp | 96 ---------------------------------------- - src/device.hpp | 32 -------------- - src/proxy.cpp | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/proxy.hpp | 32 ++++++++++++++ - src/zmq.cpp | 26 ++++++----- + doc/Makefile.am | 2 +- + doc/zmq.txt | 12 +++-- + doc/zmq_device.txt | 125 ---------------------------------------------------- + doc/zmq_proxy.txt | 97 ++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 11 ++--- + src/Makefile.am | 4 +- + src/device.cpp | 96 ---------------------------------------- + src/device.hpp | 32 -------------- + src/proxy.cpp | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/proxy.hpp | 32 ++++++++++++++ + src/zmq.cpp | 26 ++++++----- 11 files changed, 280 insertions(+), 278 deletions(-) commit f074f6b6b98fe5e3612a46007e49c52f74b1fac9 @@ -1877,26 +9610,26 @@ of any test that #includes "testutil.hpp", just for the sake of brevity. - tests/test_connect_delay.cpp | 12 ++++++------ - tests/test_connect_resolve.cpp | 6 +++--- - tests/test_hwm.cpp | 2 -- - tests/test_invalid_rep.cpp | 4 +++- - tests/test_last_endpoint.cpp | 5 +++-- - tests/test_monitor.cpp | 6 ++---- - tests/test_msg_flags.cpp | 5 +++-- - tests/test_pair_inproc.cpp | 1 - - tests/test_pair_ipc.cpp | 1 - - tests/test_pair_tcp.cpp | 1 - - tests/test_reqrep_device.cpp | 7 ++++--- - tests/test_reqrep_inproc.cpp | 1 - - tests/test_reqrep_ipc.cpp | 1 - - tests/test_reqrep_tcp.cpp | 1 - - tests/test_router_behavior.cpp | 1 - - tests/test_shutdown_stress.cpp | 4 +++- - tests/test_sub_forward.cpp | 7 ++++--- - tests/test_term_endpoint.cpp | 27 ++++++++++++++++++++++++--- - tests/test_timeo.cpp | 9 +++++---- - tests/testutil.hpp | 5 +++-- + tests/test_connect_delay.cpp | 12 ++++++------ + tests/test_connect_resolve.cpp | 6 +++--- + tests/test_hwm.cpp | 2 -- + tests/test_invalid_rep.cpp | 4 +++- + tests/test_last_endpoint.cpp | 5 +++-- + tests/test_monitor.cpp | 6 ++---- + tests/test_msg_flags.cpp | 5 +++-- + tests/test_pair_inproc.cpp | 1 - + tests/test_pair_ipc.cpp | 1 - + tests/test_pair_tcp.cpp | 1 - + tests/test_reqrep_device.cpp | 7 ++++--- + tests/test_reqrep_inproc.cpp | 1 - + tests/test_reqrep_ipc.cpp | 1 - + tests/test_reqrep_tcp.cpp | 1 - + tests/test_router_behavior.cpp | 1 - + tests/test_shutdown_stress.cpp | 4 +++- + tests/test_sub_forward.cpp | 7 ++++--- + tests/test_term_endpoint.cpp | 27 ++++++++++++++++++++++++--- + tests/test_timeo.cpp | 9 +++++---- + tests/testutil.hpp | 5 +++-- 20 files changed, 63 insertions(+), 43 deletions(-) commit aaac4b84cb899f94570cec83970d09b19f1f9c38 @@ -1905,9 +9638,9 @@ Code cleanups - doc/zmq.txt | 4 ++-- - include/zmq.h | 2 ++ - src/device.cpp | 32 +++----------------------------- + doc/zmq.txt | 4 ++-- + include/zmq.h | 2 ++ + src/device.cpp | 32 +++----------------------------- 3 files changed, 7 insertions(+), 31 deletions(-) commit 84728cd961c4238379bf0e022292f5d314102ce1 @@ -1925,8 +9658,8 @@ Simplify initial handshaking - src/stream_engine.cpp | 100 ++++++++++++++------------------------------------ - src/stream_engine.hpp | 19 +++------- + src/stream_engine.cpp | 100 +++++++++++++------------------------------------ + src/stream_engine.hpp | 19 +++------- 2 files changed, 32 insertions(+), 87 deletions(-) commit 3f6148abdf4c548eeb6f13aee38a4190468fdadc @@ -1942,13 +9675,13 @@ - long messages are signaled using a flag rather then 0xff escape - length field does not include the flags field, 0 is a valid value - src/Makefile.am | 2 + - src/stream_engine.cpp | 40 +++++++++--- - src/v1_decoder.cpp | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/v1_decoder.hpp | 70 +++++++++++++++++++++ - src/v1_encoder.cpp | 103 +++++++++++++++++++++++++++++++ - src/v1_encoder.hpp | 60 ++++++++++++++++++ - src/v1_protocol.hpp | 43 +++++++++++++ + src/Makefile.am | 2 + + src/stream_engine.cpp | 40 +++++++++--- + src/v1_decoder.cpp | 167 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/v1_decoder.hpp | 70 +++++++++++++++++++++ + src/v1_encoder.cpp | 103 ++++++++++++++++++++++++++++++ + src/v1_encoder.hpp | 60 ++++++++++++++++++ + src/v1_protocol.hpp | 43 +++++++++++++ 7 files changed, 478 insertions(+), 7 deletions(-) commit 8672f5829e3917296e0695c86fbb324d91efdc53 @@ -1957,12 +9690,12 @@ Introduce abstract interface for message encoder/decoder - src/decoder.hpp | 3 ++- - src/encoder.hpp | 3 ++- - src/i_decoder.hpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++ - src/i_encoder.hpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/stream_engine.cpp | 46 +++++++++++++++++++++++++++++-------------- - src/stream_engine.hpp | 8 ++++---- + src/decoder.hpp | 3 ++- + src/encoder.hpp | 3 ++- + src/i_decoder.hpp | 49 ++++++++++++++++++++++++++++++++++++++++++++ + src/i_encoder.hpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/stream_engine.cpp | 46 +++++++++++++++++++++++++++-------------- + src/stream_engine.hpp | 8 ++++---- 6 files changed, 142 insertions(+), 21 deletions(-) commit a224c97329d0315498970054da2055bcf0560913 @@ -1984,10 +9717,10 @@ refactor. The encoder refactoring had also broken pgm_sender and receiver, but just required updating to use the new functions. - src/pgm_receiver.cpp | 2 +- - src/pgm_sender.cpp | 2 +- - src/pgm_socket.cpp | 6 +++--- - tests/test_connect_delay.cpp | 2 +- + src/pgm_receiver.cpp | 2 +- + src/pgm_sender.cpp | 2 +- + src/pgm_socket.cpp | 6 +++--- + tests/test_connect_delay.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) commit d0687876c03ce46a4a3d5962ffe22eef988b7d4a @@ -2005,7 +9738,7 @@ Remove superfluous statement - src/xpub.cpp | 1 - + src/xpub.cpp | 1 - 1 file changed, 1 deletion(-) commit 7e6db47e65584d5351959f8d0582a3d8e3638e1d @@ -2014,7 +9747,7 @@ Remove unused member variable - src/stream_engine.hpp | 3 --- + src/stream_engine.hpp | 3 --- 1 file changed, 3 deletions(-) commit 9143ac5156f058a00c5fd90ef4f65f9b2f90254e @@ -2039,8 +9772,8 @@ This patch adds some compatibility layer so that ZMQ 2.x SUB socket receives messages from PUB socket. - src/stream_engine.cpp | 32 ++++++++++++++++++++++++++++++++ - src/stream_engine.hpp | 6 +++++- + src/stream_engine.cpp | 32 ++++++++++++++++++++++++++++++++ + src/stream_engine.hpp | 6 +++++- 2 files changed, 37 insertions(+), 1 deletion(-) commit dfc0222ee6c67e2bd596468296f3ac271f8c33b3 @@ -2052,19 +9785,19 @@ This patch introduces i_msg_sink and i_msg_source interfaces. This allows us to make message encoder and decoder more general. - src/decoder.cpp | 12 ++++++------ - src/decoder.hpp | 7 ++++--- - src/encoder.cpp | 12 ++++++------ - src/encoder.hpp | 6 +++--- - src/i_msg_sink.hpp | 43 +++++++++++++++++++++++++++++++++++++++++++ - src/i_msg_source.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ - src/pgm_receiver.cpp | 2 +- - src/pgm_sender.cpp | 2 +- - src/req.cpp | 10 +++++----- - src/req.hpp | 2 +- - src/session_base.cpp | 6 +++--- - src/session_base.hpp | 14 +++++++++++--- - src/stream_engine.cpp | 8 ++++---- + src/decoder.cpp | 12 ++++++------ + src/decoder.hpp | 7 ++++--- + src/encoder.cpp | 12 ++++++------ + src/encoder.hpp | 6 +++--- + src/i_msg_sink.hpp | 43 +++++++++++++++++++++++++++++++++++++++++++ + src/i_msg_source.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ + src/pgm_receiver.cpp | 2 +- + src/pgm_sender.cpp | 2 +- + src/req.cpp | 10 +++++----- + src/req.hpp | 2 +- + src/session_base.cpp | 6 +++--- + src/session_base.hpp | 14 +++++++++++--- + src/stream_engine.cpp | 8 ++++---- 13 files changed, 132 insertions(+), 36 deletions(-) commit 1bca4f6f033ed6bb56fcfd7762bbfea04ecf684b @@ -2101,8 +9834,8 @@ This patch supports both ZTP/1.0 and new protocol. - src/stream_engine.cpp | 151 +++++++++++++++++++++++++++++++++++++++++++++++++- - src/stream_engine.hpp | 36 ++++++++++++ + src/stream_engine.cpp | 151 ++++++++++++++++++++++++++++++++++++++++++++++++- + src/stream_engine.hpp | 36 ++++++++++++ 2 files changed, 185 insertions(+), 2 deletions(-) commit 6347f8b0c9f800b8de1bfe8b9f869ebec9e6511c @@ -2120,7 +9853,7 @@ Fixed license to remove references to X11 code - COPYING.LESSER | 27 --------------------------- + COPYING.LESSER | 27 --------------------------- 1 file changed, 27 deletions(-) commit c959f526f1a3e885bd3f61ec0362122ec3321ee3 @@ -2138,24 +9871,24 @@ Remove unused argc/argv parameters in tests. - tests/test_connect_delay.cpp | 6 +++--- - tests/test_connect_resolve.cpp | 2 +- - tests/test_hwm.cpp | 2 +- - tests/test_invalid_rep.cpp | 2 +- - tests/test_last_endpoint.cpp | 2 +- - tests/test_msg_flags.cpp | 2 +- - tests/test_pair_inproc.cpp | 2 +- - tests/test_pair_ipc.cpp | 2 +- - tests/test_pair_tcp.cpp | 2 +- - tests/test_reqrep_device.cpp | 2 +- - tests/test_reqrep_inproc.cpp | 2 +- - tests/test_reqrep_ipc.cpp | 2 +- - tests/test_reqrep_tcp.cpp | 2 +- - tests/test_router_behavior.cpp | 2 +- - tests/test_shutdown_stress.cpp | 2 +- - tests/test_sub_forward.cpp | 2 +- - tests/test_term_endpoint.cpp | 2 +- - tests/test_timeo.cpp | 2 +- + tests/test_connect_delay.cpp | 6 +++--- + tests/test_connect_resolve.cpp | 2 +- + tests/test_hwm.cpp | 2 +- + tests/test_invalid_rep.cpp | 2 +- + tests/test_last_endpoint.cpp | 2 +- + tests/test_msg_flags.cpp | 2 +- + tests/test_pair_inproc.cpp | 2 +- + tests/test_pair_ipc.cpp | 2 +- + tests/test_pair_tcp.cpp | 2 +- + tests/test_reqrep_device.cpp | 2 +- + tests/test_reqrep_inproc.cpp | 2 +- + tests/test_reqrep_ipc.cpp | 2 +- + tests/test_reqrep_tcp.cpp | 2 +- + tests/test_router_behavior.cpp | 2 +- + tests/test_shutdown_stress.cpp | 2 +- + tests/test_sub_forward.cpp | 2 +- + tests/test_term_endpoint.cpp | 2 +- + tests/test_timeo.cpp | 2 +- 18 files changed, 20 insertions(+), 20 deletions(-) commit c29aef4dd83375806b008c40728485fa95457050 @@ -2172,7 +9905,7 @@ After this change, "s" is no longer unused. - tests/test_monitor.cpp | 17 +++++++++++++---- + tests/test_monitor.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) commit 3b984d40e984b9cd5bca4663765771c7e9b9d61d @@ -2195,29 +9928,29 @@ Should be no change in behavior. - src/dealer.cpp | 6 ++++++ - src/dist.cpp | 3 +++ - src/err.cpp | 1 + - src/io_object.cpp | 2 +- - src/io_thread.cpp | 2 +- - src/lb.cpp | 3 +++ - src/object.cpp | 16 ++++++++-------- - src/pair.cpp | 10 ++++++++-- - src/pub.cpp | 2 +- - src/pull.cpp | 6 ++++++ - src/push.cpp | 3 +++ - src/reaper.cpp | 2 +- - src/router.cpp | 9 +++++++++ - src/session_base.cpp | 2 +- - src/socket_base.cpp | 15 +++++++-------- - src/sub.cpp | 2 +- - src/tcp.cpp | 9 +++++++++ - src/tcp_address.cpp | 4 ++-- - src/tcp_address.hpp | 4 ++-- - src/tcp_listener.cpp | 2 +- - src/xpub.cpp | 3 +++ - src/xsub.cpp | 6 ++++++ - src/zmq.cpp | 2 +- + src/dealer.cpp | 6 ++++++ + src/dist.cpp | 3 +++ + src/err.cpp | 1 + + src/io_object.cpp | 2 +- + src/io_thread.cpp | 2 +- + src/lb.cpp | 3 +++ + src/object.cpp | 16 ++++++++-------- + src/pair.cpp | 10 ++++++++-- + src/pub.cpp | 2 +- + src/pull.cpp | 6 ++++++ + src/push.cpp | 3 +++ + src/reaper.cpp | 2 +- + src/router.cpp | 9 +++++++++ + src/session_base.cpp | 2 +- + src/socket_base.cpp | 15 +++++++-------- + src/sub.cpp | 2 +- + src/tcp.cpp | 9 +++++++++ + src/tcp_address.cpp | 4 ++-- + src/tcp_address.hpp | 4 ++-- + src/tcp_listener.cpp | 2 +- + src/xpub.cpp | 3 +++ + src/xsub.cpp | 6 ++++++ + src/zmq.cpp | 2 +- 23 files changed, 84 insertions(+), 30 deletions(-) commit 7fa4d423b80715c07c526e60aed276a9e8e60a03 @@ -2232,7 +9965,7 @@ is what the old code was doing.) This seemed like buggy behavior to me, so I've changed it. - src/blob.hpp | 4 ++-- + src/blob.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f6fe600eef59afa7de6033bf71aea685779a390a @@ -2253,7 +9986,7 @@ Include a note about potential interactions with reactors, and update reference to old FAIL_UNROUTABLE name. - doc/zmq_setsockopt.txt | 8 ++++++-- + doc/zmq_setsockopt.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 95c018c0d3e7610e58a901ee970fcac8be8db176 @@ -2264,7 +9997,7 @@ The endpoint was excluding the tcp://, causing tests to fail - src/tcp_listener.cpp | 2 +- + src/tcp_listener.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 94835581a4df2bde11b6ec0dcd32bac70dc42d7f @@ -2280,7 +10013,7 @@ commit I would suggest further investigation around this flushing behavior. - src/pipe.cpp | 4 ---- + src/pipe.cpp | 4 ---- 1 file changed, 4 deletions(-) commit 206e5f6f44bac2f9dfcb79da296ef530a17c7f93 @@ -2292,7 +10025,7 @@ VA specific monitor event in socket base was named monitor_event rather than va_monitor_event - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f028379c1ce008c2eba4c315a4a3adcd3594e1e1 @@ -2304,7 +10037,7 @@ The call to the va version of the function was using 'event' instead of 'event_' - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8bf541b2520a4ed861bb7670d5a7edd264637bec @@ -2316,7 +10049,7 @@ Compile was failing on the monitor_event function function due to the va_start params being switched. - src/ctx.cpp | 2 +- + src/ctx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4a43a0d0744f3cd78dab564d2b40e3f1790e7c24 @@ -2347,12 +10080,12 @@ a va_list, you must pass it only to functions which expect a va_list parameter. - src/ctx.cpp | 10 +++++++++- - src/ctx.hpp | 3 ++- - src/session_base.cpp | 7 ++++++- - src/session_base.hpp | 2 ++ - src/socket_base.cpp | 7 ++++++- - src/socket_base.hpp | 2 ++ + src/ctx.cpp | 10 +++++++++- + src/ctx.hpp | 3 ++- + src/session_base.cpp | 7 ++++++- + src/session_base.hpp | 2 ++ + src/socket_base.cpp | 7 ++++++- + src/socket_base.hpp | 2 ++ 6 files changed, 27 insertions(+), 4 deletions(-) commit 537a80278835d0f4290edce1bfc47d0624177cc5 @@ -2369,7 +10102,7 @@ In fact the use of "memcmp" is correct, but the enclosing "if" isn't necessary, and the compiler is happier if "full_bytes" is a size_t. - src/tcp_address.cpp | 12 +++++------- + src/tcp_address.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) commit 6347d392fdaa41131c7c7cb3b57c4aa6c1e7a399 @@ -2388,7 +10121,7 @@ the early return never happens, and we may try to flush a terminated pipe anyway. - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0886b7a26bbca34fdeef3e06d0d75d023ef4b7eb @@ -2402,7 +10135,7 @@ Adding the explicit cast should shut it up. - src/fd.hpp | 2 +- + src/fd.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a48751b34b7047cf77537f88861a5ae48127122a @@ -2421,7 +10154,7 @@ incrementing it. So its final value will always be between 1 and 2 times its initial value. The fix seems obvious. - src/zmq.cpp | 4 +++- + src/zmq.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit d588dbf27c363b98a0d88e5d4c1c2c7c2227055f @@ -2459,7 +10192,7 @@ right sense. (I think all of the ".addr" fields are null-terminated, in which case it's more appropriate to use strcmp throughout.) - tests/test_monitor.cpp | 14 +++++++------- + tests/test_monitor.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 28c9255d46edd96861c45ac89566d79c098ec0d1 @@ -2475,7 +10208,7 @@ (Thumb2 is the target for most iOS devices.) - src/atomic_ptr.hpp | 1 + + src/atomic_ptr.hpp | 1 + 1 file changed, 1 insertion(+) commit 12833804c910842121310b0ce52c19d2804ffd40 @@ -2495,13 +10228,13 @@ Fixes #415. - src/dealer.cpp | 1 - - src/options.cpp | 1 - - src/options.hpp | 5 +---- - src/router.cpp | 1 - - src/session_base.cpp | 27 +++++++++++++++++---------- - src/session_base.hpp | 6 +++--- - src/socket_base.cpp | 4 ++-- + src/dealer.cpp | 1 - + src/options.cpp | 1 - + src/options.hpp | 5 +---- + src/router.cpp | 1 - + src/session_base.cpp | 27 +++++++++++++++++---------- + src/session_base.hpp | 6 +++--- + src/socket_base.cpp | 4 ++-- 7 files changed, 23 insertions(+), 22 deletions(-) commit b32542e39627e22b5dfd17666235e123bac0fbe3 @@ -2528,7 +10261,7 @@ Fix reordering compile errors - src/stream_engine.cpp | 4 ++-- + src/stream_engine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5637ed08a59bff6bacbf9a0c85d803d7e3bb4d09 @@ -2546,15 +10279,15 @@ Fix invalid address metadata for ZMQ_EVENT_DISCONNECTED - src/ipc_connecter.cpp | 3 +-- - src/ipc_listener.cpp | 4 ++-- - src/session_base.cpp | 7 ------- - src/session_base.hpp | 1 - - src/stream_engine.cpp | 10 +++------- - src/stream_engine.hpp | 2 +- - src/tcp_connecter.cpp | 2 +- - src/tcp_listener.cpp | 2 +- - tests/test_monitor.cpp | 4 ++++ + src/ipc_connecter.cpp | 3 +-- + src/ipc_listener.cpp | 4 ++-- + src/session_base.cpp | 7 ------- + src/session_base.hpp | 1 - + src/stream_engine.cpp | 10 +++------- + src/stream_engine.hpp | 2 +- + src/tcp_connecter.cpp | 2 +- + src/tcp_listener.cpp | 2 +- + tests/test_monitor.cpp | 4 ++++ 9 files changed, 13 insertions(+), 22 deletions(-) commit 1f2295476297537f549e96e95763226e4111b538 @@ -2579,9 +10312,9 @@ This patch makes a router socket to silently ignore all identity messages coming from reconnected peers. - src/msg.cpp | 5 +++++ - src/msg.hpp | 1 + - src/router.cpp | 25 ++++++++++++++++++------- + src/msg.cpp | 5 +++++ + src/msg.hpp | 1 + + src/router.cpp | 25 ++++++++++++++++++------- 3 files changed, 24 insertions(+), 7 deletions(-) commit 84560c1607249cea48f2f0009cc5d136377072ee @@ -2602,7 +10335,7 @@ zmq_term can not safely be re-entered with pgm transport. Fix proposed by Steven McCoy. - src/zmq.cpp | 17 ++++++++++------- + src/zmq.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) commit 631e12d4e5f47615182b7ec6e28c6ee439309111 @@ -2622,7 +10355,7 @@ That way it can be used more appropriately between processes. - src/signaler.cpp | 4 ++-- + src/signaler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 83537916f8e2c61161f06dc84dd21972bb65b5eb @@ -2636,7 +10369,7 @@ EVENT_MODIFY_STATE as a requirement to OpenEvent so we can SetEvent later in the method. - src/signaler.cpp | 12 ++++++++++-- + src/signaler.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 556074d438870dd29bd6f6838d00715c01204a4c @@ -2645,7 +10378,7 @@ Revert zmq_poll NULL poll items check to 2.2 behavior - let the poll items count filter out empty poll sets and not return a sometimes unexpected EFAULT error status - src/zmq.cpp | 10 ++++++---- + src/zmq.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) commit 9be0c7e4b5c6aa335aeb59a9e5f09cf108edb20c @@ -2663,7 +10396,7 @@ Small code cleanup - src/socket_base.cpp | 4 +--- + src/socket_base.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit bea0b4817b6470ad7a521618585e33e273fbaadb @@ -2688,7 +10421,7 @@ Fixes issue #397 - src/ipc_listener.cpp | 3 ++- + src/ipc_listener.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 43ee4396cf63ddcf8750eacf14d92efd111f8140 @@ -2710,10 +10443,10 @@ generated the event not when they failed to close the socket but when the succeed to close it. - src/ipc_connecter.cpp | 5 +---- - src/ipc_listener.cpp | 5 +---- - src/tcp_connecter.cpp | 4 ---- - src/tcp_listener.cpp | 4 ---- + src/ipc_connecter.cpp | 5 +---- + src/ipc_listener.cpp | 5 +---- + src/tcp_connecter.cpp | 4 ---- + src/tcp_listener.cpp | 4 ---- 4 files changed, 2 insertions(+), 16 deletions(-) commit 0533fb1ce16ad19e683b5325a11f2cbd8e2892ba @@ -2731,7 +10464,7 @@ Simplify code for writer activation in Router socket - src/router.cpp | 17 ++++++++--------- + src/router.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) commit f8752bf9fca34b7c3c492c57c434f8c8799f44d1 @@ -2749,7 +10482,7 @@ Rewrite event processing in io_thread - src/io_thread.cpp | 22 +++++++++------------- + src/io_thread.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) commit 823d14c7fcb00aed6e6d66aeca84a4fc555ba1a3 @@ -2776,7 +10509,7 @@ Rewrite process_command's loop - src/socket_base.cpp | 16 ++++++++-------- + src/socket_base.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 8d64fc6af83ed49624b11a6c30d5da3e79144d2c @@ -2785,7 +10518,7 @@ Reverted fix for #393, was already fixed - src/tcp_address.cpp | 6 +++--- + src/tcp_address.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 73f960e739583e88e13706c7dddb3456bf4a9d66 @@ -2803,7 +10536,7 @@ Fixed issue #393, compilation warnings - src/tcp_address.cpp | 9 ++++----- + src/tcp_address.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 77dd0a6fba14c636d84a5f43f6b79f7aadfbc8f2 @@ -2821,8 +10554,8 @@ Fixed documentation of HWM on ZMQ_PULL - .gitignore | 1 + - doc/zmq_socket.txt | 2 +- + .gitignore | 1 + + doc/zmq_socket.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit e7f59297d047fd498c4825c927178ab9382f79e5 @@ -2840,8 +10573,8 @@ Making Android&pyzmq friendly version with avoid-version - configure.in | 5 ++++- - src/Makefile.am | 4 ++++ + configure.in | 5 ++++- + src/Makefile.am | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) commit 1ff5af098a1daec6acd9b6ae60368921d2adf8de @@ -2859,7 +10592,7 @@ mtrie: Code simplification - src/mtrie.cpp | 63 +++++++++++++++++++++++------------------------------------ + src/mtrie.cpp | 63 ++++++++++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 39 deletions(-) commit 692648de96515132b59b71d6c404a4cd8253ce1d @@ -2868,7 +10601,7 @@ mtrie: Do not throw exception on allocation failure - src/mtrie.cpp | 6 ++++-- + src/mtrie.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit e471e5b401387f0c4d03d2af67e41d4dbc8843f4 @@ -2886,7 +10619,7 @@ Let docs for zmq_ctx_set_monitor() respect a 80 char wide column width - doc/zmq_ctx_set_monitor.txt | 36 +++++++++++++++++++----------------- + doc/zmq_ctx_set_monitor.txt | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) commit 6a1bd3e1e79706b997a76bbc7d3e2f32340fb800 @@ -2904,7 +10637,7 @@ Small code simplification - src/xpub.cpp | 15 +++++---------- + src/xpub.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) commit 6f1229be6ff61e1c579433ebc1bf203a62b4ec22 @@ -2927,7 +10660,7 @@ Refs: http://lists.zeromq.org/pipermail/zeromq-dev/2012-June/017589.html - src/mtrie.cpp | 10 ++++++++-- + src/mtrie.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit c251d940b3424e045d59123f4bfc529c23bda3e9 @@ -2952,7 +10685,7 @@ when building downstream projects - include/zmq.h | 2 ++ + include/zmq.h | 2 ++ 1 file changed, 2 insertions(+) commit b57b7debaae571ddb6206c28179bcb8d84fb1bcc @@ -2970,7 +10703,7 @@ Fix missing ENETRESET for Jira #LIBZMQ-329. - include/zmq.h | 3 +++ + include/zmq.h | 3 +++ 1 file changed, 3 insertions(+) commit c60b0f579dc739069e1c26eebff72a5b81fcadd5 @@ -2988,8 +10721,8 @@ added missing files to MSVC10 solution file: tcp.cpp, tcp.hpp - builds/msvc/libzmq/libzmq.vcxproj | 2 + - builds/msvc/libzmq/libzmq.vcxproj.filters | 400 ++++++++++++++++++++++++++++++ + builds/msvc/libzmq/libzmq.vcxproj | 2 + + builds/msvc/libzmq/libzmq.vcxproj.filters | 400 +++++++++++++++++++++++++++++ 2 files changed, 402 insertions(+) commit 98ee759dadf20fa958cda4290160f67c36444aeb @@ -2998,7 +10731,7 @@ Added missing semi-colon. - src/ip.cpp | 2 +- + src/ip.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eb16f6b88e20bd16fb8409cdecc7025443d0522c @@ -3016,7 +10749,7 @@ Add errno fallback values for MSVC2008. - include/zmq.h | 22 ++++++++++++++++++++-- + include/zmq.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) commit 7bbccdeac9bef86988e136779367a6aabad00ac6 @@ -3034,7 +10767,7 @@ Removed an unneeded include in tests - tests/test_router_behavior.cpp | 1 - + tests/test_router_behavior.cpp | 1 - 1 file changed, 1 deletion(-) commit 6da48aed3a9b80d87f30ca634dd586a734c0df51 @@ -3043,7 +10776,7 @@ Fixed tests - tests/test_router_behavior.cpp | 2 +- + tests/test_router_behavior.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 829d0003beb251643e9c7ece33c702a3a18fc017 @@ -3052,13 +10785,13 @@ Verbose ROUTER socket behavior patch - doc/zmq_setsockopt.txt | 16 +++++------ - doc/zmq_socket.txt | 10 +++---- - include/zmq.h | 2 +- - src/router.cpp | 19 ++++++------- - src/router.hpp | 5 ++-- - tests/Makefile.am | 4 ++- - tests/test_router_behavior.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_setsockopt.txt | 16 +++++----- + doc/zmq_socket.txt | 10 +++---- + include/zmq.h | 2 +- + src/router.cpp | 19 ++++++------ + src/router.hpp | 5 ++-- + tests/Makefile.am | 4 ++- + tests/test_router_behavior.cpp | 64 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 93 insertions(+), 27 deletions(-) commit 21eb8c8fa50e1b00dbc27c41e4a7c6f69d8e79de @@ -3076,7 +10809,7 @@ Fix open_socket to return -1 (INVALID_SOCKET on Windows) on error - src/ip.cpp | 9 +++++++-- + src/ip.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 7753379eab33109a8f15765d843df213a955978c @@ -3097,8 +10830,8 @@ Calling close () when the underlying socket is invalid triggers an assertion failure. - src/ipc_connecter.cpp | 3 ++- - src/tcp_connecter.cpp | 3 ++- + src/ipc_connecter.cpp | 3 ++- + src/tcp_connecter.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit ec9f8994a742dc36b2da64e7de7480619cd30285 @@ -3109,8 +10842,8 @@ Make start_connecting () to have singe exit point. - src/ipc_connecter.cpp | 8 ++++---- - src/tcp_connecter.cpp | 8 ++++---- + src/ipc_connecter.cpp | 8 ++++---- + src/tcp_connecter.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit e0fed9d29a007f0d0e33a97b6cf617138081b578 @@ -3126,10 +10859,10 @@ reflecting whether a timer has been started and changes during the lifetime of the object. - src/ipc_connecter.cpp | 20 ++++++++++---------- - src/ipc_connecter.hpp | 11 +++++++---- - src/tcp_connecter.cpp | 20 ++++++++++---------- - src/tcp_connecter.hpp | 11 +++++++---- + src/ipc_connecter.cpp | 20 ++++++++++---------- + src/ipc_connecter.hpp | 11 +++++++---- + src/tcp_connecter.cpp | 20 ++++++++++---------- + src/tcp_connecter.hpp | 11 +++++++---- 4 files changed, 34 insertions(+), 28 deletions(-) commit c8d0d684712c6fce6556ce992ff584a35ae877e0 @@ -3151,7 +10884,7 @@ on compilation, this patch adds casts to avoid this, so zmq3.x can compile on it. - src/tcp_address.cpp | 8 ++++---- + src/tcp_address.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 67ab3390ecde685d4280c424ce3955363cdcd486 @@ -3169,7 +10902,7 @@ Correct typo: add missing single quote. - doc/zmq_socket.txt | 2 +- + doc/zmq_socket.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 426ea7169743f9105e2f1d5090e5d6285e4be0ea @@ -3187,7 +10920,7 @@ Add additional Windows Sockets Error Codes. - src/err.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++---------- + src/err.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 10 deletions(-) commit f35bed0edce3579ba24a415092f3975ac22b9735 @@ -3205,8 +10938,8 @@ {tcp|ipc}_listener: close socket when set_address () fails - src/ipc_listener.cpp | 10 ++++++++-- - src/tcp_listener.cpp | 14 ++++++++++---- + src/ipc_listener.cpp | 10 ++++++++-- + src/tcp_listener.cpp | 14 ++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) commit a9507cc267aac358f40900eac6f482bf34147761 @@ -3226,7 +10959,7 @@ For sleep and usleep - tests/test_connect_delay.cpp | 1 + + tests/test_connect_delay.cpp | 1 + 1 file changed, 1 insertion(+) commit dc9749fc67208f2c01f045da049d597ff9ff76df @@ -3244,7 +10977,7 @@ Add newline to end of test_connect_delay file - tests/test_connect_delay.cpp | 2 +- + tests/test_connect_delay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9e1e68ef16a44e1b66cecbaee9fc6712461b3162 @@ -3262,9 +10995,9 @@ Add ZeroMQ branding. - branding.bmp | Bin 0 -> 25818 bytes - installer.ico | Bin 0 -> 2842 bytes - src/version.rc.in | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + branding.bmp | Bin 0 -> 25818 bytes + installer.ico | Bin 0 -> 2842 bytes + src/version.rc.in | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) commit 076e081de2f27c054ba04c5721b0901a7baaa8c0 @@ -3295,8 +11028,8 @@ asserts to test the pipe is contained in the terminating set where appropriate. - src/session_base.cpp | 16 ++++++++++------ - src/session_base.hpp | 2 +- + src/session_base.cpp | 16 ++++++++++------ + src/session_base.hpp | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) commit 704b952274b7bfe2952f564d6d81dff1f279a453 @@ -3309,7 +11042,7 @@ requirement to bind before connect in inproc. As that discussion is in detail in the inproc docs link to there. - doc/zmq_connect.txt | 3 ++- + doc/zmq_connect.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 7b78ed9d604a5d78af65eefaa456e98854874b3d @@ -3323,8 +11056,8 @@ fact that inproc must have bind before connect to reinforce the information in zmq_inproc. - doc/zmq_bind.txt | 12 +++++++----- - doc/zmq_connect.txt | 17 +++++++++++------ + doc/zmq_bind.txt | 12 +++++++----- + doc/zmq_connect.txt | 17 +++++++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) commit e5904e63cebc96048bac7c30ae91c16edfff5922 @@ -3343,17 +11076,17 @@ Notes on most of the individual commits can be found the repository log. - .gitignore | 1 + - doc/zmq_getsockopt.txt | 15 +++++++++++++++ - doc/zmq_setsockopt.txt | 14 ++++++++++++++ - include/zmq.h | 1 + - src/lb.cpp | 3 +-- - src/options.cpp | 27 +++++++++++++++++++++++++++ - src/options.hpp | 4 ++++ - src/session_base.cpp | 40 ++++++++++++++++++++++++++++++---------- - src/session_base.hpp | 3 +++ - src/socket_base.cpp | 34 ++++++++++++++++++++-------------- - tests/Makefile.am | 2 ++ + .gitignore | 1 + + doc/zmq_getsockopt.txt | 15 +++++++++++++++ + doc/zmq_setsockopt.txt | 14 ++++++++++++++ + include/zmq.h | 1 + + src/lb.cpp | 3 +-- + src/options.cpp | 27 +++++++++++++++++++++++++++ + src/options.hpp | 4 ++++ + src/session_base.cpp | 40 ++++++++++++++++++++++++++++++---------- + src/session_base.hpp | 3 +++ + src/socket_base.cpp | 34 ++++++++++++++++++++-------------- + tests/Makefile.am | 2 ++ 11 files changed, 118 insertions(+), 26 deletions(-) commit 409d5e8fff0dc0ebdefe3da2a866021ce2aca18d @@ -3372,7 +11105,7 @@ Notes on most of the individual commits can be found the repository log. - tests/test_connect_delay.cpp | 260 +++++++++++++++++++++++++++++++++++++++++++ + tests/test_connect_delay.cpp | 260 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) commit 95cbad3841fdd319cd19722ef88b9e49909aff2f @@ -3383,18 +11116,18 @@ This reverts commit fe3fb419fe249d7015a6c864d18464d434a55468. - .gitignore | 1 - - doc/zmq_getsockopt.txt | 15 ----- - doc/zmq_setsockopt.txt | 13 ----- - include/zmq.h | 1 - - src/lb.cpp | 3 +- - src/options.cpp | 25 --------- - src/options.hpp | 4 -- - src/session_base.cpp | 29 ---------- - src/session_base.hpp | 6 -- - src/socket_base.cpp | 5 +- - tests/Makefile.am | 2 - - tests/test_connect_delay.cpp | 131 ------------------------------------------- + .gitignore | 1 - + doc/zmq_getsockopt.txt | 15 ----- + doc/zmq_setsockopt.txt | 13 ----- + include/zmq.h | 1 - + src/lb.cpp | 3 +- + src/options.cpp | 25 -------- + src/options.hpp | 4 -- + src/session_base.cpp | 29 ---------- + src/session_base.hpp | 6 -- + src/socket_base.cpp | 5 +- + tests/Makefile.am | 2 - + tests/test_connect_delay.cpp | 131 ------------------------------------------ 12 files changed, 3 insertions(+), 232 deletions(-) commit a563d494bbbaf0d003bad0901a7d49ac24041857 @@ -3405,7 +11138,7 @@ This reverts commit b79aaaf473c4ef61bbd45e711d48fceb06dc9ad1. - src/session_base.cpp | 5 +++-- + src/session_base.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit cc230cfe6097e0ad68375d0251c879bac551016e @@ -3416,7 +11149,7 @@ This reverts commit 297af954514d9b2097c5e2df980bbe16dd72e761. - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5b167aa8964fbe65546bf3717ec7b53fb0a0e82d @@ -3427,9 +11160,9 @@ This reverts commit 06485d9200ac697896dc4bd162fa4f8b4c2ddaf6. - src/session_base.cpp | 32 ++++++++++++++++++++++++++++++-- - src/session_base.hpp | 5 ++++- - src/socket_base.cpp | 31 ++++++++++++++++--------------- + src/session_base.cpp | 32 ++++++++++++++++++++++++++++++-- + src/session_base.hpp | 5 ++++- + src/socket_base.cpp | 31 ++++++++++++++++--------------- 3 files changed, 50 insertions(+), 18 deletions(-) commit 81b8362a5909975125ca627abd00e1461f56fffa @@ -3440,14 +11173,14 @@ This reverts commit 6f6466f0884a169fd25a48195dd9a4e2135818e6. - src/command.hpp | 6 ----- - src/object.cpp | 19 --------------- - src/object.hpp | 2 -- - src/session_base.cpp | 13 +--------- - src/session_base.hpp | 8 +++--- - src/socket_base.cpp | 17 +++---------- - src/socket_base.hpp | 3 --- - tests/test_connect_delay.cpp | 58 ++++++++++++++++---------------------------- + src/command.hpp | 6 ----- + src/object.cpp | 19 -------------- + src/object.hpp | 2 -- + src/session_base.cpp | 13 +--------- + src/session_base.hpp | 8 +++--- + src/socket_base.cpp | 17 +++---------- + src/socket_base.hpp | 3 --- + tests/test_connect_delay.cpp | 58 +++++++++++++++--------------------------- 8 files changed, 29 insertions(+), 97 deletions(-) commit 48d3977632fd6eed6977d2eab0ac421efd454b8e @@ -3458,7 +11191,7 @@ This reverts commit b5ace39e2a48b906237d869f4f819f1a28a8cee7. - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6c382c5c61b9b31050cf92cd6119184cb38e7ab1 @@ -3469,7 +11202,7 @@ This reverts commit 0b3478d6ecf0772c4c6e6ff4e4bdfdeef61cf003. - tests/test_connect_delay.cpp | 38 +++++++++++++++++++------------------- + tests/test_connect_delay.cpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) commit 72bae207a3dd2891f27f3f052e82631dfbf04712 @@ -3480,7 +11213,7 @@ This reverts commit 1566091bc6cbf2a69b19243be3906c6d92ac339a. - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f0920caf0226f724e46f0b843b72841be3dcbc1f @@ -3491,12 +11224,12 @@ This reverts commit c13f1d52ff9ed51a651ad8bcc9379e82d9318e86. - src/command.hpp | 6 ++++++ - src/object.cpp | 19 +++++++++++++++++++ - src/object.hpp | 2 ++ - src/session_base.cpp | 13 +++++-------- - src/socket_base.cpp | 11 +++++++++++ - src/socket_base.hpp | 3 +++ + src/command.hpp | 6 ++++++ + src/object.cpp | 19 +++++++++++++++++++ + src/object.hpp | 2 ++ + src/session_base.cpp | 13 +++++-------- + src/socket_base.cpp | 11 +++++++++++ + src/socket_base.hpp | 3 +++ 6 files changed, 46 insertions(+), 8 deletions(-) commit b020bd4ba8b8860aa868663999f6fb9395cc98d7 @@ -3507,7 +11240,7 @@ This reverts commit 29f8d9ca15f679132302ca5a9016692c2be1d6b2. - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 956cfd9f75963b25632c1e7b53a82661c753525e @@ -3518,7 +11251,7 @@ This reverts commit 55cbdfcf261b41f6a9b71bb26ce7336da7f73eec. - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 74175decb43386f1b7f95670560be40ae5915774 @@ -3529,8 +11262,8 @@ This reverts commit ace7c99b917dd66f1fcaed3cbb50c988b7e33b09. - src/session_base.cpp | 6 ++++++ - src/session_base.hpp | 3 +++ + src/session_base.cpp | 6 ++++++ + src/session_base.hpp | 3 +++ 2 files changed, 9 insertions(+) commit 440af0022df056d00e29c7a095e9b1cf7eb48118 @@ -3541,7 +11274,7 @@ This reverts commit 09956dee939a06c0734004aa3f39c491ec49c6f8. - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8968b294e0da4ea8811441ffd62a5bc84b73839c @@ -3552,7 +11285,7 @@ This reverts commit 5008f385bab2dd89c68d7ff93e0c5b303c6043e8. - src/session_base.cpp | 3 +-- + src/session_base.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 836fa4b7cac4dfbb70c7babaef2abcef92249c89 @@ -3563,8 +11296,8 @@ This reverts commit 336f72720a99195942ced5c6aad2bb8e0baa3f32. - src/session_base.cpp | 6 ++---- - src/session_base.hpp | 3 --- + src/session_base.cpp | 6 ++---- + src/session_base.hpp | 3 --- 2 files changed, 2 insertions(+), 7 deletions(-) commit 2c6f26153e913e159f1fb739ec80ea73fbb53d6a @@ -3575,8 +11308,8 @@ This reverts commit b84b007981d9247bcc7bd000e4aeb56baed56de2. - src/session_base.cpp | 21 ++++++++++++--------- - src/session_base.hpp | 3 +++ + src/session_base.cpp | 21 ++++++++++++--------- + src/session_base.hpp | 3 +++ 2 files changed, 15 insertions(+), 9 deletions(-) commit 3ae68d67a451162cf70dadc72f39da892be6f0a0 @@ -3587,8 +11320,8 @@ This reverts commit 67497a26439239fdb95652b46d7e4e41fe672b31. - src/session_base.cpp | 6 +++--- - src/socket_base.cpp | 7 +------ + src/session_base.cpp | 6 +++--- + src/socket_base.cpp | 7 +------ 2 files changed, 4 insertions(+), 9 deletions(-) commit f5a072fee1067d07e33005534e37c452645b2e03 @@ -3599,7 +11332,7 @@ This reverts commit 5da289cd5bf0f3c367d3eb091ac66e5f4ce2b97c. - src/socket_base.cpp | 9 +++++---- + src/socket_base.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 6eeaf151797411914d5af48a89c70be3959e6e0d @@ -3610,7 +11343,7 @@ This reverts commit 3053f7e368149044e5d5887e78fc96c1b9f33141. - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c9926f6f24fd931e97950033cff4a172ab4f7426 @@ -3621,8 +11354,8 @@ This reverts commit a5f7300da6aa2224638fc932fe5ca3624189b1c1. - src/session_base.cpp | 15 ++++----------- - src/session_base.hpp | 3 --- + src/session_base.cpp | 15 ++++----------- + src/session_base.hpp | 3 --- 2 files changed, 4 insertions(+), 14 deletions(-) commit 19da88be67a23ffffe3530526e6af6e238c12fd3 @@ -3633,7 +11366,7 @@ This reverts commit a90c1db7d2c0d32f9a0177d46502505efac654a5. - src/session_base.cpp | 18 ++---------------- + src/session_base.cpp | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) commit 4aaf3e6389f8c72d5492905f80bb2a6c6db6ca44 @@ -3644,7 +11377,7 @@ This reverts commit d8f3487ee1c15e9cd9df8a795529765f7bb00ef1. - tests/test_connect_delay.cpp | 121 ++----------------------------------------- + tests/test_connect_delay.cpp | 121 ++---------------------------------------- 1 file changed, 3 insertions(+), 118 deletions(-) commit eb14890d2363c15fe0486acbdaf698b6068f4d97 @@ -3655,21 +11388,21 @@ This reverts commit 029d3dfae2c2bf9e10c7f05d78593f481569bbd7. - src/Makefile.am | 2 + - src/decoder.cpp | 2 +- - src/fq.cpp | 10 ++-- - src/ip.cpp | 83 ---------------------------- - src/ip.hpp | 6 -- - src/session_base.cpp | 48 +++++++++++----- - src/session_base.hpp | 4 +- - src/signaler.cpp | 4 +- - src/socket_base.cpp | 6 +- - src/tcp.cpp | 122 +++++++++++++++++++++++++++++++++++++++++ - src/tcp.hpp | 38 +++++++++++++ - src/tcp_connecter.cpp | 1 + - src/tcp_listener.cpp | 1 + - tests/test_connect_delay.cpp | 121 +++++++++++++++++++++++++++++++++++++++- - tests/test_connect_resolve.cpp | 2 +- + src/Makefile.am | 2 + + src/decoder.cpp | 2 +- + src/fq.cpp | 10 ++-- + src/ip.cpp | 83 --------------------------- + src/ip.hpp | 6 -- + src/session_base.cpp | 48 +++++++++++----- + src/session_base.hpp | 4 +- + src/signaler.cpp | 4 +- + src/socket_base.cpp | 6 +- + src/tcp.cpp | 122 ++++++++++++++++++++++++++++++++++++++++ + src/tcp.hpp | 38 +++++++++++++ + src/tcp_connecter.cpp | 1 + + src/tcp_listener.cpp | 1 + + tests/test_connect_delay.cpp | 121 ++++++++++++++++++++++++++++++++++++++- + tests/test_connect_resolve.cpp | 2 +- 15 files changed, 331 insertions(+), 119 deletions(-) commit bdd4e1351d0446579caaad19e8ef4a4cf3d5e710 @@ -3680,12 +11413,12 @@ This reverts commit dde69fb9fb928db1850eb209db7aed79e26777fb. - src/ipc_connecter.cpp | 28 +++++++++++++++++++++------- - src/ipc_connecter.hpp | 1 + - src/ipc_listener.cpp | 3 +-- - src/tcp_connecter.cpp | 28 +++++++++++++++++++++------- - src/tcp_connecter.hpp | 1 + - src/tcp_listener.cpp | 3 +-- + src/ipc_connecter.cpp | 28 +++++++++++++++++++++------- + src/ipc_connecter.hpp | 1 + + src/ipc_listener.cpp | 3 +-- + src/tcp_connecter.cpp | 28 +++++++++++++++++++++------- + src/tcp_connecter.hpp | 1 + + src/tcp_listener.cpp | 3 +-- 6 files changed, 46 insertions(+), 18 deletions(-) commit 029d3dfae2c2bf9e10c7f05d78593f481569bbd7 @@ -3697,21 +11430,21 @@ This reverts commit 33459029793474d14cdb48f85ad2c58dc7ed156f, reversing changes made to 889b0e6f29f0cce566339b13b8a44f3b97836b6e. - src/Makefile.am | 2 - - src/decoder.cpp | 2 +- - src/fq.cpp | 10 ++-- - src/ip.cpp | 83 ++++++++++++++++++++++++++++ - src/ip.hpp | 6 ++ - src/session_base.cpp | 48 +++++----------- - src/session_base.hpp | 4 +- - src/signaler.cpp | 4 +- - src/socket_base.cpp | 6 +- - src/tcp.cpp | 122 ----------------------------------------- - src/tcp.hpp | 38 ------------- - src/tcp_connecter.cpp | 1 - - src/tcp_listener.cpp | 1 - - tests/test_connect_delay.cpp | 121 +--------------------------------------- - tests/test_connect_resolve.cpp | 2 +- + src/Makefile.am | 2 - + src/decoder.cpp | 2 +- + src/fq.cpp | 10 ++-- + src/ip.cpp | 83 +++++++++++++++++++++++++++ + src/ip.hpp | 6 ++ + src/session_base.cpp | 48 +++++----------- + src/session_base.hpp | 4 +- + src/signaler.cpp | 4 +- + src/socket_base.cpp | 6 +- + src/tcp.cpp | 122 ---------------------------------------- + src/tcp.hpp | 38 ------------- + src/tcp_connecter.cpp | 1 - + src/tcp_listener.cpp | 1 - + tests/test_connect_delay.cpp | 121 +-------------------------------------- + tests/test_connect_resolve.cpp | 2 +- 15 files changed, 119 insertions(+), 331 deletions(-) commit dde69fb9fb928db1850eb209db7aed79e26777fb @@ -3723,12 +11456,12 @@ This reverts commit 7b10586558268479e62ed901f3d8d76916bc6c8a, reversing changes made to 33459029793474d14cdb48f85ad2c58dc7ed156f. - src/ipc_connecter.cpp | 28 +++++++--------------------- - src/ipc_connecter.hpp | 1 - - src/ipc_listener.cpp | 3 ++- - src/tcp_connecter.cpp | 28 +++++++--------------------- - src/tcp_connecter.hpp | 1 - - src/tcp_listener.cpp | 3 ++- + src/ipc_connecter.cpp | 28 +++++++--------------------- + src/ipc_connecter.hpp | 1 - + src/ipc_listener.cpp | 3 ++- + src/tcp_connecter.cpp | 28 +++++++--------------------- + src/tcp_connecter.hpp | 1 - + src/tcp_listener.cpp | 3 ++- 6 files changed, 18 insertions(+), 46 deletions(-) commit 6117a2b09945f8bda67eb61f7baec4ed9ae7fc8a @@ -3740,9 +11473,9 @@ This reverts commit 4aa5ba3d119b98c8f1e4e682a6ee7c57d460cc55. Unintentional merge - src/session_base.cpp | 33 +++++++++++++++++++-------------- - src/session_base.hpp | 4 ++-- - tests/test_connect_delay.cpp | 2 ++ + src/session_base.cpp | 33 +++++++++++++++++++-------------- + src/session_base.hpp | 4 ++-- + tests/test_connect_delay.cpp | 2 ++ 3 files changed, 23 insertions(+), 16 deletions(-) commit 4aa5ba3d119b98c8f1e4e682a6ee7c57d460cc55 @@ -3754,9 +11487,9 @@ This commit removes the countdown flag and adds a set to store the pipes that are currently being disconnected. - src/session_base.cpp | 33 ++++++++++++++------------------- - src/session_base.hpp | 4 ++-- - tests/test_connect_delay.cpp | 2 -- + src/session_base.cpp | 33 ++++++++++++++------------------- + src/session_base.hpp | 4 ++-- + tests/test_connect_delay.cpp | 2 -- 3 files changed, 16 insertions(+), 23 deletions(-) commit 7b10586558268479e62ed901f3d8d76916bc6c8a @@ -3794,12 +11527,12 @@ The bug was responsible for occasional test_shutdown_stress failures. - src/ipc_connecter.cpp | 28 +++++++++++++++++++++------- - src/ipc_connecter.hpp | 1 + - src/ipc_listener.cpp | 3 +-- - src/tcp_connecter.cpp | 28 +++++++++++++++++++++------- - src/tcp_connecter.hpp | 1 + - src/tcp_listener.cpp | 3 +-- + src/ipc_connecter.cpp | 28 +++++++++++++++++++++------- + src/ipc_connecter.hpp | 1 + + src/ipc_listener.cpp | 3 +-- + src/tcp_connecter.cpp | 28 +++++++++++++++++++++------- + src/tcp_connecter.hpp | 1 + + src/tcp_listener.cpp | 3 +-- 6 files changed, 46 insertions(+), 18 deletions(-) commit d8f3487ee1c15e9cd9df8a795529765f7bb00ef1 @@ -3812,7 +11545,7 @@ reconnects a socket to ensure that some messages are appropriately blocked. - tests/test_connect_delay.cpp | 121 +++++++++++++++++++++++++++++++++++++++++-- + tests/test_connect_delay.cpp | 121 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 118 insertions(+), 3 deletions(-) commit a90c1db7d2c0d32f9a0177d46502505efac654a5 @@ -3821,7 +11554,7 @@ Filter read and write activated calls from the pipe to the session, and delay shutdown in terminated until the final pipe is shutdown. - src/session_base.cpp | 18 ++++++++++++++++-- + src/session_base.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) commit a5f7300da6aa2224638fc932fe5ca3624189b1c1 @@ -3830,8 +11563,8 @@ As Martin pointed out, there is a race condition in the old code where a pipe could start shutting down after disconnection, but the new one could connect first. This connection would not get a pipe created for it, so the messages could never flow. The simplest way round this would be a flag, but it is possibly for a very bouncy but fast connection to go up and down twice I imagine, so instead I have added a counter. This starts at zero, and will null out the pipe if terminate is called while it is zero. On a disconnect situation the counter is incremented, and the pipe is the not nulled if the value is non zero. In the terminated function it is decremented for each pipe that is shut down, and the assertion that the terminated pipe == the current pipe is skipped while it is non-zero. This should deal with the race condition and not allow any extra terminated() calls without hitting the assertion. - src/session_base.cpp | 15 +++++++++++---- - src/session_base.hpp | 3 +++ + src/session_base.cpp | 15 +++++++++++---- + src/session_base.hpp | 3 +++ 2 files changed, 14 insertions(+), 4 deletions(-) commit 841cf69eb7560c425ea5fa4566048b7ab01daa42 @@ -3856,7 +11589,7 @@ Use struct keyword consistently with sockaddr and sockaddr_in - src/signaler.cpp | 4 ++-- + src/signaler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e9bfd76f8761a6724801bf2676897f69ea87aea6 @@ -3883,7 +11616,7 @@ Small code simplification - src/fq.cpp | 10 +++++----- + src/fq.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 796212a985964162a284cc667ab09834ce681466 @@ -3899,7 +11632,7 @@ Fixes issue #309 - src/decoder.cpp | 2 +- + src/decoder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3053f7e368149044e5d5887e78fc96c1b9f33141 @@ -3908,7 +11641,7 @@ Remove unnecessary condition in assert - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5da289cd5bf0f3c367d3eb091ac66e5f4ce2b97c @@ -3917,7 +11650,7 @@ Code formatting, and clean up so that xhiccuped is only handled in case the pipe isn't terminating - src/socket_base.cpp | 9 ++++----- + src/socket_base.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 0bf1d0262e6b985622461888b1e2e5f732bd95b4 @@ -3933,8 +11666,8 @@ Use the hiccup mechanism to notify the socket end of the pair of the change in state, and have it shutdown that end, and shutdown the local end normally. This seems to resolve the shutdown and race condition issues. - src/session_base.cpp | 6 +++--- - src/socket_base.cpp | 7 ++++++- + src/session_base.cpp | 6 +++--- + src/socket_base.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) commit b0792ec78a1ec7fe207f3c44c363be58a6805afe @@ -3960,13 +11693,13 @@ Remember: this is a no-op change, hence no API or functionality was changed as part of this commit. - src/Makefile.am | 2 + - src/ip.cpp | 83 ---------------------------------- - src/ip.hpp | 6 --- - src/tcp.cpp | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/tcp.hpp | 38 ++++++++++++++++ - src/tcp_connecter.cpp | 1 + - src/tcp_listener.cpp | 1 + + src/Makefile.am | 2 + + src/ip.cpp | 83 --------------------------------- + src/ip.hpp | 6 --- + src/tcp.cpp | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/tcp.hpp | 38 +++++++++++++++ + src/tcp_connecter.cpp | 1 + + src/tcp_listener.cpp | 1 + 7 files changed, 164 insertions(+), 89 deletions(-) commit 1c6592157b2444f96a6f1be19a673d7dec621c0d @@ -3988,7 +11721,7 @@ - issue happens as other valid-like non-existent hostnames were redirected by buggy Cable/ISP DNS servers - tests/test_connect_resolve.cpp | 2 +- + tests/test_connect_resolve.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b84b007981d9247bcc7bd000e4aeb56baed56de2 @@ -3997,8 +11730,8 @@ Reverted to a simpler shutdown. This seems to disconnect and reconnect the pipe properly, but there is a problem in overall shutdown when the pipe has blocked and reconnected - the session seems to get terminated() called on it only in shutdown for the original pipe, by which point it has been replaced. I am not sure at the moment why this only happens then, but this does mean this patch is broken at the moment - src/session_base.cpp | 21 +++++++++------------ - src/session_base.hpp | 3 --- + src/session_base.cpp | 21 +++++++++------------ + src/session_base.hpp | 3 --- 2 files changed, 9 insertions(+), 15 deletions(-) commit 889b0e6f29f0cce566339b13b8a44f3b97836b6e @@ -4039,7 +11772,7 @@ Check if SO_NOSIGPIPE is defined - src/stream_engine.cpp | 2 +- + src/stream_engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 271ced98cf55447260d8c13086126b74ef1df215 @@ -4048,7 +11781,7 @@ Remove unused variable which causes build to fail with -Werror - src/pgm_socket.cpp | 1 - + src/pgm_socket.cpp | 1 - 1 file changed, 1 deletion(-) commit f611c57c48cf6b0d89766ff45906072271c69649 @@ -4066,7 +11799,7 @@ Bumped version to 3.3.0 - include/zmq.h | 4 ++-- + include/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 336f72720a99195942ced5c6aad2bb8e0baa3f32 @@ -4075,8 +11808,8 @@ The previous code to block the socket from receiving on that pipe during a disconnect was vulnerable to a race condition. This code calls with the terminate functions of both ends of the pipe - I believe this should be safer. This required storing a pointer to the socket end of the pipe - src/session_base.cpp | 6 ++++-- - src/session_base.hpp | 3 +++ + src/session_base.cpp | 6 ++++-- + src/session_base.hpp | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) commit 5008f385bab2dd89c68d7ff93e0c5b303c6043e8 @@ -4085,7 +11818,7 @@ When detaching a pipe, as well as checking the delay on connect sockopt is set, also ensure that the protocol is not pgm or epgm as we are not implementing the functionality for multicase types - src/session_base.cpp | 3 ++- + src/session_base.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 4d4674e088c74d955b6e86182ea0c89815e95881 @@ -4133,8 +11866,8 @@ Signed-off-by: AJ Lewis - src/ipc_listener.cpp | 4 ++++ - src/tcp_listener.cpp | 8 ++++++++ + src/ipc_listener.cpp | 4 ++++ + src/tcp_listener.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) commit 3687789f9d4cea0e23f462022248463d5050cc98 @@ -4148,7 +11881,7 @@ Signed-off-by: AJ Lewis - tests/test_monitor.cpp | 3 ++- + tests/test_monitor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 616bcf9fc2b0b6876014d5e5e4d52eef67a9137c @@ -4164,8 +11897,8 @@ Signed-off-by: AJ Lewis - src/device.cpp | 25 +++++++++++++++++++++++++ - src/zmq.cpp | 4 +++- + src/device.cpp | 25 +++++++++++++++++++++++++ + src/zmq.cpp | 4 +++- 2 files changed, 28 insertions(+), 1 deletion(-) commit 09956dee939a06c0734004aa3f39c491ec49c6f8 @@ -4174,7 +11907,7 @@ Restoring comment for clarity - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ace7c99b917dd66f1fcaed3cbb50c988b7e33b09 @@ -4183,8 +11916,8 @@ Removing unnecessary outpipe values that had been used for reconnecting existing pipes - no longer needed when using a pipe term for the delay_attach situation. - src/session_base.cpp | 6 ------ - src/session_base.hpp | 3 --- + src/session_base.cpp | 6 ------ + src/session_base.hpp | 3 --- 2 files changed, 9 deletions(-) commit 55cbdfcf261b41f6a9b71bb26ce7336da7f73eec @@ -4193,7 +11926,7 @@ Fix incorrect whitespace in if statement - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 29f8d9ca15f679132302ca5a9016692c2be1d6b2 @@ -4202,7 +11935,7 @@ Remove unnecessary extra test in pipe assertion - now we are terminating pipes we don't need to allow the case in which a pipe is rebound to the same sink - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c13f1d52ff9ed51a651ad8bcc9379e82d9318e86 @@ -4211,12 +11944,12 @@ On the advice of Martin Hurton, removed the new command type and just terminated the pipe in a reconnect situation, and notified the socket of the same. This handles the blocking properly, but at the cost of potentially losing in flight messages. However, this is a reasonable trade off given how much simpler it makes the patch. - src/command.hpp | 6 ------ - src/object.cpp | 19 ------------------- - src/object.hpp | 2 -- - src/session_base.cpp | 13 ++++++++----- - src/socket_base.cpp | 11 ----------- - src/socket_base.hpp | 3 --- + src/command.hpp | 6 ------ + src/object.cpp | 19 ------------------- + src/object.hpp | 2 -- + src/session_base.cpp | 13 ++++++++----- + src/socket_base.cpp | 11 ----------- + src/socket_base.hpp | 3 --- 6 files changed, 8 insertions(+), 46 deletions(-) commit 1566091bc6cbf2a69b19243be3906c6d92ac339a @@ -4225,7 +11958,7 @@ Rebinding on reconnection to allow for the pipe blocking will set the event sink again, which will cause an assert to be triggered. I have modified that to allow for setting the same sink to be OK. I believe this should be ok - on termination, if a pipe hasn't reconnected, it would just attempt to be erased from the pipes list again, which is reasonable - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0b3478d6ecf0772c4c6e6ff4e4bdfdeef61cf003 @@ -4234,7 +11967,7 @@ Fix whitespace in test - tests/test_connect_delay.cpp | 38 +++++++++++++++++++------------------- + tests/test_connect_delay.cpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) commit b5ace39e2a48b906237d869f4f819f1a28a8cee7 @@ -4243,7 +11976,7 @@ Fix condition so that PGM and EPGM sockets always create pipes immediately, even if delay_attach_on_connect is set. This allows passing through the icanhasall flag, and is realistic given the fact those protocols should be able to connect immediately - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6f6466f0884a169fd25a48195dd9a4e2135818e6 @@ -4254,14 +11987,14 @@ It didn't seem straightforward to use any of the existing process calls, so I have added a new command to command_t and friends called detach. This instructs the socket_base to remove the pipe from it's pipe list. The session base stores a copy of the outpipe, and will resend the bind command on reconnection. This should allow balancing again. - src/command.hpp | 6 +++++ - src/object.cpp | 19 +++++++++++++++ - src/object.hpp | 2 ++ - src/session_base.cpp | 13 +++++++++- - src/session_base.hpp | 8 +++--- - src/socket_base.cpp | 17 ++++++++++--- - src/socket_base.hpp | 3 +++ - tests/test_connect_delay.cpp | 58 ++++++++++++++++++++++++++++---------------- + src/command.hpp | 6 +++++ + src/object.cpp | 19 ++++++++++++++ + src/object.hpp | 2 ++ + src/session_base.cpp | 13 +++++++++- + src/session_base.hpp | 8 +++--- + src/socket_base.cpp | 17 ++++++++++--- + src/socket_base.hpp | 3 +++ + tests/test_connect_delay.cpp | 58 +++++++++++++++++++++++++++--------------- 8 files changed, 97 insertions(+), 29 deletions(-) commit 06485d9200ac697896dc4bd162fa4f8b4c2ddaf6 @@ -4270,9 +12003,9 @@ Remove the extra outpipe handling as the session is quite capable of delaying the creation of the pipe until the connection has happened. Simply don't build the pipe, and let it do that automatically. - src/session_base.cpp | 32 ++------------------------------ - src/session_base.hpp | 5 +---- - src/socket_base.cpp | 31 +++++++++++++++---------------- + src/session_base.cpp | 32 ++------------------------------ + src/session_base.hpp | 5 +---- + src/socket_base.cpp | 31 +++++++++++++++---------------- 3 files changed, 18 insertions(+), 50 deletions(-) commit 297af954514d9b2097c5e2df980bbe16dd72e761 @@ -4281,7 +12014,7 @@ And another typo on the same comment - src/session_base.cpp | 2 +- + src/session_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b79aaaf473c4ef61bbd45e711d48fceb06dc9ad1 @@ -4290,7 +12023,7 @@ Remove extra brackets as suggested by Martin H, and fix up a comment which was missing a word - src/session_base.cpp | 5 ++--- + src/session_base.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) commit f687a2989b7b4766e8ef7c459c8426e2e7ccbce7 @@ -4323,10 +12056,10 @@ Return error on invalid PGM url instead of raising assertion (Douglas Young). Fix Win32 build. - src/decoder.cpp | 5 +++++ - src/pgm_socket.cpp | 52 +++++++++++++++++++++++++++++++++++----------------- - src/pgm_socket.hpp | 3 +++ - src/socket_base.cpp | 14 ++++++++++++++ + src/decoder.cpp | 5 +++++ + src/pgm_socket.cpp | 52 ++++++++++++++++++++++++++++++++++----------------- + src/pgm_socket.hpp | 3 +++ + src/socket_base.cpp | 14 ++++++++++++++ 4 files changed, 57 insertions(+), 17 deletions(-) commit fe3fb419fe249d7015a6c864d18464d434a55468 @@ -4339,18 +12072,18 @@ The documentation has been updated to reflect the change, but please do check over the code and test and review. - .gitignore | 1 + - doc/zmq_getsockopt.txt | 15 +++++ - doc/zmq_setsockopt.txt | 13 +++++ - include/zmq.h | 1 + - src/lb.cpp | 3 +- - src/options.cpp | 25 +++++++++ - src/options.hpp | 4 ++ - src/session_base.cpp | 29 ++++++++++ - src/session_base.hpp | 6 ++ - src/socket_base.cpp | 5 +- - tests/Makefile.am | 2 + - tests/test_connect_delay.cpp | 131 +++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 1 + + doc/zmq_getsockopt.txt | 15 +++++ + doc/zmq_setsockopt.txt | 13 +++++ + include/zmq.h | 1 + + src/lb.cpp | 3 +- + src/options.cpp | 25 ++++++++ + src/options.hpp | 4 ++ + src/session_base.cpp | 29 ++++++++++ + src/session_base.hpp | 6 ++ + src/socket_base.cpp | 5 +- + tests/Makefile.am | 2 + + tests/test_connect_delay.cpp | 131 ++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 232 insertions(+), 3 deletions(-) commit c28af41ca4a02484577afc6376ed278292ee43da @@ -4377,7 +12110,7 @@ lb: code cleanup - src/lb.cpp | 8 +++----- + src/lb.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) commit 2973eaf44629dba0b27735549fa5bb627d5a7301 @@ -4389,8 +12122,8 @@ When removing a pipe from the lb or fq component, make sure we do not remove another pipe from the active set. - src/fq.cpp | 5 ++++- - src/lb.cpp | 1 + + src/fq.cpp | 5 ++++- + src/lb.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) commit 4e7be102f4d09c27b76f52e9d3f84f23cebf6cff @@ -4409,10 +12142,10 @@ Return error on invalid PGM url instead of raising assertion. Fix Win32 build. - src/decoder.cpp | 5 +++++ - src/pgm_socket.cpp | 52 +++++++++++++++++++++++++++++++++++----------------- - src/pgm_socket.hpp | 3 +++ - src/socket_base.cpp | 14 ++++++++++++++ + src/decoder.cpp | 5 +++++ + src/pgm_socket.cpp | 52 ++++++++++++++++++++++++++++++++++----------------- + src/pgm_socket.hpp | 3 +++ + src/socket_base.cpp | 14 ++++++++++++++ 4 files changed, 57 insertions(+), 17 deletions(-) commit 32befeb0a6215aede34b58eb38bd853133473113 @@ -4430,7 +12163,7 @@ Fix title on zmq_disconnect manpage. - doc/zmq_disconnect.txt | 2 +- + doc/zmq_disconnect.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1adb7b10175ddefcdc8cd60eb46cd2bd441b69b9 @@ -4452,10 +12185,10 @@ This method is used to reset a session's state so that it can handle a new connection. - src/req.cpp | 5 +++++ - src/req.hpp | 1 + - src/session_base.cpp | 11 ++++++++--- - src/session_base.hpp | 1 + + src/req.cpp | 5 +++++ + src/req.hpp | 1 + + src/session_base.cpp | 11 ++++++++--- + src/session_base.hpp | 1 + 4 files changed, 15 insertions(+), 3 deletions(-) commit f7bd543c36ee0850e9843eb24e21f8a9c5cbfbbd @@ -4473,18 +12206,18 @@ Prefer errno_assert/alloc_assert to zmq_assert - src/ctx.cpp | 2 +- - src/dealer.cpp | 2 +- - src/dist.cpp | 2 +- - src/lb.cpp | 2 +- - src/mtrie.cpp | 16 ++++++++-------- - src/pgm_sender.cpp | 2 +- - src/session_base.cpp | 7 ++++--- - src/signaler.cpp | 4 ++-- - src/socket_base.cpp | 10 +++++----- - src/tcp_address.cpp | 12 ++++++------ - src/trie.cpp | 10 +++++----- - src/xsub.cpp | 8 ++++---- + src/ctx.cpp | 2 +- + src/dealer.cpp | 2 +- + src/dist.cpp | 2 +- + src/lb.cpp | 2 +- + src/mtrie.cpp | 16 ++++++++-------- + src/pgm_sender.cpp | 2 +- + src/session_base.cpp | 7 ++++--- + src/signaler.cpp | 4 ++-- + src/socket_base.cpp | 10 +++++----- + src/tcp_address.cpp | 12 ++++++------ + src/trie.cpp | 10 +++++----- + src/xsub.cpp | 8 ++++---- 12 files changed, 39 insertions(+), 38 deletions(-) commit 013967681dda83af378ed47343dc68561ec687e3 @@ -4493,7 +12226,7 @@ fq: code cleanup - src/fq.cpp | 27 +++++++++++---------------- + src/fq.cpp | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) commit 8152502f6924f271c63df6dae100c14c5445e468 @@ -4514,7 +12247,7 @@ The bug was that after reconnect, the session did not handle identity messages properly. - src/session_base.cpp | 4 ++++ + src/session_base.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit e30e48c23effe286135e727e0795b91b268986d0 @@ -4532,7 +12265,7 @@ Fixing issue #361 - doc/zmq_poll.txt | 3 +++ + doc/zmq_poll.txt | 3 +++ 1 file changed, 3 insertions(+) commit 3a76d246a8808bf8357a91319f9b17e731e41407 @@ -4550,7 +12283,7 @@ Don't assume SOCKET_ERROR is -1 on Windows - src/stream_engine.cpp | 4 ++-- + src/stream_engine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ac53f1a7284b85849e0a31fdec80e0f51293f3d0 @@ -4559,8 +12292,8 @@ Remove unnecessary casts - src/pgm_socket.cpp | 2 +- - src/stream_engine.cpp | 4 ++-- + src/pgm_socket.cpp | 2 +- + src/stream_engine.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) commit e0534643fa65890145aabfe6423695b63b1d9bb4 @@ -4569,7 +12302,7 @@ Simplify error handling in tcp_connecter - src/tcp_connecter.cpp | 15 ++++++--------- + src/tcp_connecter.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) commit 13ef1e4f268452a076205d9c974a33e111401ef2 @@ -4578,11 +12311,11 @@ Make wsa_error_to_errno pure function - src/err.cpp | 38 ++++++++++++++------------------------ - src/err.hpp | 2 +- - src/tcp_connecter.cpp | 4 ++-- - src/tcp_listener.cpp | 8 ++++---- - src/zmq.cpp | 12 +++++------- + src/err.cpp | 38 ++++++++++++++------------------------ + src/err.hpp | 2 +- + src/tcp_connecter.cpp | 4 ++-- + src/tcp_listener.cpp | 8 ++++---- + src/zmq.cpp | 12 +++++------- 5 files changed, 26 insertions(+), 38 deletions(-) commit a8f9a0d8918c6ede1617beda9c65ff70b5a1977a @@ -4591,9 +12324,9 @@ Use zmq_assert rather then assert - src/devpoll.cpp | 4 ++-- - src/poll.cpp | 4 ++-- - src/router.cpp | 6 +++--- + src/devpoll.cpp | 4 ++-- + src/poll.cpp | 4 ++-- + src/router.cpp | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) commit 52ed4cdccf16567674e9c949da74b484b596f8a8 @@ -4602,8 +12335,8 @@ Remove dead code - src/session_base.cpp | 8 +------- - src/stream_engine.cpp | 28 ++++------------------------ + src/session_base.cpp | 8 +------- + src/stream_engine.cpp | 28 ++++------------------------ 2 files changed, 5 insertions(+), 31 deletions(-) commit 7cfd03ba72dd91d2e8f1b246bf68dbf43ec135f4 @@ -4612,10 +12345,10 @@ Remove unplug from i_engine interface - src/i_engine.hpp | 3 --- - src/pgm_receiver.hpp | 4 +++- - src/pgm_sender.hpp | 4 +++- - src/stream_engine.hpp | 4 +++- + src/i_engine.hpp | 3 --- + src/pgm_receiver.hpp | 4 +++- + src/pgm_sender.hpp | 4 +++- + src/stream_engine.hpp | 4 +++- 4 files changed, 9 insertions(+), 6 deletions(-) commit 5db30fe991137e80926a549f99e45e2854d63e91 @@ -4633,7 +12366,7 @@ Fix too long underline in monitor docs - doc/zmq_ctx_set_monitor.txt | 2 +- + doc/zmq_ctx_set_monitor.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 74af2f9402f68b2c1d96dfaeefa69f490ae79db0 @@ -4651,8 +12384,8 @@ Rename monitor documentation source file to match zmq_ctx_set_monitor() API - doc/zmq_ctx_set_monitor.txt | 221 ++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_monitor.txt | 221 -------------------------------------------- + doc/zmq_ctx_set_monitor.txt | 221 +++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_monitor.txt | 221 ------------------------------------------- 2 files changed, 221 insertions(+), 221 deletions(-) commit 22b4388e29fcb6cf576ef4d1e92e939560d30f99 @@ -4670,7 +12403,7 @@ Oust last remaning ZMQ_MONITOR reference from NEWS as well - NEWS | 3 ++- + NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit adf7a7ade12598d14d9e7948922b68f4bab60657 @@ -4686,12 +12419,12 @@ Rename zmq_monitor to zmq_ctx_set_monitor for compat with existing context specific APIs - doc/Makefile.am | 2 +- - doc/zmq.txt | 2 +- - doc/zmq_monitor.txt | 18 +++++++++--------- - include/zmq.h | 2 +- - src/zmq.cpp | 2 +- - tests/test_monitor.cpp | 2 +- + doc/Makefile.am | 2 +- + doc/zmq.txt | 2 +- + doc/zmq_monitor.txt | 18 +++++++++--------- + include/zmq.h | 2 +- + src/zmq.cpp | 2 +- + tests/test_monitor.cpp | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) commit 04f0e7f26e18a2802d8683fc12ef8a67197fda6c @@ -4700,11 +12433,11 @@ Documentation for zmq_monitor - doc/Makefile.am | 2 +- - doc/zmq.txt | 3 + - doc/zmq_getsockopt.txt | 11 --- - doc/zmq_monitor.txt | 221 +++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_setsockopt.txt | 40 --------- + doc/Makefile.am | 2 +- + doc/zmq.txt | 3 + + doc/zmq_getsockopt.txt | 11 --- + doc/zmq_monitor.txt | 221 ++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_setsockopt.txt | 40 --------- 5 files changed, 225 insertions(+), 52 deletions(-) commit 20152a6e3e1e46e3c930afdb2da122939f6f97e9 @@ -4722,7 +12455,7 @@ Man page for zmq_ctx_new had error, fixed - doc/zmq_ctx_new.txt | 2 +- + doc/zmq_ctx_new.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f27c02d01e323c2d5d2d3d889f5e8d5a7cbff73d @@ -4731,8 +12464,8 @@ Change context monitor_event prototype to accept a va_list instead - src/ctx.cpp | 45 +++++++++++++++++++++------------------------ - src/ctx.hpp | 2 +- + src/ctx.cpp | 45 +++++++++++++++++++++------------------------ + src/ctx.hpp | 2 +- 2 files changed, 22 insertions(+), 25 deletions(-) commit 4767159f39001b7f5a2cc6b9d63a548a57c286d5 @@ -4741,14 +12474,14 @@ Initial stab at a context level monitor callback and registration API - include/zmq.h | 24 ++++++++-------- - src/ctx.cpp | 65 +++++++++++++++++++++++++++++++++++++++++- - src/ctx.hpp | 8 ++++++ - src/options.cpp | 24 ---------------- - src/options.hpp | 3 -- - src/socket_base.cpp | 56 +++---------------------------------- - src/zmq.cpp | 8 ++++++ - tests/test_monitor.cpp | 76 +++++++++++++++----------------------------------- + include/zmq.h | 24 +++++++-------- + src/ctx.cpp | 65 ++++++++++++++++++++++++++++++++++++++++- + src/ctx.hpp | 8 +++++ + src/options.cpp | 24 --------------- + src/options.hpp | 3 -- + src/socket_base.cpp | 56 +++-------------------------------- + src/zmq.cpp | 8 +++++ + tests/test_monitor.cpp | 76 +++++++++++++++--------------------------------- 8 files changed, 118 insertions(+), 146 deletions(-) commit 7cb19fbf1c736f72ac2ed35bab9645f3700be634 @@ -4784,8 +12517,8 @@ Also, mention C++ in the additional community bindings of 0MQ in zmq.txt. - doc/zmq.txt | 6 +++--- - doc/zmq_pgm.txt | 3 ++- + doc/zmq.txt | 6 +++--- + doc/zmq_pgm.txt | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) commit e13b3723b8246b0526298698f9070d077b3322e3 @@ -4794,12 +12527,12 @@ Rename type zmq_monitor_fn -> zmq_monitor for a more natural callback definition API (zmq_monitor type, monitor.function callback) - doc/zmq_getsockopt.txt | 2 +- - doc/zmq_setsockopt.txt | 4 ++-- - include/zmq.h | 2 +- - src/options.cpp | 6 +++--- - src/options.hpp | 4 ++-- - tests/test_monitor.cpp | 2 +- + doc/zmq_getsockopt.txt | 2 +- + doc/zmq_setsockopt.txt | 4 ++-- + include/zmq.h | 2 +- + src/options.cpp | 6 +++--- + src/options.hpp | 4 ++-- + tests/test_monitor.cpp | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) commit 06cce1547996c0aa42038d0eccfbf63efe18f0bb @@ -4808,10 +12541,10 @@ Change zmq_monitor_fn type to cast between pointer-to-object and pointer-to-function in a more standards compliant way - doc/zmq_setsockopt.txt | 2 +- - include/zmq.h | 5 ++++- - src/socket_base.cpp | 2 +- - tests/test_monitor.cpp | 16 ++++++++-------- + doc/zmq_setsockopt.txt | 2 +- + include/zmq.h | 5 ++++- + src/socket_base.cpp | 2 +- + tests/test_monitor.cpp | 16 ++++++++-------- 4 files changed, 14 insertions(+), 11 deletions(-) commit d25dce9df916b6fa646776015162415cc9efb835 @@ -4820,7 +12553,7 @@ Solaris/SunCC build fix: could not find a match for std::multimap<...>::insert(std::pair<...,...>) - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5ef63318f876fe982f24b4b209e7f961ecd9b2bf @@ -4861,10 +12594,10 @@ Also, fixed an asciidoc error in zmq_getsockopt.txt because the `~~~~` is too long. - doc/zmq_getsockopt.txt | 2 +- - src/options.cpp | 6 +++--- - src/session_base.cpp | 2 ++ - tests/test_monitor.cpp | 15 +++++++++------ + doc/zmq_getsockopt.txt | 2 +- + src/options.cpp | 6 +++--- + src/session_base.cpp | 2 ++ + tests/test_monitor.cpp | 15 +++++++++------ 4 files changed, 15 insertions(+), 10 deletions(-) commit 89d5054e596e61fa2cd9ae4d62be423b7d2aecf0 @@ -4898,9 +12631,9 @@ gitignore endpoint test and add docs for unbind and disconnect - .gitignore | 1 + - doc/zmq_disconnect.txt | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_unbind.txt | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 1 + + doc/zmq_disconnect.txt | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_unbind.txt | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+) commit c7af07cc773c922fc8fdae0dab740d7330edbca3 @@ -4927,7 +12660,7 @@ Simplify encoder's loop - src/encoder.hpp | 19 +++++++------------ + src/encoder.hpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) commit 80e8baaff473892e5b5b4d4c59edcd146712a7d2 @@ -4950,8 +12683,8 @@ The bug affected PGM receiver making it unable to decode inital messages. - src/encoder.cpp | 8 +++----- - src/encoder.hpp | 14 ++++++-------- + src/encoder.cpp | 8 +++----- + src/encoder.hpp | 14 ++++++-------- 2 files changed, 9 insertions(+), 13 deletions(-) commit 5fe6ddfda3ab207c579c7dc6a9b2be48bf3cdb92 @@ -4960,9 +12693,9 @@ On Windows, preventing sockets to be inherited by child processes. - src/ip.cpp | 6 ++++++ - src/signaler.cpp | 10 +++++++++- - src/tcp_listener.cpp | 6 ++++++ + src/ip.cpp | 6 ++++++ + src/signaler.cpp | 10 +++++++++- + src/tcp_listener.cpp | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) commit 5dc44a63d656be113dba904a384038c7f7b99700 @@ -4991,7 +12724,7 @@ 'windows.h'. To solve this problem, the preprocessor macro /DNOMINMAX must be specified. - builds/msvc/libzmq/libzmq.vcproj | 1 + + builds/msvc/libzmq/libzmq.vcproj | 1 + 1 file changed, 1 insertion(+) commit 68c1be8bf6539a317c48810fb7af7b2e59cd7dfa @@ -5000,8 +12733,8 @@ Fix for issue 355. Added missing source files dealer.cpp, device,cpp and router.cpp. Removed source files no longer present: xrep.cpp and xreq.cpp - builds/msvc/libzmq/libzmq.vcproj | 20 ++++++++++++-------- - builds/msvc/libzmq/libzmq.vcxproj | 5 +++-- + builds/msvc/libzmq/libzmq.vcproj | 20 ++++++++++++-------- + builds/msvc/libzmq/libzmq.vcxproj | 5 +++-- 2 files changed, 15 insertions(+), 10 deletions(-) commit c38aecdc50249df84ee585ea4cec1ee1c0f0b2df @@ -5017,32 +12750,32 @@ ZMQ_MONITOR socket option registers a callback / event sink for changes in socket state - .gitignore | 2 + - AUTHORS | 1 + - NEWS | 2 + - doc/zmq_getsockopt.txt | 10 ++++ - doc/zmq_setsockopt.txt | 41 ++++++++++++- - include/zmq.h | 68 +++++++++++++++++++++- - src/address.cpp | 2 +- - src/address.hpp | 2 +- - src/ipc_connecter.cpp | 14 ++++- - src/ipc_connecter.hpp | 3 + - src/ipc_listener.cpp | 20 +++++-- - src/ipc_listener.hpp | 3 + - src/options.cpp | 23 ++++++++ - src/options.hpp | 4 ++ - src/session_base.cpp | 15 +++++ - src/session_base.hpp | 3 + - src/socket_base.cpp | 58 +++++++++++++++++++ - src/socket_base.hpp | 3 + - src/stream_engine.cpp | 4 ++ - src/stream_engine.hpp | 4 ++ - src/tcp_connecter.cpp | 14 ++++- - src/tcp_connecter.hpp | 4 ++ - src/tcp_listener.cpp | 14 ++++- - src/tcp_listener.hpp | 4 ++ - tests/Makefile.am | 4 +- - tests/test_monitor.cpp | 152 +++++++++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 2 + + AUTHORS | 1 + + NEWS | 2 + + doc/zmq_getsockopt.txt | 10 ++++ + doc/zmq_setsockopt.txt | 41 ++++++++++++- + include/zmq.h | 68 +++++++++++++++++++++- + src/address.cpp | 2 +- + src/address.hpp | 2 +- + src/ipc_connecter.cpp | 14 ++++- + src/ipc_connecter.hpp | 3 + + src/ipc_listener.cpp | 20 +++++-- + src/ipc_listener.hpp | 3 + + src/options.cpp | 23 ++++++++ + src/options.hpp | 4 ++ + src/session_base.cpp | 15 +++++ + src/session_base.hpp | 3 + + src/socket_base.cpp | 58 ++++++++++++++++++ + src/socket_base.hpp | 3 + + src/stream_engine.cpp | 4 ++ + src/stream_engine.hpp | 4 ++ + src/tcp_connecter.cpp | 14 ++++- + src/tcp_connecter.hpp | 4 ++ + src/tcp_listener.cpp | 14 ++++- + src/tcp_listener.hpp | 4 ++ + tests/Makefile.am | 4 +- + tests/test_monitor.cpp | 152 ++++++++++++++++++++++++++++++++++++++++++++++++ 26 files changed, 461 insertions(+), 13 deletions(-) commit 47dbd4aa968f756f6e8afaa17aca6553e3f46d15 @@ -5069,8 +12802,8 @@ Signed-off-by: Martin Lucina - src/ipc_connecter.cpp | 7 +++++++ - src/tcp_connecter.cpp | 11 ++++++----- + src/ipc_connecter.cpp | 7 +++++++ + src/tcp_connecter.cpp | 11 ++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) commit f497aae8df340c1543dc822b6ee284dc7e4bea7d @@ -5120,7 +12853,7 @@ This patch changes the ZMQ_PAIR socket behaviour so that it rejects any further connection requests. - src/pair.cpp | 14 ++++++++++---- + src/pair.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit 5227f676f4259050f067386c58e6bcf7f148c333 @@ -5132,7 +12865,7 @@ The decoder did not properly decode large messages on systems where sizeof (size_t) < sizeof (uint64_t). - src/decoder.cpp | 39 ++++++++++++++++++++++++--------------- + src/decoder.cpp | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) commit 776563fcffe975774c713ade357ea2b83d22da7c @@ -5151,10 +12884,10 @@ The new behaviour is to terminate the engine only after the input error has been detected and the last decoded - src/decoder.cpp | 5 +++++ - src/decoder.hpp | 16 ++++++++++------ - src/stream_engine.cpp | 34 +++++++++++++++++++++++++++++----- - src/stream_engine.hpp | 1 + + src/decoder.cpp | 5 +++++ + src/decoder.hpp | 16 ++++++++++------ + src/stream_engine.cpp | 34 +++++++++++++++++++++++++++++----- + src/stream_engine.hpp | 1 + 4 files changed, 45 insertions(+), 11 deletions(-) commit 394a24857905c2489b555803170a0d640f38b4a8 @@ -5163,8 +12896,8 @@ socket_base: process_unplug () is not used, remove it - src/socket_base.cpp | 4 ---- - src/socket_base.hpp | 1 - + src/socket_base.cpp | 4 ---- + src/socket_base.hpp | 1 - 2 files changed, 5 deletions(-) commit 16ec2868c5f786b2267a003e2d3f1e4279c08d91 @@ -5182,7 +12915,7 @@ Slight tweak to text for readability - doc/zmq_getsockopt.txt | 11 ++++++----- + doc/zmq_getsockopt.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 7c5d79ddd38b5110982e02aa2c2d3dc61f111419 @@ -5200,7 +12933,7 @@ Added refinement for ZMQ_FD option - doc/zmq_getsockopt.txt | 6 ++++++ + doc/zmq_getsockopt.txt | 6 ++++++ 1 file changed, 6 insertions(+) commit 29000d3b021147384bff0e2a9d1f64b7b71cfa5d @@ -5229,12 +12962,12 @@ The recv function accepted flags parameter but this was unused. - src/dealer.cpp | 2 +- - src/fq.cpp | 6 +++--- - src/fq.hpp | 4 ++-- - src/pull.cpp | 2 +- - src/router.cpp | 4 ++-- - src/xsub.cpp | 8 ++++---- + src/dealer.cpp | 2 +- + src/fq.cpp | 6 +++--- + src/fq.hpp | 4 ++-- + src/pull.cpp | 2 +- + src/router.cpp | 4 ++-- + src/xsub.cpp | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) commit 1788fd396b609daf404a3b92bcafe98892603c71 @@ -5243,7 +12976,7 @@ pipe: code cleanup - src/pipe.cpp | 28 ++++++++++++---------------- + src/pipe.cpp | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) commit 648e31994d4239136d2325c16500afee01aa7c33 @@ -5264,7 +12997,7 @@ + fix whitespace errors + drop some unnecessary parens - src/device.cpp | 19 +++++++++++-------- + src/device.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) commit e8b701cb9285d32c21b22c3c3c9b0b6681ad965e @@ -5291,10 +13024,10 @@ Rename XREP/XREQ to ROUTER/DEALER in tests - tests/test_invalid_rep.cpp | 26 +++++++++++++------------- - tests/test_last_endpoint.cpp | 2 +- - tests/test_msg_flags.cpp | 4 ++-- - tests/test_reqrep_device.cpp | 28 ++++++++++++++-------------- + tests/test_invalid_rep.cpp | 26 +++++++++++++------------- + tests/test_last_endpoint.cpp | 2 +- + tests/test_msg_flags.cpp | 4 ++-- + tests/test_reqrep_device.cpp | 28 ++++++++++++++-------------- 4 files changed, 30 insertions(+), 30 deletions(-) commit df5344bba0a8fc21b7dd213a815964b4580fd117 @@ -5307,7 +13040,7 @@ to release and initialise empty message when duplicate subscription was detected. - src/xsub.cpp | 14 +++++++------- + src/xsub.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 016df8e89c04338898790357a115aa55d250623d @@ -5341,8 +13074,8 @@ average latency: 42.234 [us], pthread mutexes average latency: 35.496 [us], assembly atomic ops - src/atomic_counter.hpp | 32 ++++++++++++++++++++++++++++++++ - src/atomic_ptr.hpp | 35 +++++++++++++++++++++++++++++++++++ + src/atomic_counter.hpp | 32 ++++++++++++++++++++++++++++++++ + src/atomic_ptr.hpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) commit c120f02dc93dd7d3b1ba4ea6910d8694c3934d91 @@ -5364,7 +13097,7 @@ only at the socket creation time and therefore don't need it. Now it is not true anymore. - src/socket_base.cpp | 14 ++++++++++++-- + src/socket_base.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit b9fb9198779a6db23aadb1cd803c76edd8dcde5a @@ -5416,9 +13149,9 @@ (*_listener_t terminates all owned session_base_t(connect=false) and they call pipe_t::terminate() which in turn should call session_base_t::terminated() but this never happens) - src/ipc_listener.cpp | 2 +- - src/socket_base.cpp | 6 ++++++ - src/tcp_listener.cpp | 1 + + src/ipc_listener.cpp | 2 +- + src/socket_base.cpp | 6 ++++++ + src/tcp_listener.cpp | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) commit 4f668ad60a7fa6c6000a5f7d94731a42ea295513 @@ -5431,8 +13164,8 @@ Please add license header by your choice. This file for 99% resemble crossroads-io/tests/shutdown.cpp - tests/Makefile.am | 4 +- - tests/test_term_endpoint.cpp | 97 ++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 4 +- + tests/test_term_endpoint.cpp | 97 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) commit 74ae19ac1f31d1264e425f8fd9caa4d277d65c49 @@ -5441,8 +13174,8 @@ spaces deleted - src/pipe.cpp | 2 +- - src/session_base.cpp | 7 ++++--- + src/pipe.cpp | 2 +- + src/session_base.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) commit 952127dfd6f2948b102d240d69c23dab13d8bb84 @@ -5460,7 +13193,7 @@ small wording change - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2faa4c487fbff3b92b3d22b4eb219e966be990ab @@ -5469,7 +13202,7 @@ stupid bug. I feel ashamed ^) - src/address.cpp | 2 +- + src/address.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 653e5854edffefd26ff1fadf9389d8bc74e7d9c2 @@ -5493,7 +13226,7 @@ address.cpp:41:29: error: deleting object of polymorphic class type 'zmq::tcp_address_t' which has non-virtual destructor might cause undefined behaviour [-Werror=delete-non-virtual-dtor] cc1plus: all warnings being treated as errors - src/tcp_address.hpp | 2 +- + src/tcp_address.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 489481857a51b995cf837c0adf0f22425cff03a5 @@ -5502,12 +13235,12 @@ 2nd try wuth sock->unbind() and sock->disconnect(). now with blackjack and const char*'s - include/zmq.h | 5 ++--- - src/options.cpp | 9 -------- - src/options.hpp | 4 +--- - src/socket_base.cpp | 65 ++++++++++++++++++++++++++++++++--------------------- - src/socket_base.hpp | 9 +++++++- - src/zmq.cpp | 8 +++---- + include/zmq.h | 5 ++-- + src/options.cpp | 9 ------- + src/options.hpp | 4 +--- + src/socket_base.cpp | 65 +++++++++++++++++++++++++++++++-------------------- + src/socket_base.hpp | 9 ++++++- + src/zmq.cpp | 8 +++---- 6 files changed, 55 insertions(+), 45 deletions(-) commit d56b75219fa60284299ca12f0b1d6e4605ca912a @@ -5534,23 +13267,23 @@ implement zmq_unbind(),zmq_disconnect(), zmq->sock->getsockopt(ZMQ_LAST_ENDPOINT_ID) - include/zmq.h | 3 ++ - src/address.cpp | 28 ++++++++++++++++++- - src/address.hpp | 2 ++ - src/ipc_address.cpp | 26 +++++++++++++++++- - src/ipc_address.hpp | 6 ++++ - src/ipc_listener.cpp | 15 +++------- - src/ipc_listener.hpp | 2 +- - src/options.cpp | 10 +++++++ - src/options.hpp | 2 ++ - src/own.cpp | 5 ++++ - src/own.hpp | 3 ++ - src/socket_base.cpp | 37 ++++++++++++++++++++++--- - src/socket_base.hpp | 1 + - src/tcp_address.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++-- - src/tcp_address.hpp | 7 +++++ - src/tcp_listener.cpp | 34 +++++------------------ - src/zmq.cpp | 20 ++++++++++++++ + include/zmq.h | 3 ++ + src/address.cpp | 28 +++++++++++++++++- + src/address.hpp | 2 ++ + src/ipc_address.cpp | 26 ++++++++++++++++- + src/ipc_address.hpp | 6 ++++ + src/ipc_listener.cpp | 15 +++------- + src/ipc_listener.hpp | 2 +- + src/options.cpp | 10 +++++++ + src/options.hpp | 2 ++ + src/own.cpp | 5 ++++ + src/own.hpp | 3 ++ + src/socket_base.cpp | 37 +++++++++++++++++++++--- + src/socket_base.hpp | 1 + + src/tcp_address.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++++-- + src/tcp_address.hpp | 7 +++++ + src/tcp_listener.cpp | 34 +++++----------------- + src/zmq.cpp | 20 +++++++++++++ 17 files changed, 230 insertions(+), 48 deletions(-) commit 318d55fd10c351454169aa00db352b785e53d294 @@ -5559,7 +13292,7 @@ Fixed issue LIBZMQ-358 - src/device.cpp | 74 +++++++++++++++++++--------------------------------------- + src/device.cpp | 74 ++++++++++++++++++-------------------------------------- 1 file changed, 24 insertions(+), 50 deletions(-) commit 36e9c4ac84c414db0977ab9e6361a44732fab642 @@ -5577,7 +13310,7 @@ fix bug in zmq::tcp_address_t::resolve_interface() where all resolved interface ip's overwrited by 0.0.0.0 - src/tcp_address.cpp | 4 +--- + src/tcp_address.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 334f99fb01c84e51682e2c3f139d84f589d65cf0 @@ -5600,8 +13333,8 @@ when timeouts are used and recv/send is called in a tight loop. - src/socket_base.cpp | 3 --- - src/socket_base.hpp | 4 ++++ + src/socket_base.cpp | 3 --- + src/socket_base.hpp | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) commit f663ad935beeedc05be44043afda0bee29afe30f @@ -5619,7 +13352,7 @@ Make docs reflect socket mappings better - doc/zmq_socket.txt | 8 ++++---- + doc/zmq_socket.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 084c1824c44471136a8badaf5fb80d929828f4bb @@ -5637,14 +13370,14 @@ some spaces cleanups + delete unused anymore zmq::max_sockets + some minor code chages - src/config.hpp | 5 +---- - src/ip.cpp | 11 +++++------ - src/options.cpp | 4 ++-- - src/options.hpp | 2 +- - src/tcp_address.cpp | 28 +++++++++++++--------------- - src/tcp_address.hpp | 2 +- - src/tcp_listener.cpp | 2 -- - src/tcp_listener.hpp | 2 +- + src/config.hpp | 5 +---- + src/ip.cpp | 11 +++++------ + src/options.cpp | 4 ++-- + src/options.hpp | 2 +- + src/tcp_address.cpp | 28 +++++++++++++--------------- + src/tcp_address.hpp | 2 +- + src/tcp_listener.cpp | 2 -- + src/tcp_listener.hpp | 2 +- 8 files changed, 24 insertions(+), 32 deletions(-) commit 525be5181278e4882423e785b4e004836c709140 @@ -5684,14 +13417,14 @@ The only thing that worries me is that I had to re-enable 'default assign by reference constructor/operator' for 'tcp_address_t' (and for my inherited class tcp_address_mask_t) to store it in std::vector in 'options_t'... - doc/zmq_setsockopt.txt | 16 ++++++++ - include/zmq.h | 1 + - src/options.cpp | 26 +++++++++++++ - src/options.hpp | 6 +++ - src/tcp_address.cpp | 102 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/tcp_address.hpp | 26 ++++++++++--- - src/tcp_listener.cpp | 28 +++++++++++++- - src/tcp_listener.hpp | 3 +- + doc/zmq_setsockopt.txt | 16 ++++++++ + include/zmq.h | 1 + + src/options.cpp | 26 ++++++++++++ + src/options.hpp | 6 +++ + src/tcp_address.cpp | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/tcp_address.hpp | 26 +++++++++--- + src/tcp_listener.cpp | 28 ++++++++++++- + src/tcp_listener.hpp | 3 +- 8 files changed, 201 insertions(+), 7 deletions(-) commit e276df2bdff2b9d59e894e59ae9a23381e5dbe8b @@ -5717,7 +13450,7 @@ The proper solution would be to use CreateEventEx function, but this one is not available on Windows XP. - src/signaler.cpp | 8 +++++++- + src/signaler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 899778dcb306f0207b24e63f6e049dcb9c60ce4d @@ -5735,7 +13468,7 @@ c++ style comments result in compile errors with non-c99 C compiler - include/zmq.h | 4 ++-- + include/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f6330f3d8d69c65a30729bf39d5fddf9c911077b @@ -5753,7 +13486,7 @@ ETIMEDOUT is a valid error code here. Fixes intermittent assertion failure on laggy networks - src/stream_engine.cpp | 3 ++- + src/stream_engine.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 3cd0b1b647c4b3c08f2749c4e8d499d603a3fdb0 @@ -5771,8 +13504,8 @@ documentation trimmed down to be just placeholders for who knows english better than me - doc/zmq_getsockopt.txt | 58 +++++++++++++++++--------------------------------- - doc/zmq_setsockopt.txt | 58 +++++++++++++++++--------------------------------- + doc/zmq_getsockopt.txt | 58 +++++++++++++++++------------------------------- + doc/zmq_setsockopt.txt | 58 +++++++++++++++++------------------------------- 2 files changed, 40 insertions(+), 76 deletions(-) commit 4b303402a76a5d2fe85ff8cdaf7a98d6dcfa94ee @@ -5781,12 +13514,12 @@ more flexible keepalive options detection + awful options documentation - acinclude.m4 | 112 ++++++++++++++++++++++++++++++++++++++++++------- - configure.in | 27 +++++++++--- - doc/zmq_getsockopt.txt | 63 ++++++++++++++++++++++++++++ - doc/zmq_setsockopt.txt | 66 +++++++++++++++++++++++++++++ - src/ip.cpp | 37 ++++++++++++++-- - src/options.cpp | 9 ++-- + acinclude.m4 | 112 +++++++++++++++++++++++++++++++++++++++++------- + configure.in | 27 +++++++++--- + doc/zmq_getsockopt.txt | 63 +++++++++++++++++++++++++++ + doc/zmq_setsockopt.txt | 66 ++++++++++++++++++++++++++++ + src/ip.cpp | 37 ++++++++++++++-- + src/options.cpp | 9 ++-- 6 files changed, 286 insertions(+), 28 deletions(-) commit 0c3d9179262ab431b8949b8646eed9a1a1e4a233 @@ -5799,15 +13532,15 @@ possibly work in *bsd and could be enhanced to work on windows - acinclude.m4 | 55 +++++++++++++++++++++++++ - configure.in | 10 +++++ - include/zmq.h | 5 +++ - src/ip.cpp | 31 ++++++++++++++ - src/ip.hpp | 3 ++ - src/options.cpp | 111 +++++++++++++++++++++++++++++++++++++++++++++++++- - src/options.hpp | 9 +++- - src/tcp_connecter.cpp | 1 + - src/tcp_listener.cpp | 1 + + acinclude.m4 | 55 ++++++++++++++++++++++++ + configure.in | 10 +++++ + include/zmq.h | 5 +++ + src/ip.cpp | 31 ++++++++++++++ + src/ip.hpp | 3 ++ + src/options.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++++++- + src/options.hpp | 9 +++- + src/tcp_connecter.cpp | 1 + + src/tcp_listener.cpp | 1 + 9 files changed, 223 insertions(+), 3 deletions(-) commit 4ab3c5a285b858159c957139eb991ce6f727c05a @@ -5828,7 +13561,7 @@ The socket connecting using the inproc transport never received the identity of the remote peer. - src/socket_base.cpp | 12 ++++++++++++ + src/socket_base.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit 88db804bb98cf0443864695c104bee3c5a1a284b @@ -5853,7 +13586,7 @@ The identity message was never delivered if the user used the socket only to receive messages. - src/socket_base.cpp | 1 + + src/socket_base.cpp | 1 + 1 file changed, 1 insertion(+) commit 5bc9fd62c536a97c25d171b893af243403148fa5 @@ -5871,7 +13604,7 @@ Fixed issue #351 - include/zmq.h | 3 +++ + include/zmq.h | 3 +++ 1 file changed, 3 insertions(+) commit a96902897722826d1b718b9b5468b48843e093f9 @@ -5889,7 +13622,7 @@ Fix error in router socket introduced in the previous commit - src/router.cpp | 4 +++- + src/router.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 2faedd9e085613d5facfad93fd572a877fc8dd35 @@ -5921,7 +13654,7 @@ Namely, in those cases, the socket could route some message parts into a wrong connection. - src/router.cpp | 2 -- + src/router.cpp | 2 -- 1 file changed, 2 deletions(-) commit f037290dc39eafd0676f7b79216531d05a205619 @@ -5936,8 +13669,8 @@ Fixes issue #304 - src/router.cpp | 235 +++++++++++++++++++++++++++++---------------------------- - src/router.hpp | 17 ++++- + src/router.cpp | 235 ++++++++++++++++++++++++++++---------------------------- + src/router.hpp | 17 +++- 2 files changed, 132 insertions(+), 120 deletions(-) commit 476c9b97c967dfe8f8b973290e75bcca9304326a @@ -5955,7 +13688,7 @@ Added optval checking in zmq_ctx_set - src/ctx.cpp | 4 ++-- + src/ctx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 3eaae8b21e7ee8d0e183732201942172d8791b4a @@ -5973,7 +13706,7 @@ Fixed zmq_init(-1) issue - src/zmq.cpp | 10 +++++++--- + src/zmq.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit cecc790ca3f2b289a816e02a4e99bab518eecaa3 @@ -6000,7 +13733,7 @@ Fix return value of send for router socket - src/router.cpp | 3 ++- + src/router.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 77d93d70f07a9f41f82bc16e430a078f4f230a27 @@ -6014,7 +13747,7 @@ The patch also fixes some whitespace problems. - src/mutex.hpp | 28 ++++++++++++---------------- + src/mutex.hpp | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) commit e7674025e583044c7d6a52cd54033973df934bef @@ -6025,8 +13758,8 @@ The method is not used anymore. - src/own.cpp | 18 ------------------ - src/own.hpp | 4 ---- + src/own.cpp | 18 ------------------ + src/own.hpp | 4 ---- 2 files changed, 22 deletions(-) commit 6f47f1281bcd56a085097cecfeaa1064f90fb19e @@ -6039,11 +13772,11 @@ The parameter was needed to implement the swap. As the swap is not supported anymore, it is safe to remove this parameter. - src/lb.cpp | 12 ++---------- - src/pair.cpp | 8 +------- - src/pipe.cpp | 4 ++-- - src/pipe.hpp | 2 +- - src/router.cpp | 8 +------- + src/lb.cpp | 12 ++---------- + src/pair.cpp | 8 +------- + src/pipe.cpp | 4 ++-- + src/pipe.hpp | 2 +- + src/router.cpp | 8 +------- 5 files changed, 7 insertions(+), 27 deletions(-) commit ed65271c52ef586607bcde066ccac65adfac0446 @@ -6061,7 +13794,7 @@ tcp_address: minor cleanups - src/tcp_address.cpp | 23 ++++++++++++----------- + src/tcp_address.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) commit 700e08c3c278b5ac67985404ab3e97a608bbf2fd @@ -6072,7 +13805,7 @@ This still rejects 00 as port number. - src/tcp_address.cpp | 4 ++-- + src/tcp_address.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit c428f6aece6447b9a32bd6430f80a4b22e51663a @@ -6081,7 +13814,7 @@ tcp_address: check address length before manipulating it - src/tcp_address.cpp | 2 +- + src/tcp_address.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 19f364e20268befc0d98d0703ceaaba15537a7ad @@ -6099,9 +13832,9 @@ Fixed issue #348 - builds/valgrind/valgrind.supp | 14 +++++++++++++ - builds/valgrind/vg | 1 + - src/object.cpp | 48 ------------------------------------------- + builds/valgrind/valgrind.supp | 14 ++++++++++++ + builds/valgrind/vg | 1 + + src/object.cpp | 48 ----------------------------------------- 3 files changed, 15 insertions(+), 48 deletions(-) commit 4c93fc25879213824c4fb4c9545f895ed7f43b95 @@ -6137,7 +13870,7 @@ Fixes issue #331. - src/tcp_address.cpp | 23 +++++++++++++---------- + src/tcp_address.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) commit dc4d61f38ba967ebcf456892bea3c7dcfb33d485 @@ -6155,7 +13888,7 @@ Fixed issue #334 - src/session_base.cpp | 1 + + src/session_base.cpp | 1 + 1 file changed, 1 insertion(+) commit 084e1c2193d73fe8db29603679e61f89907272ff @@ -6167,7 +13900,7 @@ dist was skipping over pipes when one failed because the non-working pipe got swapped with a working pipe but the write was never retried on that pipe - src/dist.cpp | 7 +++++-- + src/dist.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit 6d776d08658d41fda2986f49103f6b1689663872 @@ -6185,7 +13918,7 @@ Fixed issue #325 - doc/zmq_setsockopt.txt | 3 +++ + doc/zmq_setsockopt.txt | 3 +++ 1 file changed, 3 insertions(+) commit 82c06e4417795ebc3e7760af6b02a3d9fd895da6 @@ -6194,7 +13927,7 @@ Fixed issue #325 - src/router.cpp | 41 +++++++++++++++++++++++------------------ + src/router.cpp | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) commit c861fb4c831d2a7927e11a0256a688149ab80c0d @@ -6212,7 +13945,7 @@ Fixed Makefile for ROUTER/DEALER rename - src/Makefile.am | 8 ++++---- + src/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 712e36d29cce7a09c9b703ff5063b1642e40d75b @@ -6234,7 +13967,7 @@ as invalid when destroyed. This meant programs could access closed sockets. Now the socket is marked "invalid" when closed. - src/socket_base.cpp | 6 +++--- + src/socket_base.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 6f720f0026f9966e402a4f3d18df79614e19cfae @@ -6252,20 +13985,20 @@ Completed internal renaming of XREP/XREQ to ROUTER/DEALER - src/dealer.cpp | 128 +++++++++++++++++++ - src/dealer.hpp | 92 ++++++++++++++ - src/rep.cpp | 16 +-- - src/rep.hpp | 6 +- - src/req.cpp | 26 ++-- - src/req.hpp | 6 +- - src/router.cpp | 342 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/router.hpp | 128 +++++++++++++++++++ - src/session_base.cpp | 12 +- - src/socket_base.cpp | 12 +- - src/xrep.cpp | 342 --------------------------------------------------- - src/xrep.hpp | 128 ------------------- - src/xreq.cpp | 128 ------------------- - src/xreq.hpp | 92 -------------- + src/dealer.cpp | 128 +++++++++++++++++++ + src/dealer.hpp | 92 ++++++++++++++ + src/rep.cpp | 16 +-- + src/rep.hpp | 6 +- + src/req.cpp | 26 ++-- + src/req.hpp | 6 +- + src/router.cpp | 342 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/router.hpp | 128 +++++++++++++++++++ + src/session_base.cpp | 12 +- + src/socket_base.cpp | 12 +- + src/xrep.cpp | 342 -------------------------------------------------- + src/xrep.hpp | 128 ------------------- + src/xreq.cpp | 128 ------------------- + src/xreq.hpp | 92 -------------- 14 files changed, 729 insertions(+), 729 deletions(-) commit 0480ce18207120a2b44ed4ef264b2ecb73e691a2 @@ -6283,8 +14016,8 @@ Fixed issue LIBZMQ-345 - race condition in ctx.socket/term allows segfault - src/ctx.cpp | 9 +++------ - src/ctx.hpp | 2 +- + src/ctx.cpp | 9 +++------ + src/ctx.hpp | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) commit 3b483a8dd7ed8b2009e0872f1b382ec56aef933f @@ -6315,8 +14048,8 @@ * fixes spelling errors in comments * prefers #ifdef to #if defined - src/ctx.cpp | 8 ++++---- - src/ctx.hpp | 20 ++++++++++---------- + src/ctx.cpp | 8 ++++---- + src/ctx.hpp | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) commit ae2b9383303c9d3dd2e402fb026a3f43c97d0fc7 @@ -6325,7 +14058,7 @@ register_endpoint: simplify locking - src/ctx.cpp | 5 +++-- + src/ctx.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit e56f698023250831520b2566398b3fdc36181e15 @@ -6334,7 +14067,7 @@ choose_io_thread: do not assert when no I/O thread was chosen - src/ctx.cpp | 9 ++++----- + src/ctx.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit f944336ee0110268e8b550c052e70d6244be852d @@ -6343,7 +14076,7 @@ Fix race condition in find_endpoint - src/ctx.cpp | 6 +++--- + src/ctx.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 860e1d24c08c82c0dea2b8cee5af44ec3837deac @@ -6352,7 +14085,7 @@ Fixed issue #344 - src/xrep.cpp | 5 +---- + src/xrep.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 8a64d80fba9ff510000a17edbee5d291f66e895b @@ -6374,14 +14107,14 @@ * Fixed up man pages, which were inaccurate * Fixed test case - .gitignore | 1 + - doc/zmq_msg_get.txt | 42 ++++----- - doc/zmq_msg_more.txt | 4 +- - doc/zmq_msg_set.txt | 18 ++-- - include/zmq.h | 7 +- - src/zmq.cpp | 21 +---- - tests/test_last_endpoint | 225 ----------------------------------------------- - tests/test_msg_flags.cpp | 13 +-- + .gitignore | 1 + + doc/zmq_msg_get.txt | 42 ++++----- + doc/zmq_msg_more.txt | 4 +- + doc/zmq_msg_set.txt | 18 ++-- + include/zmq.h | 7 +- + src/zmq.cpp | 21 +---- + tests/test_last_endpoint | 225 ---------------------------------------------- + tests/test_msg_flags.cpp | 13 +-- 8 files changed, 36 insertions(+), 295 deletions(-) commit 0afd8a87d55e39342411a1998b6866f378c2b676 @@ -6417,8 +14150,8 @@ remove unused variable - src/tcp_listener.cpp | 1 - - src/tcp_listener.hpp | 3 --- + src/tcp_listener.cpp | 1 - + src/tcp_listener.hpp | 3 --- 2 files changed, 4 deletions(-) commit 0a6fc0270292889921c14b6e07964d9b1b63d6c6 @@ -6427,7 +14160,7 @@ fix connection establishment for AF_UNIX sockets - src/ipc_connecter.cpp | 2 +- + src/ipc_connecter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 60e45f34b673039ee168d9192b648c26750e7d6e @@ -6445,7 +14178,7 @@ Fixed issue #293 - src/encoder.cpp | 6 +++--- + src/encoder.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 1e4c5b293af996928a2048b973978860c7de04c9 @@ -6472,10 +14205,10 @@ Add value -1 to the ZMQ_RECONNECT_IVL to disable the reconnection algorithm - doc/zmq_getsockopt.txt | 2 +- - doc/zmq_setsockopt.txt | 2 +- - src/options.cpp | 2 +- - src/session_base.cpp | 3 ++- + doc/zmq_getsockopt.txt | 2 +- + doc/zmq_setsockopt.txt | 2 +- + src/options.cpp | 2 +- + src/session_base.cpp | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) commit 5973da486696aca389dab0f558c5ef514470bcd2 @@ -6514,45 +14247,45 @@ * Added support for MAX_SOCKETS (was tied into change for #337) * Created new man pages - doc/Makefile.am | 6 +- - doc/zmq.txt | 18 +++- - doc/zmq_ctx_destroy.txt | 66 ++++++++++++++ - doc/zmq_ctx_get.txt | 67 ++++++++++++++ - doc/zmq_ctx_new.txt | 49 +++++++++++ - doc/zmq_ctx_set.txt | 75 ++++++++++++++++ - doc/zmq_init.txt | 1 + - doc/zmq_term.txt | 1 + - include/zmq.h | 89 ++++++++----------- - src/ctx.cpp | 191 +++++++++++++++++++++++++++------------- - src/ctx.hpp | 29 ++++-- - src/options.cpp | 5 +- - src/options.hpp | 3 + - src/pair.cpp | 4 +- - src/pair.hpp | 2 +- - src/pub.cpp | 6 +- - src/pub.hpp | 4 +- - src/pull.cpp | 4 +- - src/pull.hpp | 2 +- - src/push.cpp | 4 +- - src/push.hpp | 2 +- - src/rep.cpp | 6 +- - src/rep.hpp | 2 +- - src/req.cpp | 4 +- - src/req.hpp | 4 +- - src/socket_base.cpp | 27 +++--- - src/socket_base.hpp | 6 +- - src/sub.cpp | 6 +- - src/sub.hpp | 4 +- - src/xpub.cpp | 4 +- - src/xpub.hpp | 2 +- - src/xrep.cpp | 4 +- - src/xrep.hpp | 2 +- - src/xreq.cpp | 4 +- - src/xreq.hpp | 2 +- - src/xsub.cpp | 4 +- - src/xsub.hpp | 2 +- - src/zmq.cpp | 58 ++++++++---- - tests/test_last_endpoint | 225 +++++++++++++++++++++++++++++++++++++++++++++++ + doc/Makefile.am | 6 +- + doc/zmq.txt | 18 +++- + doc/zmq_ctx_destroy.txt | 66 ++++++++++++++ + doc/zmq_ctx_get.txt | 67 ++++++++++++++ + doc/zmq_ctx_new.txt | 49 ++++++++++ + doc/zmq_ctx_set.txt | 75 ++++++++++++++++ + doc/zmq_init.txt | 1 + + doc/zmq_term.txt | 1 + + include/zmq.h | 89 ++++++++---------- + src/ctx.cpp | 191 ++++++++++++++++++++++++++------------- + src/ctx.hpp | 29 ++++-- + src/options.cpp | 5 +- + src/options.hpp | 3 + + src/pair.cpp | 4 +- + src/pair.hpp | 2 +- + src/pub.cpp | 6 +- + src/pub.hpp | 4 +- + src/pull.cpp | 4 +- + src/pull.hpp | 2 +- + src/push.cpp | 4 +- + src/push.hpp | 2 +- + src/rep.cpp | 6 +- + src/rep.hpp | 2 +- + src/req.cpp | 4 +- + src/req.hpp | 4 +- + src/socket_base.cpp | 27 +++--- + src/socket_base.hpp | 6 +- + src/sub.cpp | 6 +- + src/sub.hpp | 4 +- + src/xpub.cpp | 4 +- + src/xpub.hpp | 2 +- + src/xrep.cpp | 4 +- + src/xrep.hpp | 2 +- + src/xreq.cpp | 4 +- + src/xreq.hpp | 2 +- + src/xsub.cpp | 4 +- + src/xsub.hpp | 2 +- + src/zmq.cpp | 58 ++++++++---- + tests/test_last_endpoint | 225 ++++++++++++++++++++++++++++++++++++++++++++++ 39 files changed, 798 insertions(+), 196 deletions(-) commit bdefa181eddddf49306d4d618f169da5ee3dfc49 @@ -6561,10 +14294,10 @@ Fixed issue 336 - src/ctx.cpp | 37 ------------------------------------- - src/ctx.hpp | 8 -------- - src/object.cpp | 8 -------- - src/socket_base.cpp | 6 +++--- + src/ctx.cpp | 37 ------------------------------------- + src/ctx.hpp | 8 -------- + src/object.cpp | 8 -------- + src/socket_base.cpp | 6 +++--- 4 files changed, 3 insertions(+), 56 deletions(-) commit 06dd31c56aaa98da2063c710f78aed8718d0996c @@ -6573,10 +14306,10 @@ Removed last vestiges of thread-safe sockets - src/ctx.cpp | 10 ---------- - src/ctx.hpp | 6 ------ - src/socket_base.cpp | 19 +------------------ - src/socket_base.hpp | 3 --- + src/ctx.cpp | 10 ---------- + src/ctx.hpp | 6 ------ + src/socket_base.cpp | 19 +------------------ + src/socket_base.hpp | 3 --- 4 files changed, 1 insertion(+), 37 deletions(-) commit 8665f9a0b61cd6de2b02282192c19b01660e887b @@ -6594,7 +14327,7 @@ Removed zmq.hpp, may add this back in separate commit - include/zmq.hpp | 296 -------------------------------------------------------- + include/zmq.hpp | 296 ------------------------------------------------------- 1 file changed, 296 deletions(-) commit 9ac40c47d7fc3f47859a914147a0a840505e868c @@ -6607,17 +14340,17 @@ - fixed zmq_device implementation for latest socket_base class - added back zmq_device.3 man page - builds/redhat/zeromq.spec.in | 7 + - doc/Makefile.am | 2 +- - doc/zmq.txt | 10 ++ - doc/zmq_device.txt | 125 ++++++++++++++++++ - doc/zmq_socket.txt | 3 - - include/zmq.h | 10 ++ - include/zmq.hpp | 296 +++++++++++++++++++++++++++++++++++++++++++ - src/Makefile.am | 2 + - src/device.cpp | 120 ++++++++++++++++++ - src/device.hpp | 32 +++++ - src/zmq.cpp | 47 +++++++ + builds/redhat/zeromq.spec.in | 7 + + doc/Makefile.am | 2 +- + doc/zmq.txt | 10 ++ + doc/zmq_device.txt | 125 ++++++++++++++++++ + doc/zmq_socket.txt | 3 - + include/zmq.h | 10 ++ + include/zmq.hpp | 296 ++++++++++++++++++++++++++++++++++++++++++ + src/Makefile.am | 2 + + src/device.cpp | 120 +++++++++++++++++ + src/device.hpp | 32 +++++ + src/zmq.cpp | 47 +++++++ 11 files changed, 650 insertions(+), 4 deletions(-) commit 32c85e0ea39e46ee9b40f814d18b939a17ac40f0 @@ -6635,9 +14368,9 @@ fixed some typos - include/zmq.h | 2 +- - src/xrep.cpp | 8 ++++---- - src/xrep.hpp | 2 +- + include/zmq.h | 2 +- + src/xrep.cpp | 8 ++++---- + src/xrep.hpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) commit 8095a129e8114341667d2d82d21cfcfc92456fbb @@ -6646,7 +14379,7 @@ man entry for the new option - doc/zmq_setsockopt.txt | 20 ++++++++++++++++++-- + doc/zmq_setsockopt.txt | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) commit df584a3be04cac3fffb8b8b319d7351c8d9b6345 @@ -6655,9 +14388,9 @@ an option to fail on unroutable messages in ROUTER sockets - include/zmq.h | 1 + - src/xrep.cpp | 31 ++++++++++++++++++++++++++++--- - src/xrep.hpp | 4 ++++ + include/zmq.h | 1 + + src/xrep.cpp | 31 ++++++++++++++++++++++++++++--- + src/xrep.hpp | 4 ++++ 3 files changed, 33 insertions(+), 3 deletions(-) commit 62d27b7af3560b3cd5bc95ea216243dc268116eb @@ -6686,19 +14419,19 @@ * zmq.h: do not include errno.h whe building for CE * libzmq.vcproj: add tro new files - builds/msvc/errno.cpp | 32 +++++++++++++++++++++++ - builds/msvc/errno.hpp | 56 ++++++++++++++++++++++++++++++++++++++++ - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++ - include/zmq.h | 2 ++ - src/clock.cpp | 4 +++ - src/err.cpp | 6 +++++ - src/err.hpp | 4 +++ - src/msg.cpp | 1 - - src/signaler.cpp | 2 +- - src/socket_base.cpp | 4 +++ - src/thread.cpp | 9 +++++++ - src/windows.hpp | 2 ++ - src/zmq.cpp | 1 - + builds/msvc/errno.cpp | 32 ++++++++++++++++++++++ + builds/msvc/errno.hpp | 56 ++++++++++++++++++++++++++++++++++++++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++ + include/zmq.h | 2 ++ + src/clock.cpp | 4 +++ + src/err.cpp | 6 ++++ + src/err.hpp | 4 +++ + src/msg.cpp | 1 - + src/signaler.cpp | 2 +- + src/socket_base.cpp | 4 +++ + src/thread.cpp | 9 ++++++ + src/windows.hpp | 2 ++ + src/zmq.cpp | 1 - 13 files changed, 128 insertions(+), 3 deletions(-) commit f9674308e8f4ab3271adf07fa93b404ae0fc9ea4 @@ -6716,7 +14449,7 @@ Eliminate unnecessary line break - doc/zmq_term.txt | 2 +- + doc/zmq_term.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 19d30969cff3ad07153ca4448f9603728263ec59 @@ -6737,7 +14470,7 @@ Name of the file in the project does not match actual file name: adress.cpp VS. address.cpp - builds/msvc/libzmq/libzmq.vcproj | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4c59b1fb2f68ac481556e22427ce243fff81edca @@ -6755,7 +14488,7 @@ Fix IPC transport domain socket stream file not being removed when connection is closed - src/ipc_listener.cpp | 1 + + src/ipc_listener.cpp | 1 + 1 file changed, 1 insertion(+) commit 0fed3a3fca2ea7a5e6cfe8566aa1b5a28d56ee0b @@ -6773,7 +14506,7 @@ update lower bound flag when removing topics - src/trie.cpp | 1 + + src/trie.cpp | 1 + 1 file changed, 1 insertion(+) commit 3f8322beff81fb5ed951bf43dc90d1623e52a565 @@ -6793,7 +14526,7 @@ Signed-off-by: Staffan Gimåker - src/mtrie.cpp | 17 ++++++++++++----- + src/mtrie.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) commit 7689d205e9928e2370261833637ec6ae142d6aa4 @@ -6811,8 +14544,8 @@ Add missing files to Windows project files - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ - builds/msvc/libzmq/libzmq.vcxproj | 2 ++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + builds/msvc/libzmq/libzmq.vcxproj | 2 ++ 2 files changed, 10 insertions(+) commit 58f8d4a417531a18be18a6e9577525c59efc3bf1 @@ -6839,7 +14572,7 @@ Improve the test for last_endpoint, use the same ports as other tests - tests/test_last_endpoint.cpp | 34 ++++++++++++++-------------------- + tests/test_last_endpoint.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) commit 1824574f9b5a8ce786853320e3ea09fe1f822bc4 @@ -6848,7 +14581,7 @@ Minor fixes to get_address code to fix build on solaris and freebsd. Also service doesnt need to be discovered here - src/tcp_listener.cpp | 3 +-- + src/tcp_listener.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 78d24d3d01a6cf14e1df6015cd65c0043b4065a7 @@ -6866,8 +14599,8 @@ Update documentation for last endpoint to mention inaddr_any and add a test for IPC last endpoint checking - doc/zmq_getsockopt.txt | 3 ++- - tests/test_last_endpoint.cpp | 7 +++++++ + doc/zmq_getsockopt.txt | 3 ++- + tests/test_last_endpoint.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) commit 2533909f60ce6e8400c8862b5719b5c263951eea @@ -6885,7 +14618,7 @@ More fixes based on CentOS 6.2 results - src/tcp_listener.cpp | 4 ++-- + src/tcp_listener.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b19c5fced5387b0c539c6e11b9797205ef24af9c @@ -6903,13 +14636,13 @@ More fixes for ZMQ_LAST_ENDPOINT. Added a test - src/ipc_listener.cpp | 22 ++++++++++--------- - src/ipc_listener.hpp | 2 +- - src/socket_base.cpp | 10 ++++----- - src/tcp_listener.cpp | 14 ++++++++---- - src/tcp_listener.hpp | 2 +- - tests/Makefile.am | 4 +++- - tests/test_last_endpoint.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++ + src/ipc_listener.cpp | 22 ++++++++++-------- + src/ipc_listener.hpp | 2 +- + src/socket_base.cpp | 10 ++++---- + src/tcp_listener.cpp | 14 ++++++++---- + src/tcp_listener.hpp | 2 +- + tests/Makefile.am | 4 +++- + tests/test_last_endpoint.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 84 insertions(+), 22 deletions(-) commit b0573486c7abf89b79d30aa4d29b0dac3d789619 @@ -6918,7 +14651,7 @@ Fixes for tcp_listener::get_address - src/tcp_listener.cpp | 40 +++++++++++++++++----------------------- + src/tcp_listener.cpp | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) commit 06140daf2948695926d9b76d73064f4996e6a63b @@ -6936,7 +14669,7 @@ More fixes for win build - src/socket_base.cpp | 3 ++- + src/socket_base.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit e24854925296b15343a41efbfe83d0885dee562c @@ -6954,8 +14687,8 @@ Fix build on windows - src/address.cpp | 2 ++ - src/address.hpp | 6 ++++-- + src/address.cpp | 2 ++ + src/address.hpp | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) commit 9a4fd8a3053cef8ac283da837d740273ba1554ef @@ -6964,7 +14697,7 @@ Needs explicit cast on solaris - src/zmq.cpp | 2 +- + src/zmq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dd35385da323be4a275b78dbdaf7a7b33ef164c7 @@ -6982,7 +14715,7 @@ Fix build on solaris - src/ipc_listener.cpp | 10 +++++----- + src/ipc_listener.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit cfe2a821f3a01affc3044fcd91caf2292abe6508 @@ -7000,7 +14733,7 @@ Remove build script references to test_ts_context. - tests/Makefile.am | 2 -- + tests/Makefile.am | 2 -- 1 file changed, 2 deletions(-) commit e7da123b280f42d058686001d89899058b7ee75e @@ -7009,7 +14742,7 @@ Remove thread safe test. - tests/test_ts_context.cpp | 129 ---------------------------------------------- + tests/test_ts_context.cpp | 129 --------------------------------------------- 1 file changed, 129 deletions(-) commit 38e74c9e84b3fbe3fc65024a91f5b2b783d33a84 @@ -7018,7 +14751,7 @@ Remove thread safe socket stuff from C binding. - src/zmq.cpp | 48 ------------------------------------------------ + src/zmq.cpp | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) commit 0fa6b8e79345daa7803ec301d5d78a510c501c9b @@ -7027,7 +14760,7 @@ Remove thread safe context init. - include/zmq.h | 1 - + include/zmq.h | 1 - 1 file changed, 1 deletion(-) commit 9e622d542ad0c01c3389fe8a26e7325dee301c05 @@ -7054,16 +14787,16 @@ Revert NULL checks in the API - doc/zmq_msg_size.txt | 12 ++---------- - include/zmq.h | 2 +- - perf/inproc_lat.cpp | 2 +- - perf/inproc_thr.cpp | 2 +- - perf/local_lat.cpp | 2 +- - perf/local_thr.cpp | 2 +- - perf/remote_lat.cpp | 2 +- - src/msg.cpp | 2 +- - src/msg.hpp | 4 ++-- - src/zmq.cpp | 54 ++++------------------------------------------------ + doc/zmq_msg_size.txt | 12 ++--------- + include/zmq.h | 2 +- + perf/inproc_lat.cpp | 2 +- + perf/inproc_thr.cpp | 2 +- + perf/local_lat.cpp | 2 +- + perf/local_thr.cpp | 2 +- + perf/remote_lat.cpp | 2 +- + src/msg.cpp | 2 +- + src/msg.hpp | 4 ++-- + src/zmq.cpp | 54 ++++---------------------------------------------- 10 files changed, 15 insertions(+), 69 deletions(-) commit 82bd5431ce2be7aac0e9d8a88103d5a29353f0cf @@ -7072,9 +14805,9 @@ Updating documentation to remove ECANTROUTE error code - doc/zmq_msg_send.txt | 3 --- - doc/zmq_send.txt | 3 --- - doc/zmq_sendmsg.txt | 3 --- + doc/zmq_msg_send.txt | 3 --- + doc/zmq_send.txt | 3 --- + doc/zmq_sendmsg.txt | 3 --- 3 files changed, 9 deletions(-) commit c9898d2419c52ebf51970fa11ce3a70c06fe2780 @@ -7092,7 +14825,7 @@ added more specific installation documentation - INSTALL | 4 +++- + INSTALL | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 244f3a3c113f7bd028e3058de0363159ad56318f @@ -7113,10 +14846,10 @@ * Fixed use of ssize_t in zmq_msg_t class * Corrected error after merge, old reference to inner_fctname (broke build) - .gitignore | 1 + - src/msg.cpp | 4 ++-- - src/msg.hpp | 5 +++-- - src/zmq.cpp | 16 ++++++++++------ + .gitignore | 1 + + src/msg.cpp | 4 ++-- + src/msg.hpp | 5 +++-- + src/zmq.cpp | 16 ++++++++++------ 4 files changed, 16 insertions(+), 10 deletions(-) commit a457be315bec89ab013715586a28be83de5dd736 @@ -7152,7 +14885,7 @@ Updating to use getnameinfo rather than inet_ntop - src/tcp_listener.cpp | 5 +++-- + src/tcp_listener.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit 4b62344023eb0f9be2b3b6a09239869198c667a9 @@ -7195,8 +14928,8 @@ Renamed scatter/gather methods, cleaned up source - include/zmq.h | 4 +-- - src/zmq.cpp | 101 +++++++++++++++++++++++++++++++++------------------------- + include/zmq.h | 4 +-- + src/zmq.cpp | 101 ++++++++++++++++++++++++++++++++------------------------- 2 files changed, 59 insertions(+), 46 deletions(-) commit 8a497e2ffc16cbd6c2642ac2238dd186d917f684 @@ -7212,13 +14945,13 @@ Fixed up all references to zmq_msg_size - doc/zmq_msg_size.txt | 16 ++++++++++++---- - include/zmq.h | 1 + - perf/inproc_lat.cpp | 4 ++-- - perf/inproc_thr.cpp | 4 ++-- - perf/local_lat.cpp | 4 ++-- - perf/local_thr.cpp | 4 ++-- - perf/remote_lat.cpp | 4 ++-- + doc/zmq_msg_size.txt | 16 ++++++++++++---- + include/zmq.h | 1 + + perf/inproc_lat.cpp | 4 ++-- + perf/inproc_thr.cpp | 4 ++-- + perf/local_lat.cpp | 4 ++-- + perf/local_thr.cpp | 4 ++-- + perf/remote_lat.cpp | 4 ++-- 7 files changed, 23 insertions(+), 14 deletions(-) commit 02b81d42ce2c3b6fabcfe1bcdc6fa8bceed9762a @@ -7227,8 +14960,8 @@ Changed return type of zmq_msg_size to ssize_t to allow error return - include/zmq.h | 4 ++-- - src/zmq.cpp | 2 +- + include/zmq.h | 4 ++-- + src/zmq.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit dc09da456936e84e68e220a8c950e1abc2ebbd0b @@ -7237,7 +14970,7 @@ Return EFAULT if required arguments are null - src/zmq.cpp | 42 ++++++++++++++++++++++++++++++++++++------ + src/zmq.cpp | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) commit 07b49ffb9c30af3c8a4e486dc4225784f4a1dda8 @@ -7246,13 +14979,13 @@ Fixed up all references to zmq_msg_size - doc/zmq_msg_size.txt | 16 ++++++++++++---- - include/zmq.h | 1 + - perf/inproc_lat.cpp | 4 ++-- - perf/inproc_thr.cpp | 4 ++-- - perf/local_lat.cpp | 4 ++-- - perf/local_thr.cpp | 4 ++-- - perf/remote_lat.cpp | 4 ++-- + doc/zmq_msg_size.txt | 16 ++++++++++++---- + include/zmq.h | 1 + + perf/inproc_lat.cpp | 4 ++-- + perf/inproc_thr.cpp | 4 ++-- + perf/local_lat.cpp | 4 ++-- + perf/local_thr.cpp | 4 ++-- + perf/remote_lat.cpp | 4 ++-- 7 files changed, 23 insertions(+), 14 deletions(-) commit 2f44faa7ce13645fe3b49475ced40675d0638709 @@ -7281,8 +15014,8 @@ Signed-off-by: Staffan Gimåker - src/mtrie.cpp | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - src/trie.cpp | 87 ++++++++++++++++++++++++++++++++++++++- + src/mtrie.cpp | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + src/trie.cpp | 87 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 211 insertions(+), 4 deletions(-) commit e18f9da012b2ee164539e089254dbbe33af204a9 @@ -7296,7 +15029,7 @@ Signed-off-by: Staffan Gimåker - src/xsub.cpp | 7 ++++++- + src/xsub.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit b9fb48f47b8b6f211625e0897c5f52ba5cfe6593 @@ -7310,46 +15043,46 @@ Signed-off-by: Staffan Gimåker - src/Makefile.am | 2 ++ - src/address.cpp | 50 ++++++++++++++++++++++++++++++++++++++ - src/address.hpp | 48 +++++++++++++++++++++++++++++++++++++ - src/ipc_address.cpp | 4 ++-- - src/ipc_address.hpp | 4 ++-- - src/ipc_connecter.cpp | 20 +++++++--------- - src/ipc_connecter.hpp | 11 ++++----- - src/ipc_listener.cpp | 2 +- - src/pair.cpp | 5 ++-- - src/pair.hpp | 2 +- - src/pub.cpp | 5 ++-- - src/pub.hpp | 2 +- - src/pull.cpp | 5 ++-- - src/pull.hpp | 2 +- - src/push.cpp | 5 ++-- - src/push.hpp | 2 +- - src/rep.cpp | 5 ++-- - src/rep.hpp | 2 +- - src/req.cpp | 5 ++-- - src/req.hpp | 2 +- - src/session_base.cpp | 53 +++++++++++++++++++++-------------------- - src/session_base.hpp | 11 ++++----- - src/socket_base.cpp | 29 ++++++++++++++++++++++- - src/sub.cpp | 5 ++-- - src/sub.hpp | 2 +- - src/tcp_address.cpp | 8 +++---- - src/tcp_address.hpp | 8 +++---- - src/tcp_connecter.cpp | 24 +++++++++---------- - src/tcp_connecter.hpp | 11 ++++----- - src/tcp_listener.cpp | 2 +- - src/xpub.cpp | 5 ++-- - src/xpub.hpp | 2 +- - src/xrep.cpp | 5 ++-- - src/xrep.hpp | 2 +- - src/xreq.cpp | 5 ++-- - src/xreq.hpp | 2 +- - src/xsub.cpp | 5 ++-- - src/xsub.hpp | 2 +- - tests/Makefile.am | 4 +++- - tests/test_connect_resolve.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++ + src/Makefile.am | 2 ++ + src/address.cpp | 50 +++++++++++++++++++++++++++++++++++++ + src/address.hpp | 48 +++++++++++++++++++++++++++++++++++ + src/ipc_address.cpp | 4 +-- + src/ipc_address.hpp | 4 +-- + src/ipc_connecter.cpp | 20 +++++++-------- + src/ipc_connecter.hpp | 11 +++----- + src/ipc_listener.cpp | 2 +- + src/pair.cpp | 5 ++-- + src/pair.hpp | 2 +- + src/pub.cpp | 5 ++-- + src/pub.hpp | 2 +- + src/pull.cpp | 5 ++-- + src/pull.hpp | 2 +- + src/push.cpp | 5 ++-- + src/push.hpp | 2 +- + src/rep.cpp | 5 ++-- + src/rep.hpp | 2 +- + src/req.cpp | 5 ++-- + src/req.hpp | 2 +- + src/session_base.cpp | 53 ++++++++++++++++++++------------------- + src/session_base.hpp | 11 ++++---- + src/socket_base.cpp | 29 ++++++++++++++++++++- + src/sub.cpp | 5 ++-- + src/sub.hpp | 2 +- + src/tcp_address.cpp | 8 +++--- + src/tcp_address.hpp | 8 +++--- + src/tcp_connecter.cpp | 24 ++++++++---------- + src/tcp_connecter.hpp | 11 +++----- + src/tcp_listener.cpp | 2 +- + src/xpub.cpp | 5 ++-- + src/xpub.hpp | 2 +- + src/xrep.cpp | 5 ++-- + src/xrep.hpp | 2 +- + src/xreq.cpp | 5 ++-- + src/xreq.hpp | 2 +- + src/xsub.cpp | 5 ++-- + src/xsub.hpp | 2 +- + tests/Makefile.am | 4 ++- + tests/test_connect_resolve.cpp | 54 ++++++++++++++++++++++++++++++++++++++++ 40 files changed, 292 insertions(+), 130 deletions(-) commit d092f2615c2133338097cb4f37d9809d2422a991 @@ -7358,15 +15091,15 @@ Renamed peek/poke to get/set - doc/Makefile.am | 2 +- - doc/zmq.txt | 4 +-- - doc/zmq_msg_get.txt | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_msg_peek.txt | 83 ------------------------------------------------ - doc/zmq_msg_poke.txt | 47 --------------------------- - doc/zmq_msg_set.txt | 47 +++++++++++++++++++++++++++ - include/zmq.h | 8 ++--- - src/zmq.cpp | 6 ++-- - tests/test_msg_flags.cpp | 6 ++-- + doc/Makefile.am | 2 +- + doc/zmq.txt | 4 +-- + doc/zmq_msg_get.txt | 83 ++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_msg_peek.txt | 83 ---------------------------------------------- + doc/zmq_msg_poke.txt | 47 -------------------------- + doc/zmq_msg_set.txt | 47 ++++++++++++++++++++++++++ + include/zmq.h | 8 ++--- + src/zmq.cpp | 6 ++-- + tests/test_msg_flags.cpp | 6 ++-- 9 files changed, 143 insertions(+), 143 deletions(-) commit dcc1725a90f324e3877e67f1455ef9f53f1c241d @@ -7379,15 +15112,15 @@ * Added zmq_msg_more for simplicity * Fixed up man pages and test program - doc/Makefile.am | 2 +- - doc/zmq.txt | 12 ++++--- - doc/zmq_getmsgopt.txt | 85 ------------------------------------------------ - doc/zmq_msg_more.txt | 63 +++++++++++++++++++++++++++++++++++ - doc/zmq_msg_peek.txt | 83 ++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_msg_poke.txt | 47 ++++++++++++++++++++++++++ - include/zmq.h | 10 ++++-- - src/zmq.cpp | 47 +++++++++++++++++++------- - tests/test_msg_flags.cpp | 8 +++-- + doc/Makefile.am | 2 +- + doc/zmq.txt | 12 ++++--- + doc/zmq_getmsgopt.txt | 85 ---------------------------------------------- + doc/zmq_msg_more.txt | 63 ++++++++++++++++++++++++++++++++++ + doc/zmq_msg_peek.txt | 83 ++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_msg_poke.txt | 47 +++++++++++++++++++++++++ + include/zmq.h | 10 ++++-- + src/zmq.cpp | 47 +++++++++++++++++++------ + tests/test_msg_flags.cpp | 8 +++-- 9 files changed, 249 insertions(+), 108 deletions(-) commit b3d7b29280fd062e681b24b946c00bbd6667889c @@ -7396,8 +15129,8 @@ Renamed scatter/gather methods, cleaned up source - include/zmq.h | 4 +- - src/zmq.cpp | 119 +++++++++++++++++++++++++++++++++------------------------- + include/zmq.h | 4 +- + src/zmq.cpp | 119 ++++++++++++++++++++++++++++++++------------------------- 2 files changed, 70 insertions(+), 53 deletions(-) commit fb4748f257b19d19d9702a6632919d3915da0413 @@ -7406,12 +15139,12 @@ Added zmq_msg_send/recv functions - doc/Makefile.am | 1 + - doc/zmq.txt | 4 ++ - doc/zmq_msg_recv.txt | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_msg_send.txt | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++ - include/zmq.h | 4 ++ - src/zmq.cpp | 48 ++++++++++++-------- + doc/Makefile.am | 1 + + doc/zmq.txt | 4 ++ + doc/zmq_msg_recv.txt | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_msg_send.txt | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 4 ++ + src/zmq.cpp | 48 +++++++++++-------- 6 files changed, 289 insertions(+), 18 deletions(-) commit 6b2ec366b1b96da14260000939946b12a7b085c6 @@ -7420,8 +15153,8 @@ Changed return type of zmq_msg_size to ssize_t to allow error return - include/zmq.h | 2 +- - src/zmq.cpp | 2 +- + include/zmq.h | 2 +- + src/zmq.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit d38951db8738d1cd7bf511decbee590e29a78fa8 @@ -7430,7 +15163,7 @@ Return EFAULT if required arguments are null - src/zmq.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++----------------- + src/zmq.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 18 deletions(-) commit b2e2fa622dc4b647442a6c41073783fa3340a780 @@ -7448,7 +15181,7 @@ Deprecated XREQ/XREP - include/zmq.h | 11 ++++++----- + include/zmq.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 5f6b95f4a22737c8dee415ec51ca0cca2d72170a @@ -7457,30 +15190,30 @@ Fixed footers to refer to man page, not all docs - doc/zmq_bind.txt | 4 ++-- - doc/zmq_close.txt | 4 ++-- - doc/zmq_connect.txt | 4 ++-- - doc/zmq_errno.txt | 4 ++-- - doc/zmq_getmsgopt.txt | 2 +- - doc/zmq_getsockopt.txt | 4 ++-- - doc/zmq_init.txt | 4 ++-- - doc/zmq_inproc.txt | 4 ++-- - doc/zmq_ipc.txt | 4 ++-- - doc/zmq_msg_close.txt | 4 ++-- - doc/zmq_msg_copy.txt | 4 ++-- - doc/zmq_msg_data.txt | 4 ++-- - doc/zmq_msg_init.txt | 4 ++-- - doc/zmq_msg_init_data.txt | 4 ++-- - doc/zmq_msg_init_size.txt | 4 ++-- - doc/zmq_msg_move.txt | 4 ++-- - doc/zmq_msg_size.txt | 4 ++-- - doc/zmq_pgm.txt | 4 ++-- - doc/zmq_poll.txt | 4 ++-- - doc/zmq_setsockopt.txt | 4 ++-- - doc/zmq_strerror.txt | 4 ++-- - doc/zmq_tcp.txt | 4 ++-- - doc/zmq_term.txt | 4 ++-- - doc/zmq_version.txt | 4 ++-- + doc/zmq_bind.txt | 4 ++-- + doc/zmq_close.txt | 4 ++-- + doc/zmq_connect.txt | 4 ++-- + doc/zmq_errno.txt | 4 ++-- + doc/zmq_getmsgopt.txt | 2 +- + doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_init.txt | 4 ++-- + doc/zmq_inproc.txt | 4 ++-- + doc/zmq_ipc.txt | 4 ++-- + doc/zmq_msg_close.txt | 4 ++-- + doc/zmq_msg_copy.txt | 4 ++-- + doc/zmq_msg_data.txt | 4 ++-- + doc/zmq_msg_init.txt | 4 ++-- + doc/zmq_msg_init_data.txt | 4 ++-- + doc/zmq_msg_init_size.txt | 4 ++-- + doc/zmq_msg_move.txt | 4 ++-- + doc/zmq_msg_size.txt | 4 ++-- + doc/zmq_pgm.txt | 4 ++-- + doc/zmq_poll.txt | 4 ++-- + doc/zmq_setsockopt.txt | 4 ++-- + doc/zmq_strerror.txt | 4 ++-- + doc/zmq_tcp.txt | 4 ++-- + doc/zmq_term.txt | 4 ++-- + doc/zmq_version.txt | 4 ++-- 24 files changed, 47 insertions(+), 47 deletions(-) commit c85ecfc0662c2781cea1d763195b5194a29b244c @@ -7489,10 +15222,10 @@ Cleaned up description of multi-part messages - doc/zmq_recv.txt | 11 +++++------ - doc/zmq_recvmsg.txt | 4 ++-- - doc/zmq_send.txt | 16 +++++++--------- - doc/zmq_sendmsg.txt | 10 +++++----- + doc/zmq_recv.txt | 11 +++++------ + doc/zmq_recvmsg.txt | 4 ++-- + doc/zmq_send.txt | 16 +++++++--------- + doc/zmq_sendmsg.txt | 10 +++++----- 4 files changed, 19 insertions(+), 22 deletions(-) commit 636de46fe129ba3e883026f402c545c5c62679e9 @@ -7501,7 +15234,7 @@ Removed section on devices, added new methods - doc/zmq.txt | 23 +++++------------------ + doc/zmq.txt | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) commit 086c0594300589a19a55586259ef307bb97ebdbf @@ -7510,7 +15243,7 @@ Ported numerous fixes from 2.1 man page - doc/zmq_socket.txt | 109 ++++++++++++++++++++++++++++++++--------------------- + doc/zmq_socket.txt | 109 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 42 deletions(-) commit 9bc0e1081831e58e9a40f41e1e04fbe94dd94ea7 @@ -7528,7 +15261,7 @@ Ignored generated files - .gitignore | 2 ++ + .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 2000d44109e1adfb3c6a2f9f947b061ba3267431 @@ -7537,7 +15270,7 @@ Fixed syntax error in zmq_getsockopt man page - doc/zmq_getsockopt.txt | 6 +++--- + doc/zmq_getsockopt.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a50a8aa364d9b99a1dc4950aea8ef1fe41d868ce @@ -7548,7 +15281,7 @@ This reverts commit e646ce43c155f9710aa4486abd2daf6d4a30ca5b. - src/zmq.cpp | 96 ++++++------------------------------------------------------- + src/zmq.cpp | 96 +++++------------------------------------------------------ 1 file changed, 8 insertions(+), 88 deletions(-) commit afe8cd503fa069b25c731cdeb507abf246ec7896 @@ -7561,28 +15294,28 @@ This reverts commit 7b7d404269cc9bb28e1954ed38dbeb8f63079fd1. - src/blob.hpp | 5 ++--- - src/ctx.cpp | 1 - - src/dist.cpp | 1 - - src/err.cpp | 1 - - src/fq.cpp | 1 - - src/io_object.cpp | 2 -- - src/io_thread.cpp | 1 - - src/lb.cpp | 1 - - src/object.cpp | 8 -------- - src/pair.cpp | 4 ---- - src/pipe.cpp | 1 - - src/pub.cpp | 2 -- - src/pull.cpp | 1 - - src/push.cpp | 1 - - src/reaper.cpp | 1 - - src/session_base.cpp | 1 - - src/socket_base.cpp | 11 ----------- - src/sub.cpp | 2 -- - src/xpub.cpp | 1 - - src/xrep.cpp | 2 -- - src/xreq.cpp | 1 - - src/xsub.cpp | 1 - + src/blob.hpp | 5 ++--- + src/ctx.cpp | 1 - + src/dist.cpp | 1 - + src/err.cpp | 1 - + src/fq.cpp | 1 - + src/io_object.cpp | 2 -- + src/io_thread.cpp | 1 - + src/lb.cpp | 1 - + src/object.cpp | 8 -------- + src/pair.cpp | 4 ---- + src/pipe.cpp | 1 - + src/pub.cpp | 2 -- + src/pull.cpp | 1 - + src/push.cpp | 1 - + src/reaper.cpp | 1 - + src/session_base.cpp | 1 - + src/socket_base.cpp | 11 ----------- + src/sub.cpp | 2 -- + src/xpub.cpp | 1 - + src/xrep.cpp | 2 -- + src/xreq.cpp | 1 - + src/xsub.cpp | 1 - 22 files changed, 2 insertions(+), 48 deletions(-) commit b2e93473723ce74f247d1a63eb61312a5c07f6d8 @@ -7600,7 +15333,7 @@ Updating docs with new sockopt - doc/zmq_getsockopt.txt | 11 +++++++++++ + doc/zmq_getsockopt.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) commit b6c97230ed560a3b4140b0542be9f3482eab7066 @@ -7616,14 +15349,14 @@ Moving to std::string in options - include/zmq.h | 3 --- - src/ipc_listener.cpp | 5 +++-- - src/ipc_listener.hpp | 2 +- - src/options.cpp | 8 ++++---- - src/options.hpp | 5 +++-- - src/socket_base.cpp | 5 +++-- - src/tcp_listener.cpp | 10 +++++++--- - src/tcp_listener.hpp | 2 +- + include/zmq.h | 3 --- + src/ipc_listener.cpp | 5 +++-- + src/ipc_listener.hpp | 2 +- + src/options.cpp | 8 ++++---- + src/options.hpp | 5 +++-- + src/socket_base.cpp | 5 +++-- + src/tcp_listener.cpp | 10 +++++++--- + src/tcp_listener.hpp | 2 +- 8 files changed, 22 insertions(+), 18 deletions(-) commit a908ccbf357ae5afe61aef24db2724d93b7747ce @@ -7650,7 +15383,7 @@ more checks for parameters of API functions - src/zmq.cpp | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------ + src/zmq.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 88 insertions(+), 8 deletions(-) commit 4807935605ab1f1e1c440d29423c84d4f13f73d7 @@ -7659,8 +15392,8 @@ Implement type safe sockets and contexts. - include/zmq.h | 59 +++++++++++++++++++++++++++++++++++++++++++---------------- - src/zmq.cpp | 2 ++ + include/zmq.h | 59 +++++++++++++++++++++++++++++++++++++++++---------------- + src/zmq.cpp | 2 ++ 2 files changed, 45 insertions(+), 16 deletions(-) commit 770f84331f7a1ce03e87786f976a526af07c965f @@ -7669,12 +15402,12 @@ Allowing value 0, and moving code to get_address functions based on feedback - AUTHORS | 1 + - src/ipc_listener.cpp | 21 ++++++++++++--------- - src/ipc_listener.hpp | 4 ---- - src/tcp_address.cpp | 3 ++- - src/tcp_listener.cpp | 50 +++++++++++++++++++++++++------------------------- - src/tcp_listener.hpp | 6 +----- + AUTHORS | 1 + + src/ipc_listener.cpp | 21 ++++++++++++--------- + src/ipc_listener.hpp | 4 ---- + src/tcp_address.cpp | 3 ++- + src/tcp_listener.cpp | 50 +++++++++++++++++++++++++------------------------- + src/tcp_listener.hpp | 6 +----- 6 files changed, 41 insertions(+), 44 deletions(-) commit 91bf4944daa7446e21aea2cf9bc261ce29d35212 @@ -7699,28 +15432,28 @@ fix warn unused - src/blob.hpp | 5 +++-- - src/ctx.cpp | 1 + - src/dist.cpp | 1 + - src/err.cpp | 1 + - src/fq.cpp | 1 + - src/io_object.cpp | 2 ++ - src/io_thread.cpp | 1 + - src/lb.cpp | 1 + - src/object.cpp | 8 ++++++++ - src/pair.cpp | 4 ++++ - src/pipe.cpp | 1 + - src/pub.cpp | 2 ++ - src/pull.cpp | 1 + - src/push.cpp | 1 + - src/reaper.cpp | 1 + - src/session_base.cpp | 1 + - src/socket_base.cpp | 11 +++++++++++ - src/sub.cpp | 2 ++ - src/xpub.cpp | 1 + - src/xrep.cpp | 2 ++ - src/xreq.cpp | 1 + - src/xsub.cpp | 1 + + src/blob.hpp | 5 +++-- + src/ctx.cpp | 1 + + src/dist.cpp | 1 + + src/err.cpp | 1 + + src/fq.cpp | 1 + + src/io_object.cpp | 2 ++ + src/io_thread.cpp | 1 + + src/lb.cpp | 1 + + src/object.cpp | 8 ++++++++ + src/pair.cpp | 4 ++++ + src/pipe.cpp | 1 + + src/pub.cpp | 2 ++ + src/pull.cpp | 1 + + src/push.cpp | 1 + + src/reaper.cpp | 1 + + src/session_base.cpp | 1 + + src/socket_base.cpp | 11 +++++++++++ + src/sub.cpp | 2 ++ + src/xpub.cpp | 1 + + src/xrep.cpp | 2 ++ + src/xreq.cpp | 1 + + src/xsub.cpp | 1 + 22 files changed, 48 insertions(+), 2 deletions(-) commit 40052c1251053e28a7b2b4f517db4d74a393d3ba @@ -7745,15 +15478,15 @@ Adding ZMQ_LAST_ENDPOINT for wildcard support on TCP and IPC sockets - include/zmq.h | 4 ++++ - src/ipc_listener.cpp | 20 ++++++++++++++++++++ - src/ipc_listener.hpp | 7 +++++++ - src/options.cpp | 12 ++++++++++-- - src/options.hpp | 4 ++++ - src/socket_base.cpp | 4 ++++ - src/tcp_address.cpp | 16 +++++++++++----- - src/tcp_listener.cpp | 32 ++++++++++++++++++++++++++++++++ - src/tcp_listener.hpp | 7 +++++++ + include/zmq.h | 4 ++++ + src/ipc_listener.cpp | 20 ++++++++++++++++++++ + src/ipc_listener.hpp | 7 +++++++ + src/options.cpp | 12 ++++++++++-- + src/options.hpp | 4 ++++ + src/socket_base.cpp | 4 ++++ + src/tcp_address.cpp | 16 +++++++++++----- + src/tcp_listener.cpp | 32 ++++++++++++++++++++++++++++++++ + src/tcp_listener.hpp | 7 +++++++ 9 files changed, 99 insertions(+), 7 deletions(-) commit c3f7543ebe08cfdadf218fa558f03a5d382d322c @@ -7769,8 +15502,8 @@ which is normal practice to ensure the implementation matches the specified interface. YMMV. I follow 0MQ style. - include/zmq.h | 11 ----------- - src/zmq.cpp | 12 ++++++++++++ + include/zmq.h | 11 ----------- + src/zmq.cpp | 12 ++++++++++++ 2 files changed, 12 insertions(+), 11 deletions(-) commit 970a00539930f1c047ed8cc684fe64885fbf7020 @@ -7784,8 +15517,8 @@ be used to avoid gratuitously including in the interface. The interface can't be used with this include. - include/zmq.h | 14 ++++++++++++++ - src/zmq.cpp | 10 ---------- + include/zmq.h | 14 ++++++++++++++ + src/zmq.cpp | 10 ---------- 2 files changed, 14 insertions(+), 10 deletions(-) commit 383a49dadf4e9c2c7fea84d521eeb42c0f5bf6de @@ -7794,7 +15527,7 @@ Implement zmq_recvmmsg. - src/zmq.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + src/zmq.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) commit 531835bba887722110d87e1dc912592cf9e49a50 @@ -7805,7 +15538,7 @@ Posix style send multiple messages using scatter/gather array. - src/zmq.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/zmq.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) commit f59fff7bf26da65c2e1c5f259326f7daf8e4d3a0 @@ -7816,7 +15549,7 @@ sys/uio.h contains the XSI vector I/O data structure. - configure.in | 3 +++ + configure.in | 3 +++ 1 file changed, 3 insertions(+) commit 21571cf0855d5ef8c52aee5a854b79d7fc66a603 @@ -7834,8 +15567,8 @@ Add a test for thread safe sockets. - tests/Makefile.am | 2 + - tests/test_ts_context.cpp | 129 ++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 2 + + tests/test_ts_context.cpp | 129 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) commit 759b2e01fd03b171f63d37b908a4a530ab44420b @@ -7844,7 +15577,7 @@ Fix comments to conform to style guide. - src/zmq.cpp | 29 +++++++++++++++++++++-------- + src/zmq.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) commit 9dab56c1df5e41acb1a59f21261dd61594fb7a07 @@ -7880,7 +15613,7 @@ add missing semicolon - src/xpub.cpp | 2 +- + src/xpub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 520ad3c2d7966ad868354c0ad66b76a3e408f568 @@ -7900,12 +15633,12 @@ physically some data structures and extra methods are provided by they're only used from the C binding. - include/zmq.h | 1 + - src/ctx.cpp | 10 ++++++++++ - src/ctx.hpp | 6 ++++++ - src/socket_base.cpp | 5 +++++ - src/socket_base.hpp | 1 + - src/zmq.cpp | 21 ++++++++++++++++++--- + include/zmq.h | 1 + + src/ctx.cpp | 10 ++++++++++ + src/ctx.hpp | 6 ++++++ + src/socket_base.cpp | 5 +++++ + src/socket_base.hpp | 1 + + src/zmq.cpp | 21 ++++++++++++++++++--- 6 files changed, 41 insertions(+), 3 deletions(-) commit 988efbc73a2f4f0d8f8b380da61b73b5affaeccd @@ -7934,9 +15667,9 @@ Note: as yet no code to actually set the flag. - src/socket_base.cpp | 13 +++++- - src/socket_base.hpp | 6 ++- - src/zmq.cpp | 112 ++++++++++++++++++++++++++++++++++++---------------- + src/socket_base.cpp | 13 +++++- + src/socket_base.hpp | 6 ++- + src/zmq.cpp | 112 ++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 96 insertions(+), 35 deletions(-) commit 4dd6ce0639da832927ab68cfb7226c21808f0034 @@ -7945,7 +15678,7 @@ Add mission ; character - src/xpub.cpp | 2 +- + src/xpub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 43b71ae4bf5b4b1a046c6549483f59ef03883d5a @@ -7954,7 +15687,7 @@ Fixing missing semicolon in xpub.cpp as reported on the list by Emmanuel TAUREL - src/xpub.cpp | 2 +- + src/xpub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dc50bf5dca6b4c1c9b0c5e4d62f6f3854ffbdaef @@ -7972,7 +15705,7 @@ xpub: free received subscription messages - src/xpub.cpp | 7 +++---- + src/xpub.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 4f4d72afc62d35638eed0ce1a4deebe9ac587e3b @@ -8038,23 +15771,23 @@ Signed-off-by: Martin Lucina - src/pair.cpp | 2 +- - src/pair.hpp | 2 +- - src/pgm_sender.cpp | 10 ---------- - src/pull.cpp | 2 +- - src/pull.hpp | 2 +- - src/push.cpp | 2 +- - src/push.hpp | 2 +- - src/socket_base.cpp | 12 +++++++++--- - src/socket_base.hpp | 5 +++-- - src/xpub.cpp | 7 ++++++- - src/xpub.hpp | 2 +- - src/xrep.cpp | 2 +- - src/xrep.hpp | 2 +- - src/xreq.cpp | 2 +- - src/xreq.hpp | 2 +- - src/xsub.cpp | 2 +- - src/xsub.hpp | 2 +- + src/pair.cpp | 2 +- + src/pair.hpp | 2 +- + src/pgm_sender.cpp | 10 ---------- + src/pull.cpp | 2 +- + src/pull.hpp | 2 +- + src/push.cpp | 2 +- + src/push.hpp | 2 +- + src/socket_base.cpp | 12 +++++++++--- + src/socket_base.hpp | 5 +++-- + src/xpub.cpp | 7 ++++++- + src/xpub.hpp | 2 +- + src/xrep.cpp | 2 +- + src/xrep.hpp | 2 +- + src/xreq.cpp | 2 +- + src/xreq.hpp | 2 +- + src/xsub.cpp | 2 +- + src/xsub.hpp | 2 +- 17 files changed, 31 insertions(+), 29 deletions(-) commit edf7db74d933f753d14dd4c8e5de0e8081624118 @@ -8074,8 +15807,8 @@ Signed-off-by: Staffan Gimåker - src/mtrie.cpp | 39 +++++++++++++++++++++++++++++---------- - src/mtrie.hpp | 2 +- + src/mtrie.cpp | 39 +++++++++++++++++++++++++++++---------- + src/mtrie.hpp | 2 +- 2 files changed, 30 insertions(+), 11 deletions(-) commit 1925c92fe9c50c40b083749f8ff9521abcce72b5 @@ -8100,7 +15833,7 @@ Epoll is default for cross-compile. For regular-compile, test kernel (run) support. - acinclude.m4 | 21 ++++++++++++++++++--- + acinclude.m4 | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) commit 281dcd25448dc524bb1f001ad7c57d70a4fa79ab @@ -8154,7 +15887,7 @@ Fix: Case where system library has epoll but kernel does not support it. - acinclude.m4 | 7 +++++-- + acinclude.m4 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit c4f22408518347ba47b878090de3f94a4b554267 @@ -8163,7 +15896,7 @@ Fix: runtime patch for when system has clock_gettime but does not support CLOCK_MONOTONIC. - src/clock.cpp | 11 ++++++++++- + src/clock.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit b5dbff8ed4ff6bdc6bdc68987f71983e3b6c32d3 @@ -8172,7 +15905,7 @@ Fix basic_string not implemented in stdc++ 3 - src/blob.hpp | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/blob.hpp | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) commit 99df984be1660eb52e985b55beb0bca87ccec83d @@ -8181,7 +15914,7 @@ Fix bad combination of gcc3, -Werror and private destructor. - src/ctx.hpp | 2 +- + src/ctx.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bc4d1b6002775375ccc11f63ec703a29437105ac @@ -8195,8 +15928,8 @@ Signed-off-by: Staffan Gimåker - src/mtrie.cpp | 23 +++++++++++++++-------- - src/trie.cpp | 11 ++++++++--- + src/mtrie.cpp | 23 +++++++++++++++-------- + src/trie.cpp | 11 ++++++++--- 2 files changed, 23 insertions(+), 11 deletions(-) commit 2e0c4330fa3d1044ca3d89a0f1798a88b7cc3215 @@ -8213,8 +15946,8 @@ Signed-off-by: AJ Lewis - configure.in | 2 ++ - src/clock.cpp | 8 ++++++-- + configure.in | 2 ++ + src/clock.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) commit 36215656eb586a505d051dd60500e92d0f710f07 @@ -8227,7 +15960,7 @@ Signed-off-by: Staffan Gimåker - src/xpub.cpp | 25 +++++++++++++------------ + src/xpub.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) commit c34a1443651ce5a6d8f7a88d0677ec85c81e1570 @@ -8252,7 +15985,7 @@ Signed-off-by: Martin Lucina - src/pgm_receiver.cpp | 13 +++++++++++-- + src/pgm_receiver.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) commit 19129edc60b09576699120a6c0637ae8c73c9bd4 @@ -8263,8 +15996,8 @@ Signed-off-by: Staffan Gimåker - src/trie.cpp | 25 ++++++++++++++++++++++--- - src/trie.hpp | 3 +++ + src/trie.cpp | 25 ++++++++++++++++++++++--- + src/trie.hpp | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) commit 6fa9ffebe5d4cf0bba051f464b8c8054cffc2b72 @@ -8275,8 +16008,8 @@ Signed-off-by: Staffan Gimåker - src/mtrie.cpp | 35 ++++++++++++++++++++++++++++++++--- - src/mtrie.hpp | 3 +++ + src/mtrie.cpp | 35 ++++++++++++++++++++++++++++++++--- + src/mtrie.hpp | 3 +++ 2 files changed, 35 insertions(+), 3 deletions(-) commit 029e28865dd47895e6919ce1c3e12c95ea56ad32 @@ -8291,7 +16024,7 @@ Signed-off-by: Martin Lucina - src/pgm_sender.cpp | 4 ++-- + src/pgm_sender.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1d8b132d368119cd0cb8219e8cd90d8d35f0d647 @@ -8302,10 +16035,10 @@ Signed-off-by: Ivo Danihelka - src/ipc_connecter.cpp | 2 +- - src/ipc_connecter.hpp | 6 +++--- - src/tcp_connecter.cpp | 2 +- - src/tcp_connecter.hpp | 4 ++-- + src/ipc_connecter.cpp | 2 +- + src/ipc_connecter.hpp | 6 +++--- + src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.hpp | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) commit 6f32361fea61619fec94348de693a9e3ff8981e0 @@ -8316,7 +16049,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b3fbe0113d8b39cd2d23837882fba1ea40d22811 @@ -8334,10 +16067,10 @@ Signed-off-by: Martin Sustrik - builds/msvc/Makefile.am | 33 ++++- - builds/msvc/zmq_forwarder/zmq_forwarder.vcproj | 176 ------------------------- - builds/msvc/zmq_queue/zmq_queue.vcproj | 176 ------------------------- - builds/msvc/zmq_streamer/zmq_streamer.vcproj | 176 ------------------------- + builds/msvc/Makefile.am | 33 ++++- + builds/msvc/zmq_forwarder/zmq_forwarder.vcproj | 176 ------------------------ + builds/msvc/zmq_queue/zmq_queue.vcproj | 176 ------------------------ + builds/msvc/zmq_streamer/zmq_streamer.vcproj | 176 ------------------------ 4 files changed, 26 insertions(+), 535 deletions(-) commit 3bf7860fb783c38503c013dbad05ad2ff54f5a16 @@ -8348,7 +16081,7 @@ Signed-off-by: Martin Sustrik - NEWS | 637 ++++++++++--------------------------------------------------------- + NEWS | 637 ++++++++++-------------------------------------------------------- 1 file changed, 90 insertions(+), 547 deletions(-) commit 22ef966d4aab3448d4debf524afbdaa19f37dff0 @@ -8359,35 +16092,35 @@ Signed-off-by: Martin Lucina - doc/zmq.txt | 2 +- - doc/zmq_bind.txt | 2 +- - doc/zmq_close.txt | 2 +- - doc/zmq_connect.txt | 2 +- - doc/zmq_errno.txt | 2 +- - doc/zmq_getsockopt.txt | 2 +- - doc/zmq_init.txt | 2 +- - doc/zmq_inproc.txt | 2 +- - doc/zmq_ipc.txt | 2 +- - doc/zmq_msg_close.txt | 2 +- - doc/zmq_msg_copy.txt | 2 +- - doc/zmq_msg_data.txt | 2 +- - doc/zmq_msg_init.txt | 2 +- - doc/zmq_msg_init_data.txt | 2 +- - doc/zmq_msg_init_size.txt | 2 +- - doc/zmq_msg_move.txt | 2 +- - doc/zmq_msg_size.txt | 2 +- - doc/zmq_pgm.txt | 2 +- - doc/zmq_poll.txt | 2 +- - doc/zmq_recv.txt | 2 +- - doc/zmq_recvmsg.txt | 2 +- - doc/zmq_send.txt | 2 +- - doc/zmq_sendmsg.txt | 2 +- - doc/zmq_setsockopt.txt | 2 +- - doc/zmq_socket.txt | 2 +- - doc/zmq_strerror.txt | 2 +- - doc/zmq_tcp.txt | 2 +- - doc/zmq_term.txt | 2 +- - doc/zmq_version.txt | 2 +- + doc/zmq.txt | 2 +- + doc/zmq_bind.txt | 2 +- + doc/zmq_close.txt | 2 +- + doc/zmq_connect.txt | 2 +- + doc/zmq_errno.txt | 2 +- + doc/zmq_getsockopt.txt | 2 +- + doc/zmq_init.txt | 2 +- + doc/zmq_inproc.txt | 2 +- + doc/zmq_ipc.txt | 2 +- + doc/zmq_msg_close.txt | 2 +- + doc/zmq_msg_copy.txt | 2 +- + doc/zmq_msg_data.txt | 2 +- + doc/zmq_msg_init.txt | 2 +- + doc/zmq_msg_init_data.txt | 2 +- + doc/zmq_msg_init_size.txt | 2 +- + doc/zmq_msg_move.txt | 2 +- + doc/zmq_msg_size.txt | 2 +- + doc/zmq_pgm.txt | 2 +- + doc/zmq_poll.txt | 2 +- + doc/zmq_recv.txt | 2 +- + doc/zmq_recvmsg.txt | 2 +- + doc/zmq_send.txt | 2 +- + doc/zmq_sendmsg.txt | 2 +- + doc/zmq_setsockopt.txt | 2 +- + doc/zmq_socket.txt | 2 +- + doc/zmq_strerror.txt | 2 +- + doc/zmq_tcp.txt | 2 +- + doc/zmq_term.txt | 2 +- + doc/zmq_version.txt | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) commit 183e126364762eb7b6fcc96c87d060c8e09044b5 @@ -8398,7 +16131,7 @@ Signed-off-by: Martin Lucina - doc/zmq_sendmsg.txt | 2 +- + doc/zmq_sendmsg.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit adc07128e6d493dc29a76f88db3870aaea0fc795 @@ -8421,7 +16154,7 @@ Signed-off-by: Martin Sustrik - src/xsub.cpp | 5 +++++ + src/xsub.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit bfbd16d099cc045d4a4745e9a6f28221a0e3bd95 @@ -8442,8 +16175,8 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 45 ++++++++++++++++++++++++++++++++++++--------- - src/xrep.hpp | 8 ++++++-- + src/xrep.cpp | 45 ++++++++++++++++++++++++++++++++++++--------- + src/xrep.hpp | 8 ++++++-- 2 files changed, 42 insertions(+), 11 deletions(-) commit f9eb763293014f812dac5558be5c5f03bb896efb @@ -8454,7 +16187,7 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 4 ++-- + src/socket_base.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 3fb5c11b03119a157db8dc024809943f88f87320 @@ -8475,30 +16208,30 @@ Signed-off-by: Stuart Webster - .gitignore | 1 + - builds/msvc/c_local_lat/c_local_lat.vcxproj | 87 ++++++++++ - builds/msvc/c_local_thr/c_local_thr.vcxproj | 87 ++++++++++ - builds/msvc/c_remote_lat/c_remote_lat.vcxproj | 87 ++++++++++ - builds/msvc/c_remote_thr/c_remote_thr.vcxproj | 87 ++++++++++ - builds/msvc/inproc_lat/inproc_lat.vcxproj | 86 +++++++++ - builds/msvc/inproc_thr/inproc_thr.vcxproj | 86 +++++++++ - builds/msvc/libzmq/libzmq.vcxproj | 241 ++++++++++++++++++++++++++ - builds/msvc/libzmq/libzmq.vcxproj.filters | 13 ++ - builds/msvc/msvc10.sln | 116 +++++++++++++ - builds/msvc/properties/Common.props | 21 +++ - builds/msvc/properties/Debug.props | 19 ++ - builds/msvc/properties/Dynamic.props | 20 +++ - builds/msvc/properties/Executable.props | 19 ++ - builds/msvc/properties/Precompiled.props | 14 ++ - builds/msvc/properties/Release.props | 22 +++ - builds/msvc/properties/Win32.props | 12 ++ - builds/msvc/properties/Win32_Release.props | 17 ++ - builds/msvc/properties/WithOpenPGM.props | 12 ++ - builds/msvc/properties/ZeroMQ.props | 23 +++ - builds/msvc/properties/x64.props | 12 ++ - src/precompiled.cpp | 21 +++ - src/precompiled.hpp | 47 +++++ - src/windows.hpp | 3 + + .gitignore | 1 + + builds/msvc/c_local_lat/c_local_lat.vcxproj | 87 +++++++++ + builds/msvc/c_local_thr/c_local_thr.vcxproj | 87 +++++++++ + builds/msvc/c_remote_lat/c_remote_lat.vcxproj | 87 +++++++++ + builds/msvc/c_remote_thr/c_remote_thr.vcxproj | 87 +++++++++ + builds/msvc/inproc_lat/inproc_lat.vcxproj | 86 +++++++++ + builds/msvc/inproc_thr/inproc_thr.vcxproj | 86 +++++++++ + builds/msvc/libzmq/libzmq.vcxproj | 241 +++++++++++++++++++++++++ + builds/msvc/libzmq/libzmq.vcxproj.filters | 13 ++ + builds/msvc/msvc10.sln | 116 ++++++++++++ + builds/msvc/properties/Common.props | 21 +++ + builds/msvc/properties/Debug.props | 19 ++ + builds/msvc/properties/Dynamic.props | 20 ++ + builds/msvc/properties/Executable.props | 19 ++ + builds/msvc/properties/Precompiled.props | 14 ++ + builds/msvc/properties/Release.props | 22 +++ + builds/msvc/properties/Win32.props | 12 ++ + builds/msvc/properties/Win32_Release.props | 17 ++ + builds/msvc/properties/WithOpenPGM.props | 12 ++ + builds/msvc/properties/ZeroMQ.props | 23 +++ + builds/msvc/properties/x64.props | 12 ++ + src/precompiled.cpp | 21 +++ + src/precompiled.hpp | 47 +++++ + src/windows.hpp | 3 + 24 files changed, 1153 insertions(+) commit a9e03336b020d2e6a83338b111092e65aa812f95 @@ -8514,8 +16247,8 @@ Signed-off-by: Martin Lucina - src/ipc_connecter.cpp | 1 + - src/tcp_connecter.cpp | 1 + + src/ipc_connecter.cpp | 1 + + src/tcp_connecter.cpp | 1 + 2 files changed, 2 insertions(+) commit 82d935309eede60777b59af9df7a50576916d01f @@ -8533,8 +16266,8 @@ Signed-off-by: Martin Lucina - src/ipc_connecter.cpp | 1 + - src/tcp_connecter.cpp | 1 + + src/ipc_connecter.cpp | 1 + + src/tcp_connecter.cpp | 1 + 2 files changed, 2 insertions(+) commit c90f54e6a66ead6c6dc949eaab58d1bfb23b0da1 @@ -8552,7 +16285,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 0df86c41b5f2e428b6237bcc1e28304ea0149097 @@ -8563,7 +16296,7 @@ Signed-off-by: Martin Sustrik - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit aaac96d94a81fb5debe24200e20c353217baec9c @@ -8576,8 +16309,8 @@ Signed-off-by: Mika Fischer - configure.in | 5 +++-- - src/clock.cpp | 12 ++++++++++++ + configure.in | 5 +++-- + src/clock.cpp | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) commit b4f5ee58a9e0ad4ad9f872b8fcc6797e1b6f4e04 @@ -8595,7 +16328,7 @@ Signed-off-by: Martin Sustrik - src/stream_engine.cpp | 2 +- + src/stream_engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit daac9ac5b2f864f61615a4e93caf49e6ea187cda @@ -8606,7 +16339,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit bf9062902c776c0c6029ef42c6ba0c7179bf0425 @@ -8617,9 +16350,9 @@ Signed-off-by: Philip Kovacs - doc/Makefile.am | 8 ++++---- - perf/Makefile.am | 3 ++- - tests/Makefile.am | 4 +++- + doc/Makefile.am | 8 ++++---- + perf/Makefile.am | 3 ++- + tests/Makefile.am | 4 +++- 3 files changed, 9 insertions(+), 6 deletions(-) commit 5c1a91e33e552b136a0a72027ef27f41de95dcb8 @@ -8630,7 +16363,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit a610b3d1b4d975bbffc74604aa43f793dfd3f301 @@ -8649,8 +16382,8 @@ Signed-off-by: Stuart Webster - .gitignore | 1 + - .hgeol | 2 ++ + .gitignore | 1 + + .hgeol | 2 ++ 2 files changed, 3 insertions(+) commit f8bd3967bfe305c22b6e08f3e6555b2162609328 @@ -8661,8 +16394,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 2 +- - doc/zmq_setsockopt.txt | 2 +- + doc/zmq_getsockopt.txt | 2 +- + doc/zmq_setsockopt.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 5a6503e5c275c544e1447401e17a4746985614ea @@ -8673,8 +16406,8 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 2 +- - src/xreq.cpp | 2 +- + src/xrep.cpp | 2 +- + src/xreq.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 83975c1b21722bb689c7b84cde5a6958145fcbd4 @@ -8687,7 +16420,7 @@ Signed-off-by: Martin Sustrik - src/tcp_address.cpp | 2 +- + src/tcp_address.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 21bca4dbe48cffdaa1e1108600973559a3b880d2 @@ -8698,8 +16431,8 @@ Signed-off-by: Martin Sustrik - src/xreq.cpp | 26 ++++++++++++++++++++++++-- - src/xreq.hpp | 6 ++++++ + src/xreq.cpp | 26 ++++++++++++++++++++++++-- + src/xreq.hpp | 6 ++++++ 2 files changed, 30 insertions(+), 2 deletions(-) commit 1c239708ab174c1de9f99e256d23158f74a24dbc @@ -8710,7 +16443,7 @@ wq: Signed-off-by: Martin Sustrik - src/xrep.cpp | 37 ++++++++++++++++++++++--------------- + src/xrep.cpp | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) commit f8b005502699aa069406923701af685cc156d3c2 @@ -8721,7 +16454,7 @@ Signed-off-by: Martin Sustrik - src/signaler.cpp | 2 +- + src/signaler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 90d0435b564e3c44b63980778ed1815a4451174e @@ -8742,7 +16475,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 3 ++- + AUTHORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 27524908c17b7db965f8aaa2bde513643378e372 @@ -8756,7 +16489,7 @@ Signed-off-by: Martin Lucina - configure.in | 8 +++++--- + configure.in | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit c79abee6bcaa996f50be71bd1d3075e3affb469d @@ -8773,46 +16506,46 @@ Expand the original patch to all such forward declarations. Signed-off-by: Martin Sustrik - src/command.hpp | 16 ++++++++---- - src/ctx.hpp | 22 ++++++++++------ - src/decoder.hpp | 6 +++-- - src/devpoll.hpp | 6 +++-- - src/dist.hpp | 21 +++++++++------- - src/encoder.hpp | 6 +++-- - src/epoll.hpp | 6 +++-- - src/i_engine.hpp | 4 ++- - src/io_object.hpp | 6 +++-- - src/io_thread.hpp | 4 ++- - src/ipc_connecter.hpp | 9 ++++--- - src/ipc_listener.hpp | 9 ++++--- - src/kqueue.hpp | 6 +++-- - src/lb.hpp | 2 +- - src/mtrie.hpp | 18 ++++++++------ - src/object.hpp | 69 +++++++++++++++++++++++++++++---------------------- - src/own.hpp | 7 ++++-- - src/pair.hpp | 25 +++++++++++-------- - src/pgm_receiver.hpp | 11 +++++--- - src/pgm_sender.hpp | 9 ++++--- - src/pipe.hpp | 17 +++++++------ - src/poll.hpp | 6 +++-- - src/poller_base.hpp | 8 +++--- - src/pub.hpp | 13 +++++++--- - src/pull.hpp | 19 ++++++++------ - src/push.hpp | 19 ++++++++------ - src/reaper.hpp | 7 ++++-- - src/rep.hpp | 15 +++++++---- - src/req.hpp | 15 +++++++---- - src/select.hpp | 6 +++-- - src/session_base.hpp | 34 ++++++++++++++----------- - src/socket_base.hpp | 22 +++++++++------- - src/stream_engine.hpp | 11 +++++--- - src/sub.hpp | 13 +++++++--- - src/tcp_connecter.hpp | 9 ++++--- - src/tcp_listener.hpp | 9 ++++--- - src/xpub.hpp | 25 +++++++++++-------- - src/xrep.hpp | 25 +++++++++++-------- - src/xreq.hpp | 24 +++++++++++------- - src/xsub.hpp | 23 +++++++++-------- + src/command.hpp | 16 ++++++++---- + src/ctx.hpp | 22 ++++++++++------ + src/decoder.hpp | 6 +++-- + src/devpoll.hpp | 6 +++-- + src/dist.hpp | 21 ++++++++------- + src/encoder.hpp | 6 +++-- + src/epoll.hpp | 6 +++-- + src/i_engine.hpp | 4 ++- + src/io_object.hpp | 6 +++-- + src/io_thread.hpp | 4 ++- + src/ipc_connecter.hpp | 9 ++++--- + src/ipc_listener.hpp | 9 ++++--- + src/kqueue.hpp | 6 +++-- + src/lb.hpp | 2 +- + src/mtrie.hpp | 18 +++++++------ + src/object.hpp | 69 ++++++++++++++++++++++++++++--------------------- + src/own.hpp | 7 +++-- + src/pair.hpp | 25 +++++++++++------- + src/pgm_receiver.hpp | 11 +++++--- + src/pgm_sender.hpp | 9 ++++--- + src/pipe.hpp | 17 +++++++----- + src/poll.hpp | 6 +++-- + src/poller_base.hpp | 8 +++--- + src/pub.hpp | 13 +++++++--- + src/pull.hpp | 19 +++++++++----- + src/push.hpp | 19 +++++++++----- + src/reaper.hpp | 7 +++-- + src/rep.hpp | 15 +++++++---- + src/req.hpp | 15 +++++++---- + src/select.hpp | 6 +++-- + src/session_base.hpp | 34 +++++++++++++----------- + src/socket_base.hpp | 22 +++++++++------- + src/stream_engine.hpp | 11 +++++--- + src/sub.hpp | 13 +++++++--- + src/tcp_connecter.hpp | 9 ++++--- + src/tcp_listener.hpp | 9 ++++--- + src/xpub.hpp | 25 +++++++++++------- + src/xrep.hpp | 25 ++++++++++-------- + src/xreq.hpp | 24 ++++++++++------- + src/xsub.hpp | 23 ++++++++++------- 40 files changed, 361 insertions(+), 221 deletions(-) commit 991f7e2c85919daef43c62175da046e0a085f8e3 @@ -8826,7 +16559,7 @@ Signed-off-by: Martin Lucina - configure.in | 8 +++++--- + configure.in | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 89962a825697dd9eca057c032ec61de71b075539 @@ -8837,7 +16570,7 @@ Signed-off-by: Martin Sustrik - src/req.cpp | 3 ++- + src/req.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 11e31988e14b46ccfafeb9f58706ba1fe18a274f @@ -8848,7 +16581,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 93529d8c5db599a45171942c4510f1b84ed09e6a @@ -8864,14 +16597,14 @@ Renamed from zmq_msg_flags to zmq_getmsgopt Signed-off-by: Martin Sustrik - .gitignore | 1 + - doc/Makefile.am | 2 +- - doc/zmq_getmsgopt.txt | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ - include/zmq.h | 5 +++ - src/socket_base.cpp | 10 +++--- - src/zmq.cpp | 19 +++++++++++ - tests/Makefile.am | 4 ++- - tests/test_msg_flags.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 1 + + doc/Makefile.am | 2 +- + doc/zmq_getmsgopt.txt | 85 ++++++++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 5 +++ + src/socket_base.cpp | 10 +++--- + src/zmq.cpp | 19 +++++++++++ + tests/Makefile.am | 4 ++- + tests/test_msg_flags.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 200 insertions(+), 8 deletions(-) commit bb66f3cc3bc2a76d10f16e1206f35480eb250a07 @@ -8886,8 +16619,8 @@ Signed-off-by: Martin Sustrik - src/mtrie.cpp | 2 +- - src/trie.cpp | 2 +- + src/mtrie.cpp | 2 +- + src/trie.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6503716203552966e2fa6a6b4839bc0e001f9478 @@ -8898,7 +16631,7 @@ Signed-off-by: Martin Sustrik - tests/test_timeo.cpp | 2 +- + tests/test_timeo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fe81827bd093aa6df5e5bf1bfbca479cad4ab53a @@ -8914,7 +16647,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 4 ++-- + include/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 21a0b49834734919a48301fbbb354f8c75c6d1ad @@ -8928,7 +16661,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 1 - + include/zmq.h | 1 - 1 file changed, 1 deletion(-) commit a756956781973d207413d675b998ae47de47b7c7 @@ -8942,7 +16675,7 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 11 +++++++++++ + src/socket_base.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) commit de1d32daaedce51f655fe73e60988733b2db6557 @@ -8953,7 +16686,7 @@ Signed-off by: Brett Cameron - src/tcp_address.cpp | 8 ++++++++ + src/tcp_address.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 50a9ee6e7335b645487a83487285bce6886ba082 @@ -8964,8 +16697,8 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 30 +++--------------------------- - src/windows.hpp | 3 --- + builds/msvc/libzmq/libzmq.vcproj | 30 +++--------------------------- + src/windows.hpp | 3 --- 2 files changed, 3 insertions(+), 30 deletions(-) commit 05ce301f3571e3e690792a189cb927328163f0bc @@ -8994,7 +16727,7 @@ Signed-off-by: Martin Sustrik - COPYING.LESSER | 20 ++++++++++---------- + COPYING.LESSER | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit a4843b65d24f9caa188bb2454b28080f0cee8484 @@ -9008,20 +16741,20 @@ Signed-off-by: Martin Sustrik - src/msg.hpp | 1 + - src/options.cpp | 4 +- - src/options.hpp | 6 +++ - src/pipe.cpp | 11 +++-- - src/pipe.hpp | 10 +++-- - src/req.cpp | 15 +++++-- - src/req.hpp | 1 + - src/session_base.cpp | 20 ++++++++- - src/session_base.hpp | 5 +++ - src/socket_base.cpp | 9 ++++ - src/xrep.cpp | 102 ++++++++++++++++++++++++++++----------------- - src/xrep.hpp | 4 +- - src/xreq.cpp | 14 ++++++- - tests/test_invalid_rep.cpp | 17 ++++---- + src/msg.hpp | 1 + + src/options.cpp | 4 +- + src/options.hpp | 6 +++ + src/pipe.cpp | 11 +++-- + src/pipe.hpp | 10 +++-- + src/req.cpp | 15 +++++-- + src/req.hpp | 1 + + src/session_base.cpp | 20 ++++++++- + src/session_base.hpp | 5 +++ + src/socket_base.cpp | 9 ++++ + src/xrep.cpp | 102 +++++++++++++++++++++++++++----------------- + src/xrep.hpp | 4 +- + src/xreq.cpp | 14 +++++- + tests/test_invalid_rep.cpp | 17 ++++---- 14 files changed, 155 insertions(+), 64 deletions(-) commit d20ea25b8c63e148fe48cc2b85bac9c896f1073b @@ -9032,13 +16765,13 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 16 ++++++++++++++++ - doc/zmq_setsockopt.txt | 17 +++++++++++++++++ - include/zmq.h | 1 + - src/Makefile.am | 1 + - src/blob.hpp | 35 +++++++++++++++++++++++++++++++++++ - src/options.cpp | 25 +++++++++++++++++++++++++ - src/options.hpp | 5 +++++ + doc/zmq_getsockopt.txt | 16 ++++++++++++++++ + doc/zmq_setsockopt.txt | 17 +++++++++++++++++ + include/zmq.h | 1 + + src/Makefile.am | 1 + + src/blob.hpp | 35 +++++++++++++++++++++++++++++++++++ + src/options.cpp | 25 +++++++++++++++++++++++++ + src/options.hpp | 5 +++++ 7 files changed, 100 insertions(+) commit 8e21d64c974344b5b2b83cac85d12c51392fe74b @@ -9049,145 +16782,145 @@ Signed-off-by: Martin Sustrik - autogen.sh | 2 +- - include/zmq.h | 2 +- - include/zmq_utils.h | 1 - - perf/inproc_lat.cpp | 2 +- - perf/inproc_thr.cpp | 2 +- - perf/local_lat.cpp | 2 +- - perf/local_thr.cpp | 2 +- - perf/remote_lat.cpp | 2 +- - perf/remote_thr.cpp | 2 +- - src/array.hpp | 2 +- - src/atomic_counter.hpp | 2 +- - src/atomic_ptr.hpp | 2 +- - src/clock.cpp | 5 ++--- - src/clock.hpp | 5 ++--- - src/command.hpp | 2 +- - src/config.hpp | 2 +- - src/ctx.hpp | 2 +- - src/decoder.cpp | 2 +- - src/decoder.hpp | 2 +- - src/devpoll.cpp | 2 +- - src/devpoll.hpp | 2 +- - src/dist.cpp | 5 ++--- - src/dist.hpp | 5 ++--- - src/encoder.cpp | 2 +- - src/encoder.hpp | 2 +- - src/epoll.cpp | 2 +- - src/epoll.hpp | 2 +- - src/err.cpp | 2 +- - src/err.hpp | 2 +- - src/fd.hpp | 3 +-- - src/fq.cpp | 2 +- - src/fq.hpp | 2 +- - src/i_engine.hpp | 2 +- - src/i_poll_events.hpp | 4 ++-- - src/io_object.cpp | 2 +- - src/io_object.hpp | 2 +- - src/io_thread.cpp | 2 +- - src/io_thread.hpp | 2 +- - src/ip.cpp | 4 ++-- - src/ip.hpp | 4 ++-- - src/ipc_address.cpp | 5 ++--- - src/ipc_address.hpp | 5 ++--- - src/ipc_connecter.cpp | 5 ++--- - src/ipc_connecter.hpp | 5 ++--- - src/ipc_listener.cpp | 5 ++--- - src/ipc_listener.hpp | 5 ++--- - src/kqueue.cpp | 2 +- - src/kqueue.hpp | 2 +- - src/lb.cpp | 4 ++-- - src/lb.hpp | 4 ++-- - src/likely.hpp | 3 +-- - src/mailbox.cpp | 2 +- - src/mailbox.hpp | 2 +- - src/msg.cpp | 2 +- - src/msg.hpp | 2 +- - src/mtrie.cpp | 5 ++--- - src/mtrie.hpp | 5 ++--- - src/mutex.hpp | 4 ++-- - src/object.cpp | 2 +- - src/object.hpp | 2 +- - src/options.cpp | 2 +- - src/options.hpp | 2 +- - src/own.cpp | 5 ++--- - src/own.hpp | 5 ++--- - src/pair.cpp | 2 +- - src/pair.hpp | 2 +- - src/pgm_receiver.cpp | 4 ++-- - src/pgm_receiver.hpp | 4 ++-- - src/pgm_sender.cpp | 4 ++-- - src/pgm_sender.hpp | 4 ++-- - src/pgm_socket.cpp | 4 ++-- - src/pgm_socket.hpp | 4 ++-- - src/pipe.cpp | 2 +- - src/pipe.hpp | 2 +- - src/poll.cpp | 2 +- - src/poll.hpp | 2 +- - src/poller.hpp | 4 ++-- - src/poller_base.cpp | 5 ++--- - src/poller_base.hpp | 5 ++--- - src/pub.cpp | 2 +- - src/pub.hpp | 2 +- - src/pull.cpp | 2 +- - src/pull.hpp | 2 +- - src/push.cpp | 2 +- - src/push.hpp | 2 +- - src/random.cpp | 5 ++--- - src/random.hpp | 5 ++--- - src/reaper.cpp | 5 ++--- - src/reaper.hpp | 5 ++--- - src/req.cpp | 2 +- - src/req.hpp | 2 +- - src/select.cpp | 2 +- - src/select.hpp | 2 +- - src/session_base.cpp | 2 +- - src/session_base.hpp | 2 +- - src/signaler.cpp | 5 ++--- - src/signaler.hpp | 5 ++--- - src/socket_base.cpp | 2 +- - src/socket_base.hpp | 2 +- - src/stdint.hpp | 3 +-- - src/stream_engine.cpp | 2 +- - src/stream_engine.hpp | 2 +- - src/sub.cpp | 2 +- - src/sub.hpp | 2 +- - src/tcp_address.cpp | 2 +- - src/tcp_address.hpp | 2 +- - src/tcp_connecter.cpp | 2 +- - src/tcp_connecter.hpp | 2 +- - src/tcp_listener.cpp | 2 +- - src/tcp_listener.hpp | 2 +- - src/thread.cpp | 2 +- - src/thread.hpp | 2 +- - src/trie.cpp | 2 +- - src/trie.hpp | 2 +- - src/windows.hpp | 4 ++-- - src/wire.hpp | 3 +-- - src/xpub.cpp | 5 ++--- - src/xpub.hpp | 5 ++--- - src/xrep.cpp | 2 +- - src/xrep.hpp | 2 +- - src/xreq.cpp | 1 - - src/xreq.hpp | 2 -- - src/xsub.cpp | 5 ++--- - src/xsub.hpp | 5 ++--- - src/ypipe.hpp | 2 +- - src/yqueue.hpp | 2 +- - src/zmq_utils.cpp | 2 +- - tests/test_hwm.cpp | 5 ++--- - tests/test_invalid_rep.cpp | 5 ++--- - tests/test_pair_inproc.cpp | 5 ++--- - tests/test_pair_ipc.cpp | 5 ++--- - tests/test_pair_tcp.cpp | 6 +++--- - tests/test_reqrep_device.cpp | 5 ++--- - tests/test_reqrep_inproc.cpp | 5 ++--- - tests/test_reqrep_ipc.cpp | 5 ++--- - tests/test_reqrep_tcp.cpp | 6 +++--- - tests/test_shutdown_stress.cpp | 6 +++--- - tests/test_sub_forward.cpp | 6 +++--- - tests/test_timeo.cpp | 5 ++--- + autogen.sh | 2 +- + include/zmq.h | 2 +- + include/zmq_utils.h | 1 - + perf/inproc_lat.cpp | 2 +- + perf/inproc_thr.cpp | 2 +- + perf/local_lat.cpp | 2 +- + perf/local_thr.cpp | 2 +- + perf/remote_lat.cpp | 2 +- + perf/remote_thr.cpp | 2 +- + src/array.hpp | 2 +- + src/atomic_counter.hpp | 2 +- + src/atomic_ptr.hpp | 2 +- + src/clock.cpp | 5 ++--- + src/clock.hpp | 5 ++--- + src/command.hpp | 2 +- + src/config.hpp | 2 +- + src/ctx.hpp | 2 +- + src/decoder.cpp | 2 +- + src/decoder.hpp | 2 +- + src/devpoll.cpp | 2 +- + src/devpoll.hpp | 2 +- + src/dist.cpp | 5 ++--- + src/dist.hpp | 5 ++--- + src/encoder.cpp | 2 +- + src/encoder.hpp | 2 +- + src/epoll.cpp | 2 +- + src/epoll.hpp | 2 +- + src/err.cpp | 2 +- + src/err.hpp | 2 +- + src/fd.hpp | 3 +-- + src/fq.cpp | 2 +- + src/fq.hpp | 2 +- + src/i_engine.hpp | 2 +- + src/i_poll_events.hpp | 4 ++-- + src/io_object.cpp | 2 +- + src/io_object.hpp | 2 +- + src/io_thread.cpp | 2 +- + src/io_thread.hpp | 2 +- + src/ip.cpp | 4 ++-- + src/ip.hpp | 4 ++-- + src/ipc_address.cpp | 5 ++--- + src/ipc_address.hpp | 5 ++--- + src/ipc_connecter.cpp | 5 ++--- + src/ipc_connecter.hpp | 5 ++--- + src/ipc_listener.cpp | 5 ++--- + src/ipc_listener.hpp | 5 ++--- + src/kqueue.cpp | 2 +- + src/kqueue.hpp | 2 +- + src/lb.cpp | 4 ++-- + src/lb.hpp | 4 ++-- + src/likely.hpp | 3 +-- + src/mailbox.cpp | 2 +- + src/mailbox.hpp | 2 +- + src/msg.cpp | 2 +- + src/msg.hpp | 2 +- + src/mtrie.cpp | 5 ++--- + src/mtrie.hpp | 5 ++--- + src/mutex.hpp | 4 ++-- + src/object.cpp | 2 +- + src/object.hpp | 2 +- + src/options.cpp | 2 +- + src/options.hpp | 2 +- + src/own.cpp | 5 ++--- + src/own.hpp | 5 ++--- + src/pair.cpp | 2 +- + src/pair.hpp | 2 +- + src/pgm_receiver.cpp | 4 ++-- + src/pgm_receiver.hpp | 4 ++-- + src/pgm_sender.cpp | 4 ++-- + src/pgm_sender.hpp | 4 ++-- + src/pgm_socket.cpp | 4 ++-- + src/pgm_socket.hpp | 4 ++-- + src/pipe.cpp | 2 +- + src/pipe.hpp | 2 +- + src/poll.cpp | 2 +- + src/poll.hpp | 2 +- + src/poller.hpp | 4 ++-- + src/poller_base.cpp | 5 ++--- + src/poller_base.hpp | 5 ++--- + src/pub.cpp | 2 +- + src/pub.hpp | 2 +- + src/pull.cpp | 2 +- + src/pull.hpp | 2 +- + src/push.cpp | 2 +- + src/push.hpp | 2 +- + src/random.cpp | 5 ++--- + src/random.hpp | 5 ++--- + src/reaper.cpp | 5 ++--- + src/reaper.hpp | 5 ++--- + src/req.cpp | 2 +- + src/req.hpp | 2 +- + src/select.cpp | 2 +- + src/select.hpp | 2 +- + src/session_base.cpp | 2 +- + src/session_base.hpp | 2 +- + src/signaler.cpp | 5 ++--- + src/signaler.hpp | 5 ++--- + src/socket_base.cpp | 2 +- + src/socket_base.hpp | 2 +- + src/stdint.hpp | 3 +-- + src/stream_engine.cpp | 2 +- + src/stream_engine.hpp | 2 +- + src/sub.cpp | 2 +- + src/sub.hpp | 2 +- + src/tcp_address.cpp | 2 +- + src/tcp_address.hpp | 2 +- + src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.hpp | 2 +- + src/tcp_listener.cpp | 2 +- + src/tcp_listener.hpp | 2 +- + src/thread.cpp | 2 +- + src/thread.hpp | 2 +- + src/trie.cpp | 2 +- + src/trie.hpp | 2 +- + src/windows.hpp | 4 ++-- + src/wire.hpp | 3 +-- + src/xpub.cpp | 5 ++--- + src/xpub.hpp | 5 ++--- + src/xrep.cpp | 2 +- + src/xrep.hpp | 2 +- + src/xreq.cpp | 1 - + src/xreq.hpp | 2 -- + src/xsub.cpp | 5 ++--- + src/xsub.hpp | 5 ++--- + src/ypipe.hpp | 2 +- + src/yqueue.hpp | 2 +- + src/zmq_utils.cpp | 2 +- + tests/test_hwm.cpp | 5 ++--- + tests/test_invalid_rep.cpp | 5 ++--- + tests/test_pair_inproc.cpp | 5 ++--- + tests/test_pair_ipc.cpp | 5 ++--- + tests/test_pair_tcp.cpp | 6 +++--- + tests/test_reqrep_device.cpp | 5 ++--- + tests/test_reqrep_inproc.cpp | 5 ++--- + tests/test_reqrep_ipc.cpp | 5 ++--- + tests/test_reqrep_tcp.cpp | 6 +++--- + tests/test_shutdown_stress.cpp | 6 +++--- + tests/test_sub_forward.cpp | 6 +++--- + tests/test_timeo.cpp | 5 ++--- 139 files changed, 192 insertions(+), 234 deletions(-) commit 8a0f5f7650e556bde6c95d7f20c975aa530d3e10 @@ -9198,12 +16931,12 @@ Signed-off-by: Martin Sustrik - src/pgm_receiver.cpp | 1 + - src/pgm_receiver.hpp | 1 + - src/pgm_sender.cpp | 1 + - src/pgm_sender.hpp | 1 + - src/pgm_socket.cpp | 1 + - src/pgm_socket.hpp | 1 + + src/pgm_receiver.cpp | 1 + + src/pgm_receiver.hpp | 1 + + src/pgm_sender.cpp | 1 + + src/pgm_sender.hpp | 1 + + src/pgm_socket.cpp | 1 + + src/pgm_socket.hpp | 1 + 6 files changed, 6 insertions(+) commit 1c071f54a6c4444aaa73ace26d7b3a654c26ea5c @@ -9214,12 +16947,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 13 ------------- - doc/zmq_recv.txt | 7 ++----- - doc/zmq_recvmsg.txt | 7 ++----- - doc/zmq_send.txt | 11 ++--------- - doc/zmq_sendmsg.txt | 11 ++--------- - doc/zmq_socket.txt | 33 --------------------------------- + doc/zmq_getsockopt.txt | 13 ------------- + doc/zmq_recv.txt | 7 ++----- + doc/zmq_recvmsg.txt | 7 ++----- + doc/zmq_send.txt | 11 ++--------- + doc/zmq_sendmsg.txt | 11 ++--------- + doc/zmq_socket.txt | 33 --------------------------------- 6 files changed, 8 insertions(+), 74 deletions(-) commit 7563518929573fc9e729c1dc8bb4aea512fada5a @@ -9232,18 +16965,18 @@ Signed-off-by: Martin Sustrik - tests/test_hwm.cpp | 3 +++ - tests/test_invalid_rep.cpp | 3 +++ - tests/test_pair_inproc.cpp | 3 +++ - tests/test_pair_ipc.cpp | 3 +++ - tests/test_pair_tcp.cpp | 3 +++ - tests/test_reqrep_device.cpp | 3 +++ - tests/test_reqrep_inproc.cpp | 3 +++ - tests/test_reqrep_ipc.cpp | 3 +++ - tests/test_reqrep_tcp.cpp | 3 +++ - tests/test_shutdown_stress.cpp | 3 +++ - tests/test_sub_forward.cpp | 3 +++ - tests/test_timeo.cpp | 3 +++ + tests/test_hwm.cpp | 3 +++ + tests/test_invalid_rep.cpp | 3 +++ + tests/test_pair_inproc.cpp | 3 +++ + tests/test_pair_ipc.cpp | 3 +++ + tests/test_pair_tcp.cpp | 3 +++ + tests/test_reqrep_device.cpp | 3 +++ + tests/test_reqrep_inproc.cpp | 3 +++ + tests/test_reqrep_ipc.cpp | 3 +++ + tests/test_reqrep_tcp.cpp | 3 +++ + tests/test_shutdown_stress.cpp | 3 +++ + tests/test_sub_forward.cpp | 3 +++ + tests/test_timeo.cpp | 3 +++ 12 files changed, 36 insertions(+) commit 7842c7107358324e8c5b9af7272e6dcab8c97931 @@ -9254,26 +16987,26 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 5 +- - src/dist.cpp | 6 +- - src/encoder.cpp | 5 +- - src/fq.cpp | 3 +- - src/lb.cpp | 6 +- - src/msg.hpp | 7 +-- - src/pipe.cpp | 7 ++- - src/rep.cpp | 19 +++--- - src/req.cpp | 46 +++++--------- - src/req.hpp | 7 +-- - src/session_base.cpp | 4 +- - src/socket_base.cpp | 33 +--------- - src/socket_base.hpp | 7 +-- - src/xpub.cpp | 4 +- - src/xrep.cpp | 11 ++-- - src/xsub.cpp | 10 +-- - tests/Makefile.am | 2 - - tests/test_invalid_rep.cpp | 13 ++-- - tests/test_reqrep_device.cpp | 31 ++-------- - tests/test_reqrep_drop.cpp | 144 ------------------------------------------- + include/zmq.h | 5 +- + src/dist.cpp | 6 +- + src/encoder.cpp | 5 +- + src/fq.cpp | 3 +- + src/lb.cpp | 6 +- + src/msg.hpp | 7 +- + src/pipe.cpp | 7 +- + src/rep.cpp | 19 +++--- + src/req.cpp | 46 +++++--------- + src/req.hpp | 7 +- + src/session_base.cpp | 4 +- + src/socket_base.cpp | 33 +--------- + src/socket_base.hpp | 7 +- + src/xpub.cpp | 4 +- + src/xrep.cpp | 11 ++-- + src/xsub.cpp | 10 +-- + tests/Makefile.am | 2 - + tests/test_invalid_rep.cpp | 13 ++-- + tests/test_reqrep_device.cpp | 31 ++------- + tests/test_reqrep_drop.cpp | 144 ------------------------------------------ 20 files changed, 75 insertions(+), 295 deletions(-) commit 626099aa2a292178872843c55cc5226e6850f2ed @@ -9284,14 +17017,14 @@ Signed-off-by: Martin Sustrik - configure.in | 13 --- - src/Makefile.am | 4 - - src/session_base.cpp | 13 --- - src/socket_base.cpp | 27 +----- - src/vtcp_connecter.cpp | 252 ------------------------------------------------- - src/vtcp_connecter.hpp | 121 ------------------------ - src/vtcp_listener.cpp | 125 ------------------------ - src/vtcp_listener.hpp | 72 -------------- + configure.in | 13 --- + src/Makefile.am | 4 - + src/session_base.cpp | 13 --- + src/socket_base.cpp | 27 +----- + src/vtcp_connecter.cpp | 252 ------------------------------------------------ + src/vtcp_connecter.hpp | 121 ----------------------- + src/vtcp_listener.cpp | 125 ------------------------ + src/vtcp_listener.hpp | 72 -------------- 8 files changed, 1 insertion(+), 626 deletions(-) commit ac7717b7b35f441fc3aeeb1528e63f147c00913a @@ -9302,154 +17035,154 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 1 + - include/zmq_utils.h | 1 + - perf/inproc_lat.cpp | 1 + - perf/inproc_thr.cpp | 1 + - perf/local_lat.cpp | 1 + - perf/local_thr.cpp | 1 + - perf/remote_lat.cpp | 1 + - perf/remote_thr.cpp | 1 + - src/array.hpp | 1 + - src/atomic_counter.hpp | 1 + - src/atomic_ptr.hpp | 1 + - src/clock.cpp | 1 + - src/clock.hpp | 1 + - src/command.hpp | 1 + - src/config.hpp | 1 + - src/ctx.cpp | 1 + - src/ctx.hpp | 1 + - src/decoder.cpp | 1 + - src/decoder.hpp | 1 + - src/devpoll.cpp | 1 + - src/devpoll.hpp | 1 + - src/dist.cpp | 1 + - src/dist.hpp | 1 + - src/encoder.cpp | 1 + - src/encoder.hpp | 1 + - src/epoll.cpp | 1 + - src/epoll.hpp | 1 + - src/err.cpp | 1 + - src/err.hpp | 1 + - src/fd.hpp | 1 + - src/fq.cpp | 1 + - src/fq.hpp | 1 + - src/i_engine.hpp | 1 + - src/i_poll_events.hpp | 1 + - src/io_object.cpp | 1 + - src/io_object.hpp | 1 + - src/io_thread.cpp | 1 + - src/io_thread.hpp | 1 + - src/ip.cpp | 1 + - src/ip.hpp | 1 + - src/ipc_address.cpp | 1 + - src/ipc_address.hpp | 1 + - src/ipc_connecter.cpp | 1 + - src/ipc_connecter.hpp | 1 + - src/ipc_listener.cpp | 1 + - src/ipc_listener.hpp | 1 + - src/kqueue.cpp | 1 + - src/kqueue.hpp | 1 + - src/lb.cpp | 1 + - src/lb.hpp | 1 + - src/likely.hpp | 1 + - src/mailbox.cpp | 1 + - src/mailbox.hpp | 1 + - src/msg.cpp | 1 + - src/msg.hpp | 1 + - src/mtrie.cpp | 1 + - src/mtrie.hpp | 1 + - src/mutex.hpp | 1 + - src/object.cpp | 1 + - src/object.hpp | 1 + - src/options.cpp | 1 + - src/options.hpp | 1 + - src/own.cpp | 1 + - src/own.hpp | 1 + - src/pair.cpp | 1 + - src/pair.hpp | 1 + - src/pgm_receiver.cpp | 1 + - src/pgm_receiver.hpp | 1 + - src/pgm_sender.cpp | 1 + - src/pgm_sender.hpp | 1 + - src/pgm_socket.cpp | 1 + - src/pgm_socket.hpp | 1 + - src/pipe.cpp | 1 + - src/pipe.hpp | 1 + - src/poll.cpp | 1 + - src/poll.hpp | 1 + - src/poller.hpp | 1 + - src/poller_base.cpp | 1 + - src/poller_base.hpp | 1 + - src/pub.cpp | 1 + - src/pub.hpp | 1 + - src/pull.cpp | 1 + - src/pull.hpp | 1 + - src/push.cpp | 1 + - src/push.hpp | 1 + - src/random.cpp | 1 + - src/random.hpp | 1 + - src/reaper.cpp | 1 + - src/reaper.hpp | 1 + - src/rep.cpp | 1 + - src/rep.hpp | 1 + - src/req.cpp | 1 + - src/req.hpp | 1 + - src/select.cpp | 1 + - src/select.hpp | 1 + - src/session_base.cpp | 1 + - src/session_base.hpp | 1 + - src/signaler.cpp | 1 + - src/signaler.hpp | 1 + - src/socket_base.cpp | 1 + - src/socket_base.hpp | 1 + - src/stdint.hpp | 1 + - src/stream_engine.cpp | 1 + - src/stream_engine.hpp | 1 + - src/sub.cpp | 1 + - src/sub.hpp | 1 + - src/tcp_address.cpp | 1 + - src/tcp_address.hpp | 1 + - src/tcp_connecter.cpp | 1 + - src/tcp_connecter.hpp | 1 + - src/tcp_listener.cpp | 1 + - src/tcp_listener.hpp | 1 + - src/thread.cpp | 1 + - src/thread.hpp | 1 + - src/trie.cpp | 1 + - src/trie.hpp | 1 + - src/vtcp_connecter.cpp | 1 + - src/vtcp_connecter.hpp | 1 + - src/vtcp_listener.cpp | 1 + - src/vtcp_listener.hpp | 1 + - src/windows.hpp | 1 + - src/wire.hpp | 1 + - src/xpub.cpp | 1 + - src/xpub.hpp | 1 + - src/xrep.cpp | 1 + - src/xrep.hpp | 1 + - src/xreq.cpp | 1 + - src/xreq.hpp | 1 + - src/xsub.cpp | 1 + - src/xsub.hpp | 1 + - src/ypipe.hpp | 1 + - src/yqueue.hpp | 1 + - src/zmq.cpp | 1 + - src/zmq_utils.cpp | 1 + - tests/test_hwm.cpp | 1 + - tests/test_invalid_rep.cpp | 1 + - tests/test_pair_inproc.cpp | 1 + - tests/test_pair_ipc.cpp | 1 + - tests/test_pair_tcp.cpp | 1 + - tests/test_reqrep_device.cpp | 1 + - tests/test_reqrep_drop.cpp | 1 + - tests/test_reqrep_inproc.cpp | 1 + - tests/test_reqrep_ipc.cpp | 1 + - tests/test_reqrep_tcp.cpp | 1 + - tests/test_shutdown_stress.cpp | 1 + - tests/test_sub_forward.cpp | 1 + - tests/test_timeo.cpp | 1 + - tests/testutil.hpp | 1 + + include/zmq.h | 1 + + include/zmq_utils.h | 1 + + perf/inproc_lat.cpp | 1 + + perf/inproc_thr.cpp | 1 + + perf/local_lat.cpp | 1 + + perf/local_thr.cpp | 1 + + perf/remote_lat.cpp | 1 + + perf/remote_thr.cpp | 1 + + src/array.hpp | 1 + + src/atomic_counter.hpp | 1 + + src/atomic_ptr.hpp | 1 + + src/clock.cpp | 1 + + src/clock.hpp | 1 + + src/command.hpp | 1 + + src/config.hpp | 1 + + src/ctx.cpp | 1 + + src/ctx.hpp | 1 + + src/decoder.cpp | 1 + + src/decoder.hpp | 1 + + src/devpoll.cpp | 1 + + src/devpoll.hpp | 1 + + src/dist.cpp | 1 + + src/dist.hpp | 1 + + src/encoder.cpp | 1 + + src/encoder.hpp | 1 + + src/epoll.cpp | 1 + + src/epoll.hpp | 1 + + src/err.cpp | 1 + + src/err.hpp | 1 + + src/fd.hpp | 1 + + src/fq.cpp | 1 + + src/fq.hpp | 1 + + src/i_engine.hpp | 1 + + src/i_poll_events.hpp | 1 + + src/io_object.cpp | 1 + + src/io_object.hpp | 1 + + src/io_thread.cpp | 1 + + src/io_thread.hpp | 1 + + src/ip.cpp | 1 + + src/ip.hpp | 1 + + src/ipc_address.cpp | 1 + + src/ipc_address.hpp | 1 + + src/ipc_connecter.cpp | 1 + + src/ipc_connecter.hpp | 1 + + src/ipc_listener.cpp | 1 + + src/ipc_listener.hpp | 1 + + src/kqueue.cpp | 1 + + src/kqueue.hpp | 1 + + src/lb.cpp | 1 + + src/lb.hpp | 1 + + src/likely.hpp | 1 + + src/mailbox.cpp | 1 + + src/mailbox.hpp | 1 + + src/msg.cpp | 1 + + src/msg.hpp | 1 + + src/mtrie.cpp | 1 + + src/mtrie.hpp | 1 + + src/mutex.hpp | 1 + + src/object.cpp | 1 + + src/object.hpp | 1 + + src/options.cpp | 1 + + src/options.hpp | 1 + + src/own.cpp | 1 + + src/own.hpp | 1 + + src/pair.cpp | 1 + + src/pair.hpp | 1 + + src/pgm_receiver.cpp | 1 + + src/pgm_receiver.hpp | 1 + + src/pgm_sender.cpp | 1 + + src/pgm_sender.hpp | 1 + + src/pgm_socket.cpp | 1 + + src/pgm_socket.hpp | 1 + + src/pipe.cpp | 1 + + src/pipe.hpp | 1 + + src/poll.cpp | 1 + + src/poll.hpp | 1 + + src/poller.hpp | 1 + + src/poller_base.cpp | 1 + + src/poller_base.hpp | 1 + + src/pub.cpp | 1 + + src/pub.hpp | 1 + + src/pull.cpp | 1 + + src/pull.hpp | 1 + + src/push.cpp | 1 + + src/push.hpp | 1 + + src/random.cpp | 1 + + src/random.hpp | 1 + + src/reaper.cpp | 1 + + src/reaper.hpp | 1 + + src/rep.cpp | 1 + + src/rep.hpp | 1 + + src/req.cpp | 1 + + src/req.hpp | 1 + + src/select.cpp | 1 + + src/select.hpp | 1 + + src/session_base.cpp | 1 + + src/session_base.hpp | 1 + + src/signaler.cpp | 1 + + src/signaler.hpp | 1 + + src/socket_base.cpp | 1 + + src/socket_base.hpp | 1 + + src/stdint.hpp | 1 + + src/stream_engine.cpp | 1 + + src/stream_engine.hpp | 1 + + src/sub.cpp | 1 + + src/sub.hpp | 1 + + src/tcp_address.cpp | 1 + + src/tcp_address.hpp | 1 + + src/tcp_connecter.cpp | 1 + + src/tcp_connecter.hpp | 1 + + src/tcp_listener.cpp | 1 + + src/tcp_listener.hpp | 1 + + src/thread.cpp | 1 + + src/thread.hpp | 1 + + src/trie.cpp | 1 + + src/trie.hpp | 1 + + src/vtcp_connecter.cpp | 1 + + src/vtcp_connecter.hpp | 1 + + src/vtcp_listener.cpp | 1 + + src/vtcp_listener.hpp | 1 + + src/windows.hpp | 1 + + src/wire.hpp | 1 + + src/xpub.cpp | 1 + + src/xpub.hpp | 1 + + src/xrep.cpp | 1 + + src/xrep.hpp | 1 + + src/xreq.cpp | 1 + + src/xreq.hpp | 1 + + src/xsub.cpp | 1 + + src/xsub.hpp | 1 + + src/ypipe.hpp | 1 + + src/yqueue.hpp | 1 + + src/zmq.cpp | 1 + + src/zmq_utils.cpp | 1 + + tests/test_hwm.cpp | 1 + + tests/test_invalid_rep.cpp | 1 + + tests/test_pair_inproc.cpp | 1 + + tests/test_pair_ipc.cpp | 1 + + tests/test_pair_tcp.cpp | 1 + + tests/test_reqrep_device.cpp | 1 + + tests/test_reqrep_drop.cpp | 1 + + tests/test_reqrep_inproc.cpp | 1 + + tests/test_reqrep_ipc.cpp | 1 + + tests/test_reqrep_tcp.cpp | 1 + + tests/test_shutdown_stress.cpp | 1 + + tests/test_sub_forward.cpp | 1 + + tests/test_timeo.cpp | 1 + + tests/testutil.hpp | 1 + 148 files changed, 148 insertions(+) commit 4b832ea37410035bba7b85e5e9988af8eda648c2 @@ -9460,8 +17193,8 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 4 +++- - src/xreq.cpp | 4 +++- + src/xrep.cpp | 4 +++- + src/xreq.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) commit 9227c389331c26d24e515bdd46867013f0cbd641 @@ -9472,7 +17205,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 3 +++ + include/zmq.h | 3 +++ 1 file changed, 3 insertions(+) commit dee8b2360ac0084165401dd61fc485226402124d @@ -9483,12 +17216,12 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 1 - - src/Makefile.am | 2 - - src/router.cpp | 285 --------------------------------------------------- - src/router.hpp | 123 ---------------------- - src/session_base.cpp | 5 - - src/socket_base.cpp | 4 - + include/zmq.h | 1 - + src/Makefile.am | 2 - + src/router.cpp | 285 -------------------------------------------------- + src/router.hpp | 123 ---------------------- + src/session_base.cpp | 5 - + src/socket_base.cpp | 4 - 6 files changed, 420 deletions(-) commit 541b83bc02784c721efa3d9dde8f8a191c3c3b7b @@ -9499,7 +17232,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 09574a6104ce824c43fe8261d31451ccb337d11b @@ -9515,7 +17248,7 @@ if it is crafted to look like a reply with a valid response ID. Discard all remaining message blocks, if the ID is invalid in any way. - src/req.cpp | 10 ++++++++-- + src/req.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 52bab42212c263a51b219ae8714c481bc948cb4e @@ -9526,7 +17259,7 @@ Signed-off: Martin Sustrik - src/zmq.cpp | 2 +- + src/zmq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 9b3e61a178af5c5e373c701a11697051c4c9a50a @@ -9537,7 +17270,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 9e000c8f26c99656dd967a8d15997b879af5817b @@ -9548,9 +17281,9 @@ Signed-off-by: Ben Gray - src/dist.cpp | 10 ++++++++++ - src/msg.cpp | 6 ++++++ - src/msg.hpp | 1 + + src/dist.cpp | 10 ++++++++++ + src/msg.cpp | 6 ++++++ + src/msg.hpp | 1 + 3 files changed, 17 insertions(+) commit 68ab5f87edd2436757ab92b22238a5a4114d7b0d @@ -9561,7 +17294,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 1b706ac02858aee4c960331dc7100f8c14312848 @@ -9576,8 +17309,8 @@ Signed-off-by: Paul Betts - src/err.cpp | 13 +++++++++++++ - src/err.hpp | 26 ++++++++++++++------------ + src/err.cpp | 13 +++++++++++++ + src/err.hpp | 26 ++++++++++++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) commit a8362abf11b51dd553766fb07a9e60f28e788126 @@ -9588,8 +17321,8 @@ Signed-off-by: Martin Sustrik - src/err.cpp | 13 +++++++++++++ - src/err.hpp | 26 ++++++++++++++------------ + src/err.cpp | 13 +++++++++++++ + src/err.hpp | 26 ++++++++++++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) commit a70bea01cc9c81a59d0b7067e8854fc9777f5757 @@ -9607,7 +17340,7 @@ Signed-off-by: Martin Sustrik - src/kqueue.cpp | 25 +++++++++++++++++-------- + src/kqueue.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) commit 6c1b50cfab1529e866e40c037ce1be7027423af0 @@ -9618,9 +17351,9 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 22 ++++++++++++++++++++++ - configure.in | 5 +++++ - src/ip.cpp | 4 ++-- + acinclude.m4 | 22 ++++++++++++++++++++++ + configure.in | 5 +++++ + src/ip.cpp | 4 ++-- 3 files changed, 29 insertions(+), 2 deletions(-) commit d31792e652cc9fd3bc84e2abd89f232d273b7ede @@ -9634,9 +17367,9 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 8 ++------ - doc/zmq_setsockopt.txt | 8 ++------ - src/options.cpp | 4 ++-- + doc/zmq_getsockopt.txt | 8 ++------ + doc/zmq_setsockopt.txt | 8 ++------ + src/options.cpp | 4 ++-- 3 files changed, 6 insertions(+), 14 deletions(-) commit f5f1a8b1841f04fc9db5df3eb669d76513687065 @@ -9647,9 +17380,9 @@ Signed-off-by: Steven McCoy - configure.in | 2 +- - foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz | Bin 1054630 -> 0 bytes - foreign/openpgm/libpgm-5.1.118~dfsg.tar.gz | Bin 0 -> 1046589 bytes + configure.in | 2 +- + foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz | Bin 1054630 -> 0 bytes + foreign/openpgm/libpgm-5.1.118~dfsg.tar.gz | Bin 0 -> 1046589 bytes 3 files changed, 1 insertion(+), 1 deletion(-) commit cc5d31605fddc9888f3b30933fbd4ec3272299ab @@ -9664,7 +17397,7 @@ Signed-off-by: Steven McCoy - src/pgm_socket.cpp | 3 +++ + src/pgm_socket.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 81da391e7e6ee12a2607289a1aae16c400e7025e @@ -9675,8 +17408,8 @@ Signed-off-by: Martin Sustrik - src/config.hpp | 6 +++++- - src/signaler.cpp | 23 +++++++++++++++++------ + src/config.hpp | 6 +++++- + src/signaler.cpp | 23 +++++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) commit 7a10bbe77a31158da0573031f8d6a50812262858 @@ -9687,7 +17420,7 @@ Signed-off-by: Martin Sustrik - src/mtrie.cpp | 7 ++++--- + src/mtrie.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 34b114d15d8e4bd784014189eb7204e88b06da61 @@ -9698,7 +17431,7 @@ Signed-off-by: Jon Dyte - src/router.cpp | 2 +- + src/router.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8485a5e5a4cdcb5cec800279f874c8579d246940 @@ -9709,8 +17442,8 @@ Signed-off-by: Martin Sustrik - src/router.cpp | 5 +++-- - src/xrep.cpp | 6 ++++-- + src/router.cpp | 5 +++-- + src/xrep.cpp | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) commit d726120e60e3db332ed26c2106c65271f4d8fba4 @@ -9721,7 +17454,7 @@ Signed-off-by: Martin Sustrik - src/mtrie.cpp | 6 +++++- + src/mtrie.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 25cc25e9ad51f38fa8e1a78a798b2d54e270dad2 @@ -9732,7 +17465,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 4 ++-- + builds/msvc/libzmq/libzmq.vcproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e170136a2e00eec2e786441cdc090c3b00a8fbd4 @@ -9746,8 +17479,8 @@ Signed-off-by: Martin Sustrik - src/mtrie.cpp | 57 ++++++++++++++++++++++++++++++--------------------------- - src/mtrie.hpp | 2 -- + src/mtrie.cpp | 57 ++++++++++++++++++++++++++++++--------------------------- + src/mtrie.hpp | 2 -- 2 files changed, 30 insertions(+), 29 deletions(-) commit 5936379b292dec79efd3a1eaa7cafae4fc6d675a @@ -9758,7 +17491,7 @@ Signed-off-by: Martin Sustrik - src/mtrie.cpp | 10 +++++----- + src/mtrie.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 06bdf2c4f96a6324b3fe667cebb03d44cd100a73 @@ -9776,14 +17509,14 @@ Signed-off-by: Martin Sustrik - src/decoder.cpp | 9 ++++++++- - src/decoder.hpp | 8 ++++++++ - src/encoder.cpp | 10 +++++++++- - src/encoder.hpp | 9 +++++++++ - src/req.cpp | 20 ++++++++++++++++++++ - src/req.hpp | 8 ++++++++ - src/session_base.cpp | 20 ++++++++++---------- - src/session_base.hpp | 4 ++-- + src/decoder.cpp | 9 ++++++++- + src/decoder.hpp | 8 ++++++++ + src/encoder.cpp | 10 +++++++++- + src/encoder.hpp | 9 +++++++++ + src/req.cpp | 20 ++++++++++++++++++++ + src/req.hpp | 8 ++++++++ + src/session_base.cpp | 20 ++++++++++---------- + src/session_base.hpp | 4 ++-- 8 files changed, 74 insertions(+), 14 deletions(-) commit f78d9b6bfca13e298c29fadabbbc870b37a0a573 @@ -9799,58 +17532,58 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 4 +- - src/decoder.cpp | 4 +- - src/decoder.hpp | 4 +- - src/encoder.cpp | 4 +- - src/encoder.hpp | 4 +- - src/i_engine.hpp | 2 +- - src/ipc_connecter.cpp | 2 +- - src/ipc_connecter.hpp | 4 +- - src/ipc_listener.cpp | 8 +- - src/object.cpp | 6 +- - src/object.hpp | 2 +- - src/pair.cpp | 12 ++ - src/pair.hpp | 16 ++ - src/pgm_receiver.cpp | 5 +- - src/pgm_receiver.hpp | 5 +- - src/pgm_sender.cpp | 4 +- - src/pgm_sender.hpp | 3 +- - src/pub.cpp | 12 ++ - src/pub.hpp | 15 ++ - src/pull.cpp | 12 ++ - src/pull.hpp | 16 ++ - src/push.cpp | 12 ++ - src/push.hpp | 16 ++ - src/rep.cpp | 12 ++ - src/rep.hpp | 15 ++ - src/req.cpp | 11 ++ - src/req.hpp | 15 ++ - src/router.cpp | 10 ++ - src/router.hpp | 16 ++ - src/session.cpp | 383 ----------------------------------------- - src/session.hpp | 124 -------------- - src/session_base.cpp | 457 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/session_base.hpp | 131 ++++++++++++++ - src/socket_base.cpp | 8 +- - src/stream_engine.cpp | 5 +- - src/stream_engine.hpp | 7 +- - src/sub.cpp | 12 ++ - src/sub.hpp | 15 ++ - src/tcp_connecter.cpp | 2 +- - src/tcp_connecter.hpp | 4 +- - src/tcp_listener.cpp | 8 +- - src/vtcp_connecter.cpp | 2 +- - src/vtcp_connecter.hpp | 4 +- - src/vtcp_listener.cpp | 6 +- - src/xpub.cpp | 12 ++ - src/xpub.hpp | 16 ++ - src/xrep.cpp | 10 ++ - src/xrep.hpp | 16 ++ - src/xreq.cpp | 12 ++ - src/xreq.hpp | 16 ++ - src/xsub.cpp | 11 ++ - src/xsub.hpp | 16 ++ + src/Makefile.am | 4 +- + src/decoder.cpp | 4 +- + src/decoder.hpp | 4 +- + src/encoder.cpp | 4 +- + src/encoder.hpp | 4 +- + src/i_engine.hpp | 2 +- + src/ipc_connecter.cpp | 2 +- + src/ipc_connecter.hpp | 4 +- + src/ipc_listener.cpp | 8 +- + src/object.cpp | 6 +- + src/object.hpp | 2 +- + src/pair.cpp | 12 ++ + src/pair.hpp | 16 ++ + src/pgm_receiver.cpp | 5 +- + src/pgm_receiver.hpp | 5 +- + src/pgm_sender.cpp | 4 +- + src/pgm_sender.hpp | 3 +- + src/pub.cpp | 12 ++ + src/pub.hpp | 15 ++ + src/pull.cpp | 12 ++ + src/pull.hpp | 16 ++ + src/push.cpp | 12 ++ + src/push.hpp | 16 ++ + src/rep.cpp | 12 ++ + src/rep.hpp | 15 ++ + src/req.cpp | 11 ++ + src/req.hpp | 15 ++ + src/router.cpp | 10 ++ + src/router.hpp | 16 ++ + src/session.cpp | 383 ---------------------------------------- + src/session.hpp | 124 ------------- + src/session_base.cpp | 457 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/session_base.hpp | 131 ++++++++++++++ + src/socket_base.cpp | 8 +- + src/stream_engine.cpp | 5 +- + src/stream_engine.hpp | 7 +- + src/sub.cpp | 12 ++ + src/sub.hpp | 15 ++ + src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.hpp | 4 +- + src/tcp_listener.cpp | 8 +- + src/vtcp_connecter.cpp | 2 +- + src/vtcp_connecter.hpp | 4 +- + src/vtcp_listener.cpp | 6 +- + src/xpub.cpp | 12 ++ + src/xpub.hpp | 16 ++ + src/xrep.cpp | 10 ++ + src/xrep.hpp | 16 ++ + src/xreq.cpp | 12 ++ + src/xreq.hpp | 16 ++ + src/xsub.cpp | 11 ++ + src/xsub.hpp | 16 ++ 52 files changed, 970 insertions(+), 558 deletions(-) commit 78b02d142e82015a2146b7d40f7e0a729ad0e89b @@ -9866,7 +17599,7 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 8 +++++--- + src/dist.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit cf499ee016340a8534e24084a481a02498b44e70 @@ -9877,7 +17610,7 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 4 +--- + src/dist.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) commit 42737f09180b8ebc2827743568e6170b6ddd5938 @@ -9888,7 +17621,7 @@ Signed-off-by: Martin Sustrik - .gitignore | 1 + + .gitignore | 1 + 1 file changed, 1 insertion(+) commit 8f8bfcaba0f0e827a2d034c76c5b498bbdf4e7e1 @@ -9900,9 +17633,9 @@ Signed-off-by: Mikko Koppanen Signed-off-by: Martin Sustrik - src/req.cpp | 9 +++-- - tests/Makefile.am | 4 ++- - tests/test_invalid_rep.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++ + src/req.cpp | 9 +++-- + tests/Makefile.am | 4 ++- + tests/test_invalid_rep.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+), 3 deletions(-) commit e191e806ead4e8954e03612a4b385aff40871272 @@ -9913,7 +17646,7 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 10 ++++++++-- + acinclude.m4 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) commit 9d0e122bfad431d7b84ad43c0c62c8ebc9540a36 @@ -9924,8 +17657,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 4 ++ + acinclude.m4 | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.in | 4 ++ 2 files changed, 169 insertions(+) commit 193fa1c079fd886623e55810556a9461561ca139 @@ -9936,7 +17669,7 @@ Signed-off-by: Martin Sustrik - src/tcp_address.cpp | 5 +++++ + src/tcp_address.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 4138aca54bd57d42acdbe7c7af0f7045ecc36e1e @@ -9948,12 +17681,12 @@ Signed-off-by: Pieter Hintjens Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 27 +++++++++--------- - doc/zmq_recv.txt | 28 +++++++++--------- - doc/zmq_recvmsg.txt | 42 +++++++++++++-------------- - doc/zmq_send.txt | 37 ++++++++++++------------ - doc/zmq_sendmsg.txt | 38 ++++++++++++------------- - doc/zmq_socket.txt | 77 ++++++++++++++++++++++++++++++++------------------ + doc/zmq_getsockopt.txt | 27 ++++++++--------- + doc/zmq_recv.txt | 28 +++++++++--------- + doc/zmq_recvmsg.txt | 42 +++++++++++++------------- + doc/zmq_send.txt | 37 +++++++++++------------ + doc/zmq_sendmsg.txt | 38 +++++++++++------------- + doc/zmq_socket.txt | 77 +++++++++++++++++++++++++++++++----------------- 6 files changed, 134 insertions(+), 115 deletions(-) commit 9fb9fea63351cff0e664b28636acb3c3e1f84721 @@ -9964,8 +17697,8 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 2 +- - src/xrep.cpp | 31 ++++++++++++++++--------------- + src/tcp_connecter.cpp | 2 +- + src/xrep.cpp | 31 ++++++++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) commit 8b7ac4c2a9c3ede95d6f5f9717a1939a23788964 @@ -9980,14 +17713,14 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 23 +++++++++++++++++++++++ - src/ip.hpp | 3 +++ - src/ipc_connecter.cpp | 2 +- - src/ipc_listener.cpp | 3 ++- - src/signaler.cpp | 6 +++--- - src/tcp_address.cpp | 5 +++-- - src/tcp_connecter.cpp | 2 +- - src/tcp_listener.cpp | 2 +- + src/ip.cpp | 23 +++++++++++++++++++++++ + src/ip.hpp | 3 +++ + src/ipc_connecter.cpp | 2 +- + src/ipc_listener.cpp | 3 ++- + src/signaler.cpp | 6 +++--- + src/tcp_address.cpp | 5 +++-- + src/tcp_connecter.cpp | 2 +- + src/tcp_listener.cpp | 2 +- 8 files changed, 37 insertions(+), 9 deletions(-) commit 2910a728dc777068e6ae7f67041da185b0865171 @@ -9998,8 +17731,8 @@ Signed-off-by: Martin Sustrik - src/msg.cpp | 18 +++++++++++++----- - src/msg.hpp | 5 +++-- + src/msg.cpp | 18 +++++++++++++----- + src/msg.hpp | 5 +++-- 2 files changed, 16 insertions(+), 7 deletions(-) commit 82ab08d871628410e8b0b1fe63d25f1b27766b8d @@ -10010,7 +17743,7 @@ Signed-off-by: Martin Sustrik - src/xsub.cpp | 1 - + src/xsub.cpp | 1 - 1 file changed, 1 deletion(-) commit 65bb75863dde3ecd9a19d7fafc1ad1b0166a4770 @@ -10021,8 +17754,8 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 2 +- - src/socket_base.cpp | 2 +- + src/dist.cpp | 2 +- + src/socket_base.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 940c5b346b35f2d42360b3371757eb98ef8ba78f @@ -10036,7 +17769,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dd7c629a27e6dffad9c659a233216ce56fbd4ef8 @@ -10047,7 +17780,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_socket.txt | 4 ++-- + doc/zmq_socket.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 80a5f60e3397c9376026da48e6415c7011e2a647 @@ -10058,8 +17791,8 @@ Signed-off-by: Martin Sustrik - src/tcp_address.cpp | 32 ++++++++++++++------------------ - src/tcp_address.hpp | 4 ++-- + src/tcp_address.cpp | 32 ++++++++++++++------------------ + src/tcp_address.hpp | 4 ++-- 2 files changed, 16 insertions(+), 20 deletions(-) commit f0c7edbc9c39ec3a6d06a9605a376212c2228fc7 @@ -10070,7 +17803,7 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 1 + + src/ip.cpp | 1 + 1 file changed, 1 insertion(+) commit 898ee99dc16bbd494cabd7e09efac120d79990d7 @@ -10081,9 +17814,9 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ - src/tcp_address.cpp | 7 +++++-- - src/tcp_address.hpp | 8 ++++++++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + src/tcp_address.cpp | 7 +++++-- + src/tcp_address.hpp | 8 ++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) commit b6ecb00d23af3611da98d98f28e1c2583d428e00 @@ -10094,17 +17827,17 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 2 + - src/ip.cpp | 369 +----------------------------------------- - src/ip.hpp | 32 ---- - src/tcp_address.cpp | 422 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/tcp_address.hpp | 68 ++++++++ - src/tcp_connecter.cpp | 12 +- - src/tcp_connecter.hpp | 7 +- - src/tcp_listener.cpp | 19 +-- - src/tcp_listener.hpp | 7 +- - src/vtcp_connecter.cpp | 10 +- - src/vtcp_connecter.hpp | 7 +- + src/Makefile.am | 2 + + src/ip.cpp | 369 +----------------------------------------- + src/ip.hpp | 32 ---- + src/tcp_address.cpp | 422 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/tcp_address.hpp | 68 ++++++++ + src/tcp_connecter.cpp | 12 +- + src/tcp_connecter.hpp | 7 +- + src/tcp_listener.cpp | 19 +-- + src/tcp_listener.hpp | 7 +- + src/vtcp_connecter.cpp | 10 +- + src/vtcp_connecter.hpp | 7 +- 11 files changed, 522 insertions(+), 433 deletions(-) commit 4a8dd1e404c78fb403763d830190755d2ac83228 @@ -10115,8 +17848,8 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ - src/ipc_address.cpp | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + src/ipc_address.cpp | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) commit b01a8e17511b57191c4aec4d741bdf3b3a80efc6 @@ -10127,15 +17860,15 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 2 ++ - src/ip.cpp | 24 -------------------- - src/ip.hpp | 4 ---- - src/ipc_address.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/ipc_address.hpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/ipc_connecter.cpp | 9 ++------ - src/ipc_connecter.hpp | 7 +++--- - src/ipc_listener.cpp | 16 +++++++------- - src/ipc_listener.hpp | 12 +++++----- + src/Makefile.am | 2 ++ + src/ip.cpp | 24 ------------------- + src/ip.hpp | 4 ---- + src/ipc_address.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/ipc_address.hpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/ipc_connecter.cpp | 9 ++------ + src/ipc_connecter.hpp | 7 +++--- + src/ipc_listener.cpp | 16 ++++++------- + src/ipc_listener.hpp | 12 +++++----- 9 files changed, 142 insertions(+), 53 deletions(-) commit 3488af048f336867594330d4abd0ad6dab110ea0 @@ -10150,10 +17883,10 @@ Signed-off-by: Martin Sustrik - src/pgm_receiver.cpp | 4 ++-- - src/pgm_sender.cpp | 8 ++++---- - src/pgm_socket.cpp | 8 ++++---- - src/pgm_socket.hpp | 7 ++++--- + src/pgm_receiver.cpp | 4 ++-- + src/pgm_sender.cpp | 8 ++++---- + src/pgm_socket.cpp | 8 ++++---- + src/pgm_socket.hpp | 7 ++++--- 4 files changed, 14 insertions(+), 13 deletions(-) commit ed373450a28cff34757a70e2c7a102ecc40e3836 @@ -10164,7 +17897,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 12 ++++++------ + builds/msvc/libzmq/libzmq.vcproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit b3bac1760735703a11297df3d0e2a2e5252aa45e @@ -10179,17 +17912,17 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 4 +- - src/ipc_connecter.cpp | 4 +- - src/ipc_listener.cpp | 4 +- - src/stream_engine.cpp | 374 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/stream_engine.hpp | 102 ++++++++++++++ - src/tcp_connecter.cpp | 4 +- - src/tcp_engine.cpp | 374 ------------------------------------------------- - src/tcp_engine.hpp | 99 ------------- - src/tcp_listener.cpp | 4 +- - src/vtcp_connecter.cpp | 4 +- - src/vtcp_listener.cpp | 4 +- + src/Makefile.am | 4 +- + src/ipc_connecter.cpp | 4 +- + src/ipc_listener.cpp | 4 +- + src/stream_engine.cpp | 374 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/stream_engine.hpp | 102 +++++++++++++ + src/tcp_connecter.cpp | 4 +- + src/tcp_engine.cpp | 374 ------------------------------------------------ + src/tcp_engine.hpp | 99 ------------- + src/tcp_listener.cpp | 4 +- + src/vtcp_connecter.cpp | 4 +- + src/vtcp_listener.cpp | 4 +- 11 files changed, 490 insertions(+), 487 deletions(-) commit 41457e1ff12dffb62e2dc98cec0be2c5deb79207 @@ -10200,7 +17933,7 @@ Signed-off-by: Martin Sustrik - configure.in | 3 --- + configure.in | 3 --- 1 file changed, 3 deletions(-) commit 714d3b288f3c92f1736a9e35d4f177bbef84c003 @@ -10214,8 +17947,8 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 3 +++ - src/err.cpp | 3 +++ + include/zmq.h | 3 +++ + src/err.cpp | 3 +++ 2 files changed, 6 insertions(+) commit 85851d312771f043263257bcf972bd11cadec50a @@ -10229,9 +17962,9 @@ Signed-off-by: Ghislain Putois Signed-off-by: Martin Sustrik - AUTHORS | 1 + - src/ip.cpp | 7 ++++--- - src/thread.cpp | 6 +++--- + AUTHORS | 1 + + src/ip.cpp | 7 ++++--- + src/thread.cpp | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) commit 0354d4d37fe814b9dbb94415da2c5314c4b68ae6 @@ -10242,8 +17975,8 @@ Signed-off-by: Mikko Koppanen - configure.in | 6 ++++++ - src/zmq.cpp | 3 +++ + configure.in | 6 ++++++ + src/zmq.cpp | 3 +++ 2 files changed, 9 insertions(+) commit 57440b86e2c62c78f3904abb17f11500ba0a1a6f @@ -10255,10 +17988,10 @@ Signed-off-by: Steven McCoy Signed-off-by: Martin Sustrik - src/ip.cpp | 17 +++++++++++++++++ - src/ip.hpp | 3 +++ - src/tcp_connecter.cpp | 21 ++++----------------- - src/tcp_listener.cpp | 19 +++++++++++++++++++ + src/ip.cpp | 17 +++++++++++++++++ + src/ip.hpp | 3 +++ + src/tcp_connecter.cpp | 21 ++++----------------- + src/tcp_listener.cpp | 19 +++++++++++++++++++ 4 files changed, 43 insertions(+), 17 deletions(-) commit 3c3c0bfd1f5b987ee42786de25259c46393fe343 @@ -10269,9 +18002,9 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 3 ++- - src/tcp_listener.cpp | 3 ++- - src/zmq.cpp | 2 +- + src/tcp_connecter.cpp | 3 ++- + src/tcp_listener.cpp | 3 ++- + src/zmq.cpp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) commit 9196c482564e74e310b48e1add9f5425efb07ec0 @@ -10285,7 +18018,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 15 +++++++++++---- + src/zmq.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit 938009853461267af43908614266b9ef33f825ff @@ -10296,7 +18029,7 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 2 +- + src/ip.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6dc3b2a657d4d1c98f549395643d68b834a776a4 @@ -10307,7 +18040,7 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 4 ++-- + src/ip.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit a3f27400ded11fa14df98943cc412635d7d175ee @@ -10318,7 +18051,7 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1c54ce37b343bda66d25faaa970a5414546cdd92 @@ -10330,7 +18063,7 @@ Signed-off-by: Steven McCoy Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 18 ++++++++++++++++++ + src/tcp_connecter.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) commit c27b9ac7defd3cf7d21d93b2a3d2a9142a12e82f @@ -10342,11 +18075,11 @@ Signed-off-by: Steven McCoy Signed-off-by: Martin Sustrik - src/ip.cpp | 64 ++++++++++++++++++++++++++++++++++++-------------- - src/ip.hpp | 4 ++-- - src/tcp_connecter.cpp | 2 +- - src/tcp_listener.cpp | 2 +- - src/vtcp_connecter.cpp | 6 +++-- + src/ip.cpp | 64 ++++++++++++++++++++++++++++++++++-------------- + src/ip.hpp | 4 +-- + src/tcp_connecter.cpp | 2 +- + src/tcp_listener.cpp | 2 +- + src/vtcp_connecter.cpp | 6 +++-- 5 files changed, 54 insertions(+), 24 deletions(-) commit 9184a54f6497fb075a9ac7a8b1b7f3e284c9bcd3 @@ -10357,7 +18090,7 @@ Signed-off-by: Steven McCoy - src/ip.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++------------------ + src/ip.cpp | 73 +++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 21 deletions(-) commit 784041f5b99ba28252c9bb67a5bfb4a5da41ef93 @@ -10372,12 +18105,12 @@ Signed-off-by: Steven McCoy Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 15 +++++++++++++++ - doc/zmq_setsockopt.txt | 14 ++++++++++++++ - doc/zmq_tcp.txt | 6 +++--- - include/zmq.h | 3 ++- - src/options.cpp | 25 +++++++++++++++++++++++++ - src/options.hpp | 5 +++++ + doc/zmq_getsockopt.txt | 15 +++++++++++++++ + doc/zmq_setsockopt.txt | 14 ++++++++++++++ + doc/zmq_tcp.txt | 6 +++--- + include/zmq.h | 3 ++- + src/options.cpp | 25 +++++++++++++++++++++++++ + src/options.hpp | 5 +++++ 6 files changed, 64 insertions(+), 4 deletions(-) commit 8378180cbb69c44fdd84f9ee05620bf8744cce48 @@ -10388,7 +18121,7 @@ Signed-off-by: Martin Sustrik - src/vtcp_listener.cpp | 9 +++++---- + src/vtcp_listener.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 24230515f5b1652186af7748268f1cfb27f5215f @@ -10402,8 +18135,8 @@ Signed-off-by: Martin Sustrik - src/vtcp_connecter.cpp | 28 ++++++++++++++++++++-------- - src/vtcp_listener.cpp | 16 ++++++++++------ + src/vtcp_connecter.cpp | 28 ++++++++++++++++++++-------- + src/vtcp_listener.cpp | 16 ++++++++++------ 2 files changed, 30 insertions(+), 14 deletions(-) commit be48970977305a53de3ffa54cc51c0beabcf1a31 @@ -10414,8 +18147,8 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 80 ++++++++++++++++------------------------ - src/tcp_listener.cpp | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 80 +++++++++++++++----------------------- + src/tcp_listener.cpp | 2 +- 2 files changed, 33 insertions(+), 49 deletions(-) commit d5f3628ad08849a0c978f7d23dc678133ed33c42 @@ -10426,14 +18159,14 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 31 +++++++++ - src/ip.hpp | 8 +-- - src/ipc_connecter.cpp | 174 +++++------------------------------------------- - src/ipc_connecter.hpp | 7 ++ - src/signaler.cpp | 20 +----- - src/tcp_connecter.cpp | 179 +++++++++++--------------------------------------- - src/tcp_connecter.hpp | 2 +- - src/tcp_engine.cpp | 27 ++------ + src/ip.cpp | 31 +++++++++ + src/ip.hpp | 8 +-- + src/ipc_connecter.cpp | 174 +++++------------------------------------------ + src/ipc_connecter.hpp | 7 ++ + src/signaler.cpp | 20 +----- + src/tcp_connecter.cpp | 179 +++++++++++-------------------------------------- + src/tcp_connecter.hpp | 2 +- + src/tcp_engine.cpp | 27 ++------ 8 files changed, 108 insertions(+), 340 deletions(-) commit f63db009a1e1baf9f1fe7dae39901c7449c66131 @@ -10444,10 +18177,10 @@ Signed-off-by: Martin Sustrik - src/ipc_listener.cpp | 63 +++---------------- - src/tcp_listener.cpp | 171 ++++++++++++-------------------------------------- - src/tcp_listener.hpp | 2 +- - src/vtcp_listener.cpp | 2 +- + src/ipc_listener.cpp | 63 +++--------------- + src/tcp_listener.cpp | 171 ++++++++++++------------------------------------- + src/tcp_listener.hpp | 2 +- + src/vtcp_listener.cpp | 2 +- 4 files changed, 51 insertions(+), 187 deletions(-) commit b45fec337aff8e04bebaf6e898a499f05ee6b0d6 @@ -10461,12 +18194,12 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 24 ++++++++++++++++++++++++ - src/ip.hpp | 7 ++++++- - src/tcp_connecter.cpp | 22 ++-------------------- - src/tcp_listener.cpp | 21 ++------------------- - src/vtcp_connecter.cpp | 4 +++- - src/vtcp_listener.cpp | 3 +++ + src/ip.cpp | 24 ++++++++++++++++++++++++ + src/ip.hpp | 7 ++++++- + src/tcp_connecter.cpp | 22 ++-------------------- + src/tcp_listener.cpp | 21 ++------------------- + src/vtcp_connecter.cpp | 4 +++- + src/vtcp_listener.cpp | 3 +++ 6 files changed, 40 insertions(+), 41 deletions(-) commit 46b053b8d67ba4826302d53268edccf919e6d785 @@ -10477,12 +18210,12 @@ Signed-off-by: Martin Sustrik - src/ipc_listener.cpp | 208 ++++++++------------------------------------------- - src/ipc_listener.hpp | 9 ++- - src/session.cpp | 2 + - src/socket_base.cpp | 6 +- - src/tcp_listener.cpp | 130 +++++++++----------------------- - src/tcp_listener.hpp | 2 +- + src/ipc_listener.cpp | 208 ++++++++------------------------------------------ + src/ipc_listener.hpp | 9 ++- + src/session.cpp | 2 + + src/socket_base.cpp | 6 +- + src/tcp_listener.cpp | 130 +++++++++---------------------- + src/tcp_listener.hpp | 2 +- 6 files changed, 82 insertions(+), 275 deletions(-) commit 5ac63140b01fed145fa41f613308e134420920ab @@ -10493,17 +18226,17 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 4 + - src/ipc_connecter.cpp | 381 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/ipc_connecter.hpp | 112 +++++++++++++++ - src/ipc_listener.cpp | 351 ++++++++++++++++++++++++++++++++++++++++++++++ - src/ipc_listener.hpp | 83 +++++++++++ - src/session.cpp | 16 ++- - src/socket_base.cpp | 16 ++- - src/tcp_connecter.cpp | 46 +++--- - src/tcp_connecter.hpp | 4 +- - src/tcp_engine.cpp | 20 --- - src/tcp_listener.cpp | 20 +++ + src/Makefile.am | 4 + + src/ipc_connecter.cpp | 381 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/ipc_connecter.hpp | 112 +++++++++++++++ + src/ipc_listener.cpp | 351 +++++++++++++++++++++++++++++++++++++++++++++ + src/ipc_listener.hpp | 83 +++++++++++ + src/session.cpp | 16 ++- + src/socket_base.cpp | 16 ++- + src/tcp_connecter.cpp | 46 +++--- + src/tcp_connecter.hpp | 4 +- + src/tcp_engine.cpp | 20 --- + src/tcp_listener.cpp | 20 +++ 11 files changed, 1008 insertions(+), 45 deletions(-) commit 6e987428d49558a8a7b08795bcc429f720bb3874 @@ -10519,8 +18252,8 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 9 ++------- - src/vtcp_connecter.cpp | 9 ++------- + src/tcp_connecter.cpp | 9 ++------- + src/vtcp_connecter.cpp | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) commit ce7a9a58e3a0d13db53f7e0b4c17b3185a8c0e1a @@ -10531,11 +18264,11 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 20 ----- - src/tcp_engine.cpp | 198 +++++++++++++++++++++++++------------------------ - src/tcp_engine.hpp | 6 -- - src/tcp_listener.cpp | 42 ----------- - src/vtcp_connecter.cpp | 27 ------- + src/tcp_connecter.cpp | 20 ----- + src/tcp_engine.cpp | 198 +++++++++++++++++++++++++----------------------- + src/tcp_engine.hpp | 6 -- + src/tcp_listener.cpp | 42 ---------- + src/vtcp_connecter.cpp | 27 ------- 5 files changed, 103 insertions(+), 190 deletions(-) commit 588c728702fb847a0433649c9a07bcf0fabe84ab @@ -10546,7 +18279,7 @@ Signed-off-by: Martin Sustrik - src/vtcp_connecter.cpp | 56 +++++++++++++++++++++++++++++++++++--------------- + src/vtcp_connecter.cpp | 56 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 17 deletions(-) commit d7319de3d089b7c340408cd8228825ec0f7b8df0 @@ -10557,12 +18290,12 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 2 + - src/session.cpp | 13 +++ - src/tcp_connecter.hpp | 3 - - src/vtcp_connecter.cpp | 249 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/vtcp_connecter.hpp | 121 ++++++++++++++++++++++++ - src/vtcp_listener.cpp | 13 ++- + src/Makefile.am | 2 + + src/session.cpp | 13 +++ + src/tcp_connecter.hpp | 3 - + src/vtcp_connecter.cpp | 249 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/vtcp_connecter.hpp | 121 +++++++++++++++++++++++ + src/vtcp_listener.cpp | 13 ++- 6 files changed, 394 insertions(+), 7 deletions(-) commit 258e7e6794928544ca7e1557840b2f5a89fe5399 @@ -10573,9 +18306,9 @@ Signed-off-by: Martin Sustrik - .gitignore | 2 ++ - src/Makefile.am | 2 -- - src/tcp_connecter.cpp | 46 ---------------------------------------------- + .gitignore | 2 ++ + src/Makefile.am | 2 -- + src/tcp_connecter.cpp | 46 ---------------------------------------------- 3 files changed, 2 insertions(+), 48 deletions(-) commit 279302c5f54ddf8a23b1eaacee63c3158850d9ff @@ -10586,14 +18319,14 @@ Signed-off-by: Martin Sustrik - configure.in | 13 ++++++ - src/Makefile.am | 4 ++ - src/socket_base.cpp | 53 +++++++++++++++++------- - src/tcp_connecter.cpp | 46 +++++++++++++++++++++ - src/tcp_connecter.hpp | 12 +++--- - src/tcp_listener.cpp | 1 + - src/vtcp_listener.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/vtcp_listener.hpp | 71 ++++++++++++++++++++++++++++++++ + configure.in | 13 ++++++ + src/Makefile.am | 4 ++ + src/socket_base.cpp | 53 ++++++++++++++++------- + src/tcp_connecter.cpp | 46 ++++++++++++++++++++ + src/tcp_connecter.hpp | 12 +++--- + src/tcp_listener.cpp | 1 + + src/vtcp_listener.cpp | 111 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/vtcp_listener.hpp | 71 +++++++++++++++++++++++++++++++ 8 files changed, 291 insertions(+), 20 deletions(-) commit 9906c652ca01698dcc429c9045eb040c24c4bb8d @@ -10604,7 +18337,7 @@ Signed-off-by: Martin Sustrik - .gitignore | 4 ---- + .gitignore | 4 ---- 1 file changed, 4 deletions(-) commit 9119b4fd7b292b1a14db916040f8e7cc4731d4b6 @@ -10619,23 +18352,23 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 10 +- - src/session.cpp | 4 +- - src/socket_base.cpp | 6 +- - src/tcp_connecter.cpp | 182 ++++++++++++++++++----- - src/tcp_connecter.hpp | 68 ++++++--- - src/tcp_engine.cpp | 401 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/tcp_engine.hpp | 105 +++++++++++++ - src/tcp_listener.cpp | 127 +++++++++------- - src/tcp_listener.hpp | 36 +++-- - src/tcp_socket.cpp | 230 ----------------------------- - src/tcp_socket.hpp | 74 ---------- - src/zmq_connecter.cpp | 161 -------------------- - src/zmq_connecter.hpp | 92 ------------ - src/zmq_engine.cpp | 224 ---------------------------- - src/zmq_engine.hpp | 88 ----------- - src/zmq_listener.cpp | 84 ----------- - src/zmq_listener.hpp | 67 --------- + src/Makefile.am | 10 +- + src/session.cpp | 4 +- + src/socket_base.cpp | 6 +- + src/tcp_connecter.cpp | 182 +++++++++++++++++----- + src/tcp_connecter.hpp | 68 ++++++--- + src/tcp_engine.cpp | 401 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/tcp_engine.hpp | 105 +++++++++++++ + src/tcp_listener.cpp | 127 +++++++++------- + src/tcp_listener.hpp | 36 +++-- + src/tcp_socket.cpp | 230 ---------------------------- + src/tcp_socket.hpp | 74 --------- + src/zmq_connecter.cpp | 161 -------------------- + src/zmq_connecter.hpp | 92 ------------ + src/zmq_engine.cpp | 224 --------------------------- + src/zmq_engine.hpp | 88 ----------- + src/zmq_listener.cpp | 84 ----------- + src/zmq_listener.hpp | 67 --------- 17 files changed, 804 insertions(+), 1155 deletions(-) commit 43b5b3444c5ea54fa17eab2e03b7e00c022f33b4 @@ -10650,7 +18383,7 @@ Signed-off-by: Martin Sustrik - src/pgm_sender.cpp | 3 ++- + src/pgm_sender.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 7c1dca546d9e49e7af372e4fff9e6a87058a7f12 @@ -10665,26 +18398,26 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 4 -- - src/connect_session.cpp | 124 ---------------------------------------------- - src/connect_session.hpp | 65 ------------------------ - src/decoder.cpp | 10 ++-- - src/decoder.hpp | 4 +- - src/encoder.cpp | 10 ++-- - src/encoder.hpp | 4 +- - src/i_engine.hpp | 21 +------- - src/pgm_receiver.cpp | 17 ++++--- - src/pgm_receiver.hpp | 4 +- - src/pgm_sender.cpp | 11 ++-- - src/pgm_sender.hpp | 2 +- - src/session.cpp | 99 ++++++++++++++++++++++++++++++------ - src/session.hpp | 32 ++++++------ - src/socket_base.cpp | 6 +-- - src/transient_session.cpp | 43 ---------------- - src/transient_session.hpp | 52 ------------------- - src/zmq_engine.cpp | 51 ++++++++++--------- - src/zmq_engine.hpp | 9 ++-- - src/zmq_listener.cpp | 6 +-- + src/Makefile.am | 4 -- + src/connect_session.cpp | 124 --------------------------------------------- + src/connect_session.hpp | 65 ------------------------ + src/decoder.cpp | 10 ++-- + src/decoder.hpp | 4 +- + src/encoder.cpp | 10 ++-- + src/encoder.hpp | 4 +- + src/i_engine.hpp | 21 +------- + src/pgm_receiver.cpp | 17 ++++--- + src/pgm_receiver.hpp | 4 +- + src/pgm_sender.cpp | 11 ++-- + src/pgm_sender.hpp | 2 +- + src/session.cpp | 99 ++++++++++++++++++++++++++++++------ + src/session.hpp | 32 ++++++------ + src/socket_base.cpp | 6 +-- + src/transient_session.cpp | 43 ---------------- + src/transient_session.hpp | 52 ------------------- + src/zmq_engine.cpp | 51 +++++++++---------- + src/zmq_engine.hpp | 9 ++-- + src/zmq_listener.cpp | 6 +-- 20 files changed, 168 insertions(+), 406 deletions(-) commit f716b571baf59c1b622c7666bb8bf2905126a3d4 @@ -10700,17 +18433,17 @@ Signed-off-by: Martin Sustrik - src/devpoll.cpp | 5 ++--- - src/devpoll.hpp | 8 +++++--- - src/epoll.cpp | 5 ++--- - src/epoll.hpp | 8 +++++--- - src/kqueue.cpp | 8 ++------ - src/kqueue.hpp | 9 +++++---- - src/poll.cpp | 9 ++------- - src/poll.hpp | 12 +++++------ - src/poller.hpp | 62 ++++++++++++++++++++++++++++++++------------------------- - src/select.cpp | 5 ++++- - src/select.hpp | 7 +++++++ + src/devpoll.cpp | 5 ++--- + src/devpoll.hpp | 8 ++++--- + src/epoll.cpp | 5 ++--- + src/epoll.hpp | 8 ++++--- + src/kqueue.cpp | 8 ++----- + src/kqueue.hpp | 9 ++++---- + src/poll.cpp | 9 ++------ + src/poll.hpp | 12 +++++------ + src/poller.hpp | 62 +++++++++++++++++++++++++++++++------------------------ + src/select.cpp | 5 ++++- + src/select.hpp | 7 +++++++ 11 files changed, 74 insertions(+), 64 deletions(-) commit 0e71b111f4c413e235978698e8a281acab3bb06e @@ -10721,7 +18454,7 @@ Signed-off-by: Martin Sustrik - src/ctx.hpp | 1 - + src/ctx.hpp | 1 - 1 file changed, 1 deletion(-) commit 11e21d027d5143c089e39349d1f419f76aaa4723 @@ -10734,9 +18467,9 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 1 - - src/ctx.hpp | 2 - - src/semaphore.hpp | 189 ------------------------------------------------------ + src/Makefile.am | 1 - + src/ctx.hpp | 2 - + src/semaphore.hpp | 189 ----------------------------------------------------- 3 files changed, 192 deletions(-) commit 837451eddc4386e19f52db89be7ae38aae471df0 @@ -10749,10 +18482,10 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 1 - - src/blob.hpp | 34 ---------------------------------- - src/connect_session.hpp | 1 - - src/xpub.hpp | 3 ++- + src/Makefile.am | 1 - + src/blob.hpp | 34 ---------------------------------- + src/connect_session.hpp | 1 - + src/xpub.hpp | 3 ++- 4 files changed, 2 insertions(+), 37 deletions(-) commit 5650743d9edc8b8e85739ab023e8156b451003f1 @@ -10763,8 +18496,8 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 36 ------------------------------------ - src/zmq.cpp | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 36 ------------------------------------ + src/zmq.cpp | 2 +- 2 files changed, 1 insertion(+), 37 deletions(-) commit 75c4e0e62be6bd34fb934b9f13de68ffd655c500 @@ -10777,7 +18510,7 @@ Signed-off-by: Martin Sustrik - src/mailbox.cpp | 2 +- + src/mailbox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4bd335932ce8c6457dddb7aa2a5e631974eb9b61 @@ -10788,7 +18521,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_sendmsg.txt | 3 +++ + doc/zmq_sendmsg.txt | 3 +++ 1 file changed, 3 insertions(+) commit 6b873d4ffdd13263f184ca046565168f0ad66a6b @@ -10801,7 +18534,7 @@ Signed-off-by: Martin Sustrik - src/router.cpp | 64 +++++++++++++++++++++++++++++++--------------------------- + src/router.cpp | 64 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 30 deletions(-) commit a1e09facb2438f6487b32cdcfff21f0ece735460 @@ -10815,9 +18548,9 @@ Signed-off-by: Martin Sustrik - doc/zmq_send.txt | 3 +++ - include/zmq.h | 1 + - src/router.cpp | 33 +++++++++++++++++++-------------- + doc/zmq_send.txt | 3 +++ + include/zmq.h | 1 + + src/router.cpp | 33 +++++++++++++++++++-------------- 3 files changed, 23 insertions(+), 14 deletions(-) commit 72a793f78ae6c7b544d4c19530c01e8dfd23ccf5 @@ -10828,13 +18561,13 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 +- - src/Makefile.am | 4 +- - src/generic.cpp | 265 ---------------------------------------------------- - src/generic.hpp | 108 --------------------- - src/router.cpp | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/router.hpp | 107 +++++++++++++++++++++ - src/socket_base.cpp | 6 +- + include/zmq.h | 2 +- + src/Makefile.am | 4 +- + src/generic.cpp | 265 --------------------------------------------------- + src/generic.hpp | 108 --------------------- + src/router.cpp | 265 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/router.hpp | 107 +++++++++++++++++++++ + src/socket_base.cpp | 6 +- 7 files changed, 378 insertions(+), 379 deletions(-) commit cb2d7156055492839021e84dcc00cc409a3fd2d1 @@ -10845,7 +18578,7 @@ Signed-off-by: Martin Sustrik - builds/redhat/zeromq.spec.in | 2 ++ + builds/redhat/zeromq.spec.in | 2 ++ 1 file changed, 2 insertions(+) commit a808431d1df359302af7bdd2df085f5a41f14210 @@ -10856,7 +18589,7 @@ Signed-off-by: Martin Sustrik - MAINTAINERS | 6 +++--- + MAINTAINERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit a33a275e3b0b1942280cae2317801fbd2185821c @@ -10867,7 +18600,7 @@ Signed-off-by: Pieter Hintjens - src/tcp_socket.cpp | 6 ++++++ + src/tcp_socket.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit 7298b5742f749a2947c9e6460c4a083be84506ed @@ -10878,7 +18611,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 52 +++++++++++++++++++++++++++------------------------- + src/zmq.cpp | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) commit 18d8be5e9259e72a5a0622a5594842c31dd7bfdb @@ -10890,8 +18623,8 @@ Signed-off-by: Steven McCoy Signed-off-by: Martin Sustrik - src/signaler.cpp | 3 ++- - src/zmq.cpp | 3 ++- + src/signaler.cpp | 3 ++- + src/zmq.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit ac20e17cbd1471b9eb3eef79c32cb43420cbc516 @@ -10902,7 +18635,7 @@ Signed-off-by: Martin Sustrik - doc/zmq.txt | 11 +---------- + doc/zmq.txt | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) commit 66ff99c4574827b59e6d7ddfaa44d975dc7e880e @@ -10913,7 +18646,7 @@ Signed-off-by: Martin Sustrik - MAINTAINERS | 6 +++--- + MAINTAINERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit f97f50c252adc814145a0a482bc2a25229882459 @@ -10924,7 +18657,7 @@ Signed-off-by: Martin Sustrik - src/signaler.cpp | 12 ++++++++---- + src/signaler.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) commit 1a408805521f839e3e36183d9f2dec1d08e24caf @@ -10935,8 +18668,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 23 ----------------------- - doc/zmq_setsockopt.txt | 23 ----------------------- + doc/zmq_getsockopt.txt | 23 ----------------------- + doc/zmq_setsockopt.txt | 23 ----------------------- 2 files changed, 46 deletions(-) commit 89daa57faab728204447c3bb708e753a2aeffa55 @@ -10947,8 +18680,8 @@ Signed-off-by: Martin Sustrik - src/generic.cpp | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/generic.hpp | 108 +++++++++++++++++++++++ + src/generic.cpp | 265 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/generic.hpp | 108 +++++++++++++++++++++++ 2 files changed, 373 insertions(+) commit bf78e230ad4736da9fce6e0b4d1655affb8f466b @@ -10968,11 +18701,11 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 3 +++ - src/Makefile.am | 2 ++ - src/msg.hpp | 1 + - src/socket_base.cpp | 53 +++++++++++++++++++++++++++++++++-------------------- - src/socket_base.hpp | 7 +++++++ + include/zmq.h | 3 +++ + src/Makefile.am | 2 ++ + src/msg.hpp | 1 + + src/socket_base.cpp | 53 ++++++++++++++++++++++++++++++++------------------- + src/socket_base.hpp | 7 +++++++ 5 files changed, 46 insertions(+), 20 deletions(-) commit c8e8f2a24cd339c548e06f75a3cef96454671a85 @@ -10986,49 +18719,49 @@ Signed-off-by: Martin Sustrik - configure.in | 13 --- - include/zmq.h | 1 - - src/Makefile.am | 7 -- - src/command.cpp | 39 -------- - src/command.hpp | 7 -- - src/connect_session.cpp | 48 +--------- - src/connect_session.hpp | 9 +- - src/named_session.cpp | 67 ------------- - src/named_session.hpp | 56 ----------- - src/object.cpp | 50 ++-------- - src/object.hpp | 12 +-- - src/options.cpp | 22 ----- - src/options.hpp | 3 +- - src/pair.cpp | 2 +- - src/pair.hpp | 2 +- - src/pgm_socket.cpp | 21 ++--- - src/pull.cpp | 2 +- - src/pull.hpp | 2 +- - src/push.cpp | 2 +- - src/push.hpp | 2 +- - src/random.cpp | 42 ++++++--- - src/random.hpp | 9 +- - src/req.cpp | 6 +- - src/session.cpp | 26 +----- - src/session.hpp | 15 +-- - src/socket_base.cpp | 70 ++------------ - src/socket_base.hpp | 26 +----- - src/transient_session.cpp | 2 +- - src/transient_session.hpp | 2 +- - src/uuid.cpp | 90 ------------------ - src/uuid.hpp | 33 ------- - src/xpub.cpp | 2 +- - src/xpub.hpp | 2 +- - src/xrep.cpp | 8 +- - src/xrep.hpp | 3 +- - src/xreq.cpp | 2 +- - src/xreq.hpp | 2 +- - src/xsub.cpp | 2 +- - src/xsub.hpp | 2 +- - src/zmq_connecter.cpp | 15 +-- - src/zmq_init.cpp | 233 ---------------------------------------------- - src/zmq_init.hpp | 98 ------------------- - src/zmq_listener.cpp | 18 ++-- + configure.in | 13 --- + include/zmq.h | 1 - + src/Makefile.am | 7 -- + src/command.cpp | 39 -------- + src/command.hpp | 7 -- + src/connect_session.cpp | 48 +--------- + src/connect_session.hpp | 9 +- + src/named_session.cpp | 67 ------------- + src/named_session.hpp | 56 ----------- + src/object.cpp | 50 ++-------- + src/object.hpp | 12 +-- + src/options.cpp | 22 ----- + src/options.hpp | 3 +- + src/pair.cpp | 2 +- + src/pair.hpp | 2 +- + src/pgm_socket.cpp | 21 ++-- + src/pull.cpp | 2 +- + src/pull.hpp | 2 +- + src/push.cpp | 2 +- + src/push.hpp | 2 +- + src/random.cpp | 42 +++++--- + src/random.hpp | 9 +- + src/req.cpp | 6 +- + src/session.cpp | 26 +---- + src/session.hpp | 15 +-- + src/socket_base.cpp | 70 ++------------ + src/socket_base.hpp | 26 +---- + src/transient_session.cpp | 2 +- + src/transient_session.hpp | 2 +- + src/uuid.cpp | 90 ----------------- + src/uuid.hpp | 33 ------- + src/xpub.cpp | 2 +- + src/xpub.hpp | 2 +- + src/xrep.cpp | 8 +- + src/xrep.hpp | 3 +- + src/xreq.cpp | 2 +- + src/xreq.hpp | 2 +- + src/xsub.cpp | 2 +- + src/xsub.hpp | 2 +- + src/zmq_connecter.cpp | 15 +-- + src/zmq_init.cpp | 233 --------------------------------------------- + src/zmq_init.hpp | 98 ------------------- + src/zmq_listener.cpp | 18 ++-- 43 files changed, 112 insertions(+), 963 deletions(-) commit ba67eff167e94105b0975166a2192060ab125e58 @@ -11042,9 +18775,9 @@ Signed-off-by: Martin Sustrik - src/options.cpp | 1 - - src/options.hpp | 6 ------ - src/socket_base.cpp | 32 +++++++++++++------------------- + src/options.cpp | 1 - + src/options.hpp | 6 ------ + src/socket_base.cpp | 32 +++++++++++++------------------- 3 files changed, 13 insertions(+), 26 deletions(-) commit 364839f3e66df567172af239ac7476af4d9260eb @@ -11057,20 +18790,20 @@ Signed-off-by: Martin Sustrik - debian/README.Debian | 4 -- - debian/changelog | 24 ----------- - debian/compat | 1 - - debian/control | 76 -------------------------------- - debian/copyright | 105 --------------------------------------------- - debian/libzmq-dev.install | 5 --- - debian/libzmq-dev.manpages | 2 - - debian/libzmq0.install | 1 - - debian/libzmq0.manpages | 5 --- - debian/rules | 92 --------------------------------------- - debian/source/format | 1 - - debian/source/options | 1 - - debian/zeromq-bin.install | 3 -- - debian/zeromq-bin.manpages | 3 -- + debian/README.Debian | 4 -- + debian/changelog | 24 ---------- + debian/compat | 1 - + debian/control | 76 -------------------------------- + debian/copyright | 105 -------------------------------------------- + debian/libzmq-dev.install | 5 --- + debian/libzmq-dev.manpages | 2 - + debian/libzmq0.install | 1 - + debian/libzmq0.manpages | 5 --- + debian/rules | 92 -------------------------------------- + debian/source/format | 1 - + debian/source/options | 1 - + debian/zeromq-bin.install | 3 -- + debian/zeromq-bin.manpages | 3 -- 14 files changed, 323 deletions(-) commit e4f98d1e100c225abca67b4aad90be08a729e02f @@ -11083,13 +18816,13 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 - - src/Makefile.am | 4 - - src/dealer.cpp | 77 -------------- - src/dealer.hpp | 65 ------------ - src/router.cpp | 292 ---------------------------------------------------- - src/router.hpp | 105 ------------------- - src/socket_base.cpp | 8 -- + include/zmq.h | 2 - + src/Makefile.am | 4 - + src/dealer.cpp | 77 -------------- + src/dealer.hpp | 65 ------------ + src/router.cpp | 292 --------------------------------------------------- + src/router.hpp | 105 ------------------ + src/socket_base.cpp | 8 -- 7 files changed, 553 deletions(-) commit 73630de98aeb8add878b1d421aa2bfc22c735c63 @@ -11100,7 +18833,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 57c1342c683df3207094e8ec660e72812be37f9c @@ -11111,7 +18844,7 @@ Signed-off-by: Martin Sustrik - src/sub.cpp | 5 +++++ + src/sub.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 29274811ccf2ca905360a463c5124e9e4e4c1708 @@ -11122,8 +18855,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_bind.txt | 2 ++ - doc/zmq_connect.txt | 2 ++ + doc/zmq_bind.txt | 2 ++ + doc/zmq_connect.txt | 2 ++ 2 files changed, 4 insertions(+) commit 2afb791ec2f9853cc642cf8a042c2acc7fbb7acd @@ -11134,8 +18867,8 @@ Signed-off-by: Martin Sustrik - tests/Makefile.am | 4 +- - tests/test_sub_forward.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 4 +- + tests/test_sub_forward.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) commit 215cfc653e5c6155e231b213534739348152129d @@ -11149,7 +18882,7 @@ Signed-off-by: Martin Sustrik - tests/test_reqrep_drop.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++ + tests/test_reqrep_drop.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) commit c7542981d18b13b251d5a3129f1ec7ba24aeb9a1 @@ -11164,9 +18897,9 @@ Signed-off-by: Martin Sustrik - src/pgm_receiver.cpp | 12 +++++++++++- - src/pgm_receiver.hpp | 4 ++++ - src/pgm_sender.cpp | 9 +++++++++ + src/pgm_receiver.cpp | 12 +++++++++++- + src/pgm_receiver.hpp | 4 ++++ + src/pgm_sender.cpp | 9 +++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) commit d7adc3f19a4c941e854552d6d7881950a69b0d23 @@ -11181,12 +18914,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 17 ----------------- - doc/zmq_setsockopt.txt | 16 ---------------- - include/zmq.h | 1 - - src/options.cpp | 22 ++-------------------- - src/options.hpp | 6 +++--- - src/sub.cpp | 4 ++++ + doc/zmq_getsockopt.txt | 17 ----------------- + doc/zmq_setsockopt.txt | 16 ---------------- + include/zmq.h | 1 - + src/options.cpp | 22 ++-------------------- + src/options.hpp | 6 +++--- + src/sub.cpp | 4 ++++ 6 files changed, 9 insertions(+), 57 deletions(-) commit a154ef69da4e41d3a8ce5a3141fe8f052c7ea853 @@ -11197,11 +18930,11 @@ Signed-off-by: Martin Sustrik - doc/Makefile.am | 3 +- - doc/zmq_recv.txt | 70 ++++++++++------------------- - doc/zmq_recvmsg.txt | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_send.txt | 70 ++++++++++++----------------- - doc/zmq_sendmsg.txt | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/Makefile.am | 3 +- + doc/zmq_recv.txt | 70 ++++++++++------------------ + doc/zmq_recvmsg.txt | 124 +++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_send.txt | 70 ++++++++++++---------------- + doc/zmq_sendmsg.txt | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 304 insertions(+), 90 deletions(-) commit 7e1251178b1cbabf0bd648ae8765c01e16cc25a3 @@ -11212,8 +18945,8 @@ Signed-off-by: Martin Sustrik - src/zmq_init.cpp | 61 ++++++++++++++++---------------------------------------- - src/zmq_init.hpp | 7 ------- + src/zmq_init.cpp | 61 +++++++++++++++--------------------------------------- + src/zmq_init.hpp | 7 ------- 2 files changed, 17 insertions(+), 51 deletions(-) commit 52eaf600e5fe2acf5de6208a6a5a123dfcfe1fa2 @@ -11224,8 +18957,8 @@ Signed-off-by: Martin Sustrik - src/rep.cpp | 5 +---- - src/xrep.cpp | 4 ---- + src/rep.cpp | 5 +---- + src/xrep.cpp | 4 ---- 2 files changed, 1 insertion(+), 8 deletions(-) commit aa2150c25c9b0dd518b058f0c50420417441fd23 @@ -11240,9 +18973,9 @@ Signed-off-by: Martin Sustrik - src/config.hpp | 4 ---- - src/msg.cpp | 6 ++++++ - src/msg.hpp | 13 ++++++++++--- + src/config.hpp | 4 ---- + src/msg.cpp | 6 ++++++ + src/msg.hpp | 13 ++++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) commit 1526ff638c9cb37b156fd80a40889ac3d8258343 @@ -11256,7 +18989,7 @@ Signed-off-by: Martin Sustrik - autogen.sh | 8 ++++---- + autogen.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 8d96036fcd069e98f6fac69f645d6cc728281836 @@ -11267,7 +19000,7 @@ Signed-off-by: Martin Sustrik - configure.in | 10 ++++++++++ + configure.in | 10 ++++++++++ 1 file changed, 10 insertions(+) commit 8fb9d3c6d058393478d3b3ccb1f20bcb19bbe5a0 @@ -11288,7 +19021,7 @@ Signed-off-by: Martin Sustrik - src/signaler.cpp | 12 ++++++++++-- + src/signaler.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) commit 9a9a0cf41066d32f0d16492e212712b42df36950 @@ -11302,8 +19035,8 @@ Signed-off-by: Martin Sustrik - src/signaler.cpp | 42 +++++++++++++++++++++++++++++++++++++----- - src/signaler.hpp | 2 +- + src/signaler.cpp | 42 +++++++++++++++++++++++++++++++++++++----- + src/signaler.hpp | 2 +- 2 files changed, 38 insertions(+), 6 deletions(-) commit c687c7e61e8519c93eb4bc7ef43c5cf63671eb3e @@ -11314,8 +19047,8 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 12 ++++++++---- - src/signaler.cpp | 6 +++--- + builds/msvc/libzmq/libzmq.vcproj | 12 ++++++++---- + src/signaler.cpp | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) commit da26134aa696352de6e77a800a433878dbabb7fa @@ -11326,8 +19059,8 @@ Signed-off-by: Martin Sustrik - tests/test_pair_inproc.cpp | 2 +- - tests/test_reqrep_inproc.cpp | 2 +- + tests/test_pair_inproc.cpp | 2 +- + tests/test_reqrep_inproc.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 7c0c79812075459765440ca26bad56f4f7ddbe52 @@ -11344,13 +19077,13 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 2 + - src/config.hpp | 3 + - src/mailbox.cpp | 441 +++-------------------------------------- - src/mailbox.hpp | 29 +-- - src/signaler.cpp | 340 +++++++++++++++++++++++++++++++ - src/signaler.hpp | 63 ++++++ - tests/test_shutdown_stress.cpp | 2 +- + src/Makefile.am | 2 + + src/config.hpp | 3 + + src/mailbox.cpp | 441 +++------------------------------------- + src/mailbox.hpp | 29 +-- + src/signaler.cpp | 340 +++++++++++++++++++++++++++++++ + src/signaler.hpp | 63 ++++++ + tests/test_shutdown_stress.cpp | 2 +- 7 files changed, 458 insertions(+), 422 deletions(-) commit de3838403b9a35e7131aae23519ced1f11a3e03c @@ -11364,7 +19097,7 @@ Signed-off-by: Martin Sustrik - src/thread.cpp | 6 +++--- + src/thread.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 4f4cc7328054272fa2c972244b2b7e8378ad5429 @@ -11377,8 +19110,8 @@ Signed-off-by: Andrew Thompson - AUTHORS | 1 + - src/ip.cpp | 2 +- + AUTHORS | 1 + + src/ip.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit 543ad30e7d15a8864df26d6d32e57246ede35ae3 @@ -11392,7 +19125,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/Makefile.am | 4 +++- + builds/msvc/Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit f8bf3a4cef6b8e1688683ab8c5ed6dd1bc8e3a12 @@ -11403,21 +19136,21 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 1 - - src/decoder.cpp | 10 +++++----- - src/decoder.hpp | 4 ++-- - src/encoder.cpp | 10 +++++----- - src/encoder.hpp | 4 ++-- - src/i_engine.hpp | 23 ++++++++++++++++++++++- - src/i_inout.hpp | 49 ------------------------------------------------- - src/pgm_receiver.cpp | 13 ++++++------- - src/pgm_receiver.hpp | 6 +++--- - src/pgm_sender.cpp | 6 +++--- - src/pgm_sender.hpp | 2 +- - src/session.hpp | 6 +++--- - src/zmq_engine.cpp | 43 +++++++++++++++++++++---------------------- - src/zmq_engine.hpp | 8 ++++---- - src/zmq_init.hpp | 7 ++++--- + src/Makefile.am | 1 - + src/decoder.cpp | 10 +++++----- + src/decoder.hpp | 4 ++-- + src/encoder.cpp | 10 +++++----- + src/encoder.hpp | 4 ++-- + src/i_engine.hpp | 23 ++++++++++++++++++++++- + src/i_inout.hpp | 49 ------------------------------------------------- + src/pgm_receiver.cpp | 13 ++++++------- + src/pgm_receiver.hpp | 6 +++--- + src/pgm_sender.cpp | 6 +++--- + src/pgm_sender.hpp | 2 +- + src/session.hpp | 6 +++--- + src/zmq_engine.cpp | 43 +++++++++++++++++++++---------------------- + src/zmq_engine.hpp | 8 ++++---- + src/zmq_init.hpp | 7 ++++--- 15 files changed, 81 insertions(+), 111 deletions(-) commit 3ae73ee11f13bbc9c91b235de18fde763c359009 @@ -11428,8 +19161,8 @@ Signed-off-by: Carl Clemens - AUTHORS | 1 + - doc/zmq_msg_size.txt | 2 +- + AUTHORS | 1 + + doc/zmq_msg_size.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit 770d0bc77cd1579a1cba33ba1eb3f06839c28c16 @@ -11440,20 +19173,20 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 24 ++++++++++++++++++++++++ - src/dist.cpp | 3 ++- - src/fq.cpp | 3 ++- - src/lb.cpp | 5 +++-- - src/pipe.cpp | 2 +- - src/random.cpp | 1 + - src/rep.cpp | 2 +- - src/req.cpp | 2 +- - src/router.cpp | 6 +++--- - src/session.cpp | 3 ++- - src/socket_base.cpp | 6 +++--- - src/xpub.cpp | 3 ++- - src/xrep.cpp | 6 +++--- - src/xsub.cpp | 5 +++-- + builds/msvc/libzmq/libzmq.vcproj | 24 ++++++++++++++++++++++++ + src/dist.cpp | 3 ++- + src/fq.cpp | 3 ++- + src/lb.cpp | 5 +++-- + src/pipe.cpp | 2 +- + src/random.cpp | 1 + + src/rep.cpp | 2 +- + src/req.cpp | 2 +- + src/router.cpp | 6 +++--- + src/session.cpp | 3 ++- + src/socket_base.cpp | 6 +++--- + src/xpub.cpp | 3 ++- + src/xrep.cpp | 6 +++--- + src/xsub.cpp | 5 +++-- 14 files changed, 51 insertions(+), 20 deletions(-) commit d1373792f7888f312cd7286fdf524a0bfe124846 @@ -11472,15 +19205,15 @@ Signed-off-by: Martin Sustrik - src/options.cpp | 4 ++- - src/options.hpp | 8 ++++++ - src/pipe.hpp | 5 ++-- - src/session.cpp | 2 +- - src/socket_base.cpp | 4 +-- - src/xrep.cpp | 4 +++ - src/xreq.cpp | 4 +++ - tests/Makefile.am | 7 ++--- - tests/test_reqrep_drop.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++ + src/options.cpp | 4 ++- + src/options.hpp | 8 +++++ + src/pipe.hpp | 5 ++-- + src/session.cpp | 2 +- + src/socket_base.cpp | 4 +-- + src/xrep.cpp | 4 +++ + src/xreq.cpp | 4 +++ + tests/Makefile.am | 7 ++--- + tests/test_reqrep_drop.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 97 insertions(+), 10 deletions(-) commit 12532c7940f23fcb3cd46208c141d47647e76231 @@ -11493,10 +19226,10 @@ Signed-off-by: Martin Sustrik - src/pipe.cpp | 13 ++++++- - src/pipe.hpp | 8 ++++ - src/xrep.cpp | 117 ++++++++++++++--------------------------------------------- - src/xrep.hpp | 17 ++------- + src/pipe.cpp | 13 ++++++- + src/pipe.hpp | 8 ++++ + src/xrep.cpp | 117 ++++++++++++++-------------------------------------------- + src/xrep.hpp | 17 ++------- 4 files changed, 50 insertions(+), 105 deletions(-) commit ec81f8fb2523e1e2fe45eaadc05311a35bf551d7 @@ -11512,18 +19245,18 @@ Signed-off-by: Martin Sustrik - .gitignore | 1 + - src/Makefile.am | 2 + - src/random.cpp | 39 +++++++++++ - src/random.hpp | 34 +++++++++ - src/rep.cpp | 52 ++++---------- - src/req.cpp | 38 ++++++++-- - src/req.hpp | 5 ++ - src/socket_base.cpp | 18 ++--- - src/xrep.cpp | 45 ++++++++---- - src/xrep.hpp | 15 ++-- - tests/Makefile.am | 5 +- - tests/test_reqrep_device.cpp | 160 +++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 1 + + src/Makefile.am | 2 + + src/random.cpp | 39 ++++++++++ + src/random.hpp | 34 +++++++++ + src/rep.cpp | 52 ++++---------- + src/req.cpp | 38 ++++++++-- + src/req.hpp | 5 ++ + src/socket_base.cpp | 18 ++--- + src/xrep.cpp | 45 ++++++++---- + src/xrep.hpp | 15 ++-- + tests/Makefile.am | 5 +- + tests/test_reqrep_device.cpp | 160 ++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 344 insertions(+), 70 deletions(-) commit 10a93bb79fd3d4be1b3ffedfa6785564fbcc082b @@ -11534,7 +19267,7 @@ Signed-off-by: Martin Sustrik - src/mailbox.cpp | 4 +++- + src/mailbox.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit a28928fe376f73ef8ca683523102908616445ada @@ -11545,13 +19278,13 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 + - src/Makefile.am | 4 + - src/dealer.cpp | 77 ++++++++++++++ - src/dealer.hpp | 65 ++++++++++++ - src/router.cpp | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/router.hpp | 105 +++++++++++++++++++ - src/socket_base.cpp | 10 +- + include/zmq.h | 2 + + src/Makefile.am | 4 + + src/dealer.cpp | 77 ++++++++++++++ + src/dealer.hpp | 65 ++++++++++++ + src/router.cpp | 292 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/router.hpp | 105 ++++++++++++++++++ + src/socket_base.cpp | 10 +- 7 files changed, 554 insertions(+), 1 deletion(-) commit f437c9ed9b604912287aa6c96557261fc966e7fc @@ -11562,7 +19295,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 14 +++++++------- + doc/zmq_getsockopt.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit ab99975ad44ed0fe9ab651f31cc47d493e7fb77e @@ -11577,23 +19310,23 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 12 ++++++++++++ - doc/zmq_send.txt | 4 ++++ - include/zmq.h | 2 ++ - src/dist.cpp | 4 ++-- - src/encoder.cpp | 4 ++-- - src/fq.cpp | 2 +- - src/lb.cpp | 4 ++-- - src/msg.hpp | 5 +++-- - src/pipe.cpp | 9 +++++---- - src/rep.cpp | 6 +++--- - src/req.cpp | 8 ++++---- - src/session.cpp | 2 +- - src/socket_base.cpp | 25 ++++++++++++++++++++++++- - src/socket_base.hpp | 5 ++++- - src/xpub.cpp | 2 +- - src/xrep.cpp | 11 ++++++----- - src/xsub.cpp | 8 ++++---- + doc/zmq_getsockopt.txt | 12 ++++++++++++ + doc/zmq_send.txt | 4 ++++ + include/zmq.h | 2 ++ + src/dist.cpp | 4 ++-- + src/encoder.cpp | 4 ++-- + src/fq.cpp | 2 +- + src/lb.cpp | 4 ++-- + src/msg.hpp | 5 +++-- + src/pipe.cpp | 9 +++++---- + src/rep.cpp | 6 +++--- + src/req.cpp | 8 ++++---- + src/session.cpp | 2 +- + src/socket_base.cpp | 25 ++++++++++++++++++++++++- + src/socket_base.hpp | 5 ++++- + src/xpub.cpp | 2 +- + src/xrep.cpp | 11 ++++++----- + src/xsub.cpp | 8 ++++---- 17 files changed, 80 insertions(+), 33 deletions(-) commit ada5d424721c0c0139b8011a5e9de348d061ba2f @@ -11604,7 +19337,7 @@ Signed-off-by: Martin Sustrik - tests/testutil.hpp | 24 +++++++++++++++++++++++- + tests/testutil.hpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) commit c80908c469b1fbd3d1b639ea39d86e4e4311ae57 @@ -11615,7 +19348,7 @@ Signed-off-by: Martin Sustrik - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7572fee979a1cc2a874dd5621c89a0e849b65816 @@ -11634,8 +19367,8 @@ Signed-off-by: Fabien Ninoles Signed-off-by: Martin Sustrik - src/mailbox.cpp | 71 ++++++++++++--------------------------------------------- - src/mailbox.hpp | 12 ++++++---- + src/mailbox.cpp | 71 ++++++++++++------------------------------------------- + src/mailbox.hpp | 12 ++++++---- 2 files changed, 23 insertions(+), 60 deletions(-) commit 8440de2b14876ecc6b39816528ef0793c6e34598 @@ -11646,7 +19379,7 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 4 ++-- + src/socket_base.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit f4760f02c3ac966f858414fb50565faa5deb48bf @@ -11657,7 +19390,7 @@ Signed-off-by: Martin Sustrik - tests/Makefile.am | 9 ++++----- + tests/Makefile.am | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) commit 082f8e19b7591f6f8f34edcc27f195510051c2ba @@ -11668,7 +19401,7 @@ Signed-off-by: Martin Sustrik - src/mailbox.cpp | 27 +++++++++++++++++++++++++-- + src/mailbox.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) commit ed680a395edb9260eced8289b33041248782f979 @@ -11679,7 +19412,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_socket.txt | 41 +++++++++++++++++++++++++++++++++-------- + doc/zmq_socket.txt | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) commit 9f4d3767fed58ddfa52f63692c6169bfdbcec2e3 @@ -11693,7 +19426,7 @@ Signed-off-by: Martin Sustrik - src/session.cpp | 3 ++- + src/session.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 00dc0245e6aacbff247c84ac8480d3ddcabacd5a @@ -11707,7 +19440,7 @@ Signed-off-by: Martin Sustrik - src/pipe.cpp | 38 +++++++++++++++++++++++++------------- + src/pipe.cpp | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) commit 6052709c2aea5fae70d805e6033861c24b4f2521 @@ -11718,7 +19451,7 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5b77a41eafe6501a3f7cc76f2c746858036aef81 @@ -11732,9 +19465,9 @@ Signed-off-by: Martin Sustrik - perf/inproc_thr.cpp | 10 ++-------- - perf/local_thr.cpp | 8 +------- - perf/remote_thr.cpp | 4 +--- + perf/inproc_thr.cpp | 10 ++-------- + perf/local_thr.cpp | 8 +------- + perf/remote_thr.cpp | 4 +--- 3 files changed, 4 insertions(+), 18 deletions(-) commit 4b60023b96d25571f58e50899a2717da14866e6b @@ -11750,10 +19483,10 @@ Refactor Windows versioning and WinSock usage.Signed-off-by: Steven McCoy - include/zmq.h | 2 +- - src/ctx.cpp | 14 ++--- - src/select.cpp | 11 ++-- - src/windows.hpp | 157 +++++++++++++++++++++++++++++++++++++++++++++----------- + include/zmq.h | 2 +- + src/ctx.cpp | 14 ++--- + src/select.cpp | 11 ++-- + src/windows.hpp | 157 +++++++++++++++++++++++++++++++++++++++++++++---------- 4 files changed, 141 insertions(+), 43 deletions(-) commit dc66053530e798dbcdb236cc2040031980cc09c7 @@ -11764,7 +19497,7 @@ Signed-off-by: Martin Sustrik - src/xsub.cpp | 2 ++ + src/xsub.cpp | 2 ++ 1 file changed, 2 insertions(+) commit d7923f08cab62ef40027a92f596ff45428870838 @@ -11780,22 +19513,22 @@ Signed-off-by: Fabien Ninoles Signed-off-by: Martin Sustrik - .gitignore | 1 + - doc/zmq_getsockopt.txt | 35 ++++++++++++++- - doc/zmq_setsockopt.txt | 32 ++++++++++++++ - include/zmq.h | 2 + - perf/remote_thr.cpp | 2 + - src/ctx.cpp | 2 +- - src/io_thread.cpp | 2 +- - src/mailbox.cpp | 106 +++++++++++++++++++++++++++++++++++++++++---- - src/mailbox.hpp | 7 ++- - src/options.cpp | 36 ++++++++++++++++ - src/options.hpp | 4 ++ - src/reaper.cpp | 2 +- - src/socket_base.cpp | 100 ++++++++++++++++++++++++++++-------------- - src/socket_base.hpp | 6 +-- - tests/Makefile.am | 5 ++- - tests/test_timeo.cpp | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 1 + + doc/zmq_getsockopt.txt | 35 ++++++++++++++- + doc/zmq_setsockopt.txt | 32 ++++++++++++++ + include/zmq.h | 2 + + perf/remote_thr.cpp | 2 + + src/ctx.cpp | 2 +- + src/io_thread.cpp | 2 +- + src/mailbox.cpp | 106 ++++++++++++++++++++++++++++++++++++++++---- + src/mailbox.hpp | 7 ++- + src/options.cpp | 36 +++++++++++++++ + src/options.hpp | 4 ++ + src/reaper.cpp | 2 +- + src/socket_base.cpp | 100 +++++++++++++++++++++++++++-------------- + src/socket_base.hpp | 6 +-- + tests/Makefile.am | 5 ++- + tests/test_timeo.cpp | 115 ++++++++++++++++++++++++++++++++++++++++++++++++ 16 files changed, 407 insertions(+), 50 deletions(-) commit e895607ca7a97378f7ccc5ab050fc54fd54a80ad @@ -11808,7 +19541,7 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 3 ++- + src/tcp_connecter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 65d2b70312efb148814b58d9cd38cc7069b53a3b @@ -11819,7 +19552,7 @@ Signed-off-by: Martin Sustrik - src/xsub.cpp | 2 ++ + src/xsub.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 970798ff98bc9eb7cd84bf8766cc6034a0e88aa4 @@ -11830,7 +19563,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ 1 file changed, 8 insertions(+) commit c7fb5c54b688c1817d0604320ac7f9bb3aa02c5c @@ -11841,10 +19574,10 @@ Signed-off-by: Martin Sustrik - src/ctx.cpp | 8 ++------ - src/select.cpp | 2 +- - src/select.hpp | 2 +- - src/windows.hpp | 5 +++-- + src/ctx.cpp | 8 ++------ + src/select.cpp | 2 +- + src/select.hpp | 2 +- + src/windows.hpp | 5 +++-- 4 files changed, 7 insertions(+), 10 deletions(-) commit b164023cca3f29c5eb371a8a0757c98ae4683ae4 @@ -11858,10 +19591,10 @@ Signed-off-by: Steven McCoy - src/ctx.cpp | 8 ++++++-- - src/select.cpp | 2 +- - src/select.hpp | 2 +- - src/windows.hpp | 5 ++--- + src/ctx.cpp | 8 ++++++-- + src/select.cpp | 2 +- + src/select.hpp | 2 +- + src/windows.hpp | 5 ++--- 4 files changed, 10 insertions(+), 7 deletions(-) commit ff93f54653d099bddfed34a342906a3546e70496 @@ -11877,12 +19610,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 19 ++++++++++++++++++- - doc/zmq_setsockopt.txt | 19 +++++++++++++++++++ - include/zmq.h | 1 + - src/options.cpp | 19 +++++++++++++++++++ - src/options.hpp | 3 +++ - src/xsub.cpp | 4 ++-- + doc/zmq_getsockopt.txt | 19 ++++++++++++++++++- + doc/zmq_setsockopt.txt | 19 +++++++++++++++++++ + include/zmq.h | 1 + + src/options.cpp | 19 +++++++++++++++++++ + src/options.hpp | 3 +++ + src/xsub.cpp | 4 ++-- 6 files changed, 62 insertions(+), 3 deletions(-) commit e080e3e8b620b0e7ed02c28712a0c92b08de3451 @@ -11893,10 +19626,10 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 8 +++++--- - src/dist.hpp | 8 +++++--- - src/xpub.cpp | 25 ++++++++++++++++++++----- - src/xpub.hpp | 3 +++ + src/dist.cpp | 8 +++++--- + src/dist.hpp | 8 +++++--- + src/xpub.cpp | 25 ++++++++++++++++++++----- + src/xpub.hpp | 3 +++ 4 files changed, 33 insertions(+), 11 deletions(-) commit bd86def1c799a35d5cef0c0a9a1347a18fea227e @@ -11907,13 +19640,13 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 47 ++++++++++++++++++++++++++++++++++++++--------- - src/dist.hpp | 20 +++++++++++++++++++- - src/mtrie.cpp | 21 ++++++++++++++++----- - src/mtrie.hpp | 11 +++++++---- - src/xpub.cpp | 16 ++++++++++++++-- - src/xpub.hpp | 3 +++ - src/xsub.cpp | 4 ++-- + src/dist.cpp | 47 ++++++++++++++++++++++++++++++++++++++--------- + src/dist.hpp | 20 +++++++++++++++++++- + src/mtrie.cpp | 21 ++++++++++++++++----- + src/mtrie.hpp | 11 +++++++---- + src/xpub.cpp | 16 ++++++++++++++-- + src/xpub.hpp | 3 +++ + src/xsub.cpp | 4 ++-- 7 files changed, 99 insertions(+), 23 deletions(-) commit 3935258b826adc31815be4f91b2f6eb02bb3c8ed @@ -11924,8 +19657,8 @@ Signed-off-by: Martin Sustrik - src/mtrie.cpp | 42 +++++++++++++++++++++++++++--------------- - src/mtrie.hpp | 4 ++++ + src/mtrie.cpp | 42 +++++++++++++++++++++++++++--------------- + src/mtrie.hpp | 4 ++++ 2 files changed, 31 insertions(+), 15 deletions(-) commit ee7313b4d896e9f7ff6a035395b20f617e4ff796 @@ -11936,8 +19669,8 @@ Signed-off-by: Martin Sustrik - src/xpub.cpp | 127 ++++++++++++++++++++--------------------------------------- - src/xpub.hpp | 8 ---- + src/xpub.cpp | 127 +++++++++++++++++++--------------------------------------- + src/xpub.hpp | 8 ---- 2 files changed, 42 insertions(+), 93 deletions(-) commit a24a7c15a824bb48da38809bff9416673dc5a176 @@ -11948,10 +19681,10 @@ Signed-off-by: Martin Sustrik - src/pipe.cpp | 18 ++++++++++++------ - src/pipe.hpp | 5 +++-- - src/session.cpp | 21 ++++++--------------- - src/socket_base.cpp | 4 ++-- + src/pipe.cpp | 18 ++++++++++++------ + src/pipe.hpp | 5 +++-- + src/session.cpp | 21 ++++++--------------- + src/socket_base.cpp | 4 ++-- 4 files changed, 23 insertions(+), 25 deletions(-) commit 0b59866a84f733e5a53b0d2f32570581691747ef @@ -11962,36 +19695,36 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 2 + - src/command.hpp | 8 ++ - src/connect_session.cpp | 7 +- - src/connect_session.hpp | 4 +- - src/fq.cpp | 7 ++ - src/fq.hpp | 4 +- - src/mtrie.cpp | 218 ++++++++++++++++++++++++++++++++++++++++++++++ - src/mtrie.hpp | 83 ++++++++++++++++++ - src/named_session.cpp | 5 +- - src/named_session.hpp | 4 +- - src/object.cpp | 25 +++++- - src/object.hpp | 2 + - src/pipe.cpp | 43 +++++++++ - src/pipe.hpp | 13 ++- - src/pub.cpp | 13 +++ - src/pub.hpp | 4 + - src/session.cpp | 28 ++++++ - src/session.hpp | 21 +++-- - src/socket_base.cpp | 14 ++- - src/socket_base.hpp | 6 +- - src/sub.cpp | 115 +----------------------- - src/sub.hpp | 21 +---- - src/transient_session.cpp | 6 +- - src/transient_session.hpp | 4 +- - src/trie.cpp | 63 ++++++++++++-- - src/trie.hpp | 18 +++- - src/xpub.cpp | 120 ++++++++++++++++++++++++- - src/xpub.hpp | 26 ++++++ - src/xsub.cpp | 160 +++++++++++++++++++++++++++++++--- - src/xsub.hpp | 30 ++++++- + src/Makefile.am | 2 + + src/command.hpp | 8 ++ + src/connect_session.cpp | 7 +- + src/connect_session.hpp | 4 +- + src/fq.cpp | 7 ++ + src/fq.hpp | 4 +- + src/mtrie.cpp | 218 +++++++++++++++++++++++++++++++++++++++++++++ + src/mtrie.hpp | 83 +++++++++++++++++ + src/named_session.cpp | 5 +- + src/named_session.hpp | 4 +- + src/object.cpp | 25 +++++- + src/object.hpp | 2 + + src/pipe.cpp | 43 +++++++++ + src/pipe.hpp | 13 ++- + src/pub.cpp | 13 +++ + src/pub.hpp | 4 + + src/session.cpp | 28 ++++++ + src/session.hpp | 21 +++-- + src/socket_base.cpp | 14 ++- + src/socket_base.hpp | 6 +- + src/sub.cpp | 115 +----------------------- + src/sub.hpp | 21 +---- + src/transient_session.cpp | 6 +- + src/transient_session.hpp | 4 +- + src/trie.cpp | 63 +++++++++++-- + src/trie.hpp | 18 +++- + src/xpub.cpp | 120 ++++++++++++++++++++++++- + src/xpub.hpp | 26 ++++++ + src/xsub.cpp | 160 ++++++++++++++++++++++++++++++--- + src/xsub.hpp | 30 ++++++- 30 files changed, 884 insertions(+), 190 deletions(-) commit 311fb0d852374e769d8ff791c9df38f0464960c6 @@ -12007,10 +19740,10 @@ Signed-off-by: Martin Sustrik - src/sub.cpp | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- - src/sub.hpp | 19 ++++++++++ - src/xsub.cpp | 107 ++++---------------------------------------------------- - src/xsub.hpp | 17 --------- + src/sub.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + src/sub.hpp | 19 ++++++++++ + src/xsub.cpp | 107 ++++--------------------------------------------------- + src/xsub.hpp | 17 --------- 4 files changed, 134 insertions(+), 120 deletions(-) commit 718885fdcd7af797f940078ca8c22aebab93c8bb @@ -12023,10 +19756,10 @@ Signed-off-by: Martin Sustrik - src/pipe.cpp | 3 +- - src/session.cpp | 110 +++++++++++++++++++++++++---------------------------- - src/session.hpp | 10 ++--- - src/tcp_socket.cpp | 2 +- + src/pipe.cpp | 3 +- + src/session.cpp | 110 ++++++++++++++++++++++++---------------------------- + src/session.hpp | 10 ++--- + src/tcp_socket.cpp | 2 +- 4 files changed, 57 insertions(+), 68 deletions(-) commit 87a6490b39c44e8f9c521f6ccea14f800a712d3f @@ -12041,11 +19774,11 @@ Signed-off-by: Martin Sustrik - src/pipe.cpp | 147 ++++++++++++++++++++++++++++++++++------------- - src/pipe.hpp | 29 +++++++--- - src/session.cpp | 161 +++++++++++++++++++++++----------------------------- - src/session.hpp | 27 +++------ - src/socket_base.cpp | 4 +- + src/pipe.cpp | 147 +++++++++++++++++++++++++++++++++------------- + src/pipe.hpp | 29 +++++++--- + src/session.cpp | 161 ++++++++++++++++++++++----------------------------- + src/session.hpp | 27 +++------ + src/socket_base.cpp | 4 +- 5 files changed, 208 insertions(+), 160 deletions(-) commit 3d4203decf87a5d5fb1718c2163f6d9c6c24328d @@ -12056,7 +19789,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 71ac91ba4193910359d7671a4e998a17ff506b06 @@ -12068,9 +19801,9 @@ Allow to have the same item part of two different arrays, as long as they are using different array identifier. - src/array.hpp | 116 +++++++++++++--------------------------------------- - src/pipe.hpp | 8 +++- - src/socket_base.hpp | 2 +- + src/array.hpp | 116 +++++++++++++-------------------------------------- + src/pipe.hpp | 8 +++- + src/socket_base.hpp | 2 +- 3 files changed, 37 insertions(+), 89 deletions(-) commit 0f6f7276e32c01ccfe86fb76741a52ac6ffc87af @@ -12085,35 +19818,35 @@ Signed-off-by: Martin Sustrik - src/array.hpp | 38 ++++++++++++++++++++++----- - src/dist.cpp | 25 ++---------------- - src/dist.hpp | 15 +++-------- - src/fq.cpp | 30 ++------------------- - src/fq.hpp | 14 +++------- - src/lb.cpp | 25 ++---------------- - src/lb.hpp | 15 +++-------- - src/own.cpp | 8 +++--- - src/own.hpp | 3 +++ - src/pair.cpp | 31 +++------------------- - src/pair.hpp | 17 +++--------- - src/pipe.cpp | 4 +-- - src/pull.cpp | 21 +++------------ - src/pull.hpp | 14 +++------- - src/push.cpp | 20 +++----------- - src/push.hpp | 14 +++------- - src/reaper.cpp | 6 +---- - src/socket_base.cpp | 59 ++++++++++++++++++++++++++++++++++++++++-- - src/socket_base.hpp | 38 +++++++++++++++------------ - src/sub.hpp | 2 +- - src/xpub.cpp | 23 +++------------- - src/xpub.hpp | 14 +++------- - src/xrep.cpp | 33 ++++------------------- - src/xrep.hpp | 18 +++---------- - src/xreq.cpp | 20 ++++---------- - src/xreq.hpp | 15 +++-------- - src/xsub.cpp | 18 ++----------- - src/xsub.hpp | 14 +++------- - tests/test_shutdown_stress.cpp | 2 +- + src/array.hpp | 38 ++++++++++++++++++++++---- + src/dist.cpp | 25 ++--------------- + src/dist.hpp | 15 +++------- + src/fq.cpp | 30 ++------------------ + src/fq.hpp | 14 ++-------- + src/lb.cpp | 25 ++--------------- + src/lb.hpp | 15 +++------- + src/own.cpp | 8 ++++-- + src/own.hpp | 3 ++ + src/pair.cpp | 31 +++------------------ + src/pair.hpp | 17 +++--------- + src/pipe.cpp | 4 +-- + src/pull.cpp | 21 +++----------- + src/pull.hpp | 14 ++-------- + src/push.cpp | 20 ++------------ + src/push.hpp | 14 ++-------- + src/reaper.cpp | 6 +--- + src/socket_base.cpp | 59 ++++++++++++++++++++++++++++++++++++++-- + src/socket_base.hpp | 38 ++++++++++++++------------ + src/sub.hpp | 2 +- + src/xpub.cpp | 23 ++-------------- + src/xpub.hpp | 14 ++-------- + src/xrep.cpp | 33 ++++------------------ + src/xrep.hpp | 18 +++--------- + src/xreq.cpp | 20 ++++---------- + src/xreq.hpp | 15 +++------- + src/xsub.cpp | 18 ++---------- + src/xsub.hpp | 14 ++-------- + tests/test_shutdown_stress.cpp | 2 +- 29 files changed, 190 insertions(+), 366 deletions(-) commit acf0b0e515515e51ad32ba7a2d147ce703579478 @@ -12133,40 +19866,40 @@ Signed-off-by: Martin Sustrik - src/array.hpp | 79 +++++++++--- - src/command.hpp | 11 +- - src/connect_session.cpp | 1 + - src/dist.cpp | 10 +- - src/dist.hpp | 13 +- - src/fq.cpp | 12 +- - src/fq.hpp | 12 +- - src/lb.cpp | 8 +- - src/lb.hpp | 14 +- - src/object.cpp | 40 +++--- - src/object.hpp | 19 ++- - src/options.cpp | 2 - - src/options.hpp | 5 - - src/own.cpp | 3 + - src/pair.cpp | 98 ++++---------- - src/pair.hpp | 24 +--- - src/pipe.cpp | 335 +++++++++++++++++++++++------------------------- - src/pipe.hpp | 201 ++++++++++++----------------- - src/pull.cpp | 26 +++- - src/pull.hpp | 13 +- - src/push.cpp | 26 +++- - src/push.hpp | 13 +- - src/session.cpp | 167 ++++++++++-------------- - src/session.hpp | 29 ++--- - src/socket_base.cpp | 73 +++++------ - src/socket_base.hpp | 12 +- - src/xpub.cpp | 26 +++- - src/xpub.hpp | 12 +- - src/xrep.cpp | 90 +++++-------- - src/xrep.hpp | 24 ++-- - src/xreq.cpp | 28 +++- - src/xreq.hpp | 13 +- - src/xsub.cpp | 26 +++- - src/xsub.hpp | 13 +- + src/array.hpp | 79 ++++++++--- + src/command.hpp | 11 +- + src/connect_session.cpp | 1 + + src/dist.cpp | 10 +- + src/dist.hpp | 13 +- + src/fq.cpp | 12 +- + src/fq.hpp | 12 +- + src/lb.cpp | 8 +- + src/lb.hpp | 14 +- + src/object.cpp | 40 +++--- + src/object.hpp | 19 ++- + src/options.cpp | 2 - + src/options.hpp | 5 - + src/own.cpp | 3 + + src/pair.cpp | 98 ++++---------- + src/pair.hpp | 24 +--- + src/pipe.cpp | 335 +++++++++++++++++++++++------------------------ + src/pipe.hpp | 201 ++++++++++++---------------- + src/pull.cpp | 26 +++- + src/pull.hpp | 13 +- + src/push.cpp | 26 +++- + src/push.hpp | 13 +- + src/session.cpp | 167 ++++++++++------------- + src/session.hpp | 29 ++-- + src/socket_base.cpp | 73 ++++------- + src/socket_base.hpp | 12 +- + src/xpub.cpp | 26 +++- + src/xpub.hpp | 12 +- + src/xrep.cpp | 90 +++++-------- + src/xrep.hpp | 24 ++-- + src/xreq.cpp | 28 +++- + src/xreq.hpp | 13 +- + src/xsub.cpp | 26 +++- + src/xsub.hpp | 13 +- 34 files changed, 709 insertions(+), 769 deletions(-) commit 9e6b39925603f9e64db08c469bd628d7ef9465de @@ -12177,8 +19910,8 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.cpp | 2 +- - src/tcp_socket.cpp | 2 +- + src/pgm_socket.cpp | 2 +- + src/tcp_socket.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit da7b6d0b3893fd14859b77ec69eed0fc6c8ad689 @@ -12189,7 +19922,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 38e5f8699ccff09a91e37e139c4a86a259ac597b @@ -12200,8 +19933,8 @@ Signed-off-by: Paul Colomiets - src/ip.cpp | 9 +++++++++ - src/zmq_connecter.cpp | 2 +- + src/ip.cpp | 9 +++++++++ + src/zmq_connecter.cpp | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) commit 864c18f797203c06e66e739166b246cfb3d47ce9 @@ -12212,8 +19945,8 @@ Signed-off-by: Paul Colomiets - doc/zmq_msg_init_data.txt | 4 +++- - src/msg.cpp | 5 ++++- + doc/zmq_msg_init_data.txt | 4 +++- + src/msg.cpp | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) commit d8d5a627b1835d20270125e27a157c9a7460f0e7 @@ -12224,7 +19957,7 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.cpp | 80 ++++++++++++++++++++++++++---------------------------- + src/pgm_socket.cpp | 80 +++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 42 deletions(-) commit 5d0cffc52f575ff572751cc85fd43063391a211d @@ -12237,12 +19970,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 15 ++++++++++++++- - doc/zmq_setsockopt.txt | 12 ++++++++++++ - include/zmq.h | 1 + - src/options.cpp | 18 ++++++++++++++++++ - src/options.hpp | 3 +++ - src/pgm_socket.cpp | 14 ++++++++++---- + doc/zmq_getsockopt.txt | 15 ++++++++++++++- + doc/zmq_setsockopt.txt | 12 ++++++++++++ + include/zmq.h | 1 + + src/options.cpp | 18 ++++++++++++++++++ + src/options.hpp | 3 +++ + src/pgm_socket.cpp | 14 ++++++++++---- 6 files changed, 58 insertions(+), 5 deletions(-) commit 49df2f416cd43e9e18f3dbd964271c5cca835729 @@ -12253,19 +19986,19 @@ Signed-off-by: Martin Sustrik - src/array.hpp | 8 ++++---- - src/dist.cpp | 2 +- - src/encoder.hpp | 2 +- - src/err.cpp | 2 +- - src/fq.cpp | 6 +++--- - src/ip.cpp | 10 +++++----- - src/lb.cpp | 2 +- - src/own.cpp | 2 +- - src/select.cpp | 7 ++++--- - src/tcp_socket.cpp | 16 ++++++++-------- - src/tcp_socket.hpp | 6 ++++-- - src/xrep.cpp | 7 +++---- - src/zmq.cpp | 3 ++- + src/array.hpp | 8 ++++---- + src/dist.cpp | 2 +- + src/encoder.hpp | 2 +- + src/err.cpp | 2 +- + src/fq.cpp | 6 +++--- + src/ip.cpp | 10 +++++----- + src/lb.cpp | 2 +- + src/own.cpp | 2 +- + src/select.cpp | 7 ++++--- + src/tcp_socket.cpp | 16 ++++++++-------- + src/tcp_socket.hpp | 6 ++++-- + src/xrep.cpp | 7 +++---- + src/zmq.cpp | 3 ++- 13 files changed, 38 insertions(+), 35 deletions(-) commit 49387874efe790713f4a090e03a97212f4889163 @@ -12276,9 +20009,9 @@ Signed-off-by: Martin Sustrik - src/err.cpp | 112 ++++++++++++++++++++++++++------------------------ - src/err.hpp | 12 ++++++ - src/tcp_connecter.cpp | 10 ++--- + src/err.cpp | 112 ++++++++++++++++++++++++++----------------------- + src/err.hpp | 12 ++++++ + src/tcp_connecter.cpp | 10 ++--- 3 files changed, 76 insertions(+), 58 deletions(-) commit da1ef4d2685c02e8320847d49a38726b2b6d52f0 @@ -12289,9 +20022,9 @@ Signed-off-by: Pieter Hintjens - src/rep.cpp | 34 ++++++++++++++++++++++++---------- - src/xrep.cpp | 13 ++++++++++++- - src/xrep.hpp | 5 +++++ + src/rep.cpp | 34 ++++++++++++++++++++++++---------- + src/xrep.cpp | 13 ++++++++++++- + src/xrep.hpp | 5 +++++ 3 files changed, 41 insertions(+), 11 deletions(-) commit 0c5b781e97f2bea42925495a5505c51e769fba7f @@ -12302,7 +20035,7 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 2 ++ + src/xrep.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 3ef7c747ac68214ca463b2f52244fcec92151a46 @@ -12313,7 +20046,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 10120214ac0d3ec4af146fcb95e3a114ed6f8da5 @@ -12324,7 +20057,7 @@ Moving the erase after the access and check agains current_id. - src/xrep.cpp | 2 +- + src/xrep.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ceb5e1a0734b0c73bd7f74ec5094ae6ad4f9dfc4 @@ -12338,8 +20071,8 @@ Signed-off-by: Martin Sustrik - src/msg.cpp | 2 +- - src/msg.hpp | 15 ++++++++++----- + src/msg.cpp | 2 +- + src/msg.hpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) commit 5e329ba7cac8a52fbbd2c347064c2d9355009022 @@ -12354,7 +20087,7 @@ Signed-off-by: Martin Sustrik - src/msg.cpp | 2 ++ + src/msg.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 6ecec9bbf1cd17666241a3effc31a65e555dbd4a @@ -12370,7 +20103,7 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 4 ++-- + src/xrep.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e5d4cd39e1c9949b549055f816d60dd35bfacdec @@ -12384,7 +20117,7 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 18 ++++++++---------- + src/dist.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) commit e78cc47b184f82fd524da021745b3323df4af507 @@ -12395,9 +20128,9 @@ Signed-off-by: Pieter Hintjens - tests/test_pair_tcp.cpp | 4 ++-- - tests/test_reqrep_tcp.cpp | 4 ++-- - tests/test_shutdown_stress.cpp | 4 ++-- + tests/test_pair_tcp.cpp | 4 ++-- + tests/test_reqrep_tcp.cpp | 4 ++-- + tests/test_shutdown_stress.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) commit eb9bc1b0648d2132e612e2237a0ace47004d6f5c @@ -12412,8 +20145,8 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 73 +++++++++++++++++++++++++++++++++--------------------------- - src/dist.hpp | 20 ++++++++--------- + src/dist.cpp | 73 ++++++++++++++++++++++++++++++++-------------------------- + src/dist.hpp | 20 ++++++++-------- 2 files changed, 49 insertions(+), 44 deletions(-) commit fe2e772dd5d36024a91ce3abb86996599960e078 @@ -12428,7 +20161,7 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.cpp | 8 ++++---- + src/pgm_socket.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 96213d5735829bfbebfb544a584a34bb8c0081fa @@ -12442,7 +20175,7 @@ Signed-off-by: Martin Sustrik - src/tcp_connecter.cpp | 3 ++- + src/tcp_connecter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b2eb84f8ca2fc2b8a2af6cd2c54c0abc4535cfc4 @@ -12458,10 +20191,10 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 4 +- - src/uuid.cpp | 193 +++++++--------------------------------------------- - src/uuid.hpp | 84 +---------------------- - src/zmq_init.cpp | 7 +- + src/socket_base.cpp | 4 +- + src/uuid.cpp | 193 +++++++-------------------------------------------- + src/uuid.hpp | 84 +--------------------- + src/zmq_init.cpp | 7 +- 4 files changed, 33 insertions(+), 255 deletions(-) commit 10fbc78e5cab494c3af727f5ea451fdced1c9d95 @@ -12476,7 +20209,7 @@ Signed-off-by: Martin Sustrik - src/fq.cpp | 7 +++---- + src/fq.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit e0246e32d79d71f8e73207b43aed8b23648e4fc7 @@ -12495,61 +20228,61 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 29 +----- - src/config.hpp | 4 + - src/ctx.cpp | 14 +-- - src/ctx.hpp | 2 - - src/decoder.cpp | 18 ++-- - src/decoder.hpp | 5 +- - src/dist.cpp | 66 ++++--------- - src/dist.hpp | 6 +- - src/encoder.cpp | 24 +++-- - src/encoder.hpp | 5 +- - src/err.cpp | 2 - - src/err.hpp | 3 + - src/fq.cpp | 13 +-- - src/fq.hpp | 3 +- - src/i_inout.hpp | 7 +- - src/io_thread.cpp | 2 - - src/ip.cpp | 4 +- - src/lb.cpp | 28 +++--- - src/lb.hpp | 2 +- - src/msg.cpp | 249 +++++++++++++++++++++++++++++++++----------------- - src/msg.hpp | 107 +++++++++++++++++++--- - src/object.hpp | 2 - - src/options.cpp | 2 - - src/pair.cpp | 25 ++--- - src/pair.hpp | 4 +- - src/pipe.cpp | 49 +++++----- - src/pipe.hpp | 13 ++- - src/pub.cpp | 1 + - src/pull.cpp | 5 +- - src/pull.hpp | 2 +- - src/push.cpp | 7 +- - src/push.hpp | 2 +- - src/rep.cpp | 15 ++- - src/rep.hpp | 4 +- - src/req.cpp | 23 +++-- - src/req.hpp | 4 +- - src/session.cpp | 17 ++-- - src/session.hpp | 4 +- - src/socket_base.cpp | 29 +++--- - src/socket_base.hpp | 10 +- - src/sub.cpp | 17 ++-- - src/sub.hpp | 2 +- - src/tcp_connecter.cpp | 2 - - src/tcp_listener.cpp | 2 - - src/xpub.cpp | 9 +- - src/xpub.hpp | 4 +- - src/xrep.cpp | 69 +++++++------- - src/xrep.hpp | 7 +- - src/xreq.cpp | 7 +- - src/xreq.hpp | 4 +- - src/xsub.cpp | 41 +++++---- - src/xsub.hpp | 11 +-- - src/zmq.cpp | 52 ++++++++++- - src/zmq_init.cpp | 29 +++--- - src/zmq_init.hpp | 13 ++- + include/zmq.h | 29 +----- + src/config.hpp | 4 + + src/ctx.cpp | 14 +-- + src/ctx.hpp | 2 - + src/decoder.cpp | 18 ++-- + src/decoder.hpp | 5 +- + src/dist.cpp | 66 ++++--------- + src/dist.hpp | 6 +- + src/encoder.cpp | 24 +++-- + src/encoder.hpp | 5 +- + src/err.cpp | 2 - + src/err.hpp | 3 + + src/fq.cpp | 13 +-- + src/fq.hpp | 3 +- + src/i_inout.hpp | 7 +- + src/io_thread.cpp | 2 - + src/ip.cpp | 4 +- + src/lb.cpp | 28 +++--- + src/lb.hpp | 2 +- + src/msg.cpp | 249 ++++++++++++++++++++++++++++++++----------------- + src/msg.hpp | 107 ++++++++++++++++++--- + src/object.hpp | 2 - + src/options.cpp | 2 - + src/pair.cpp | 25 ++--- + src/pair.hpp | 4 +- + src/pipe.cpp | 49 +++++----- + src/pipe.hpp | 13 ++- + src/pub.cpp | 1 + + src/pull.cpp | 5 +- + src/pull.hpp | 2 +- + src/push.cpp | 7 +- + src/push.hpp | 2 +- + src/rep.cpp | 15 ++- + src/rep.hpp | 4 +- + src/req.cpp | 23 +++-- + src/req.hpp | 4 +- + src/session.cpp | 17 ++-- + src/session.hpp | 4 +- + src/socket_base.cpp | 29 +++--- + src/socket_base.hpp | 10 +- + src/sub.cpp | 17 ++-- + src/sub.hpp | 2 +- + src/tcp_connecter.cpp | 2 - + src/tcp_listener.cpp | 2 - + src/xpub.cpp | 9 +- + src/xpub.hpp | 4 +- + src/xrep.cpp | 69 +++++++------- + src/xrep.hpp | 7 +- + src/xreq.cpp | 7 +- + src/xreq.hpp | 4 +- + src/xsub.cpp | 41 ++++---- + src/xsub.hpp | 11 +-- + src/zmq.cpp | 52 ++++++++++- + src/zmq_init.cpp | 29 +++--- + src/zmq_init.hpp | 13 ++- 55 files changed, 606 insertions(+), 474 deletions(-) commit 581697695aac72894f2d3fefac904b9d50b3ba67 @@ -12560,16 +20293,16 @@ Signed-off-by: Martin Sustrik - doc/zmq_msg_close.txt | 3 ++- - doc/zmq_msg_copy.txt | 3 ++- - doc/zmq_msg_move.txt | 3 ++- - doc/zmq_recv.txt | 2 ++ - doc/zmq_send.txt | 2 ++ - include/zmq.h | 1 + - src/msg.cpp | 40 ++++++++++++++++++++++++++++++++-------- - src/req.cpp | 2 +- - src/socket_base.cpp | 14 ++++++++++++++ - src/xrep.cpp | 2 +- + doc/zmq_msg_close.txt | 3 ++- + doc/zmq_msg_copy.txt | 3 ++- + doc/zmq_msg_move.txt | 3 ++- + doc/zmq_recv.txt | 2 ++ + doc/zmq_send.txt | 2 ++ + include/zmq.h | 1 + + src/msg.cpp | 40 ++++++++++++++++++++++++++++++++-------- + src/req.cpp | 2 +- + src/socket_base.cpp | 14 ++++++++++++++ + src/xrep.cpp | 2 +- 10 files changed, 59 insertions(+), 13 deletions(-) commit 20e0b7cdcb6e8095fbadb80765e9371803184060 @@ -12580,7 +20313,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_socket.txt | 2 ++ + doc/zmq_socket.txt | 2 ++ 1 file changed, 2 insertions(+) commit e3dc0b25d98eb072ab37aac842bba0802c87e3e6 @@ -12591,7 +20324,7 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.hpp | 4 ++++ + src/pgm_socket.hpp | 4 ++++ 1 file changed, 4 insertions(+) commit 452ea97f5bb1bdd4d5ba76279de4189e8b8e5662 @@ -12602,7 +20335,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_send.txt | 4 ++++ + doc/zmq_send.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 590ad2510bb113fdcd36951f6321fc73be94944a @@ -12613,7 +20346,7 @@ Signed-off-by: Martin Sustrik - src/tcp_listener.cpp | 3 ++- + src/tcp_listener.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 5444064c1a195daee5e57eb996157393a4eed796 @@ -12624,7 +20357,7 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.hpp | 2 +- + src/pgm_socket.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 933ace0919974628c8ac2f9ada67645fdf4c80e2 @@ -12635,7 +20368,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 10 +++++++++- + builds/msvc/libzmq/libzmq.vcproj | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) commit 6191213a5737b774d83f341d4507b8baf702d381 @@ -12646,12 +20379,12 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 3 +- - src/dist.cpp | 2 +- - src/msg.cpp | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/msg.hpp | 52 +++++++++++++++++ - src/msg_content.hpp | 52 ----------------- - src/zmq.cpp | 131 ------------------------------------------- + src/Makefile.am | 3 +- + src/dist.cpp | 2 +- + src/msg.cpp | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/msg.hpp | 52 +++++++++++++++++ + src/msg_content.hpp | 52 ----------------- + src/zmq.cpp | 131 ------------------------------------------ 6 files changed, 214 insertions(+), 185 deletions(-) commit 3b636d7d185cd1a1fa300b4d9ca78d2587cb4bf5 @@ -12662,9 +20395,9 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 3 ++- - src/zmq.cpp | 30 ---------------------------- - src/zmq_utils.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/Makefile.am | 3 ++- + src/zmq.cpp | 30 --------------------------- + src/zmq_utils.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 31 deletions(-) commit e6fd193760952fb7ad9ba787ff210993cf1c2031 @@ -12675,8 +20408,8 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.hpp | 5 ----- - src/zmq.cpp | 5 ----- + src/pgm_socket.hpp | 5 ----- + src/zmq.cpp | 5 ----- 2 files changed, 10 deletions(-) commit a3b49ca958be908b88b17ecc946006dccfbd2a75 @@ -12687,7 +20420,7 @@ Signed-off-by: Pieter Hintjens - doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_getsockopt.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0839cceac9dd29cc64cd9a634b9d3340cfbf3bbe @@ -12698,7 +20431,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 3 +++ + include/zmq.h | 3 +++ 1 file changed, 3 insertions(+) commit b96fe15bb666e59728b6aa02f28c5838020f6bf3 @@ -12709,20 +20442,20 @@ Signed-off-by: Martin Sustrik - doc/zmq_bind.txt | 4 ++-- - doc/zmq_close.txt | 4 ++-- - doc/zmq_connect.txt | 4 ++-- - doc/zmq_getsockopt.txt | 4 ++-- - doc/zmq_recv.txt | 4 ++-- - doc/zmq_send.txt | 4 ++-- - doc/zmq_setsockopt.txt | 4 ++-- - doc/zmq_socket.txt | 2 +- - doc/zmq_term.txt | 2 +- - src/ctx.cpp | 9 +++++++++ - src/ctx.hpp | 6 ++++++ - src/socket_base.cpp | 9 +++++++++ - src/socket_base.hpp | 6 ++++++ - src/zmq.cpp | 32 ++++++++++++++++---------------- + doc/zmq_bind.txt | 4 ++-- + doc/zmq_close.txt | 4 ++-- + doc/zmq_connect.txt | 4 ++-- + doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_recv.txt | 4 ++-- + doc/zmq_send.txt | 4 ++-- + doc/zmq_setsockopt.txt | 4 ++-- + doc/zmq_socket.txt | 2 +- + doc/zmq_term.txt | 2 +- + src/ctx.cpp | 9 +++++++++ + src/ctx.hpp | 6 ++++++ + src/socket_base.cpp | 9 +++++++++ + src/socket_base.hpp | 6 ++++++ + src/zmq.cpp | 32 ++++++++++++++++---------------- 14 files changed, 62 insertions(+), 32 deletions(-) commit e62686aca57ab307e952c53fd3848acaad22735e @@ -12733,10 +20466,10 @@ Signed-off-by: Mikko Koppanen - Makefile.am | 1 - - builds/redhat/zeromq.spec | 137 ------------------------------------------ - builds/redhat/zeromq.spec.in | 138 +++++++++++++++++++++++++++++++++++++++++++ - configure.in | 3 +- + Makefile.am | 1 - + builds/redhat/zeromq.spec | 137 ----------------------------------------- + builds/redhat/zeromq.spec.in | 138 ++++++++++++++++++++++++++++++++++++++++++ + configure.in | 3 +- 4 files changed, 140 insertions(+), 139 deletions(-) commit 6fd403c4d8d22cec6c47aad4b978b3cc78b956c4 @@ -12747,8 +20480,8 @@ Signed-off-by: Mikko Koppanen - autogen.sh | 6 ------ - configure.in | 13 ++++++++----- + autogen.sh | 6 ------ + configure.in | 13 ++++++++----- 2 files changed, 8 insertions(+), 11 deletions(-) commit 4b52cf949fa02274ec8817f8e704eaa7cc66adbf @@ -12764,8 +20497,8 @@ Signed-off-by: Martin Sustrik - src/zmq_init.cpp | 98 +++++++++++++++++++++++++++++++++++++++++--------------- - src/zmq_init.hpp | 18 +++++++++-- + src/zmq_init.cpp | 98 +++++++++++++++++++++++++++++++++++++++--------------- + src/zmq_init.hpp | 18 ++++++++-- 2 files changed, 87 insertions(+), 29 deletions(-) commit 8203c4dbb2e727ce608590e41c9e0d990c015b3e @@ -12776,8 +20509,8 @@ Signed-off-by: Martin Sustrik - perf/inproc_lat.cpp | 2 +- - perf/inproc_thr.cpp | 2 +- + perf/inproc_lat.cpp | 2 +- + perf/inproc_thr.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 475ba3849dd6563ce7b70c4db4d0ac85ac83658d @@ -12788,7 +20521,7 @@ Signed-off-by: Martin Sustrik - src/thread.cpp | 2 +- + src/thread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1842628b9058b9243ebe037a6818c27ea1c8cd8d @@ -12799,7 +20532,7 @@ Signed-off-by: Martin Sustrik - src/tcp_socket.cpp | 1 - + src/tcp_socket.cpp | 1 - 1 file changed, 1 deletion(-) commit 2c7af35827863b1e0a167298140a38180980502c @@ -12810,7 +20543,7 @@ Signed-off-by: Robert G. Jakabosky - doc/zmq_msg_init_data.txt | 3 +++ + doc/zmq_msg_init_data.txt | 3 +++ 1 file changed, 3 insertions(+) commit 54ea458f629cc380440e1a349ecf572eed2ecbd4 @@ -12821,7 +20554,7 @@ Signed-off-by: Martin Sustrik - .gitignore | 1 + + .gitignore | 1 + 1 file changed, 1 insertion(+) commit a48b6cfc003833e40198442124d034942f9f41e3 @@ -12832,7 +20565,7 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 32 +++++++++++++++++++++----------- + acinclude.m4 | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) commit 656b646bc634993bd9cb1b036a6838c5d0514fa8 @@ -12843,8 +20576,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 340 +++++++++++++++++++++++++++++------------------------------ - configure.in | 76 ++++++------- + acinclude.m4 | 340 +++++++++++++++++++++++++++++----------------------------- + configure.in | 76 ++++++------- 2 files changed, 208 insertions(+), 208 deletions(-) commit bdeddb89f727c434ad499da5a349f3959eba3226 @@ -12855,8 +20588,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 32 ++++++++++++++++++++++++++++++++ - configure.in | 3 +++ + acinclude.m4 | 32 ++++++++++++++++++++++++++++++++ + configure.in | 3 +++ 2 files changed, 35 insertions(+) commit 7af18468f8ca0c14975ea12a1e6a549d42b81347 @@ -12867,8 +20600,8 @@ Signed-off-by: Mikko Koppanen - autogen.sh | 6 ++++++ - configure.in | 17 +++++++++++++++++ + autogen.sh | 6 ++++++ + configure.in | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) commit 0e0e4559a0e1d37fdbf686056f5d869d7a8d0315 @@ -12879,7 +20612,7 @@ Signed-off-by: Martin Sustrik - README | 2 +- + README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3e655227bd30d9845b2a0d8b877abe26c5524a3a @@ -12890,7 +20623,7 @@ Signed-off-by: Pieter Hintjens - src/thread.cpp | 2 ++ + src/thread.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 85c2a84036675d40af47b57c410309da04ef742b @@ -12901,11 +20634,11 @@ Signed-off-by: Martin Sustrik - builds/msvc/inproc_lat/inproc_lat.vcproj | 174 +++++++++++++++++++++++++++++++ - builds/msvc/inproc_thr/inproc_thr.vcproj | 174 +++++++++++++++++++++++++++++++ - builds/msvc/msvc.sln | 22 ++++ - perf/inproc_lat.cpp | 46 +++++++- - perf/inproc_thr.cpp | 46 +++++++- + builds/msvc/inproc_lat/inproc_lat.vcproj | 174 ++++++++++++++++++++++++++++++ + builds/msvc/inproc_thr/inproc_thr.vcproj | 174 ++++++++++++++++++++++++++++++ + builds/msvc/msvc.sln | 22 ++++ + perf/inproc_lat.cpp | 46 +++++++- + perf/inproc_thr.cpp | 46 +++++++- 5 files changed, 458 insertions(+), 4 deletions(-) commit 54830ac0f6869628e1e35cbae3434ca5e10ad600 @@ -12916,8 +20649,8 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 16 ---------------- - builds/msvc/msvc.sln | 33 --------------------------------- + builds/msvc/libzmq/libzmq.vcproj | 16 ---------------- + builds/msvc/msvc.sln | 33 --------------------------------- 2 files changed, 49 deletions(-) commit ae90d3bdbe58d73dea5001b2f8cbf6ada9e53332 @@ -12928,7 +20661,7 @@ Signed-off-by: Martin Sustrik - .gitignore | 2 ++ + .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 599df5203ca3e4dfa39ea7617616b7886e95aff3 @@ -12939,7 +20672,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_pgm.txt | 5 +++++ + doc/zmq_pgm.txt | 5 +++++ 1 file changed, 5 insertions(+) commit cce57617c7d4da78a3fd00e105d4920e34181a07 @@ -12952,7 +20685,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 2 ++ + AUTHORS | 2 ++ 1 file changed, 2 insertions(+) commit 5142a1624bcf1659b5ed6b706b8396fc91ecbd00 @@ -12963,7 +20696,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit d84558e172f51a9b96659f49c404147315e502f8 @@ -12974,9 +20707,9 @@ Signed-off-by: Robert G. Jakabosky - perf/Makefile.am | 8 ++- - perf/inproc_lat.cpp | 190 ++++++++++++++++++++++++++++++++++++++++++++++++ - perf/inproc_thr.cpp | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + perf/Makefile.am | 8 +- + perf/inproc_lat.cpp | 190 +++++++++++++++++++++++++++++++++++++++++++++++ + perf/inproc_thr.cpp | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 401 insertions(+), 1 deletion(-) commit fbf1f5146860a2557f247cdb0f94bda647c75ceb @@ -12987,13 +20720,13 @@ Signed-off-by: Mikko Koppanen - .gitignore | 1 + - Makefile.am | 11 ++- - configure.in | 152 ++++++++--------------------- - foreign/openpgm/Makefile.am | 8 ++ - foreign/openpgm/libpgm-5.0.92~dfsg.tar.gz | Bin 444700 -> 0 bytes - foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz | Bin 0 -> 1054630 bytes - src/Makefile.am | 95 +----------------- + .gitignore | 1 + + Makefile.am | 11 +- + configure.in | 152 ++++++++-------------------- + foreign/openpgm/Makefile.am | 8 ++ + foreign/openpgm/libpgm-5.0.92~dfsg.tar.gz | Bin 444700 -> 0 bytes + foreign/openpgm/libpgm-5.1.115~dfsg.tar.gz | Bin 0 -> 1054630 bytes + src/Makefile.am | 95 +---------------- 7 files changed, 59 insertions(+), 208 deletions(-) commit d36d9a378a9f3c561f2ae7849cee907c59d33b72 @@ -13006,7 +20739,7 @@ Signed-off-by: Martin Sustrik - src/zmq_engine.cpp | 8 +++++++- + src/zmq_engine.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 17fdb5e3a8956887e76c487e36d1dc8b667ca248 @@ -13017,7 +20750,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 12 ++++++------ + src/zmq.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 82dbef360c1fd5b20c8b59e1fc7273af14f55502 @@ -13028,7 +20761,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 4 ++++ + src/zmq.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit abb184a051b592b6d4c99fd3299e78ea7c1da826 @@ -13041,12 +20774,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_recv.txt | 2 +- - doc/zmq_send.txt | 2 +- - include/zmq.h | 2 +- - src/socket_base.cpp | 4 ++-- - src/xsub.cpp | 6 +++--- - tests/test_hwm.cpp | 2 +- + doc/zmq_recv.txt | 2 +- + doc/zmq_send.txt | 2 +- + include/zmq.h | 2 +- + src/socket_base.cpp | 4 ++-- + src/xsub.cpp | 6 +++--- + tests/test_hwm.cpp | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) commit bc4a1ce3345f4e5904e4b13c618f90def21256a5 @@ -13060,14 +20793,14 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 42 ++++++++++++++++++++++++++++++++---------- - doc/zmq_setsockopt.txt | 36 +++++++++++++++++++++++++++++------- - include/zmq.h | 3 ++- - src/options.cpp | 30 ++++++++++++++++++++++++------ - src/options.hpp | 5 +++-- - src/session.cpp | 6 ++++-- - src/socket_base.cpp | 21 +++++++++++++-------- - tests/test_hwm.cpp | 4 ++-- + doc/zmq_getsockopt.txt | 42 ++++++++++++++++++++++++++++++++---------- + doc/zmq_setsockopt.txt | 36 +++++++++++++++++++++++++++++------- + include/zmq.h | 3 ++- + src/options.cpp | 30 ++++++++++++++++++++++++------ + src/options.hpp | 5 +++-- + src/session.cpp | 6 ++++-- + src/socket_base.cpp | 21 +++++++++++++-------- + tests/test_hwm.cpp | 4 ++-- 8 files changed, 109 insertions(+), 38 deletions(-) commit 507718ee1a56e376c06389c513de3868297fec35 @@ -13078,14 +20811,14 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 4 ++-- - doc/zmq_setsockopt.txt | 2 +- - src/options.cpp | 8 ++++---- - src/options.hpp | 4 +++- - src/pipe.cpp | 11 +++++------ - src/pipe.hpp | 17 ++++++++--------- - src/socket_base.cpp | 2 +- - tests/test_hwm.cpp | 3 +-- + doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_setsockopt.txt | 2 +- + src/options.cpp | 8 ++++---- + src/options.hpp | 4 +++- + src/pipe.cpp | 11 +++++------ + src/pipe.hpp | 17 ++++++++--------- + src/socket_base.cpp | 2 +- + tests/test_hwm.cpp | 3 +-- 8 files changed, 25 insertions(+), 26 deletions(-) commit bd9d7715ebe864d1aa85700d1b55b4f37568a1a4 @@ -13096,11 +20829,11 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 4 ++-- - doc/zmq_setsockopt.txt | 4 ++-- - src/options.cpp | 21 ++++++++++----------- - src/options.hpp | 5 +++-- - src/pgm_socket.cpp | 4 ++-- + doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_setsockopt.txt | 4 ++-- + src/options.cpp | 21 ++++++++++----------- + src/options.hpp | 5 +++-- + src/pgm_socket.cpp | 4 ++-- 5 files changed, 19 insertions(+), 19 deletions(-) commit d61f067f5bade1269213735b8628a92621b62c91 @@ -13111,8 +20844,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 2 +- - src/socket_base.cpp | 10 +++++----- + doc/zmq_getsockopt.txt | 2 +- + src/socket_base.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) commit 23bd3726a57793b850cb26e22274fd188fb86e82 @@ -13123,8 +20856,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 2 +- - src/socket_base.cpp | 6 +++--- + doc/zmq_getsockopt.txt | 2 +- + src/socket_base.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) commit 17e82a361121dc81c90e17f1382dff678537b651 @@ -13137,12 +20870,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 4 ++-- - doc/zmq_setsockopt.txt | 4 ++-- - src/options.cpp | 22 +++++++++++----------- - src/options.hpp | 5 +++-- - src/tcp_socket.cpp | 15 ++++++--------- - src/tcp_socket.hpp | 2 +- + doc/zmq_getsockopt.txt | 4 ++-- + doc/zmq_setsockopt.txt | 4 ++-- + src/options.cpp | 22 +++++++++++----------- + src/options.hpp | 5 +++-- + src/tcp_socket.cpp | 15 ++++++--------- + src/tcp_socket.hpp | 2 +- 6 files changed, 25 insertions(+), 27 deletions(-) commit a2252de2bcecb672f09c8a5d0013cce23d1d404f @@ -13156,12 +20889,12 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 24 ++---------------------- - doc/zmq_setsockopt.txt | 31 +++---------------------------- - include/zmq.h | 1 - - src/options.cpp | 22 ++-------------------- - src/options.hpp | 4 +--- - src/pgm_socket.cpp | 23 ++++------------------- + doc/zmq_getsockopt.txt | 24 ++---------------------- + doc/zmq_setsockopt.txt | 31 +++---------------------------- + include/zmq.h | 1 - + src/options.cpp | 22 ++-------------------- + src/options.hpp | 4 +--- + src/pgm_socket.cpp | 23 ++++------------------- 6 files changed, 12 insertions(+), 93 deletions(-) commit 8463b4d55e45ea29d5a23f867e7f1c0077279ee7 @@ -13176,19 +20909,19 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 16 --- - doc/zmq_setsockopt.txt | 16 --- - include/zmq.h | 1 - - src/Makefile.am | 2 - - src/config.hpp | 4 - - src/options.cpp | 18 --- - src/options.hpp | 1 - - src/pipe.cpp | 93 ++------------ - src/pipe.hpp | 30 ++--- - src/session.cpp | 6 +- - src/socket_base.cpp | 20 ++- - src/swap.cpp | 325 ------------------------------------------------- - src/swap.hpp | 123 ------------------- + doc/zmq_getsockopt.txt | 16 --- + doc/zmq_setsockopt.txt | 16 --- + include/zmq.h | 1 - + src/Makefile.am | 2 - + src/config.hpp | 4 - + src/options.cpp | 18 --- + src/options.hpp | 1 - + src/pipe.cpp | 93 ++------------ + src/pipe.hpp | 30 ++--- + src/session.cpp | 6 +- + src/socket_base.cpp | 20 ++- + src/swap.cpp | 325 ------------------------------------------------ + src/swap.hpp | 123 ------------------ 13 files changed, 24 insertions(+), 631 deletions(-) commit fb27a000d9383b503761d0124e7bd41115d70c9a @@ -13207,14 +20940,14 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 6 ++++-- - perf/local_lat.cpp | 12 +++++------ - perf/local_thr.cpp | 12 +++++------ - perf/remote_lat.cpp | 12 +++++------ - perf/remote_thr.cpp | 6 +++--- - src/zmq.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++++---- - tests/test_hwm.cpp | 34 +++++------------------------- - tests/testutil.hpp | 38 ++++++++++------------------------ + include/zmq.h | 6 ++++-- + perf/local_lat.cpp | 12 +++++------ + perf/local_thr.cpp | 12 +++++------ + perf/remote_lat.cpp | 12 +++++------ + perf/remote_thr.cpp | 6 +++--- + src/zmq.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++---- + tests/test_hwm.cpp | 34 +++++------------------------ + tests/testutil.hpp | 38 ++++++++++----------------------- 8 files changed, 96 insertions(+), 83 deletions(-) commit d4e83d26014f41eaa1698b4062de88fe7f36a669 @@ -13225,11 +20958,11 @@ Signed-off-by: Martin Sustrik - builds/redhat/zeromq.spec | 1 - - doc/Makefile.am | 4 +- - doc/zmq_cpp.txt | 212 ---------------------------------- - include/zmq.hpp | 289 ---------------------------------------------- - src/Makefile.am | 2 +- + builds/redhat/zeromq.spec | 1 - + doc/Makefile.am | 4 +- + doc/zmq_cpp.txt | 212 --------------------------------- + include/zmq.hpp | 289 --------------------------------------------- + src/Makefile.am | 2 +- 5 files changed, 3 insertions(+), 505 deletions(-) commit 7d87db05290e3fd742f381b6f419eb69518ca8cf @@ -13242,15 +20975,15 @@ Signed-off-by: Martin Sustrik - tests/test_hwm.cpp | 107 +++++++++++++++++++++---------- - tests/test_pair_inproc.cpp | 30 +++++++-- - tests/test_pair_ipc.cpp | 30 +++++++-- - tests/test_pair_tcp.cpp | 30 +++++++-- - tests/test_reqrep_inproc.cpp | 30 +++++++-- - tests/test_reqrep_ipc.cpp | 30 +++++++-- - tests/test_reqrep_tcp.cpp | 30 +++++++-- - tests/test_shutdown_stress.cpp | 2 +- - tests/testutil.hpp | 139 ++++++++++++----------------------------- + tests/test_hwm.cpp | 107 +++++++++++++++++++++---------- + tests/test_pair_inproc.cpp | 30 +++++++-- + tests/test_pair_ipc.cpp | 30 +++++++-- + tests/test_pair_tcp.cpp | 30 +++++++-- + tests/test_reqrep_inproc.cpp | 30 +++++++-- + tests/test_reqrep_ipc.cpp | 30 +++++++-- + tests/test_reqrep_tcp.cpp | 30 +++++++-- + tests/test_shutdown_stress.cpp | 2 +- + tests/testutil.hpp | 139 +++++++++++----------------------------- 9 files changed, 263 insertions(+), 165 deletions(-) commit 941be8d2175332cb720f390f93d07a0870db8824 @@ -13264,13 +20997,13 @@ Signed-off-by: Martin Sustrik - builds/redhat/zeromq.spec | 7 --- - include/zmq.h | 10 ---- - include/zmq.hpp | 7 --- - src/Makefile.am | 2 - - src/device.cpp | 120 ---------------------------------------------- - src/device.hpp | 32 ------------- - src/zmq.cpp | 18 ------- + builds/redhat/zeromq.spec | 7 --- + include/zmq.h | 10 ---- + include/zmq.hpp | 7 --- + src/Makefile.am | 2 - + src/device.cpp | 120 --------------------------------------------- + src/device.hpp | 32 ------------ + src/zmq.cpp | 18 ------- 7 files changed, 196 deletions(-) commit d4d184a750e2c09a39b95db9a54daf83aac5a446 @@ -13315,13 +21048,13 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 17 ----------------- - doc/zmq_pgm.txt | 5 ++--- - doc/zmq_setsockopt.txt | 17 ----------------- - include/zmq.h | 1 - - src/options.cpp | 25 ------------------------- - src/options.hpp | 3 --- - src/pgm_socket.cpp | 2 +- + doc/zmq_getsockopt.txt | 17 ----------------- + doc/zmq_pgm.txt | 5 ++--- + doc/zmq_setsockopt.txt | 17 ----------------- + include/zmq.h | 1 - + src/options.cpp | 25 ------------------------- + src/options.hpp | 3 --- + src/pgm_socket.cpp | 2 +- 7 files changed, 3 insertions(+), 67 deletions(-) commit f5e6d67948b8c71c2444046f6246aebab16546dc @@ -13335,8 +21068,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_poll.txt | 2 +- - src/zmq.cpp | 12 ++++++------ + doc/zmq_poll.txt | 2 +- + src/zmq.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) commit e3cf6e9ced979464d30ad4cd63087cfbee33e9bd @@ -13347,7 +21080,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_poll.txt | 3 --- + doc/zmq_poll.txt | 3 --- 1 file changed, 3 deletions(-) commit 34d7854199ab89faf2edfc3305932cc07b2030ab @@ -13358,8 +21091,8 @@ Signed-off-by: Martin Sustrik - devices/zmq_streamer/zmq_streamer.cpp | 4 ++-- - include/zmq.h | 2 -- + devices/zmq_streamer/zmq_streamer.cpp | 4 ++-- + include/zmq.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) commit dee5f650dde07ec71f482e825984a31028467d1b @@ -13370,7 +21103,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 4 ++-- + include/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1619b3d84a04fe1886347fd83280a6070c9603f4 @@ -13385,8 +21118,8 @@ Signed-off-by: Martin Sustrik - src/lb.cpp | 25 ++++++++++++++++++++++++- - src/lb.hpp | 3 +++ + src/lb.cpp | 25 ++++++++++++++++++++++++- + src/lb.hpp | 3 +++ 2 files changed, 27 insertions(+), 1 deletion(-) commit 92c7c18367f91c6341fc617026f5e25000466b05 @@ -13404,8 +21137,8 @@ Signed-off-by: Martin Sustrik - src/dist.cpp | 44 +++++++++++++++++++++++++++++++++++++++----- - src/dist.hpp | 15 +++++++++++++++ + src/dist.cpp | 44 +++++++++++++++++++++++++++++++++++++++----- + src/dist.hpp | 15 +++++++++++++++ 2 files changed, 54 insertions(+), 5 deletions(-) commit fac9c2da56073d15cfe25ea2bb5833cb5b9cfff6 @@ -13416,8 +21149,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_setsockopt.txt | 3 ++- - doc/zmq_socket.txt | 8 +++++--- + doc/zmq_setsockopt.txt | 3 ++- + doc/zmq_socket.txt | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) commit f5015f4c933706f34dbe3cb78e7db29e2ab7f870 @@ -13428,7 +21161,7 @@ Signed-off-by: Martin Sustrik - src/tcp_listener.cpp | 20 ++++++++++++++++---- + src/tcp_listener.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) commit 32ded2b457b2102dba4c15e00363f031d212b1c4 @@ -13439,15 +21172,15 @@ Signed-off-by: Martin Sustrik - src/connect_session.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++-- - src/connect_session.hpp | 10 +++++++++- - src/named_session.cpp | 12 +++++++++--- - src/named_session.hpp | 2 +- - src/session.cpp | 38 ++++++++++++++++++++------------------ - src/session.hpp | 12 ++++++++---- - src/socket_base.cpp | 4 +++- - src/transient_session.cpp | 4 +++- - src/transient_session.hpp | 2 +- + src/connect_session.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++-- + src/connect_session.hpp | 10 +++++++++- + src/named_session.cpp | 12 +++++++++--- + src/named_session.hpp | 2 +- + src/session.cpp | 38 ++++++++++++++++++++------------------ + src/session.hpp | 12 ++++++++---- + src/socket_base.cpp | 4 +++- + src/transient_session.cpp | 4 +++- + src/transient_session.hpp | 2 +- 9 files changed, 97 insertions(+), 32 deletions(-) commit b79d07b8bc844135c44c1ff8b84b50dc08f56925 @@ -13458,7 +21191,7 @@ Signed-off-by: Jon Dyte - src/xrep.cpp | 4 +++- + src/xrep.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 7045a4a21327f19170e282f6ba2d25caff13aa90 @@ -13469,8 +21202,8 @@ Signed-off-by: Martin Sustrik - src/named_session.cpp | 57 +++++++++++++++------------------------------------ - src/named_session.hpp | 5 ++--- + src/named_session.cpp | 57 ++++++++++++++----------------------------------- + src/named_session.hpp | 5 ++--- 2 files changed, 18 insertions(+), 44 deletions(-) commit f987f4b3e28b24fd3e58408c568b688ad1306766 @@ -13483,7 +21216,7 @@ Signed-off-by: Martin Sustrik - src/pgm_receiver.cpp | 5 ++++- + src/pgm_receiver.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 2970d6c30b1f57e9a75d46982378b103899bddbc @@ -13494,7 +21227,7 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.cpp | 1 - + src/pgm_socket.cpp | 1 - 1 file changed, 1 deletion(-) commit d0c8edde3596f512d629c6b075289ebe86488ea9 @@ -13505,7 +21238,7 @@ Signed-off-by: Guido Goldstein - include/zmq.hpp | 14 ++++++++++++-- + include/zmq.hpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) commit 7b95c5920c3318935b8cd8f3591cd5c65509f819 @@ -13520,7 +21253,7 @@ Signed-off-by: Martin Sustrik - src/ip.cpp | 2 ++ + src/ip.cpp | 2 ++ 1 file changed, 2 insertions(+) commit b00be2651c39d0c08064f206b31a14e810ba0b22 @@ -13531,11 +21264,11 @@ Signed-off-by: Martin Sustrik - AUTHORS | 2 +- - src/ip.cpp | 16 ++++++++++------ - src/ip.hpp | 2 -- - src/semaphore.hpp | 2 ++ - src/stdint.hpp | 10 +--------- + AUTHORS | 2 +- + src/ip.cpp | 16 ++++++++++------ + src/ip.hpp | 2 -- + src/semaphore.hpp | 2 ++ + src/stdint.hpp | 10 +--------- 5 files changed, 14 insertions(+), 18 deletions(-) commit 184bdb8e2bb6fe252af1bf4dd16d1c9ed8892f7a @@ -13546,7 +21279,7 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 16 +++++++++++++++- + src/xrep.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) commit 97add1ec2f75858ee950fa19b266396147efa224 @@ -13557,8 +21290,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_init.txt | 5 +++++ - doc/zmq_socket.txt | 13 +++---------- + doc/zmq_init.txt | 5 +++++ + doc/zmq_socket.txt | 13 +++---------- 2 files changed, 8 insertions(+), 10 deletions(-) commit 18b9ebea32fbf4a4552b0435c8759e5e5c6fe219 @@ -13569,157 +21302,157 @@ Signed-off-by: Martin Sustrik - autogen.sh | 8 +++++--- - builds/msvc/platform.hpp | 3 ++- - devices/zmq_forwarder/zmq_forwarder.cpp | 3 ++- - devices/zmq_queue/zmq_queue.cpp | 3 ++- - devices/zmq_streamer/zmq_streamer.cpp | 3 ++- - include/zmq.h | 3 ++- - include/zmq.hpp | 3 ++- - include/zmq_utils.h | 3 ++- - perf/local_lat.cpp | 3 ++- - perf/local_thr.cpp | 3 ++- - perf/remote_lat.cpp | 3 ++- - perf/remote_thr.cpp | 3 ++- - src/array.hpp | 3 ++- - src/atomic_counter.hpp | 3 ++- - src/atomic_ptr.hpp | 3 ++- - src/blob.hpp | 3 ++- - src/clock.cpp | 3 ++- - src/clock.hpp | 3 ++- - src/command.cpp | 3 ++- - src/command.hpp | 3 ++- - src/config.hpp | 3 ++- - src/connect_session.cpp | 3 ++- - src/connect_session.hpp | 3 ++- - src/ctx.cpp | 3 ++- - src/ctx.hpp | 3 ++- - src/decoder.cpp | 3 ++- - src/decoder.hpp | 3 ++- - src/device.cpp | 3 ++- - src/device.hpp | 3 ++- - src/devpoll.cpp | 3 ++- - src/devpoll.hpp | 3 ++- - src/dist.cpp | 3 ++- - src/dist.hpp | 3 ++- - src/encoder.cpp | 3 ++- - src/encoder.hpp | 3 ++- - src/epoll.cpp | 3 ++- - src/epoll.hpp | 3 ++- - src/err.cpp | 3 ++- - src/err.hpp | 3 ++- - src/fd.hpp | 3 ++- - src/fq.cpp | 3 ++- - src/fq.hpp | 3 ++- - src/i_engine.hpp | 3 ++- - src/i_inout.hpp | 3 ++- - src/i_poll_events.hpp | 3 ++- - src/io_object.cpp | 3 ++- - src/io_object.hpp | 3 ++- - src/io_thread.cpp | 3 ++- - src/io_thread.hpp | 3 ++- - src/ip.cpp | 3 ++- - src/ip.hpp | 3 ++- - src/kqueue.cpp | 3 ++- - src/kqueue.hpp | 3 ++- - src/lb.cpp | 3 ++- - src/lb.hpp | 3 ++- - src/likely.hpp | 3 ++- - src/mailbox.cpp | 3 ++- - src/mailbox.hpp | 3 ++- - src/msg_content.hpp | 3 ++- - src/mutex.hpp | 3 ++- - src/named_session.cpp | 3 ++- - src/named_session.hpp | 3 ++- - src/object.cpp | 3 ++- - src/object.hpp | 3 ++- - src/options.cpp | 3 ++- - src/options.hpp | 3 ++- - src/own.cpp | 3 ++- - src/own.hpp | 3 ++- - src/pair.cpp | 3 ++- - src/pair.hpp | 3 ++- - src/pgm_receiver.cpp | 3 ++- - src/pgm_receiver.hpp | 3 ++- - src/pgm_sender.cpp | 3 ++- - src/pgm_sender.hpp | 3 ++- - src/pgm_socket.cpp | 3 ++- - src/pgm_socket.hpp | 3 ++- - src/pipe.cpp | 3 ++- - src/pipe.hpp | 3 ++- - src/poll.cpp | 3 ++- - src/poll.hpp | 3 ++- - src/poller.hpp | 3 ++- - src/poller_base.cpp | 3 ++- - src/poller_base.hpp | 3 ++- - src/pub.cpp | 3 ++- - src/pub.hpp | 3 ++- - src/pull.cpp | 3 ++- - src/pull.hpp | 3 ++- - src/push.cpp | 3 ++- - src/push.hpp | 3 ++- - src/reaper.cpp | 3 ++- - src/reaper.hpp | 3 ++- - src/rep.cpp | 3 ++- - src/rep.hpp | 3 ++- - src/req.cpp | 3 ++- - src/req.hpp | 3 ++- - src/select.cpp | 3 ++- - src/select.hpp | 3 ++- - src/semaphore.hpp | 3 ++- - src/session.cpp | 3 ++- - src/session.hpp | 3 ++- - src/socket_base.cpp | 3 ++- - src/socket_base.hpp | 3 ++- - src/stdint.hpp | 3 ++- - src/sub.cpp | 3 ++- - src/sub.hpp | 3 ++- - src/swap.cpp | 3 ++- - src/swap.hpp | 3 ++- - src/tcp_connecter.cpp | 3 ++- - src/tcp_connecter.hpp | 3 ++- - src/tcp_listener.cpp | 3 ++- - src/tcp_listener.hpp | 3 ++- - src/tcp_socket.cpp | 3 ++- - src/tcp_socket.hpp | 3 ++- - src/thread.cpp | 3 ++- - src/thread.hpp | 3 ++- - src/transient_session.cpp | 3 ++- - src/transient_session.hpp | 3 ++- - src/trie.cpp | 3 ++- - src/trie.hpp | 3 ++- - src/uuid.cpp | 3 ++- - src/uuid.hpp | 3 ++- - src/windows.hpp | 3 ++- - src/wire.hpp | 3 ++- - src/xpub.cpp | 3 ++- - src/xpub.hpp | 3 ++- - src/xrep.cpp | 3 ++- - src/xrep.hpp | 3 ++- - src/xreq.cpp | 3 ++- - src/xreq.hpp | 4 +++- - src/xsub.cpp | 3 ++- - src/xsub.hpp | 3 ++- - src/ypipe.hpp | 3 ++- - src/yqueue.hpp | 3 ++- - src/zmq.cpp | 3 ++- - src/zmq_connecter.cpp | 3 ++- - src/zmq_connecter.hpp | 3 ++- - src/zmq_engine.cpp | 3 ++- - src/zmq_engine.hpp | 3 ++- - src/zmq_init.cpp | 3 ++- - src/zmq_init.hpp | 3 ++- - src/zmq_listener.cpp | 3 ++- - src/zmq_listener.hpp | 3 ++- - tests/test_hwm.cpp | 3 ++- - tests/test_pair_inproc.cpp | 3 ++- - tests/test_pair_ipc.cpp | 3 ++- - tests/test_pair_tcp.cpp | 3 ++- - tests/test_reqrep_inproc.cpp | 3 ++- - tests/test_reqrep_ipc.cpp | 3 ++- - tests/test_reqrep_tcp.cpp | 3 ++- - tests/test_shutdown_stress.cpp | 3 ++- - tests/testutil.hpp | 3 ++- + autogen.sh | 8 +++++--- + builds/msvc/platform.hpp | 3 ++- + devices/zmq_forwarder/zmq_forwarder.cpp | 3 ++- + devices/zmq_queue/zmq_queue.cpp | 3 ++- + devices/zmq_streamer/zmq_streamer.cpp | 3 ++- + include/zmq.h | 3 ++- + include/zmq.hpp | 3 ++- + include/zmq_utils.h | 3 ++- + perf/local_lat.cpp | 3 ++- + perf/local_thr.cpp | 3 ++- + perf/remote_lat.cpp | 3 ++- + perf/remote_thr.cpp | 3 ++- + src/array.hpp | 3 ++- + src/atomic_counter.hpp | 3 ++- + src/atomic_ptr.hpp | 3 ++- + src/blob.hpp | 3 ++- + src/clock.cpp | 3 ++- + src/clock.hpp | 3 ++- + src/command.cpp | 3 ++- + src/command.hpp | 3 ++- + src/config.hpp | 3 ++- + src/connect_session.cpp | 3 ++- + src/connect_session.hpp | 3 ++- + src/ctx.cpp | 3 ++- + src/ctx.hpp | 3 ++- + src/decoder.cpp | 3 ++- + src/decoder.hpp | 3 ++- + src/device.cpp | 3 ++- + src/device.hpp | 3 ++- + src/devpoll.cpp | 3 ++- + src/devpoll.hpp | 3 ++- + src/dist.cpp | 3 ++- + src/dist.hpp | 3 ++- + src/encoder.cpp | 3 ++- + src/encoder.hpp | 3 ++- + src/epoll.cpp | 3 ++- + src/epoll.hpp | 3 ++- + src/err.cpp | 3 ++- + src/err.hpp | 3 ++- + src/fd.hpp | 3 ++- + src/fq.cpp | 3 ++- + src/fq.hpp | 3 ++- + src/i_engine.hpp | 3 ++- + src/i_inout.hpp | 3 ++- + src/i_poll_events.hpp | 3 ++- + src/io_object.cpp | 3 ++- + src/io_object.hpp | 3 ++- + src/io_thread.cpp | 3 ++- + src/io_thread.hpp | 3 ++- + src/ip.cpp | 3 ++- + src/ip.hpp | 3 ++- + src/kqueue.cpp | 3 ++- + src/kqueue.hpp | 3 ++- + src/lb.cpp | 3 ++- + src/lb.hpp | 3 ++- + src/likely.hpp | 3 ++- + src/mailbox.cpp | 3 ++- + src/mailbox.hpp | 3 ++- + src/msg_content.hpp | 3 ++- + src/mutex.hpp | 3 ++- + src/named_session.cpp | 3 ++- + src/named_session.hpp | 3 ++- + src/object.cpp | 3 ++- + src/object.hpp | 3 ++- + src/options.cpp | 3 ++- + src/options.hpp | 3 ++- + src/own.cpp | 3 ++- + src/own.hpp | 3 ++- + src/pair.cpp | 3 ++- + src/pair.hpp | 3 ++- + src/pgm_receiver.cpp | 3 ++- + src/pgm_receiver.hpp | 3 ++- + src/pgm_sender.cpp | 3 ++- + src/pgm_sender.hpp | 3 ++- + src/pgm_socket.cpp | 3 ++- + src/pgm_socket.hpp | 3 ++- + src/pipe.cpp | 3 ++- + src/pipe.hpp | 3 ++- + src/poll.cpp | 3 ++- + src/poll.hpp | 3 ++- + src/poller.hpp | 3 ++- + src/poller_base.cpp | 3 ++- + src/poller_base.hpp | 3 ++- + src/pub.cpp | 3 ++- + src/pub.hpp | 3 ++- + src/pull.cpp | 3 ++- + src/pull.hpp | 3 ++- + src/push.cpp | 3 ++- + src/push.hpp | 3 ++- + src/reaper.cpp | 3 ++- + src/reaper.hpp | 3 ++- + src/rep.cpp | 3 ++- + src/rep.hpp | 3 ++- + src/req.cpp | 3 ++- + src/req.hpp | 3 ++- + src/select.cpp | 3 ++- + src/select.hpp | 3 ++- + src/semaphore.hpp | 3 ++- + src/session.cpp | 3 ++- + src/session.hpp | 3 ++- + src/socket_base.cpp | 3 ++- + src/socket_base.hpp | 3 ++- + src/stdint.hpp | 3 ++- + src/sub.cpp | 3 ++- + src/sub.hpp | 3 ++- + src/swap.cpp | 3 ++- + src/swap.hpp | 3 ++- + src/tcp_connecter.cpp | 3 ++- + src/tcp_connecter.hpp | 3 ++- + src/tcp_listener.cpp | 3 ++- + src/tcp_listener.hpp | 3 ++- + src/tcp_socket.cpp | 3 ++- + src/tcp_socket.hpp | 3 ++- + src/thread.cpp | 3 ++- + src/thread.hpp | 3 ++- + src/transient_session.cpp | 3 ++- + src/transient_session.hpp | 3 ++- + src/trie.cpp | 3 ++- + src/trie.hpp | 3 ++- + src/uuid.cpp | 3 ++- + src/uuid.hpp | 3 ++- + src/windows.hpp | 3 ++- + src/wire.hpp | 3 ++- + src/xpub.cpp | 3 ++- + src/xpub.hpp | 3 ++- + src/xrep.cpp | 3 ++- + src/xrep.hpp | 3 ++- + src/xreq.cpp | 3 ++- + src/xreq.hpp | 4 +++- + src/xsub.cpp | 3 ++- + src/xsub.hpp | 3 ++- + src/ypipe.hpp | 3 ++- + src/yqueue.hpp | 3 ++- + src/zmq.cpp | 3 ++- + src/zmq_connecter.cpp | 3 ++- + src/zmq_connecter.hpp | 3 ++- + src/zmq_engine.cpp | 3 ++- + src/zmq_engine.hpp | 3 ++- + src/zmq_init.cpp | 3 ++- + src/zmq_init.hpp | 3 ++- + src/zmq_listener.cpp | 3 ++- + src/zmq_listener.hpp | 3 ++- + tests/test_hwm.cpp | 3 ++- + tests/test_pair_inproc.cpp | 3 ++- + tests/test_pair_ipc.cpp | 3 ++- + tests/test_pair_tcp.cpp | 3 ++- + tests/test_reqrep_inproc.cpp | 3 ++- + tests/test_reqrep_ipc.cpp | 3 ++- + tests/test_reqrep_tcp.cpp | 3 ++- + tests/test_shutdown_stress.cpp | 3 ++- + tests/testutil.hpp | 3 ++- 151 files changed, 306 insertions(+), 153 deletions(-) commit 5fcef1cac4d9faf0279b83ba48899b0e17b8e2d5 @@ -13734,15 +21467,15 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 14 ++++++++++++++ - doc/zmq_setsockopt.txt | 12 ++++++++++++ - include/zmq.h | 1 + - src/decoder.cpp | 21 +++++++++++++++++---- - src/decoder.hpp | 5 ++++- - src/options.cpp | 18 ++++++++++++++++++ - src/options.hpp | 3 +++ - src/pgm_receiver.cpp | 3 ++- - src/zmq_engine.cpp | 2 +- + doc/zmq_getsockopt.txt | 14 ++++++++++++++ + doc/zmq_setsockopt.txt | 12 ++++++++++++ + include/zmq.h | 1 + + src/decoder.cpp | 21 +++++++++++++++++---- + src/decoder.hpp | 5 ++++- + src/options.cpp | 18 ++++++++++++++++++ + src/options.hpp | 3 +++ + src/pgm_receiver.cpp | 3 ++- + src/zmq_engine.cpp | 2 +- 9 files changed, 72 insertions(+), 7 deletions(-) commit 4c7446211a02937f3e2522aece163d417b4ad0b9 @@ -13756,7 +21489,7 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 67b1f14190186f54fc5954a70f7214411d780aea @@ -13767,10 +21500,10 @@ Signed-off-by: Martin Sustrik - src/xpub.cpp | 14 ++++++-------- - src/xpub.hpp | 4 ---- - src/xsub.cpp | 7 ++----- - src/xsub.hpp | 4 ---- + src/xpub.cpp | 14 ++++++-------- + src/xpub.hpp | 4 ---- + src/xsub.cpp | 7 ++----- + src/xsub.hpp | 4 ---- 4 files changed, 8 insertions(+), 21 deletions(-) commit d4e418f5f48a4d73e0a80a54593d11a6cd86d7bc @@ -13784,9 +21517,9 @@ Signed-off-by: Martin Sustrik - src/reaper.cpp | 7 ++++--- - src/socket_base.cpp | 24 ++++++++++++++---------- - src/socket_base.hpp | 4 ++++ + src/reaper.cpp | 7 ++++--- + src/socket_base.cpp | 24 ++++++++++++++---------- + src/socket_base.hpp | 4 ++++ 3 files changed, 22 insertions(+), 13 deletions(-) commit c22e52737a5f12f0edfe3f669fa2bfd6e372dec7 @@ -13797,7 +21530,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 2 +- + doc/zmq_getsockopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 29e0e7dbadfcd0bab70feee119bd7c5e623b38d4 @@ -13808,7 +21541,7 @@ Signed-off-by: Martin Sustrik - src/connect_session.cpp | 4 ++-- + src/connect_session.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 820fec7f28b54dc5fc16a38eceb405e9af41260c @@ -13819,7 +21552,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 4 ++-- + include/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 43e8868875e1d5287979e5b9060a9b16be45cc79 @@ -13830,30 +21563,30 @@ Signed-off-by: Martin Sustrik - src/connect_session.cpp | 6 +++--- - src/ctx.cpp | 6 +++--- - src/decoder.hpp | 2 +- - src/encoder.hpp | 2 +- - src/epoll.cpp | 2 +- - src/err.hpp | 20 +++++++++++++------- - src/io_thread.cpp | 2 +- - src/ip.cpp | 2 +- - src/kqueue.cpp | 2 +- - src/object.cpp | 4 ++-- - src/pgm_receiver.cpp | 1 + - src/pgm_sender.cpp | 2 +- - src/pgm_socket.cpp | 3 ++- - src/pipe.cpp | 8 ++++---- - src/reaper.cpp | 2 +- - src/session.cpp | 2 -- - src/socket_base.cpp | 6 +++--- - src/swap.cpp | 13 ++++++++----- - src/trie.cpp | 6 +++--- - src/yqueue.hpp | 4 ++-- - src/zmq.cpp | 8 ++++---- - src/zmq_connecter.cpp | 2 +- - src/zmq_init.cpp | 6 +++--- - src/zmq_listener.cpp | 2 +- + src/connect_session.cpp | 6 +++--- + src/ctx.cpp | 6 +++--- + src/decoder.hpp | 2 +- + src/encoder.hpp | 2 +- + src/epoll.cpp | 2 +- + src/err.hpp | 20 +++++++++++++------- + src/io_thread.cpp | 2 +- + src/ip.cpp | 2 +- + src/kqueue.cpp | 2 +- + src/object.cpp | 4 ++-- + src/pgm_receiver.cpp | 1 + + src/pgm_sender.cpp | 2 +- + src/pgm_socket.cpp | 3 ++- + src/pipe.cpp | 8 ++++---- + src/reaper.cpp | 2 +- + src/session.cpp | 2 -- + src/socket_base.cpp | 6 +++--- + src/swap.cpp | 13 ++++++++----- + src/trie.cpp | 6 +++--- + src/yqueue.hpp | 4 ++-- + src/zmq.cpp | 8 ++++---- + src/zmq_connecter.cpp | 2 +- + src/zmq_init.cpp | 6 +++--- + src/zmq_listener.cpp | 2 +- 24 files changed, 61 insertions(+), 52 deletions(-) commit 98ccff1a24a056aef15372b131eee1c1bf8f62ca @@ -13864,7 +21597,7 @@ Signed-off-by: Mikko Koppanen - builds/redhat/zeromq.spec | 19 +++++++++++++------ + builds/redhat/zeromq.spec | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) commit 0eea93526d210372c23041d50f4b401a94e3a006 @@ -13875,7 +21608,7 @@ Signed-off-by: Martin Sustrik - src/zmq_init.cpp | 2 ++ + src/zmq_init.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 5c0931121ba1854766599b6b7dbd1a7937febd6d @@ -13886,8 +21619,8 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.cpp | 41 +++++++++++++++++++++++++++++------------ - src/pgm_socket.hpp | 3 +++ + src/pgm_socket.cpp | 41 +++++++++++++++++++++++++++++------------ + src/pgm_socket.hpp | 3 +++ 2 files changed, 32 insertions(+), 12 deletions(-) commit 12486fecc4f8d9a3bed37cf3d732b1250b075e24 @@ -13898,8 +21631,8 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.hpp | 5 +++++ - src/zmq.cpp | 6 ++++++ + src/pgm_socket.hpp | 5 +++++ + src/zmq.cpp | 6 ++++++ 2 files changed, 11 insertions(+) commit 17e2ca71b4f6db76a4848d366defa36f1b19bdd7 @@ -13910,11 +21643,11 @@ Signed-off-by: Martin Sustrik - src/ctx.cpp | 12 ++++++++++-- - src/ctx.hpp | 3 ++- - src/object.cpp | 8 ++++++-- - src/object.hpp | 2 +- - src/session.cpp | 1 + + src/ctx.cpp | 12 ++++++++++-- + src/ctx.hpp | 3 ++- + src/object.cpp | 8 ++++++-- + src/object.hpp | 2 +- + src/session.cpp | 1 + 5 files changed, 20 insertions(+), 6 deletions(-) commit 1f536b2d3820ba5435086a77ad34d86a432b94c7 @@ -13929,7 +21662,7 @@ Signed-off-by: Martin Sustrik - src/zmq_listener.cpp | 2 +- + src/zmq_listener.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28f3e87fc6c8c5c7046234bf9a08ae62f26d7f3a @@ -13944,11 +21677,11 @@ Signed-off-by: Martin Sustrik - src/config.hpp | 3 --- - src/connect_session.cpp | 9 +++++---- - src/connect_session.hpp | 2 +- - src/zmq_connecter.cpp | 4 ++-- - src/zmq_connecter.hpp | 2 +- + src/config.hpp | 3 --- + src/connect_session.cpp | 9 +++++---- + src/connect_session.hpp | 2 +- + src/zmq_connecter.cpp | 4 ++-- + src/zmq_connecter.hpp | 2 +- 5 files changed, 9 insertions(+), 11 deletions(-) commit fbe5d859f461b0deaa6083fdee077e01e9b47b91 @@ -13959,8 +21692,8 @@ Signed-off-by: Michael Compton - AUTHORS | 1 + - doc/zmq_setsockopt.txt | 1 + + AUTHORS | 1 + + doc/zmq_setsockopt.txt | 1 + 2 files changed, 2 insertions(+) commit ba26cc9938c33fe0837322ea34bcd438f9b7d207 @@ -13971,7 +21704,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 4 ++-- + src/zmq.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 14a0e147b2b89fc7fed92c7d9c806b6c53380400 @@ -13985,8 +21718,8 @@ Signed-off-by: Pieter Hintjens - src/ctx.cpp | 17 ----------------- - src/zmq.cpp | 19 +++++++++++++++++++ + src/ctx.cpp | 17 ----------------- + src/zmq.cpp | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 17 deletions(-) commit e94790006ea6f4c64cc1df1c193aa1cf89a75100 @@ -13997,7 +21730,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ 1 file changed, 8 insertions(+) commit 5b82b1ba30d136655c72f116ee2e372ded453952 @@ -14008,13 +21741,13 @@ Signed-off-by: Martin Sustrik - src/command.hpp | 5 +++++ - src/object.cpp | 20 +++++++++++++++++ - src/object.hpp | 2 ++ - src/reaper.cpp | 64 ++++++++++++++++++----------------------------------- - src/reaper.hpp | 13 ++++------- - src/socket_base.cpp | 53 ++++++++++++++++++++++++++++++-------------- - src/socket_base.hpp | 21 ++++++++++++++---- + src/command.hpp | 5 ++++ + src/object.cpp | 20 ++++++++++++++++ + src/object.hpp | 2 ++ + src/reaper.cpp | 64 ++++++++++++++++++--------------------------------- + src/reaper.hpp | 13 ++++------- + src/socket_base.cpp | 53 ++++++++++++++++++++++++++++-------------- + src/socket_base.hpp | 21 +++++++++++++---- 7 files changed, 106 insertions(+), 72 deletions(-) commit 80ac398bba928fa7f245d2e107071677a13185cf @@ -14029,20 +21762,20 @@ Signed-off-by: Martin Sustrik - doc/zmq_socket.txt | 3 +- - doc/zmq_term.txt | 2 + - src/Makefile.am | 2 + - src/command.hpp | 15 ++++- - src/ctx.cpp | 158 ++++++++++++++++++++++++---------------------------- - src/ctx.hpp | 43 +++++++------- - src/io_thread.cpp | 2 +- - src/io_thread.hpp | 3 + - src/object.cpp | 42 ++++++++++++-- - src/object.hpp | 8 +-- - src/reaper.cpp | 139 +++++++++++++++++++++++++++++++++++++++++++++ - src/reaper.hpp | 81 +++++++++++++++++++++++++++ - src/socket_base.cpp | 18 +++--- - src/socket_base.hpp | 8 ++- + doc/zmq_socket.txt | 3 +- + doc/zmq_term.txt | 2 + + src/Makefile.am | 2 + + src/command.hpp | 15 ++++- + src/ctx.cpp | 158 ++++++++++++++++++++++++--------------------------- + src/ctx.hpp | 43 +++++++------- + src/io_thread.cpp | 2 +- + src/io_thread.hpp | 3 + + src/object.cpp | 42 ++++++++++++-- + src/object.hpp | 8 +-- + src/reaper.cpp | 139 ++++++++++++++++++++++++++++++++++++++++++++ + src/reaper.hpp | 81 ++++++++++++++++++++++++++ + src/socket_base.cpp | 18 +++--- + src/socket_base.hpp | 8 ++- 14 files changed, 394 insertions(+), 130 deletions(-) commit 889424e675eecd9d9c7d1121456401d5c43029a5 @@ -14057,7 +21790,7 @@ Signed-off-by: Martin Sustrik - src/ctx.cpp | 4 ++-- + src/ctx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 5dcbc34396bb4d256916fafcbb2ddd646ad179e6 @@ -14068,7 +21801,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 30 ++++++++++++++++++++++++++++++ + src/zmq.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit 908b39bf8309044913a34c632cd432958dcf6960 @@ -14079,8 +21812,8 @@ Signed-off-by: Mikko Koppanen - configure.in | 2 +- - version.sh | 2 +- + configure.in | 2 +- + version.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit c8e5be87d82e73cfc8a6655d2c2b6779f7c223a5 @@ -14091,7 +21824,7 @@ Signed-off-by: Martin Sustrik - .gitignore | 1 + + .gitignore | 1 + 1 file changed, 1 insertion(+) commit 4efead1bbb8f3d2b84ad8e1fc88b65bc621f987f @@ -14104,8 +21837,8 @@ Please enter the commit message for your changes. Lines starting - AUTHORS | 1 + - configure.in | 2 +- + AUTHORS | 1 + + configure.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit 042e34a5d99a9d39b0680d063878f13f5d7e7337 @@ -14118,7 +21851,7 @@ Signed-off-by: Thijs Terlouw - include/zmq.hpp | 8 ++++++++ + include/zmq.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 3f758ab2f45a07e3e77af4f1b32dc876f5a151ad @@ -14133,8 +21866,8 @@ Signed-off-by: Martin Sustrik - src/devpoll.cpp | 20 ++++++++++---------- - src/devpoll.hpp | 3 ++- + src/devpoll.cpp | 20 ++++++++++---------- + src/devpoll.hpp | 3 ++- 2 files changed, 12 insertions(+), 11 deletions(-) commit ca1acc340c256a35f0db58805bba7cb337d9a5a3 @@ -14148,8 +21881,8 @@ Signed-off-by: Martin Sustrik - src/poll.cpp | 20 ++++++++++---------- - src/poll.hpp | 3 ++- + src/poll.cpp | 20 ++++++++++---------- + src/poll.hpp | 3 ++- 2 files changed, 12 insertions(+), 11 deletions(-) commit 1e0302633ea10766d21b2a70d62e6f16440c18d4 @@ -14160,8 +21893,8 @@ Signed-off-by: Mikko Koppanen - builds/msvc/libzmq/libzmq.vcproj | 77 ++++++++++++++++++++++++++++++++++++++++ - builds/msvc/msvc.sln | 17 +++++++++ + builds/msvc/libzmq/libzmq.vcproj | 77 ++++++++++++++++++++++++++++++++++++++ + builds/msvc/msvc.sln | 17 +++++++++ 2 files changed, 94 insertions(+) commit 72d320366f2a1076ced81f4e871c7affbb9ffb9d @@ -14172,8 +21905,8 @@ Signed-off-by: Mikko Koppanen - tests/Makefile.am | 5 +++- - tests/test_hwm.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 5 +++- + tests/test_hwm.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) commit 1b15eba9a9718adfeea5cecf499b8247596f6c71 @@ -14184,7 +21917,7 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 3 ++- + src/socket_base.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit f7f1dfc86dd649edbd789a5d157d74721338c912 @@ -14197,14 +21930,14 @@ Signed-off-by: Thijs Terlouw - AUTHORS | 1 + - doc/zmq_getsockopt.txt | 23 +++++++++++++++++++-- - doc/zmq_setsockopt.txt | 24 +++++++++++++++++++--- - include/zmq.h | 3 ++- - src/options.cpp | 22 ++++++++++++++++++++ - src/options.hpp | 6 +++++- - src/zmq_connecter.cpp | 55 ++++++++++++++++++++++++++++++++++---------------- - src/zmq_connecter.hpp | 12 +++++++++-- + AUTHORS | 1 + + doc/zmq_getsockopt.txt | 23 ++++++++++++++++++-- + doc/zmq_setsockopt.txt | 24 ++++++++++++++++++--- + include/zmq.h | 3 ++- + src/options.cpp | 22 +++++++++++++++++++ + src/options.hpp | 6 +++++- + src/zmq_connecter.cpp | 55 +++++++++++++++++++++++++++++++++--------------- + src/zmq_connecter.hpp | 12 +++++++++-- 8 files changed, 120 insertions(+), 26 deletions(-) commit 8e61a11b398c95d829f24c388737eb122405c97b @@ -14215,7 +21948,7 @@ Signed-off-by: Mikko Koppanen - tests/Makefile.am | 10 +++++----- + tests/Makefile.am | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 8561a55d2ca3f99ef7d122cf621b2379924152a5 @@ -14226,7 +21959,7 @@ Signed-off-by: Mikko Koppanen - src/zmq.cpp | 9 --------- + src/zmq.cpp | 9 --------- 1 file changed, 9 deletions(-) commit c91bf25645b27fb903886093b27fa153c60be2fd @@ -14239,8 +21972,8 @@ Signed-off-by: Dhammika Pathirana - src/decoder.hpp | 4 ++++ - src/zmq_engine.cpp | 2 +- + src/decoder.hpp | 4 ++++ + src/zmq_engine.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) commit 56bdba592cf336b2bd4241a2b8e331cd38a089e4 @@ -14251,14 +21984,14 @@ Signed-off-by: Martin Sustrik - src/ctx.cpp | 6 +++--- - src/epoll.cpp | 4 ++-- - src/kqueue.cpp | 2 +- - src/own.cpp | 2 +- - src/pgm_receiver.cpp | 2 +- - src/poller_base.cpp | 2 +- - src/select.cpp | 4 ++-- - src/xrep.cpp | 8 ++++---- + src/ctx.cpp | 6 +++--- + src/epoll.cpp | 4 ++-- + src/kqueue.cpp | 2 +- + src/own.cpp | 2 +- + src/pgm_receiver.cpp | 2 +- + src/poller_base.cpp | 2 +- + src/select.cpp | 4 ++-- + src/xrep.cpp | 8 ++++---- 8 files changed, 15 insertions(+), 15 deletions(-) commit b262f2fe9ba02a6d2749e286eaadc65d489600c9 @@ -14269,7 +22002,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_send.txt | 2 +- + doc/zmq_send.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 667b247e322e2f0e99b680170a1d004f124b0568 @@ -14283,7 +22016,7 @@ Signed-off-by: Steven McCoy - src/pgm_receiver.cpp | 6 ++++++ + src/pgm_receiver.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit a249d152003d7a7ebf048c2a9a0307abc1adb704 @@ -14294,7 +22027,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ 1 file changed, 8 insertions(+) commit 59fa0c9b46a7f8291c68564ad71ef97dd0bae69e @@ -14305,7 +22038,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit a348d94c09ab93a19a57ec22a86782e45f1d06ac @@ -14316,8 +22049,8 @@ Signed-off-by: Martin Sustrik - src/xpub.cpp | 19 ++++++++++++++++--- - src/xpub.hpp | 6 ++++++ + src/xpub.cpp | 19 ++++++++++++++++--- + src/xpub.hpp | 6 ++++++ 2 files changed, 22 insertions(+), 3 deletions(-) commit 58c9830d90fc39727cec88e48f8985a499aa0ee7 @@ -14328,8 +22061,8 @@ Signed-off-by: Martin Sustrik - src/xsub.cpp | 7 +++++-- - src/xsub.hpp | 4 ++++ + src/xsub.cpp | 7 +++++-- + src/xsub.hpp | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) commit 8eae7d8507b1c96aec28bca20a157bb7537c3eb8 @@ -14340,11 +22073,11 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 2 + - src/dist.cpp | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/dist.hpp | 76 ++++++++++++++++++++++++++ - src/xpub.cpp | 119 +++-------------------------------------- - src/xpub.hpp | 23 ++------ + src/Makefile.am | 2 + + src/dist.cpp | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/dist.hpp | 76 ++++++++++++++++++++++++++ + src/xpub.cpp | 119 +++------------------------------------- + src/xpub.hpp | 23 ++------ 5 files changed, 249 insertions(+), 132 deletions(-) commit 18f29ded6a83875c27395d254c25e3d152ae1cc6 @@ -14355,58 +22088,58 @@ Signed-off-by: Martin Sustrik - src/array.hpp | 4 ++-- - src/atomic_counter.hpp | 2 +- - src/atomic_ptr.hpp | 2 +- - src/clock.hpp | 2 +- - src/connect_session.hpp | 2 +- - src/ctx.hpp | 2 +- - src/decoder.hpp | 2 +- - src/devpoll.hpp | 2 +- - src/encoder.hpp | 2 +- - src/epoll.hpp | 2 +- - src/fq.hpp | 2 +- - src/io_object.hpp | 2 +- - src/kqueue.hpp | 2 +- - src/lb.hpp | 2 +- - src/mailbox.hpp | 2 +- - src/mutex.hpp | 2 +- - src/named_session.hpp | 2 +- - src/object.hpp | 2 +- - src/own.hpp | 2 +- - src/pair.hpp | 2 +- - src/pgm_receiver.hpp | 2 +- - src/pgm_sender.hpp | 2 +- - src/pipe.hpp | 4 ++-- - src/poll.hpp | 2 +- - src/poller_base.hpp | 2 +- - src/pub.hpp | 2 +- - src/pull.hpp | 2 +- - src/push.hpp | 2 +- - src/rep.hpp | 2 +- - src/req.hpp | 2 +- - src/select.hpp | 2 +- - src/semaphore.hpp | 6 +++--- - src/session.hpp | 2 +- - src/socket_base.hpp | 2 +- - src/sub.hpp | 2 +- - src/swap.hpp | 4 ++++ - src/tcp_connecter.hpp | 2 +- - src/tcp_listener.hpp | 2 +- - src/tcp_socket.hpp | 2 +- - src/thread.hpp | 2 +- - src/transient_session.hpp | 2 +- - src/trie.hpp | 2 +- - src/xpub.hpp | 2 +- - src/xrep.hpp | 2 +- - src/xreq.hpp | 2 +- - src/xsub.hpp | 2 +- - src/ypipe.hpp | 2 +- - src/yqueue.hpp | 2 +- - src/zmq_connecter.hpp | 2 +- - src/zmq_engine.hpp | 2 +- - src/zmq_init.hpp | 2 +- - src/zmq_listener.hpp | 2 +- + src/array.hpp | 4 ++-- + src/atomic_counter.hpp | 2 +- + src/atomic_ptr.hpp | 2 +- + src/clock.hpp | 2 +- + src/connect_session.hpp | 2 +- + src/ctx.hpp | 2 +- + src/decoder.hpp | 2 +- + src/devpoll.hpp | 2 +- + src/encoder.hpp | 2 +- + src/epoll.hpp | 2 +- + src/fq.hpp | 2 +- + src/io_object.hpp | 2 +- + src/kqueue.hpp | 2 +- + src/lb.hpp | 2 +- + src/mailbox.hpp | 2 +- + src/mutex.hpp | 2 +- + src/named_session.hpp | 2 +- + src/object.hpp | 2 +- + src/own.hpp | 2 +- + src/pair.hpp | 2 +- + src/pgm_receiver.hpp | 2 +- + src/pgm_sender.hpp | 2 +- + src/pipe.hpp | 4 ++-- + src/poll.hpp | 2 +- + src/poller_base.hpp | 2 +- + src/pub.hpp | 2 +- + src/pull.hpp | 2 +- + src/push.hpp | 2 +- + src/rep.hpp | 2 +- + src/req.hpp | 2 +- + src/select.hpp | 2 +- + src/semaphore.hpp | 6 +++--- + src/session.hpp | 2 +- + src/socket_base.hpp | 2 +- + src/sub.hpp | 2 +- + src/swap.hpp | 4 ++++ + src/tcp_connecter.hpp | 2 +- + src/tcp_listener.hpp | 2 +- + src/tcp_socket.hpp | 2 +- + src/thread.hpp | 2 +- + src/transient_session.hpp | 2 +- + src/trie.hpp | 2 +- + src/xpub.hpp | 2 +- + src/xrep.hpp | 2 +- + src/xreq.hpp | 2 +- + src/xsub.hpp | 2 +- + src/ypipe.hpp | 2 +- + src/yqueue.hpp | 2 +- + src/zmq_connecter.hpp | 2 +- + src/zmq_engine.hpp | 2 +- + src/zmq_init.hpp | 2 +- + src/zmq_listener.hpp | 2 +- 52 files changed, 59 insertions(+), 55 deletions(-) commit 70513871082462c957e46986040ebe7b10d64557 @@ -14417,10 +22150,10 @@ Signed-off-by: Neale Ferguson - AUTHORS | 1 + - configure.in | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++------ - src/Makefile.am | 14 +------------- - src/clock.cpp | 5 +++++ + AUTHORS | 1 + + configure.in | 59 +++++++++++++++++++++++++++++++++++++++++++++++++------ + src/Makefile.am | 14 +------------ + src/clock.cpp | 5 +++++ 4 files changed, 60 insertions(+), 19 deletions(-) commit 725ebce13ca7871002063c4a254bf532d35ee878 @@ -14431,7 +22164,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bd0ba6e89a709cc8afbd5a7c3c4f9f533c428249 @@ -14446,12 +22179,12 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + - src/ctx.cpp | 18 +++++++++--------- - src/ctx.hpp | 15 ++++++++++++--- - src/object.cpp | 6 +++--- - src/object.hpp | 4 ++-- - src/socket_base.cpp | 34 +++++++++++++++++++++++++--------- + AUTHORS | 1 + + src/ctx.cpp | 18 +++++++++--------- + src/ctx.hpp | 15 ++++++++++++--- + src/object.cpp | 6 +++--- + src/object.hpp | 4 ++-- + src/socket_base.cpp | 34 +++++++++++++++++++++++++--------- 6 files changed, 52 insertions(+), 26 deletions(-) commit babdf48aacc585d57457da8dec1fb6ce262bf719 @@ -14462,7 +22195,7 @@ Signed-off-by: Dhammika Pathirana - src/pipe.cpp | 3 ++- + src/pipe.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 8e0049e2fb60d31c07786fffe39fdc9c63369dfa @@ -14476,8 +22209,8 @@ Signed-off-by: Martin Sustrik - src/sub.cpp | 15 ++++++++++++++- - src/sub.hpp | 2 ++ + src/sub.cpp | 15 ++++++++++++++- + src/sub.hpp | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) commit 08cd2ce05da74143b6154f7d665756870077c38d @@ -14491,9 +22224,9 @@ Signed-off-by: MinRK - AUTHORS | 1 + - include/zmq.h | 2 +- - include/zmq_utils.h | 2 +- + AUTHORS | 1 + + include/zmq.h | 2 +- + include/zmq_utils.h | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) commit 472bdcd6b4995d2ab92e97aafa898f083ce1f3ba @@ -14504,7 +22237,7 @@ Signed-off-by: Martin Sustrik - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 95eebbfffaf512d81721697026dbb5434c12c27d @@ -14515,7 +22248,7 @@ Signed-off-by: Martin Sustrik - src/sub.cpp | 2 +- + src/sub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 51d2d9b9f82526a9b471dda272c1d54b3d1b1152 @@ -14526,7 +22259,7 @@ Signed-off-by: Martin Sustrik - src/decoder.cpp | 2 ++ + src/decoder.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 112d0cd52ec959a6bb4cf02ab03977bc22478246 @@ -14540,7 +22273,7 @@ Signed-off-by: Martin Sustrik - src/decoder.cpp | 2 ++ + src/decoder.cpp | 2 ++ 1 file changed, 2 insertions(+) commit cbbb1e925d699c8b42b2724740d68839c81684c3 @@ -14551,8 +22284,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 12 ++++++------ - configure.in | 5 +++++ + acinclude.m4 | 12 ++++++------ + configure.in | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) commit d15e881ea02232c3e875699b3c25f43ad2fd093c @@ -14563,7 +22296,7 @@ Signed-off-by: Martin Sustrik - src/zmq_engine.cpp | 3 ++- + src/zmq_engine.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit b19ee99bb1a2b19a6bf78c7fa2159a85aa608a10 @@ -14574,10 +22307,10 @@ Signed-off-by: Dhammika Pathirana - src/zmq_engine.cpp | 22 +++++++++++++++++++--- - src/zmq_engine.hpp | 3 +++ - src/zmq_init.cpp | 44 +++++++++++++++++++++++++++----------------- - src/zmq_init.hpp | 4 ++++ + src/zmq_engine.cpp | 22 +++++++++++++++++++--- + src/zmq_engine.hpp | 3 +++ + src/zmq_init.cpp | 44 +++++++++++++++++++++++++++----------------- + src/zmq_init.hpp | 4 ++++ 4 files changed, 53 insertions(+), 20 deletions(-) commit 27e83cc5258e191a7d5977e202046447df7896b9 @@ -14590,12 +22323,12 @@ Signed-off-by: Mikko Koppanen - src/lb.cpp | 9 ++++++++- - src/pair.cpp | 5 ++++- - src/pipe.cpp | 8 ++++---- - src/pipe.hpp | 6 +++--- - src/swap.cpp | 15 ++++++++++++++- - src/swap.hpp | 8 ++++++-- + src/lb.cpp | 9 ++++++++- + src/pair.cpp | 5 ++++- + src/pipe.cpp | 8 ++++---- + src/pipe.hpp | 6 +++--- + src/swap.cpp | 15 ++++++++++++++- + src/swap.hpp | 8 ++++++-- 6 files changed, 39 insertions(+), 12 deletions(-) commit a46980babe076d34347629a54e9635466e6e2a9f @@ -14606,10 +22339,10 @@ Signed-off-by: Mikko Koppanen - devices/zmq_forwarder/zmq_forwarder.cpp | 6 +++++- - devices/zmq_queue/zmq_queue.cpp | 6 +++++- - devices/zmq_streamer/zmq_streamer.cpp | 6 +++++- - src/device.cpp | 33 +++++++++++---------------------- + devices/zmq_forwarder/zmq_forwarder.cpp | 6 +++++- + devices/zmq_queue/zmq_queue.cpp | 6 +++++- + devices/zmq_streamer/zmq_streamer.cpp | 6 +++++- + src/device.cpp | 33 +++++++++++-------------------- 4 files changed, 26 insertions(+), 25 deletions(-) commit f749f2d21c1b47e6dcd626633acff764a4484b99 @@ -14620,8 +22353,8 @@ Signed-off-by: Dhammika Pathirana - src/socket_base.cpp | 50 ++++++++++++++++++++++++++++---------------------- - src/socket_base.hpp | 4 ++++ + src/socket_base.cpp | 50 ++++++++++++++++++++++++++++---------------------- + src/socket_base.hpp | 4 ++++ 2 files changed, 32 insertions(+), 22 deletions(-) commit 22b2b9a2b6e1dd18d58ef51f453d2b4777e71be4 @@ -14632,8 +22365,8 @@ Signed-off-by: Dhammika Pathirana - src/tcp_listener.cpp | 7 +++++-- - src/tcp_listener.hpp | 3 +++ + src/tcp_listener.cpp | 7 +++++-- + src/tcp_listener.hpp | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) commit a9d969a73e303db2f6ddf436740d0bbef7e63dba @@ -14644,7 +22377,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit fcfad5682ed7a7f5108853d2a7039aedfd9a9ac2 @@ -14662,12 +22395,12 @@ Signed-off-by: Bob Beaty - doc/zmq_getsockopt.txt | 20 ++++++++++++++++++++ - doc/zmq_setsockopt.txt | 24 ++++++++++++++++++++++++ - include/zmq.h | 1 + - src/options.cpp | 18 ++++++++++++++++++ - src/options.hpp | 2 ++ - src/pgm_socket.cpp | 32 ++++++++++++++++++-------------- + doc/zmq_getsockopt.txt | 20 ++++++++++++++++++++ + doc/zmq_setsockopt.txt | 24 ++++++++++++++++++++++++ + include/zmq.h | 1 + + src/options.cpp | 18 ++++++++++++++++++ + src/options.hpp | 2 ++ + src/pgm_socket.cpp | 32 ++++++++++++++++++-------------- 6 files changed, 83 insertions(+), 14 deletions(-) commit 1d81d2f1d4549c2cd0999c9544b059c29706f260 @@ -14678,7 +22411,7 @@ Signed-off-by: Mikko Koppanen - configure.in | 8 ++++++-- + configure.in | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit a3353150f845cf0f6e8f2355d3aad760bfba4b64 @@ -14689,7 +22422,7 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 2 +- + acinclude.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit aed2eeafdc2fce93738368749b61b36f98ea6cd6 @@ -14700,8 +22433,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- - configure.in | 16 +++++++--------- + acinclude.m4 | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- + configure.in | 16 +++++++--------- 2 files changed, 53 insertions(+), 11 deletions(-) commit 9bb5323a1abce0dcf8ed56734313a5249003d868 @@ -14712,7 +22445,7 @@ Signed-off-by: Martin Lucina - doc/zmq_socket.txt | 2 +- + doc/zmq_socket.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 73bbcb552d6fbd1b3744a1ee29202a19e4d2f46e @@ -14723,7 +22456,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 32 ++++++++------------------------ + builds/msvc/libzmq/libzmq.vcproj | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) commit 8d6cafe06696e17afff03adf4b33bd504b55e277 @@ -14734,16 +22467,16 @@ Signed-off-by: Martin Sustrik - src/Makefile.am | 8 +--- - src/device.cpp | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/device.hpp | 31 +++++++++++++ - src/forwarder.cpp | 60 ------------------------- - src/forwarder.hpp | 31 ------------- - src/queue.cpp | 130 ------------------------------------------------------ - src/queue.hpp | 31 ------------- - src/streamer.cpp | 60 ------------------------- - src/streamer.hpp | 31 ------------- - src/zmq.cpp | 24 ++++------ + src/Makefile.am | 8 +--- + src/device.cpp | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/device.hpp | 31 +++++++++++++ + src/forwarder.cpp | 60 ------------------------- + src/forwarder.hpp | 31 ------------- + src/queue.cpp | 130 ----------------------------------------------------- + src/queue.hpp | 31 ------------- + src/streamer.cpp | 60 ------------------------- + src/streamer.hpp | 31 ------------- + src/zmq.cpp | 24 ++++------ 10 files changed, 172 insertions(+), 364 deletions(-) commit ec61751e17fe4ceb62cc16750b12df6056c5962a @@ -14754,10 +22487,10 @@ Signed-off-by: Martin Sustrik - src/pub.cpp | 1 + - src/sub.cpp | 1 + - src/xpub.cpp | 2 +- - src/xsub.cpp | 2 +- + src/pub.cpp | 1 + + src/sub.cpp | 1 + + src/xpub.cpp | 2 +- + src/xsub.cpp | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) commit 8a6ff4ccd2ecbbfb7b2fd80fe621b8a05b0f9bbd @@ -14768,7 +22501,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ + builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) commit 2daa0bb49d52aeb1aa60c94505bdad72348e5d8e @@ -14779,10 +22512,10 @@ Signed-off-by: Martin Sustrik - src/sub.cpp | 31 +++++++++++++++++++++++++++++++ - src/sub.hpp | 4 ++++ - src/xsub.cpp | 40 +++++++++++++++++++++++++--------------- - src/xsub.hpp | 3 ++- + src/sub.cpp | 31 +++++++++++++++++++++++++++++++ + src/sub.hpp | 4 ++++ + src/xsub.cpp | 40 +++++++++++++++++++++++++--------------- + src/xsub.hpp | 3 ++- 4 files changed, 62 insertions(+), 16 deletions(-) commit c80e7b80cc726ca7c29493c2553c8d19792bb6e5 @@ -14796,17 +22529,17 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 4 +- - src/Makefile.am | 4 ++ - src/pub.cpp | 144 +------------------------------------------ - src/pub.hpp | 34 +---------- - src/socket_base.cpp | 11 +++- - src/sub.cpp | 134 +--------------------------------------- - src/sub.hpp | 38 +----------- - src/xpub.cpp | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/xpub.hpp | 73 ++++++++++++++++++++++ - src/xsub.cpp | 161 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/xsub.hpp | 78 ++++++++++++++++++++++++ + include/zmq.h | 4 +- + src/Makefile.am | 4 ++ + src/pub.cpp | 144 +------------------------------------------ + src/pub.hpp | 34 +--------- + src/socket_base.cpp | 11 +++- + src/sub.cpp | 134 +--------------------------------------- + src/sub.hpp | 38 +----------- + src/xpub.cpp | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/xpub.hpp | 73 ++++++++++++++++++++++ + src/xsub.cpp | 161 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/xsub.hpp | 78 +++++++++++++++++++++++ 11 files changed, 506 insertions(+), 346 deletions(-) commit abc8b5e40c55deb96e7674b15629f2affa4eb92a @@ -14817,7 +22550,7 @@ Signed-off-by: Martin Lucina - NEWS | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + NEWS | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) commit 4a3ed39a22655406e17c49fab4912c4681f3d7bf @@ -14828,9 +22561,9 @@ Signed-off-by: Steven McCoy - configure.in | 2 +- - foreign/openpgm/libpgm-5.0.91~dfsg.tar.gz | Bin 444731 -> 0 bytes - foreign/openpgm/libpgm-5.0.92~dfsg.tar.gz | Bin 0 -> 444700 bytes + configure.in | 2 +- + foreign/openpgm/libpgm-5.0.91~dfsg.tar.gz | Bin 444731 -> 0 bytes + foreign/openpgm/libpgm-5.0.92~dfsg.tar.gz | Bin 0 -> 444700 bytes 3 files changed, 1 insertion(+), 1 deletion(-) commit 520d621016691bcb2a0551147aaa38a9891080b3 @@ -14841,7 +22574,7 @@ Signed-off-by: Martin Lucina - configure.in | 13 +++++++++---- + configure.in | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit b70d628fad5ab97d24473b83fd18997b4e87477d @@ -14857,17 +22590,17 @@ Signed-off-by: Martin Lucina - doc/zmq.txt | 12 +++-- - doc/zmq_close.txt | 12 +++-- - doc/zmq_errno.txt | 2 +- - doc/zmq_getsockopt.txt | 116 +++++++++++++++++++++++++++++++++---------------- - doc/zmq_pgm.txt | 6 +-- - doc/zmq_poll.txt | 11 ++--- - doc/zmq_setsockopt.txt | 67 ++++++++++++++++++---------- - doc/zmq_socket.txt | 24 +++++++--- - doc/zmq_tcp.txt | 6 +-- - doc/zmq_term.txt | 27 +++++++----- - doc/zmq_version.txt | 2 +- + doc/zmq.txt | 12 +++-- + doc/zmq_close.txt | 12 +++-- + doc/zmq_errno.txt | 2 +- + doc/zmq_getsockopt.txt | 116 ++++++++++++++++++++++++++++++++---------------- + doc/zmq_pgm.txt | 6 +-- + doc/zmq_poll.txt | 11 ++--- + doc/zmq_setsockopt.txt | 67 ++++++++++++++++++---------- + doc/zmq_socket.txt | 24 +++++++--- + doc/zmq_tcp.txt | 6 +-- + doc/zmq_term.txt | 27 ++++++----- + doc/zmq_version.txt | 2 +- 11 files changed, 186 insertions(+), 99 deletions(-) commit 5bb0a339be31064900257e04e2ffd32e80911d63 @@ -14894,11 +22627,11 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 461 +++++++++++++++++++++++++++++++++++++++++++++++----- - autogen.sh | 6 - - configure.in | 212 ++++++++++++------------ - include/zmq.h | 14 +- - include/zmq_utils.h | 14 +- + acinclude.m4 | 461 ++++++++++++++++++++++++++++++++++++++++++++++----- + autogen.sh | 6 - + configure.in | 212 +++++++++++------------ + include/zmq.h | 14 +- + include/zmq_utils.h | 14 +- 5 files changed, 532 insertions(+), 175 deletions(-) commit 17d7e6ede0f907461130302cf4bddcdf9e2737cf @@ -14927,7 +22660,7 @@ Signed-off-by: Martin Lucina - src/kqueue.cpp | 2 +- + src/kqueue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 28db150aaf7b1cffb996f1b27bc082f75acec261 @@ -14938,7 +22671,7 @@ Signed-off-by: Steven McCoy - src/thread.cpp | 4 ++-- + src/thread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 325dd2f0914de502ae7687f94927fa98c20380c9 @@ -14952,9 +22685,9 @@ Signed-off-by: Martin Sustrik - src/thread.cpp | 54 +++++++++++++++++++++++------------------- - src/thread.hpp | 10 ++++---- - tests/test_shutdown_stress.cpp | 19 ++++++++------- + src/thread.cpp | 54 ++++++++++++++++++++++------------------ + src/thread.hpp | 10 ++++---- + tests/test_shutdown_stress.cpp | 19 ++++++++------ 3 files changed, 46 insertions(+), 37 deletions(-) commit 0bc2a05d84dc8e496a60d0c8def7689783e08e01 @@ -14965,7 +22698,7 @@ Signed-off-by: Martin Sustrik - .gitignore | 7 +++++++ + .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) commit c9584096e033850c77c4c3d4ee99e8073f7b26da @@ -14981,11 +22714,11 @@ Signed-off-by: Martin Lucina - configure.in | 12 ++++++++++++ - include/zmq.h | 8 ++++++++ - include/zmq_utils.h | 6 ++++++ - src/Makefile.am | 3 +-- - src/zmq.cpp | 8 ++++++++ + configure.in | 12 ++++++++++++ + include/zmq.h | 8 ++++++++ + include/zmq_utils.h | 6 ++++++ + src/Makefile.am | 3 +-- + src/zmq.cpp | 8 ++++++++ 5 files changed, 35 insertions(+), 2 deletions(-) commit 734624be760b3c7942eb26bea77fca918cb1540d @@ -14996,7 +22729,7 @@ Signed-off-by: Martin Sustrik - src/i_engine.hpp | 2 +- + src/i_engine.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 92618fd99ac19f3169552c25cbabffbe9e983f7f @@ -15007,7 +22740,7 @@ Signed-off-by: Sebastian Otaegui - builds/redhat/zeromq.spec | 3 ++- + builds/redhat/zeromq.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit a689047de091b2ffbc58cde4a89e98119ae0f599 @@ -15028,7 +22761,7 @@ Signed-off-by: Martin Sustrik - MAINTAINERS | 2 +- + MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ac40680ea2f6b32a3c451db1b606524e86a347dd @@ -15043,7 +22776,7 @@ Signed-off-by: Martin Sustrik - src/object.cpp | 3 ++- + src/object.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit edf7c18d79b195001d7ed7d05ac30a4d7a64bce1 @@ -15065,8 +22798,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 18 ++++++++++++++++++ - configure.in | 6 +++++- + acinclude.m4 | 18 ++++++++++++++++++ + configure.in | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) commit 945c931daf0c053a9cdbfdbb3ec7d0e90c29fc10 @@ -15082,8 +22815,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 3 --- - configure.in | 13 +++++++------ + acinclude.m4 | 3 --- + configure.in | 13 +++++++------ 2 files changed, 7 insertions(+), 9 deletions(-) commit 72a7b93f124cdaee8082aff218f6497c366f53f9 @@ -15098,7 +22831,7 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 41 +++++++++++++++++++++++++---------------- + acinclude.m4 | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) commit c86375831d4002ac58501bacebb3fd12d5c651b8 @@ -15111,7 +22844,7 @@ Signed-off-by: Mikko Koppanen - configure.in | 15 --------------- + configure.in | 15 --------------- 1 file changed, 15 deletions(-) commit b83d0a1bc077fdcc481fee40dcf4780669c3f3d2 @@ -15124,8 +22857,8 @@ Signed-off-by: Mikko Koppanen - configure.in | 1 - - src/Makefile.am | 2 +- + configure.in | 1 - + src/Makefile.am | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) commit 925595259b51dd84711b620afdf02245e537a38f @@ -15140,8 +22873,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 27 +++++++++++++++++++++++++++ - configure.in | 19 ++++++++++++++----- + acinclude.m4 | 27 +++++++++++++++++++++++++++ + configure.in | 19 ++++++++++++++----- 2 files changed, 41 insertions(+), 5 deletions(-) commit 3dbd5d58723bdc31eb00a6ebf4f643059a432f8c @@ -15156,8 +22889,8 @@ Signed-off-by: Mikko Koppanen - configure.in | 3 ++- - tests/Makefile.am | 9 +++++++-- + configure.in | 3 ++- + tests/Makefile.am | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) commit 34f50a6840fdf638bbd7887aa2438006baeb884d @@ -15183,7 +22916,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 20 ++++++++++---------- + builds/msvc/libzmq/libzmq.vcproj | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit 152c64f25df9d037e7f51874d2d66724337aad38 @@ -15194,7 +22927,7 @@ Signed-off-by: Martin Sustrik - builds/msvc/libzmq/libzmq.vcproj | 36 ++++++++++++++++++------------------ + builds/msvc/libzmq/libzmq.vcproj | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) commit da3327cf8780ea4d454e0aa8904b5aab3c446b23 @@ -15205,9 +22938,9 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 53 +++++++++++++++++++++++++++++++ - configure.in | 97 +++++++++++++++++++++++++++++++-------------------------- - src/Makefile.am | 3 +- + acinclude.m4 | 53 ++++++++++++++++++++++++++++++ + configure.in | 97 +++++++++++++++++++++++++++++-------------------------- + src/Makefile.am | 3 +- 3 files changed, 106 insertions(+), 47 deletions(-) commit f77c8ca47ff77af44eab7b4b8538ed49ec428eda @@ -15232,9 +22965,9 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + - configure.in | 1 + - src/zmq.cpp | 23 ++++++++++++++--------- + AUTHORS | 1 + + configure.in | 1 + + src/zmq.cpp | 23 ++++++++++++++--------- 3 files changed, 16 insertions(+), 9 deletions(-) commit a2500ae3485d6243778b832d22dc6dc02a00f025 @@ -15246,8 +22979,8 @@ Signed-off-by: Chia-liang Kao - AUTHORS | 1 + - src/zmq.cpp | 32 ++++++++++++++++---------------- + AUTHORS | 1 + + src/zmq.cpp | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) commit 8abe67357ab905c5c86191c1d9005666f66b6ca0 @@ -15276,8 +23009,8 @@ Signed-off-by: Marc Rossi - AUTHORS | 1 + - src/socket_base.cpp | 4 +++- + AUTHORS | 1 + + src/socket_base.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) commit c0217027ccd2267b05e017af436a842755d044b0 @@ -15288,7 +23021,7 @@ Signed-off-by: Martin Sustrik - src/mailbox.cpp | 39 +++++++++++++++++++++------------------ + src/mailbox.cpp | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) commit 9da84a5239e5356e34d872c2b5af1d19b9c7eb4f @@ -15304,20 +23037,20 @@ Signed-off-by: Martin Sustrik - MAINTAINERS | 2 +- - builds/msvc/libzmq/libzmq.vcproj | 4 +- - src/Makefile.am | 4 +- - src/ctx.cpp | 14 +- - src/ctx.hpp | 6 +- - src/io_thread.cpp | 12 +- - src/io_thread.hpp | 15 +- - src/mailbox.cpp | 378 +++++++++++++++++++++++++++++++++++++++ - src/mailbox.hpp | 61 +++++++ - src/own.cpp | 2 +- - src/signaler.cpp | 366 ------------------------------------- - src/signaler.hpp | 61 ------- - src/socket_base.cpp | 12 +- - src/socket_base.hpp | 10 +- + MAINTAINERS | 2 +- + builds/msvc/libzmq/libzmq.vcproj | 4 +- + src/Makefile.am | 4 +- + src/ctx.cpp | 14 +- + src/ctx.hpp | 6 +- + src/io_thread.cpp | 12 +- + src/io_thread.hpp | 15 +- + src/mailbox.cpp | 378 ++++++++++++++++++++++++++++++++++++++ + src/mailbox.hpp | 61 ++++++ + src/own.cpp | 2 +- + src/signaler.cpp | 366 ------------------------------------ + src/signaler.hpp | 61 ------ + src/socket_base.cpp | 12 +- + src/socket_base.hpp | 10 +- 14 files changed, 479 insertions(+), 468 deletions(-) commit 9cfdb441f45057c7106a101835d65164fce9470a @@ -15331,34 +23064,34 @@ Signed-off-by: Martin Sustrik - src/ctx.cpp | 12 ++++++------ - src/ctx.hpp | 6 +++--- - src/io_thread.cpp | 4 ++-- - src/io_thread.hpp | 2 +- - src/object.cpp | 14 +++++++------- - src/object.hpp | 8 ++++---- - src/own.cpp | 4 ++-- - src/own.hpp | 2 +- - src/pair.cpp | 4 ++-- - src/pair.hpp | 2 +- - src/pub.cpp | 4 ++-- - src/pub.hpp | 2 +- - src/pull.cpp | 4 ++-- - src/pull.hpp | 2 +- - src/push.cpp | 4 ++-- - src/push.hpp | 2 +- - src/rep.cpp | 4 ++-- - src/rep.hpp | 2 +- - src/req.cpp | 4 ++-- - src/req.hpp | 2 +- - src/socket_base.cpp | 24 ++++++++++++------------ - src/socket_base.hpp | 4 ++-- - src/sub.cpp | 4 ++-- - src/sub.hpp | 2 +- - src/xrep.cpp | 4 ++-- - src/xrep.hpp | 2 +- - src/xreq.cpp | 4 ++-- - src/xreq.hpp | 2 +- + src/ctx.cpp | 12 ++++++------ + src/ctx.hpp | 6 +++--- + src/io_thread.cpp | 4 ++-- + src/io_thread.hpp | 2 +- + src/object.cpp | 14 +++++++------- + src/object.hpp | 8 ++++---- + src/own.cpp | 4 ++-- + src/own.hpp | 2 +- + src/pair.cpp | 4 ++-- + src/pair.hpp | 2 +- + src/pub.cpp | 4 ++-- + src/pub.hpp | 2 +- + src/pull.cpp | 4 ++-- + src/pull.hpp | 2 +- + src/push.cpp | 4 ++-- + src/push.hpp | 2 +- + src/rep.cpp | 4 ++-- + src/rep.hpp | 2 +- + src/req.cpp | 4 ++-- + src/req.hpp | 2 +- + src/socket_base.cpp | 24 ++++++++++++------------ + src/socket_base.hpp | 4 ++-- + src/sub.cpp | 4 ++-- + src/sub.hpp | 2 +- + src/xrep.cpp | 4 ++-- + src/xrep.hpp | 2 +- + src/xreq.cpp | 4 ++-- + src/xreq.hpp | 2 +- 28 files changed, 67 insertions(+), 67 deletions(-) commit 623a9c9f1b53bdda9ad61f58cdc7a286e3e474cd @@ -15369,7 +23102,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 0ada4f8e30088e6a91fef7a45fd7e5dd7bdb9d1d @@ -15380,8 +23113,8 @@ Signed-off-by: Jacob Rideout - doc/zmq_getsockopt.txt | 6 +++--- - doc/zmq_setsockopt.txt | 12 ++++++------ + doc/zmq_getsockopt.txt | 6 +++--- + doc/zmq_setsockopt.txt | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) commit 1b39bcd88336ebed002e13a8ac3d4bc104b13718 @@ -15407,9 +23140,9 @@ Signed-off-by: Martin Lucina - src/config.hpp | 4 - - src/signaler.cpp | 403 +++++++++++++++++++++++++++---------------------------- - src/signaler.hpp | 18 +-- + src/config.hpp | 4 - + src/signaler.cpp | 403 ++++++++++++++++++++++++++---------------------------- + src/signaler.hpp | 18 +-- 3 files changed, 201 insertions(+), 224 deletions(-) commit 756f7df8c8e82a67f033049af47a3f783ad951e1 @@ -15420,7 +23153,7 @@ Signed-off-by: Martin Sustrik - src/select.cpp | 3 --- + src/select.cpp | 3 --- 1 file changed, 3 deletions(-) commit 2246689c8fcf37cd69bd8098b21dc28a9abbcdeb @@ -15434,7 +23167,7 @@ Signed-off-by: Martin Sustrik - src/select.cpp | 3 +++ + src/select.cpp | 3 +++ 1 file changed, 3 insertions(+) commit b90e621329688c83f21f26bbe0367966a245e607 @@ -15448,7 +23181,7 @@ Signed-off-by: Martin Sustrik - src/devpoll.cpp | 2 +- + src/devpoll.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d4a41067d3e873ba4a87c4711ad2f755e7de9157 @@ -15463,7 +23196,7 @@ Signed-off-by: Martin Sustrik - src/devpoll.cpp | 11 ++++++----- + src/devpoll.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit de93f6359f061d08846cd203ad3ba4fda915e504 @@ -15474,7 +23207,7 @@ Signed-off-by: Martin Sustrik - configure.in | 1 + + configure.in | 1 + 1 file changed, 1 insertion(+) commit dbcd38252435ff69f1043649a94ec985e7f1ff5b @@ -15498,8 +23231,8 @@ Signed-off-by: Martin Lucina - .gitignore | 1 - - INSTALL | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + .gitignore | 1 - + INSTALL | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 237 insertions(+), 1 deletion(-) commit 0ad71f88fe5531011c0354f22eeb070b1f729c7d @@ -15510,8 +23243,8 @@ Signed-off-by: Mikael Helbo Kjaer - src/select.cpp | 17 ++++++++--------- - src/select.hpp | 3 +++ + src/select.cpp | 17 ++++++++--------- + src/select.hpp | 3 +++ 2 files changed, 11 insertions(+), 9 deletions(-) commit 085b709021c44673d9bf65a5d639e3c2e99703af @@ -15522,8 +23255,8 @@ Signed-off-by: Martin Sustrik - doc/zmq_close.txt | 12 ++++++------ - doc/zmq_term.txt | 21 +++++++++------------ + doc/zmq_close.txt | 12 ++++++------ + doc/zmq_term.txt | 21 +++++++++------------ 2 files changed, 15 insertions(+), 18 deletions(-) commit 3d8eb071a2a664d8de1e2e2fa7cb46a4f2764e5e @@ -15534,8 +23267,8 @@ Signed-off-by: Martin Sustrik - src/pgm_socket.cpp | 211 +++++++++++++++++++++++++++++++++-------------------- - src/pgm_socket.hpp | 5 +- + src/pgm_socket.cpp | 211 ++++++++++++++++++++++++++++++++-------------------- + src/pgm_socket.hpp | 5 +- 2 files changed, 132 insertions(+), 84 deletions(-) commit b358df9fffd6a4155318356024358b8a1e2b9c9c @@ -15546,151 +23279,151 @@ Signed-off-by: Martin Sustrik - builds/msvc/platform.hpp | 6 +++--- - devices/zmq_forwarder/zmq_forwarder.cpp | 6 +++--- - devices/zmq_queue/zmq_queue.cpp | 6 +++--- - devices/zmq_streamer/zmq_streamer.cpp | 6 +++--- - include/zmq.h | 6 +++--- - include/zmq.hpp | 6 +++--- - include/zmq_utils.h | 6 +++--- - perf/local_lat.cpp | 6 +++--- - perf/local_thr.cpp | 6 +++--- - perf/remote_lat.cpp | 6 +++--- - perf/remote_thr.cpp | 6 +++--- - src/array.hpp | 6 +++--- - src/atomic_counter.hpp | 6 +++--- - src/atomic_ptr.hpp | 6 +++--- - src/blob.hpp | 6 +++--- - src/clock.cpp | 6 +++--- - src/clock.hpp | 6 +++--- - src/command.cpp | 6 +++--- - src/command.hpp | 6 +++--- - src/config.hpp | 6 +++--- - src/connect_session.cpp | 6 +++--- - src/connect_session.hpp | 6 +++--- - src/ctx.cpp | 6 +++--- - src/ctx.hpp | 6 +++--- - src/decoder.cpp | 6 +++--- - src/decoder.hpp | 6 +++--- - src/devpoll.cpp | 6 +++--- - src/devpoll.hpp | 6 +++--- - src/encoder.cpp | 6 +++--- - src/encoder.hpp | 6 +++--- - src/epoll.cpp | 6 +++--- - src/epoll.hpp | 6 +++--- - src/err.cpp | 6 +++--- - src/err.hpp | 6 +++--- - src/fd.hpp | 6 +++--- - src/forwarder.cpp | 6 +++--- - src/forwarder.hpp | 6 +++--- - src/fq.cpp | 6 +++--- - src/fq.hpp | 6 +++--- - src/i_engine.hpp | 6 +++--- - src/i_inout.hpp | 6 +++--- - src/i_poll_events.hpp | 32 ++++++++++++++++---------------- - src/io_object.cpp | 6 +++--- - src/io_object.hpp | 6 +++--- - src/io_thread.cpp | 6 +++--- - src/io_thread.hpp | 6 +++--- - src/ip.cpp | 6 +++--- - src/ip.hpp | 6 +++--- - src/kqueue.cpp | 6 +++--- - src/kqueue.hpp | 6 +++--- - src/lb.cpp | 6 +++--- - src/lb.hpp | 6 +++--- - src/likely.hpp | 6 +++--- - src/msg_content.hpp | 6 +++--- - src/mutex.hpp | 6 +++--- - src/named_session.cpp | 6 +++--- - src/named_session.hpp | 6 +++--- - src/object.cpp | 6 +++--- - src/object.hpp | 6 +++--- - src/options.cpp | 6 +++--- - src/options.hpp | 6 +++--- - src/own.cpp | 6 +++--- - src/own.hpp | 6 +++--- - src/pair.cpp | 6 +++--- - src/pair.hpp | 6 +++--- - src/pgm_receiver.cpp | 6 +++--- - src/pgm_receiver.hpp | 6 +++--- - src/pgm_sender.cpp | 6 +++--- - src/pgm_sender.hpp | 6 +++--- - src/pgm_socket.cpp | 6 +++--- - src/pgm_socket.hpp | 6 +++--- - src/pipe.cpp | 6 +++--- - src/pipe.hpp | 6 +++--- - src/poll.cpp | 6 +++--- - src/poll.hpp | 6 +++--- - src/poller.hpp | 6 +++--- - src/poller_base.cpp | 6 +++--- - src/poller_base.hpp | 6 +++--- - src/pub.cpp | 6 +++--- - src/pub.hpp | 6 +++--- - src/pull.cpp | 6 +++--- - src/pull.hpp | 6 +++--- - src/push.cpp | 6 +++--- - src/push.hpp | 6 +++--- - src/queue.cpp | 6 +++--- - src/queue.hpp | 6 +++--- - src/rep.cpp | 6 +++--- - src/rep.hpp | 6 +++--- - src/req.cpp | 6 +++--- - src/req.hpp | 6 +++--- - src/select.cpp | 6 +++--- - src/select.hpp | 6 +++--- - src/semaphore.hpp | 6 +++--- - src/session.cpp | 6 +++--- - src/session.hpp | 6 +++--- - src/signaler.cpp | 6 +++--- - src/signaler.hpp | 6 +++--- - src/socket_base.cpp | 6 +++--- - src/socket_base.hpp | 6 +++--- - src/stdint.hpp | 6 +++--- - src/streamer.cpp | 6 +++--- - src/streamer.hpp | 6 +++--- - src/sub.cpp | 6 +++--- - src/sub.hpp | 6 +++--- - src/swap.cpp | 6 +++--- - src/swap.hpp | 6 +++--- - src/tcp_connecter.cpp | 6 +++--- - src/tcp_connecter.hpp | 6 +++--- - src/tcp_listener.cpp | 6 +++--- - src/tcp_listener.hpp | 6 +++--- - src/tcp_socket.cpp | 6 +++--- - src/tcp_socket.hpp | 6 +++--- - src/thread.cpp | 6 +++--- - src/thread.hpp | 6 +++--- - src/transient_session.cpp | 6 +++--- - src/transient_session.hpp | 6 +++--- - src/trie.cpp | 6 +++--- - src/trie.hpp | 6 +++--- - src/uuid.cpp | 13 +++---------- - src/uuid.hpp | 6 +++--- - src/windows.hpp | 6 +++--- - src/wire.hpp | 6 +++--- - src/xrep.cpp | 6 +++--- - src/xrep.hpp | 6 +++--- - src/xreq.cpp | 6 +++--- - src/xreq.hpp | 6 +++--- - src/ypipe.hpp | 6 +++--- - src/yqueue.hpp | 6 +++--- - src/zmq.cpp | 6 +++--- - src/zmq_connecter.cpp | 6 +++--- - src/zmq_connecter.hpp | 6 +++--- - src/zmq_engine.cpp | 6 +++--- - src/zmq_engine.hpp | 6 +++--- - src/zmq_init.cpp | 6 +++--- - src/zmq_init.hpp | 6 +++--- - src/zmq_listener.cpp | 6 +++--- - src/zmq_listener.hpp | 6 +++--- - tests/test_pair_inproc.cpp | 6 +++--- - tests/test_pair_ipc.cpp | 6 +++--- - tests/test_pair_tcp.cpp | 6 +++--- - tests/test_reqrep_inproc.cpp | 6 +++--- - tests/test_reqrep_ipc.cpp | 6 +++--- - tests/test_reqrep_tcp.cpp | 6 +++--- - tests/test_shutdown_stress.cpp | 6 +++--- - tests/testutil.hpp | 6 +++--- + builds/msvc/platform.hpp | 6 +++--- + devices/zmq_forwarder/zmq_forwarder.cpp | 6 +++--- + devices/zmq_queue/zmq_queue.cpp | 6 +++--- + devices/zmq_streamer/zmq_streamer.cpp | 6 +++--- + include/zmq.h | 6 +++--- + include/zmq.hpp | 6 +++--- + include/zmq_utils.h | 6 +++--- + perf/local_lat.cpp | 6 +++--- + perf/local_thr.cpp | 6 +++--- + perf/remote_lat.cpp | 6 +++--- + perf/remote_thr.cpp | 6 +++--- + src/array.hpp | 6 +++--- + src/atomic_counter.hpp | 6 +++--- + src/atomic_ptr.hpp | 6 +++--- + src/blob.hpp | 6 +++--- + src/clock.cpp | 6 +++--- + src/clock.hpp | 6 +++--- + src/command.cpp | 6 +++--- + src/command.hpp | 6 +++--- + src/config.hpp | 6 +++--- + src/connect_session.cpp | 6 +++--- + src/connect_session.hpp | 6 +++--- + src/ctx.cpp | 6 +++--- + src/ctx.hpp | 6 +++--- + src/decoder.cpp | 6 +++--- + src/decoder.hpp | 6 +++--- + src/devpoll.cpp | 6 +++--- + src/devpoll.hpp | 6 +++--- + src/encoder.cpp | 6 +++--- + src/encoder.hpp | 6 +++--- + src/epoll.cpp | 6 +++--- + src/epoll.hpp | 6 +++--- + src/err.cpp | 6 +++--- + src/err.hpp | 6 +++--- + src/fd.hpp | 6 +++--- + src/forwarder.cpp | 6 +++--- + src/forwarder.hpp | 6 +++--- + src/fq.cpp | 6 +++--- + src/fq.hpp | 6 +++--- + src/i_engine.hpp | 6 +++--- + src/i_inout.hpp | 6 +++--- + src/i_poll_events.hpp | 32 +++++++++++++++---------------- + src/io_object.cpp | 6 +++--- + src/io_object.hpp | 6 +++--- + src/io_thread.cpp | 6 +++--- + src/io_thread.hpp | 6 +++--- + src/ip.cpp | 6 +++--- + src/ip.hpp | 6 +++--- + src/kqueue.cpp | 6 +++--- + src/kqueue.hpp | 6 +++--- + src/lb.cpp | 6 +++--- + src/lb.hpp | 6 +++--- + src/likely.hpp | 6 +++--- + src/msg_content.hpp | 6 +++--- + src/mutex.hpp | 6 +++--- + src/named_session.cpp | 6 +++--- + src/named_session.hpp | 6 +++--- + src/object.cpp | 6 +++--- + src/object.hpp | 6 +++--- + src/options.cpp | 6 +++--- + src/options.hpp | 6 +++--- + src/own.cpp | 6 +++--- + src/own.hpp | 6 +++--- + src/pair.cpp | 6 +++--- + src/pair.hpp | 6 +++--- + src/pgm_receiver.cpp | 6 +++--- + src/pgm_receiver.hpp | 6 +++--- + src/pgm_sender.cpp | 6 +++--- + src/pgm_sender.hpp | 6 +++--- + src/pgm_socket.cpp | 6 +++--- + src/pgm_socket.hpp | 6 +++--- + src/pipe.cpp | 6 +++--- + src/pipe.hpp | 6 +++--- + src/poll.cpp | 6 +++--- + src/poll.hpp | 6 +++--- + src/poller.hpp | 6 +++--- + src/poller_base.cpp | 6 +++--- + src/poller_base.hpp | 6 +++--- + src/pub.cpp | 6 +++--- + src/pub.hpp | 6 +++--- + src/pull.cpp | 6 +++--- + src/pull.hpp | 6 +++--- + src/push.cpp | 6 +++--- + src/push.hpp | 6 +++--- + src/queue.cpp | 6 +++--- + src/queue.hpp | 6 +++--- + src/rep.cpp | 6 +++--- + src/rep.hpp | 6 +++--- + src/req.cpp | 6 +++--- + src/req.hpp | 6 +++--- + src/select.cpp | 6 +++--- + src/select.hpp | 6 +++--- + src/semaphore.hpp | 6 +++--- + src/session.cpp | 6 +++--- + src/session.hpp | 6 +++--- + src/signaler.cpp | 6 +++--- + src/signaler.hpp | 6 +++--- + src/socket_base.cpp | 6 +++--- + src/socket_base.hpp | 6 +++--- + src/stdint.hpp | 6 +++--- + src/streamer.cpp | 6 +++--- + src/streamer.hpp | 6 +++--- + src/sub.cpp | 6 +++--- + src/sub.hpp | 6 +++--- + src/swap.cpp | 6 +++--- + src/swap.hpp | 6 +++--- + src/tcp_connecter.cpp | 6 +++--- + src/tcp_connecter.hpp | 6 +++--- + src/tcp_listener.cpp | 6 +++--- + src/tcp_listener.hpp | 6 +++--- + src/tcp_socket.cpp | 6 +++--- + src/tcp_socket.hpp | 6 +++--- + src/thread.cpp | 6 +++--- + src/thread.hpp | 6 +++--- + src/transient_session.cpp | 6 +++--- + src/transient_session.hpp | 6 +++--- + src/trie.cpp | 6 +++--- + src/trie.hpp | 6 +++--- + src/uuid.cpp | 13 +++---------- + src/uuid.hpp | 6 +++--- + src/windows.hpp | 6 +++--- + src/wire.hpp | 6 +++--- + src/xrep.cpp | 6 +++--- + src/xrep.hpp | 6 +++--- + src/xreq.cpp | 6 +++--- + src/xreq.hpp | 6 +++--- + src/ypipe.hpp | 6 +++--- + src/yqueue.hpp | 6 +++--- + src/zmq.cpp | 6 +++--- + src/zmq_connecter.cpp | 6 +++--- + src/zmq_connecter.hpp | 6 +++--- + src/zmq_engine.cpp | 6 +++--- + src/zmq_engine.hpp | 6 +++--- + src/zmq_init.cpp | 6 +++--- + src/zmq_init.hpp | 6 +++--- + src/zmq_listener.cpp | 6 +++--- + src/zmq_listener.hpp | 6 +++--- + tests/test_pair_inproc.cpp | 6 +++--- + tests/test_pair_ipc.cpp | 6 +++--- + tests/test_pair_tcp.cpp | 6 +++--- + tests/test_reqrep_inproc.cpp | 6 +++--- + tests/test_reqrep_ipc.cpp | 6 +++--- + tests/test_reqrep_tcp.cpp | 6 +++--- + tests/test_shutdown_stress.cpp | 6 +++--- + tests/testutil.hpp | 6 +++--- 145 files changed, 448 insertions(+), 455 deletions(-) commit 3d01b929fe5e57311ea62fff4a37abbeaab1b3eb @@ -15701,7 +23434,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 9384faf7e5f2fb58d976df8b29f979402346207a @@ -15712,7 +23445,7 @@ Signed-off-by: Peter Bourgon - include/zmq.hpp | 5 +++++ + include/zmq.hpp | 5 +++++ 1 file changed, 5 insertions(+) commit dace2473f1cfea902dfd3be4a233f4092397d65a @@ -15723,7 +23456,7 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 3eb935ef6e211d2fa5094ae032777ed319253d11 @@ -15734,7 +23467,7 @@ Signed-off-by: Burak Arslan - include/zmq.hpp | 4 ++-- + include/zmq.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9a1d4df0fd29e040756bff6302cf9a134074d9b9 @@ -15745,7 +23478,7 @@ Signed-off-by: Dhammika Pathirana - src/session.cpp | 2 +- + src/session.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 465da7b17eef4c86020a5def41a87977410b965a @@ -15756,8 +23489,8 @@ Signed-off-by: Dhammika Pathirana - src/session.cpp | 9 +++++++-- - src/zmq_init.hpp | 2 +- + src/session.cpp | 9 +++++++-- + src/zmq_init.hpp | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) commit 401986e6bb565f94d975acaba9504eb6ee3c8598 @@ -15770,8 +23503,8 @@ Signed-off-by: Martin Sustrik - AUTHORS | 1 + - src/clock.cpp | 4 ++++ + AUTHORS | 1 + + src/clock.cpp | 4 ++++ 2 files changed, 5 insertions(+) commit e1debf15bbdb0747cffb6013d59fb3f73462a600 @@ -15782,9 +23515,9 @@ Signed-off-by: Steven McCoy - configure.in | 2 +- - foreign/openpgm/libpgm-5.0.78.tar.gz | Bin 511599 -> 0 bytes - foreign/openpgm/libpgm-5.0.91~dfsg.tar.gz | Bin 0 -> 444731 bytes + configure.in | 2 +- + foreign/openpgm/libpgm-5.0.78.tar.gz | Bin 511599 -> 0 bytes + foreign/openpgm/libpgm-5.0.91~dfsg.tar.gz | Bin 0 -> 444731 bytes 3 files changed, 1 insertion(+), 1 deletion(-) commit 11af0fcc54d06052bbbf20c64a3ce31000d02f7d @@ -15805,7 +23538,7 @@ Signed-off-by: Mikko Koppanen - configure.in | 6 ++++-- + configure.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 71bef330fc9f09ee070c90d174fc0bcb7783b38d @@ -15816,9 +23549,9 @@ Signed-off-by: Dhammika Pathirana - src/decoder.cpp | 26 ++++++++++++++++++-------- - src/decoder.hpp | 23 +++++++++++++++++++---- - src/zmq_engine.cpp | 26 ++++++++++++++++---------- + src/decoder.cpp | 26 ++++++++++++++++++-------- + src/decoder.hpp | 23 +++++++++++++++++++---- + src/zmq_engine.cpp | 26 ++++++++++++++++---------- 3 files changed, 53 insertions(+), 22 deletions(-) commit 8d6979922efff7183ce03b49715472e5b2a6a1df @@ -15829,9 +23562,9 @@ Signed-off-by: Steven McCoy - src/pgm_socket.cpp | 1 - - src/pgm_socket.hpp | 1 + - src/zmq.cpp | 1 + + src/pgm_socket.cpp | 1 - + src/pgm_socket.hpp | 1 + + src/zmq.cpp | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) commit da59f8dd7a7f275eff98e5705767ac89ac503912 @@ -15856,7 +23589,7 @@ Signed-off-by: Martin Sustrik - src/object.cpp | 4 ++-- + src/object.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e73c96ba30c5e9ada83592bc2289a56eeadf6155 @@ -15867,7 +23600,7 @@ Signed-off-by: Martin Sustrik - src/session.cpp | 2 ++ + src/session.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 0c86f90280d69bd360f7566f9549c904c26d5e42 @@ -15878,7 +23611,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 2 +- + doc/zmq_getsockopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit a780833683ed1f5bc4a112644836973f8282434b @@ -15889,15 +23622,15 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 13 +++++++++++++ - doc/zmq_setsockopt.txt | 13 +++++++++++++ - include/zmq.h | 1 + - src/config.hpp | 4 ---- - src/options.cpp | 19 +++++++++++++++++++ - src/options.hpp | 3 +++ - src/tcp_listener.cpp | 12 +++++++----- - src/tcp_listener.hpp | 3 ++- - src/zmq_listener.cpp | 2 +- + doc/zmq_getsockopt.txt | 13 +++++++++++++ + doc/zmq_setsockopt.txt | 13 +++++++++++++ + include/zmq.h | 1 + + src/config.hpp | 4 ---- + src/options.cpp | 19 +++++++++++++++++++ + src/options.hpp | 3 +++ + src/tcp_listener.cpp | 12 +++++++----- + src/tcp_listener.hpp | 3 ++- + src/zmq_listener.cpp | 2 +- 9 files changed, 59 insertions(+), 11 deletions(-) commit e8e2944f45eab3e22dc46ceac3225a886ca468ad @@ -15908,14 +23641,14 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 15 +++++++++++-- - doc/zmq_setsockopt.txt | 13 +++++++++++ - include/zmq.h | 1 + - src/config.hpp | 3 --- - src/options.cpp | 59 +++++++++++++++++++++++++++++++++++--------------- - src/options.hpp | 3 +++ - src/zmq_connecter.cpp | 15 +++++++------ - src/zmq_connecter.hpp | 2 +- + doc/zmq_getsockopt.txt | 15 ++++++++++-- + doc/zmq_setsockopt.txt | 13 +++++++++++ + include/zmq.h | 1 + + src/config.hpp | 3 --- + src/options.cpp | 59 +++++++++++++++++++++++++++++++++--------------- + src/options.hpp | 3 +++ + src/zmq_connecter.cpp | 15 ++++++------ + src/zmq_connecter.hpp | 2 +- 8 files changed, 80 insertions(+), 31 deletions(-) commit 8b8837688a97c4d05aff01a6dea7ac5a35b21fa2 @@ -15926,7 +23659,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 16 ++++++++++++++-- + src/zmq.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) commit 72b15a6dae6c199d847ebde5ac73de238f0ebf75 @@ -15937,9 +23670,9 @@ Signed-off-by: Martin Sustrik - src/err.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ - src/err.hpp | 9 ++++++--- - src/zmq.cpp | 38 +------------------------------------- + src/err.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ + src/err.hpp | 9 ++++++--- + src/zmq.cpp | 38 +------------------------------------- 3 files changed, 48 insertions(+), 40 deletions(-) commit 61d38fbeed89d69516b9976c60b7711fefed6411 @@ -15950,8 +23683,8 @@ Signed-off-by: Martin Sustrik - src/clock.cpp | 4 ++-- - src/clock.hpp | 3 +++ + src/clock.cpp | 4 ++-- + src/clock.hpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) commit 0a03e86e9547fa7c221b316a5a943467adea3dfd @@ -15971,40 +23704,40 @@ Signed-off-by: Martin Sustrik - doc/zmq_getsockopt.txt | 16 ++++++++++++++++ - doc/zmq_setsockopt.txt | 16 ++++++++++++++++ - include/zmq.h | 1 + - src/command.hpp | 1 + - src/object.cpp | 7 ++++--- - src/object.hpp | 4 ++-- - src/options.cpp | 18 ++++++++++++++++++ - src/options.hpp | 3 +++ - src/own.cpp | 20 ++++++++++++-------- - src/own.hpp | 8 ++++++-- - src/pair.cpp | 4 ++-- - src/pair.hpp | 2 +- - src/pub.cpp | 4 ++-- - src/pub.hpp | 2 +- - src/pull.cpp | 4 ++-- - src/pull.hpp | 2 +- - src/push.cpp | 4 ++-- - src/push.hpp | 2 +- - src/session.cpp | 40 ++++++++++++++++++++++++++++++++++++---- - src/session.hpp | 17 ++++++++++++----- - src/socket_base.cpp | 4 ++-- - src/socket_base.hpp | 6 +----- - src/sub.cpp | 4 ++-- - src/sub.hpp | 2 +- - src/xrep.cpp | 4 ++-- - src/xrep.hpp | 2 +- - src/xreq.cpp | 4 ++-- - src/xreq.hpp | 2 +- - src/zmq_connecter.cpp | 5 ++--- - src/zmq_connecter.hpp | 4 ---- - src/zmq_init.cpp | 3 +-- - src/zmq_init.hpp | 4 ---- - src/zmq_listener.cpp | 7 +++---- - src/zmq_listener.hpp | 6 +----- + doc/zmq_getsockopt.txt | 16 ++++++++++++++++ + doc/zmq_setsockopt.txt | 16 ++++++++++++++++ + include/zmq.h | 1 + + src/command.hpp | 1 + + src/object.cpp | 7 ++++--- + src/object.hpp | 4 ++-- + src/options.cpp | 18 ++++++++++++++++++ + src/options.hpp | 3 +++ + src/own.cpp | 20 ++++++++++++-------- + src/own.hpp | 8 ++++++-- + src/pair.cpp | 4 ++-- + src/pair.hpp | 2 +- + src/pub.cpp | 4 ++-- + src/pub.hpp | 2 +- + src/pull.cpp | 4 ++-- + src/pull.hpp | 2 +- + src/push.cpp | 4 ++-- + src/push.hpp | 2 +- + src/session.cpp | 40 ++++++++++++++++++++++++++++++++++++---- + src/session.hpp | 17 ++++++++++++----- + src/socket_base.cpp | 4 ++-- + src/socket_base.hpp | 6 +----- + src/sub.cpp | 4 ++-- + src/sub.hpp | 2 +- + src/xrep.cpp | 4 ++-- + src/xrep.hpp | 2 +- + src/xreq.cpp | 4 ++-- + src/xreq.hpp | 2 +- + src/zmq_connecter.cpp | 5 ++--- + src/zmq_connecter.hpp | 4 ---- + src/zmq_init.cpp | 3 +-- + src/zmq_init.hpp | 4 ---- + src/zmq_listener.cpp | 7 +++---- + src/zmq_listener.hpp | 6 +----- 34 files changed, 158 insertions(+), 74 deletions(-) commit a1474e305762d32df2b79300d124aac7fa0181c8 @@ -16015,8 +23748,8 @@ Signed-off-by: Toralf Wittner - AUTHORS | 1 + - src/pgm_sender.cpp | 6 +++--- + AUTHORS | 1 + + src/pgm_sender.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) commit 733c6780c557a0eaacdf17961fb8f3841c65f862 @@ -16029,7 +23762,7 @@ Signed-off-by: Martin Sustrik - src/pipe.hpp | 4 ++-- + src/pipe.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b95f11aa0a7887f5eb8eb8e2e0f09532bc3604ba @@ -16040,8 +23773,8 @@ Signed-off-by: Mikko Koppanen - acinclude.m4 | 17 +++++++++++++++++ - configure.in | 13 +++++++++---- + acinclude.m4 | 17 +++++++++++++++++ + configure.in | 13 +++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) commit 48b0a901b8056957e36ba52ae4416d656971bb47 @@ -16052,7 +23785,7 @@ Signed-off-by: Martin Sustrik - src/config.hpp | 4 ---- + src/config.hpp | 4 ---- 1 file changed, 4 deletions(-) commit ae5a3c8a99a30b54d0b079bbd98be286685056e8 @@ -16078,7 +23811,7 @@ Signed-off-by: Martin Sustrik - include/zmq.h | 2 +- + include/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 18d46c81047fc2f8449a5b4ff3e41cc25bd1cfc2 @@ -16096,7 +23829,7 @@ Signed-off-by: Martin Sustrik - NEWS | 28 ++++++++++++++++++++++++++++ + NEWS | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit 027eed41b8bf16cb8b2f9f83be1fe286b39e4fd8 @@ -16123,9 +23856,9 @@ Signed-off-by: Taras Shpot - AUTHORS | 1 + - src/uuid.cpp | 2 ++ - src/uuid.hpp | 2 +- + AUTHORS | 1 + + src/uuid.cpp | 2 ++ + src/uuid.hpp | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) commit 2e9871ce34b5abc60ebc37c1887b76895537d62a @@ -16151,9 +23884,9 @@ Signed-off-by: Martin Lucina - configure.in | 2 +- - foreign/openpgm/libpgm-2-1-28~dfsg.tar.gz | Bin 0 -> 340501 bytes - foreign/openpgm/libpgm-2.1.26.tar.gz | Bin 413863 -> 0 bytes + configure.in | 2 +- + foreign/openpgm/libpgm-2-1-28~dfsg.tar.gz | Bin 0 -> 340501 bytes + foreign/openpgm/libpgm-2.1.26.tar.gz | Bin 413863 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) commit eeb8e7c8beef83fe8c23bde888a1081fc9e8e3ec @@ -16183,7 +23916,7 @@ Signed-off-by: Martin Lucina - Makefile.am | 18 +++++++++++++----- + Makefile.am | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) commit 3b3df731e60d604794538d0b9f6cb5b802a8745d @@ -16201,10 +23934,10 @@ Signed-off-by: Martin Lucina - Makefile.am | 1 + - configure.in | 8 +++++--- - include/zmq.h | 21 +++++++++++---------- - version.sh | 21 +++++++++++++++++++++ + Makefile.am | 1 + + configure.in | 8 +++++--- + include/zmq.h | 21 +++++++++++---------- + version.sh | 21 +++++++++++++++++++++ 4 files changed, 38 insertions(+), 13 deletions(-) commit 7b9e39724eeecf33dde3b0e4fd9f205480afb977 @@ -16215,7 +23948,7 @@ Signed-off-by: Martin Sustrik - src/devpoll.hpp | 2 +- + src/devpoll.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 17b0785744287d0897175ed13000fba710c2dc5b @@ -16226,7 +23959,7 @@ Signed-off-by: Martin Sustrik - src/poller_base.hpp | 2 +- + src/poller_base.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3e74a439c4b7901f3d3607a2d4142266bc1781b4 @@ -16237,11 +23970,11 @@ Signed-off-by: Mikko Koppanen - src/devpoll.cpp | 2 +- - src/epoll.cpp | 2 +- - src/kqueue.cpp | 2 +- - src/poll.cpp | 2 +- - src/select.cpp | 2 +- + src/devpoll.cpp | 2 +- + src/epoll.cpp | 2 +- + src/kqueue.cpp | 2 +- + src/poll.cpp | 2 +- + src/select.cpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) commit b64b50ae218dbbc362eaeb0571a337650f623e3c @@ -16252,9 +23985,9 @@ Signed-off-by: Martin Sustrik - src/pgm_receiver.cpp | 10 +++++++--- - src/pgm_sender.cpp | 17 ++++++++++++++--- - src/pgm_sender.hpp | 3 ++- + src/pgm_receiver.cpp | 10 +++++++--- + src/pgm_sender.cpp | 17 ++++++++++++++--- + src/pgm_sender.hpp | 3 ++- 3 files changed, 23 insertions(+), 7 deletions(-) commit e288f7a347eb5a2fd38043d930fc67c8e8bcce9b @@ -16265,7 +23998,7 @@ Signed-off-by: Mikko Koppanen - configure.in | 6 ++++-- + configure.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit e33e4d7650e36af7d09569de21f7f71b5670945c @@ -16276,8 +24009,8 @@ Signed-off-by: Mikko Koppanen - AUTHORS | 1 + - src/pipe.hpp | 4 ++-- + AUTHORS | 1 + + src/pipe.hpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) commit 03a18c27ace49cbcbb0c495e4c575c34b8f862a4 @@ -16291,7 +24024,7 @@ Signed-off-by: Martin Pales - src/clock.cpp | 8 ++++++++ + src/clock.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit 26d7669464054a4aed3f0ee9643bffa0e01aab5c @@ -16300,7 +24033,7 @@ Added bin directory to ignore list. - .gitignore | 1 + + .gitignore | 1 + 1 file changed, 1 insertion(+) commit b7386f5b5031b2e75fb4370069935d7f6a0eedbb @@ -16311,10 +24044,10 @@ Signed-off-by: Martin Sustrik - src/ctx.cpp | 4 ++-- - src/pgm_receiver.cpp | 2 +- - src/socket_base.cpp | 2 +- - src/xrep.cpp | 2 +- + src/ctx.cpp | 4 ++-- + src/pgm_receiver.cpp | 2 +- + src/socket_base.cpp | 2 +- + src/xrep.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit f9e6d94be56fab6d1d8e281e48bb5d6091562acb @@ -16328,7 +24061,7 @@ Signed-off-by: Martin Pales - src/poller_base.cpp | 2 +- + src/poller_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit cafcdbbe2bc9c78899568bb6cb957b700e12c66b @@ -16343,7 +24076,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 32 +++++++++++++++++++------------- + src/zmq.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) commit b174ad2c45c746e56b41671a3d68ef496bba6b97 @@ -16354,7 +24087,7 @@ Signed-off-by: Martin Sustrik - doc/zmq_poll.txt | 8 +------- + doc/zmq_poll.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) commit da73b7c6f60f2ea1adc6fbd99e22576b9ce2f316 @@ -16367,8 +24100,8 @@ Signed-off-by: Martin Pales - AUTHORS | 1 + - src/devpoll.cpp | 2 +- + AUTHORS | 1 + + src/devpoll.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit e2167cecaefec6557c7a5712fb75e51487ff69a6 @@ -16379,7 +24112,7 @@ Signed-off-by: Martin Sustrik - src/zmq.cpp | 127 ++++++++++++++++++++++++++++++++++++++++++------------------ + src/zmq.cpp | 127 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 90 insertions(+), 37 deletions(-) commit 9d96e0037a9d027fd286f771fa2a8db5def485c8 @@ -16395,14 +24128,14 @@ Signed-off-by: Martin Sustrik - src/connect_session.cpp | 9 ++++----- - src/connect_session.hpp | 3 ++- - src/named_session.cpp | 15 +++++---------- - src/named_session.hpp | 5 +---- - src/session.cpp | 18 ++++++++---------- - src/session.hpp | 12 ++++++------ - src/transient_session.cpp | 4 ++++ - src/transient_session.hpp | 3 ++- + src/connect_session.cpp | 9 ++++----- + src/connect_session.hpp | 3 ++- + src/named_session.cpp | 15 +++++---------- + src/named_session.hpp | 5 +---- + src/session.cpp | 18 ++++++++---------- + src/session.hpp | 12 ++++++------ + src/transient_session.cpp | 4 ++++ + src/transient_session.hpp | 3 ++- 8 files changed, 32 insertions(+), 37 deletions(-) commit 5ae878b891fa5189f5202f1577d22bdb9ba51f77 @@ -16423,8 +24156,8 @@ Signed-off-by: Sebastian Otaegui - AUTHORS | 1 + - builds/redhat/zeromq.spec | 7 +++++++ + AUTHORS | 1 + + builds/redhat/zeromq.spec | 7 +++++++ 2 files changed, 8 insertions(+) commit 954d7f743dbc0c159794915c6deadc374dbf64d2 @@ -16441,8 +24174,8 @@ Signed-off-by: Martin Sustrik - src/session.cpp | 40 ++++++++++++++++++++++++---------------- - src/session.hpp | 3 +++ + src/session.cpp | 40 ++++++++++++++++++++++++---------------- + src/session.hpp | 3 +++ 2 files changed, 27 insertions(+), 16 deletions(-) commit c6d74e0a0345cae2c09c6fb29911159331c93e64 @@ -16453,7 +24186,7 @@ Signed-off-by: Steven McCoy - src/pgm_socket.cpp | 30 +++++++++++++----------------- + src/pgm_socket.cpp | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) commit 5b8af52efc0ddf1df5506a2800aa69bc50a44ddb @@ -16464,8 +24197,8 @@ Signed-off-by: Steven McCoy - src/pgm_receiver.cpp | 2 ++ - src/pgm_sender.cpp | 12 ++++++++---- + src/pgm_receiver.cpp | 2 ++ + src/pgm_sender.cpp | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) commit e168173162dd26238a799c19142bab8b7885ebb3 @@ -16495,7 +24228,7 @@ Signed-off-by: Martin Lucina - configure.in | 11 ----------- + configure.in | 11 ----------- 1 file changed, 11 deletions(-) commit 6cd0867f0208b4fca4cfca2a2ff7bc0de5199d4a @@ -16509,7 +24242,7 @@ Signed-off-by: Martin Sustrik - configure.in | 4 +++- + configure.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit f22e85f19f2bf58285e4984e875487f17c85e791 @@ -16524,7 +24257,7 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 7 ------- + src/xrep.cpp | 7 ------- 1 file changed, 7 deletions(-) commit 73e7ef37c2e72dd542d20ddc5be30cedce68e329 @@ -16535,7 +24268,7 @@ Signed-off-by: Martin Sustrik - src/xrep.cpp | 29 +++++++++++++++-------------- + src/xrep.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) commit f5030a93a52fc73292c16dae5f8e0e1b39732df0 @@ -16549,8 +24282,8 @@ Signed-off-by: Christian Gudrian - AUTHORS | 1 + - src/select.cpp | 6 +++--- + AUTHORS | 1 + + src/select.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) commit 318cdd1f24cd663702222cc182ae2ccac5e76870 @@ -16582,10 +24315,10 @@ Signed-off-by: Martin Sustrik - builds/msvc/platform.hpp | 6 +----- - configure.in | 13 ------------- - include/zmq.h | 10 ++++++++++ - src/zmq.cpp | 6 +++--- + builds/msvc/platform.hpp | 6 +----- + configure.in | 13 ------------- + include/zmq.h | 10 ++++++++++ + src/zmq.cpp | 6 +++--- 4 files changed, 14 insertions(+), 21 deletions(-) commit 214b56077a7e5d12813c8034013171d33283566c @@ -16598,7 +24331,7 @@ Signed-off-by: Martin Lucina - src/zmq_connecter.cpp | 1 + + src/zmq_connecter.cpp | 1 + 1 file changed, 1 insertion(+) commit daf5d3273b1930af7e4c54ee597b89ecb3763000 @@ -16612,9 +24345,9 @@ Signed-off-by: Martin Sustrik - src/connect_session.cpp | 2 ++ - src/named_session.cpp | 1 + - src/session.cpp | 10 ++++++++-- + src/connect_session.cpp | 2 ++ + src/named_session.cpp | 1 + + src/session.cpp | 10 ++++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) commit f90c8d957ea2a11c73a307aae2494a26d22c2f3b @@ -16634,10 +24367,10 @@ Signed-off-by: Martin Lucina - src/config.hpp | 9 ++++++++- - src/signaler.cpp | 39 ++++++++++++++++++++++++++++++++------- - src/zmq_connecter.cpp | 25 +++++++++++++++++++++---- - src/zmq_connecter.hpp | 3 +++ + src/config.hpp | 9 ++++++++- + src/signaler.cpp | 39 ++++++++++++++++++++++++++++++++------- + src/zmq_connecter.cpp | 25 +++++++++++++++++++++---- + src/zmq_connecter.hpp | 3 +++ 4 files changed, 64 insertions(+), 12 deletions(-) commit 7a685b0f88386b11c4c1fcbb45324aa28f4e2eac @@ -16651,16 +24384,16 @@ Signed-off-by: Martin Sustrik - src/fq.cpp | 4 ++ - src/fq.hpp | 1 + - src/pair.cpp | 12 ++++-- - src/pair.hpp | 1 + - src/pipe.cpp | 7 ++++ - src/pipe.hpp | 1 + - src/session.cpp | 111 +++++++++++++++++++++++++++++--------------------------- - src/session.hpp | 25 ++++++++----- - src/xrep.cpp | 4 ++ - src/xrep.hpp | 1 + + src/fq.cpp | 4 ++ + src/fq.hpp | 1 + + src/pair.cpp | 12 ++++-- + src/pair.hpp | 1 + + src/pipe.cpp | 7 ++++ + src/pipe.hpp | 1 + + src/session.cpp | 111 ++++++++++++++++++++++++++++--------------------------- + src/session.hpp | 25 ++++++++----- + src/xrep.cpp | 4 ++ + src/xrep.hpp | 1 + 10 files changed, 99 insertions(+), 68 deletions(-) commit 965fb7755b50ca1522f076da46fa3651812126e1 @@ -16669,7 +24402,7 @@ configure.in: OpenPGM no longer requires pkg-config - configure.in | 14 +++----------- + configure.in | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) commit d62d721f1a6f7c9df627b3f3fa8e200ddc9bf5f5 @@ -16678,7 +24411,7 @@ configure.in: Add amd64 to OpenPGM supported platforms - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1d431190f50c86f624605ab11c1580b2d2f7ee06 @@ -16687,8 +24420,8 @@ make sure that reader does not terminate in the middle of a multipart message - AUTHORS | 1 + - src/xrep.cpp | 7 +++++++ + AUTHORS | 1 + + src/xrep.cpp | 7 +++++++ 2 files changed, 8 insertions(+) commit 2142b8918a0cea79c79c8ed8ce5652148abe4a39 @@ -16697,7 +24430,7 @@ issue 92 -- Assertion failed: inpipe && outpipe (pair.cpp:86) -- fixed - src/pair.cpp | 14 +++++++++----- + src/pair.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) commit 1a6cd59e8b423cdf3a4f4f854b37c5e0693baef6 @@ -16706,8 +24439,8 @@ stress test for shutdown process added - tests/Makefile.am | 7 +++- - tests/test_shutdown_stress.cpp | 83 ++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 7 +++- + tests/test_shutdown_stress.cpp | 83 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 2 deletions(-) commit 2a85cce189ae915e85bb567b1401d063284e622f @@ -16723,7 +24456,7 @@ assert when xrep socket gets reconnected in the middle of the shutdown -- fixed - src/xrep.cpp | 35 ++++++++++++++++++++++------------- + src/xrep.cpp | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) commit 8f9080ebb9ea5576c87a1412748aef1faf0653f6 @@ -16735,7 +24468,7 @@ Fix a case where zmq_poll() (poll-based version) could go off into a busy-loop if no revents are returned and the timeout passed in is zero. - src/zmq.cpp | 11 +++++++---- + src/zmq.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit ac9b05c36b9d1f5bb3f8465b4c56478c399a01f3 @@ -16754,8 +24487,8 @@ zmq_msg_move called on uninitialised message in xrep_t::xrecv -- fixed - AUTHORS | 1 + - src/xrep.cpp | 7 ++++--- + AUTHORS | 1 + + src/xrep.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) commit 98fa2fa802773252a2c569ffea99bce1c5f9cd4c @@ -16764,7 +24497,7 @@ fix in XREP's fair queueing mechanism - src/xrep.cpp | 2 ++ + src/xrep.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 7881ba1bcd2c940037e54a74d6aeb8376329cde4 @@ -16773,7 +24506,7 @@ minor whitespace fix - src/pgm_socket.cpp | 2 +- + src/pgm_socket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit eaa925eca7a3e0c64d184a4a96fec139166a7470 @@ -16782,7 +24515,7 @@ FreeBSD doesn't define MSG_ERRQUEUE -- now it's defined in 0MQ - src/pgm_socket.cpp | 4 ++++ + src/pgm_socket.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit ec2e85919e4a34a313e6d0df84cc421bc9682ad8 @@ -16791,8 +24524,8 @@ C++ binding destructors don't throw exceptions - AUTHORS | 1 + - include/zmq.hpp | 6 ++---- + AUTHORS | 1 + + include/zmq.hpp | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) commit d14be62499478f31cf641399982ecdf4f6f158c4 @@ -16801,12 +24534,12 @@ more fixes to (e)pgm transport - src/pgm_receiver.cpp | 21 +++++++++++++- - src/pgm_receiver.hpp | 7 +++++ - src/pgm_sender.cpp | 37 ++++++++++++++++++++++-- - src/pgm_sender.hpp | 7 +++++ - src/pgm_socket.cpp | 81 ++++++++++++++++++++++++++++++++++++++-------------- - src/pgm_socket.hpp | 5 ++++ + src/pgm_receiver.cpp | 21 ++++++++++++- + src/pgm_receiver.hpp | 7 +++++ + src/pgm_sender.cpp | 37 +++++++++++++++++++++-- + src/pgm_sender.hpp | 7 +++++ + src/pgm_socket.cpp | 81 +++++++++++++++++++++++++++++++++++++------------- + src/pgm_socket.hpp | 5 ++++ 6 files changed, 134 insertions(+), 24 deletions(-) commit 96d85b20982926e60d5065cba3203971c9eeed63 @@ -16824,10 +24557,10 @@ * Replace std::lexicographical_compare of TSI's with long word integer comparisons. * pgm_socket_t::receive returns -1 on no data. - src/pgm_receiver.cpp | 2 +- - src/pgm_receiver.hpp | 12 +++--- - src/pgm_socket.cpp | 109 +++++++++++++++++++++++++++++++++------------------ - src/zmq.cpp | 24 +++++------- + src/pgm_receiver.cpp | 2 +- + src/pgm_receiver.hpp | 12 +++--- + src/pgm_socket.cpp | 109 ++++++++++++++++++++++++++++++++------------------ + src/zmq.cpp | 24 +++++------ 4 files changed, 87 insertions(+), 60 deletions(-) commit 00cd7d49c7f2b532b2349581b82577bc714f9bf8 @@ -16836,13 +24569,13 @@ Upgrade to OpenPGM-5.0.78 - configure.in | 16 +- - foreign/openpgm/libpgm-2.1.26.tar.gz | Bin 413863 -> 0 bytes - foreign/openpgm/libpgm-5.0.78.tar.gz | Bin 0 -> 511599 bytes - src/Makefile.am | 96 +++--- - src/pgm_socket.cpp | 564 ++++++++++++++++++----------------- - src/pgm_socket.hpp | 2 +- - src/zmq.cpp | 26 +- + configure.in | 16 +- + foreign/openpgm/libpgm-2.1.26.tar.gz | Bin 413863 -> 0 bytes + foreign/openpgm/libpgm-5.0.78.tar.gz | Bin 0 -> 511599 bytes + src/Makefile.am | 96 +++--- + src/pgm_socket.cpp | 564 ++++++++++++++++++---------------- + src/pgm_socket.hpp | 2 +- + src/zmq.cpp | 26 +- 7 files changed, 364 insertions(+), 340 deletions(-) commit 10bb9d0405169487cd53c6f109091e036577860e @@ -16851,7 +24584,7 @@ Dhammika Pathirana was missing from the AUTOHRS file for some reason -- fixed - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 87beaaa00d49d216f856b8322f1ad04e4f9ecea3 @@ -16860,20 +24593,20 @@ ZMQ_TYPE socket option added - .gitignore | 1 + - doc/zmq_getsockopt.txt | 13 +++++++++++++ - include/zmq.h | 1 + - src/options.cpp | 10 ++++++++++ - src/options.hpp | 3 +++ - src/pair.cpp | 1 + - src/pub.cpp | 1 + - src/pull.cpp | 1 + - src/push.cpp | 1 + - src/rep.cpp | 1 + - src/req.cpp | 1 + - src/sub.cpp | 1 + - src/xrep.cpp | 1 + - src/xreq.cpp | 1 + + .gitignore | 1 + + doc/zmq_getsockopt.txt | 13 +++++++++++++ + include/zmq.h | 1 + + src/options.cpp | 10 ++++++++++ + src/options.hpp | 3 +++ + src/pair.cpp | 1 + + src/pub.cpp | 1 + + src/pull.cpp | 1 + + src/push.cpp | 1 + + src/rep.cpp | 1 + + src/req.cpp | 1 + + src/sub.cpp | 1 + + src/xrep.cpp | 1 + + src/xreq.cpp | 1 + 14 files changed, 37 insertions(+) commit 6715f9b1858587db6aec826bdc9a7905bba8030e @@ -16892,7 +24625,7 @@ crash when closing an ypipe -- fixed - src/ypipe.hpp | 2 +- + src/ypipe.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f61921d09679c4bed15204ec4e55d1c7313e3f6a @@ -16901,7 +24634,7 @@ REQ socket can die when reply is delivered on wrong unerlying connection -- fixed - src/req.cpp | 6 ++---- + src/req.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 16c3884a61b146040277ec61bfdbc553c883b4d6 @@ -16910,10 +24643,10 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 42 +++++++++++++++++++++++++++++++++++----- - src/clock.cpp | 2 +- - src/ctx.cpp | 6 ++++++ - src/select.cpp | 3 ++- + builds/msvc/libzmq/libzmq.vcproj | 42 +++++++++++++++++++++++++++++++++----- + src/clock.cpp | 2 +- + src/ctx.cpp | 6 ++++++ + src/select.cpp | 3 ++- 4 files changed, 46 insertions(+), 7 deletions(-) commit e2f834d2947ad7e7f4e6bfb5be653af8b8a2a576 @@ -16922,7 +24655,7 @@ ZMQ_FD and ZMQ_EVENTS documentation added - doc/zmq_getsockopt.txt | 30 ++++++++++++++++++++++++++++++ + doc/zmq_getsockopt.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) commit 30c1cba4e4276f4ddcb5a455fdd62d4d6bd1edd2 @@ -16931,7 +24664,7 @@ latency optimisation for the case where there are no timers - src/poller_base.cpp | 4 ++++ + src/poller_base.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 238640a526c419392bf2df95de196db89ea6eb73 @@ -16940,21 +24673,21 @@ timers properly implemented - src/config.hpp | 4 ---- - src/devpoll.cpp | 35 +++++----------------------------- - src/devpoll.hpp | 6 ------ - src/epoll.cpp | 43 +++++++----------------------------------- - src/epoll.hpp | 6 ------ - src/kqueue.cpp | 40 ++++++--------------------------------- - src/kqueue.hpp | 6 ------ - src/poll.cpp | 33 +++++++------------------------- - src/poll.hpp | 6 ------ - src/poller_base.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++- - src/poller_base.hpp | 27 ++++++++++++++++++++++++++ - src/select.cpp | 37 +++++++----------------------------- - src/select.hpp | 6 ------ - src/zmq_connecter.cpp | 3 ++- - src/zmq_connecter.hpp | 2 +- + src/config.hpp | 4 ---- + src/devpoll.cpp | 35 +++++---------------------------- + src/devpoll.hpp | 6 ------ + src/epoll.cpp | 43 +++++++--------------------------------- + src/epoll.hpp | 6 ------ + src/kqueue.cpp | 40 ++++++------------------------------- + src/kqueue.hpp | 6 ------ + src/poll.cpp | 33 +++++++------------------------ + src/poll.hpp | 6 ------ + src/poller_base.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++- + src/poller_base.hpp | 27 +++++++++++++++++++++++++ + src/select.cpp | 37 +++++++---------------------------- + src/select.hpp | 6 ------ + src/zmq_connecter.cpp | 3 ++- + src/zmq_connecter.hpp | 2 +- 15 files changed, 113 insertions(+), 193 deletions(-) commit 8d7bf6684cbb9625ec7c963b8867e2411b49eb57 @@ -16963,19 +24696,19 @@ common base for all pollers created; the only thing it handles at the moment is 'load' - src/Makefile.am | 2 ++ - src/devpoll.cpp | 13 ++----------- - src/devpoll.hpp | 9 ++------- - src/epoll.cpp | 12 ++---------- - src/epoll.hpp | 9 ++------- - src/kqueue.cpp | 15 +++++--------- - src/kqueue.hpp | 9 ++------- - src/poll.cpp | 12 ++---------- - src/poll.hpp | 9 ++------- - src/poller_base.cpp | 44 +++++++++++++++++++++++++++++++++++++++++ - src/poller_base.hpp | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/select.cpp | 12 ++---------- - src/select.hpp | 9 ++------- + src/Makefile.am | 2 ++ + src/devpoll.cpp | 13 ++---------- + src/devpoll.hpp | 9 ++------- + src/epoll.cpp | 12 ++--------- + src/epoll.hpp | 9 ++------- + src/kqueue.cpp | 15 +++++--------- + src/kqueue.hpp | 9 ++------- + src/poll.cpp | 12 ++--------- + src/poll.hpp | 9 ++------- + src/poller_base.cpp | 44 ++++++++++++++++++++++++++++++++++++++++ + src/poller_base.hpp | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/select.cpp | 12 ++--------- + src/select.hpp | 9 ++------- 13 files changed, 125 insertions(+), 86 deletions(-) commit cf815e8c785254d97190f223765fbbd19a1e6d52 @@ -16984,24 +24717,24 @@ new interfaces for timers; the implementation is not changed yet - src/config.hpp | 4 ++++ - src/devpoll.cpp | 6 +++--- - src/devpoll.hpp | 7 +++---- - src/epoll.cpp | 6 +++--- - src/epoll.hpp | 4 ++-- - src/i_poll_events.hpp | 2 +- - src/io_object.cpp | 10 +++++----- - src/io_object.hpp | 6 +++--- - src/io_thread.cpp | 2 +- - src/io_thread.hpp | 2 +- - src/kqueue.cpp | 6 +++--- - src/kqueue.hpp | 4 ++-- - src/poll.cpp | 6 +++--- - src/poll.hpp | 4 ++-- - src/select.cpp | 6 +++--- - src/select.hpp | 4 ++-- - src/zmq_connecter.cpp | 8 ++++---- - src/zmq_connecter.hpp | 3 +++ + src/config.hpp | 4 ++++ + src/devpoll.cpp | 6 +++--- + src/devpoll.hpp | 7 +++---- + src/epoll.cpp | 6 +++--- + src/epoll.hpp | 4 ++-- + src/i_poll_events.hpp | 2 +- + src/io_object.cpp | 10 +++++----- + src/io_object.hpp | 6 +++--- + src/io_thread.cpp | 2 +- + src/io_thread.hpp | 2 +- + src/kqueue.cpp | 6 +++--- + src/kqueue.hpp | 4 ++-- + src/poll.cpp | 6 +++--- + src/poll.hpp | 4 ++-- + src/select.cpp | 6 +++--- + src/select.hpp | 4 ++-- + src/zmq_connecter.cpp | 8 ++++---- + src/zmq_connecter.hpp | 3 +++ 18 files changed, 48 insertions(+), 42 deletions(-) commit be79a9fbc26a55c90b693485f69dfd17f710cb13 @@ -17010,10 +24743,10 @@ minor beautifications - src/config.hpp | 4 +++- - src/connect_session.hpp | 3 +++ - src/named_session.hpp | 3 +++ - src/transient_session.hpp | 3 +++ + src/config.hpp | 4 +++- + src/connect_session.hpp | 3 +++ + src/named_session.hpp | 3 +++ + src/transient_session.hpp | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) commit 5dae27d0ed92aba070f824a4bf5dfa7845aa165d @@ -17022,13 +24755,13 @@ clock_t class added - src/Makefile.am | 2 ++ - src/clock.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/clock.hpp | 56 +++++++++++++++++++++++++++++ - src/config.hpp | 7 ++++ - src/socket_base.cpp | 38 ++++++-------------- - src/socket_base.hpp | 2 +- - src/zmq.cpp | 43 +++------------------- + src/Makefile.am | 2 ++ + src/clock.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/clock.hpp | 56 +++++++++++++++++++++++++++++ + src/config.hpp | 7 ++++ + src/socket_base.cpp | 38 ++++++-------------- + src/socket_base.hpp | 2 +- + src/zmq.cpp | 43 +++------------------- 7 files changed, 181 insertions(+), 67 deletions(-) commit 7d5061798c93655796b1cf64afd7f5b8146a7681 @@ -17050,7 +24783,7 @@ if TSC jumps backwards (in case of migration to a different CPU core) latency peak may occur -- fixed - src/app_thread.cpp | 8 +++++--- + src/app_thread.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit e478468e52fcb085f9d429cee5dd6938c80343bc @@ -17059,7 +24792,7 @@ minor error in comment fixed - src/socket_base.hpp | 4 ++-- + src/socket_base.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 9c118866003277222173ea04916c3e3b82c88b95 @@ -17068,8 +24801,8 @@ The flag in the socket has clear semantics now -- it tracks whether corresponding context was closed, it doesn't track whether zmq_close was called on the socket itself - src/socket_base.cpp | 41 +++++++++++++---------------------------- - src/socket_base.hpp | 6 ++---- + src/socket_base.cpp | 41 +++++++++++++---------------------------- + src/socket_base.hpp | 6 ++---- 2 files changed, 15 insertions(+), 32 deletions(-) commit 4d51a52874b814f65a31a0c1b8e0a36cb671697c @@ -17078,7 +24811,7 @@ zmq_poll (select version) now correctly assumes that ZMQ_FD is edge-trigerred - src/zmq.cpp | 27 ++++++++++----------------- + src/zmq.cpp | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) commit f49b77eedcdacf9663050a20723ac964af7cdac0 @@ -17087,7 +24820,7 @@ zmq_poll honours ZMQ_FORCE_POLL and ZMQ_FORCE_SELECT options - src/zmq.cpp | 25 +++++++++++++++++++++---- + src/zmq.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) commit 1abfc92d265bce4f60d63cd302319c451d2c451a @@ -17096,7 +24829,7 @@ minor problem in zmq_poll (select version) fixed - src/zmq.cpp | 2 +- + src/zmq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 328c92a0a70b98b4a3bf09132bd8f8041e4c8628 @@ -17105,10 +24838,10 @@ problem with engine being attached to session while it's being terminated fixed - src/encoder.hpp | 2 +- - src/session.cpp | 40 ++++++++++++++++++++++++++++++++++++++-- - src/session.hpp | 2 ++ - src/zmq_engine.hpp | 5 +---- + src/encoder.hpp | 2 +- + src/session.cpp | 40 ++++++++++++++++++++++++++++++++++++++-- + src/session.hpp | 2 ++ + src/zmq_engine.hpp | 5 +---- 4 files changed, 42 insertions(+), 7 deletions(-) commit 1d2399720b3fd06da5e7f9f4a211f30c57a9ce2d @@ -17117,9 +24850,9 @@ zmq_init_t destroyed zmq_engine_t before plugging it out from the poller first -- fixed - src/zmq_engine.cpp | 10 +++++++++- - src/zmq_engine.hpp | 7 ++++++- - src/zmq_init.cpp | 2 +- + src/zmq_engine.cpp | 10 +++++++++- + src/zmq_engine.hpp | 7 ++++++- + src/zmq_init.cpp | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) commit cda3c96a7fed0ee603c13e787ac511a1ea171367 @@ -17128,7 +24861,7 @@ minor code reorganisation in ctx_t::terminate - src/ctx.cpp | 31 +++++++++++++++---------------- + src/ctx.cpp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) commit 938689a49128ca17d2bc9662f311c6dbb70240db @@ -17137,8 +24870,8 @@ synchronisation problem fixed in ctx_t - src/ctx.cpp | 2 ++ - src/zmq_init.cpp | 5 ++++- + src/ctx.cpp | 2 ++ + src/zmq_init.cpp | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) commit 471013a59fc7f41b694c0bc0b11a459d4c19700d @@ -17147,7 +24880,7 @@ two races fixed in session creation - src/zmq_init.cpp | 16 ++++++++++++---- + src/zmq_init.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) commit 1f10208ad065c01e172669affdd48b6f2698ff4c @@ -17156,7 +24889,7 @@ termination of pipe via delimiter message could stuck when no data were read from the pipe (because connection wasn't active) -- fixed - src/session.cpp | 7 +++++++ + src/session.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 5153b6368be58d0fcaea262463a3fc08ea658f78 @@ -17165,8 +24898,8 @@ obsolete 'active' flag removed from session_t - src/session.cpp | 11 +++-------- - src/session.hpp | 3 --- + src/session.cpp | 11 +++-------- + src/session.hpp | 3 --- 2 files changed, 3 insertions(+), 11 deletions(-) commit 4c6d07d3668558d910c9b1d19d52ccdeacc90574 @@ -17175,21 +24908,21 @@ single term ack counting mechanism for every socket (no separate mechanisms for fq_t and lb_t) - src/Makefile.am | 1 - - src/fq.cpp | 18 ++++++++---------- - src/fq.hpp | 4 ++-- - src/i_terminate_events.hpp | 38 -------------------------------------- - src/lb.cpp | 18 ++++++++---------- - src/lb.hpp | 4 ++-- - src/own.hpp | 16 ++++++++-------- - src/pull.cpp | 7 ------- - src/pull.hpp | 6 +----- - src/push.cpp | 7 ------- - src/push.hpp | 6 +----- - src/sub.cpp | 7 ------- - src/sub.hpp | 6 +----- - src/xreq.cpp | 7 ------- - src/xreq.hpp | 6 +----- + src/Makefile.am | 1 - + src/fq.cpp | 18 ++++++++---------- + src/fq.hpp | 4 ++-- + src/i_terminate_events.hpp | 38 -------------------------------------- + src/lb.cpp | 18 ++++++++---------- + src/lb.hpp | 4 ++-- + src/own.hpp | 16 ++++++++-------- + src/pull.cpp | 7 ------- + src/pull.hpp | 6 +----- + src/push.cpp | 7 ------- + src/push.hpp | 6 +----- + src/sub.cpp | 7 ------- + src/sub.hpp | 6 +----- + src/xreq.cpp | 7 ------- + src/xreq.hpp | 6 +----- 15 files changed, 32 insertions(+), 119 deletions(-) commit fb6ce536d96c82e8f4378a87a5d59aefcc57a96d @@ -17198,7 +24931,7 @@ more details on launch_sibling in comments - src/own.cpp | 8 +++++++- + src/own.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) commit 0c215fada4f448788069e42bda34609f74c8b64b @@ -17207,9 +24940,9 @@ potential duplicate termination of pipes removed - src/fq.cpp | 1 + - src/lb.cpp | 1 + - src/socket_base.cpp | 10 ---------- + src/fq.cpp | 1 + + src/lb.cpp | 1 + + src/socket_base.cpp | 10 ---------- 3 files changed, 2 insertions(+), 10 deletions(-) commit c7b9ba3ccdd5a18afb22dda1afee16c938076c25 @@ -17218,8 +24951,8 @@ reconnection process fixed when failure occurs during init phase - src/command.hpp | 3 ++- - src/session.cpp | 8 ++++++++ + src/command.hpp | 3 ++- + src/session.cpp | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) commit 85aa25e56cbf6f4194162235fc06bed8683b1bad @@ -17228,7 +24961,7 @@ bug in REQ+multipart fixed - src/req.cpp | 1 + + src/req.cpp | 1 + 1 file changed, 1 insertion(+) commit ff1080728f3a587ee472a64533fd7e44b365e6f0 @@ -17247,7 +24980,7 @@ values of RATE, RECOVERY_IVL and SWAP options are checked for negative values - src/options.cpp | 6 +++--- + src/options.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit be159b63169474b644ebd38177bf4e808ebb5487 @@ -17256,7 +24989,7 @@ zmq::writer_t: Add missing test for swap - src/pipe.cpp | 34 +++++++++++++++++----------------- + src/pipe.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) commit 92f9136ca6c69d2d1588ff5ff65e668e40e0f7eb @@ -17265,7 +24998,7 @@ lefover assert removed - src/lb.cpp | 3 --- + src/lb.cpp | 3 --- 1 file changed, 3 deletions(-) commit a68e6739f4248e25a0f9a64c89729f55dfacb842 @@ -17274,18 +25007,18 @@ when no I/O threads are available error is raised instead of assertion - doc/zmq_bind.txt | 2 ++ - doc/zmq_connect.txt | 2 ++ - include/zmq.h | 2 +- - src/connect_session.cpp | 15 ++++++++++----- - src/ctx.cpp | 7 +++++-- - src/ctx.hpp | 5 +++-- - src/object.cpp | 4 ++-- - src/object.hpp | 2 +- - src/socket_base.cpp | 21 ++++++++++++++++++--- - src/zmq.cpp | 2 ++ - src/zmq_connecter.cpp | 9 +++++++-- - src/zmq_listener.cpp | 9 +++++++-- + doc/zmq_bind.txt | 2 ++ + doc/zmq_connect.txt | 2 ++ + include/zmq.h | 2 +- + src/connect_session.cpp | 15 ++++++++++----- + src/ctx.cpp | 7 +++++-- + src/ctx.hpp | 5 +++-- + src/object.cpp | 4 ++-- + src/object.hpp | 2 +- + src/socket_base.cpp | 21 ++++++++++++++++++--- + src/zmq.cpp | 2 ++ + src/zmq_connecter.cpp | 9 +++++++-- + src/zmq_listener.cpp | 9 +++++++-- 12 files changed, 60 insertions(+), 20 deletions(-) commit 47e87b7e4b8dd6a0cfbc1f30ffcb06edfa83c853 @@ -17294,7 +25027,7 @@ EMTHREAD error code returned to zmq.h to ensure backward compatibility - include/zmq.h | 1 + + include/zmq.h | 1 + 1 file changed, 1 insertion(+) commit 91ea20464439b5359a5d803181141fc756fa817c @@ -17303,19 +25036,19 @@ EINTR returned from the blocking functions - doc/zmq_getsockopt.txt | 2 ++ - doc/zmq_poll.txt | 2 ++ - doc/zmq_recv.txt | 3 +++ - doc/zmq_send.txt | 3 +++ - doc/zmq_setsockopt.txt | 2 ++ - src/ctx.cpp | 5 ---- - src/ctx.hpp | 3 --- - src/io_thread.cpp | 8 ++++-- - src/signaler.cpp | 47 ++++++++++++++++----------------- - src/signaler.hpp | 2 +- - src/socket_base.cpp | 71 +++++++++++++++++++++++++++----------------------- - src/socket_base.hpp | 3 +-- - src/zmq.cpp | 26 ++++++++---------- + doc/zmq_getsockopt.txt | 2 ++ + doc/zmq_poll.txt | 2 ++ + doc/zmq_recv.txt | 3 ++ + doc/zmq_send.txt | 3 ++ + doc/zmq_setsockopt.txt | 2 ++ + src/ctx.cpp | 5 ---- + src/ctx.hpp | 3 -- + src/io_thread.cpp | 8 ++++-- + src/signaler.cpp | 47 ++++++++++++++++---------------- + src/signaler.hpp | 2 +- + src/socket_base.cpp | 71 ++++++++++++++++++++++++++---------------------- + src/socket_base.hpp | 3 +- + src/zmq.cpp | 26 ++++++++---------- 13 files changed, 93 insertions(+), 84 deletions(-) commit f374431ebe0f3e18a2b2adeafa8093ff59a9eac2 @@ -17324,7 +25057,7 @@ get rid of 'has virtual functions but non-virtual destructor' warnings in pipe.hpp - src/pipe.hpp | 4 ++++ + src/pipe.hpp | 4 ++++ 1 file changed, 4 insertions(+) commit 6d4ffd90dbda943e5d1215fb56d06eeac1b4420f @@ -17333,8 +25066,8 @@ Bug in fq_t and lb_t (when used via ZMQ_EVENTS option) fixed - src/fq.cpp | 7 +++++-- - src/lb.cpp | 6 +++--- + src/fq.cpp | 7 +++++-- + src/lb.cpp | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) commit b4740c14e7fc68040037d65bdfac4233b08c5a08 @@ -17358,8 +25091,8 @@ Version number incremented to 2.0.10 - builds/msvc/platform.hpp | 2 +- - configure.in | 2 +- + builds/msvc/platform.hpp | 2 +- + configure.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit ebf3089735329f0d083a992c98a9fd63b128346e @@ -17368,7 +25101,7 @@ NEWS updated for 2.0.9 - NEWS | 12 ++++++++++++ + NEWS | 12 ++++++++++++ 1 file changed, 12 insertions(+) commit d4c8de5050a183f4df72062ce3ff6ceca0128fdf @@ -17389,7 +25122,7 @@ Update .gitignore - .gitignore | 2 ++ + .gitignore | 2 ++ 1 file changed, 2 insertions(+) commit 32fd916c731901944e01c0cb445d32ce0d162693 @@ -17400,7 +25133,7 @@ Thanks to Matt Weinstein for the suggestion. - doc/asciidoc.conf | 14 ++++++++++++++ + doc/asciidoc.conf | 14 ++++++++++++++ 1 file changed, 14 insertions(+) commit a6d3629fb4f87c018c7ba2f8c4ff69f7eda07790 @@ -17447,7 +25180,7 @@ Broken device numbering reverted - include/zmq.h | 64 +++++++++++++++++++++++++++++------------------------------ + include/zmq.h | 64 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) commit 10227899b1ccdaecf709fbfc7b765e147baf3080 @@ -17456,7 +25189,7 @@ assert on malformed messages - src/zmq_decoder.cpp | 7 +++++++ + src/zmq_decoder.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit c2f3b3b4458187085e148850068f9719c2567614 @@ -17465,9 +25198,9 @@ forwarder and streamer devices handle multi-part messages correctly - src/forwarder.cpp | 17 ++++++++++++++--- - src/queue.cpp | 15 ++++++++------- - src/streamer.cpp | 17 ++++++++++++++--- + src/forwarder.cpp | 17 ++++++++++++++--- + src/queue.cpp | 15 ++++++++------- + src/streamer.cpp | 17 ++++++++++++++--- 3 files changed, 36 insertions(+), 13 deletions(-) commit ae567be0c295d9c18da5ba4be4f8403cc844a9a3 @@ -17476,8 +25209,8 @@ improved null checking in zmq_term - AUTHORS | 1 + - src/zmq.cpp | 7 ++++--- + AUTHORS | 1 + + src/zmq.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) commit ca176121deb8dbdc62d8a37fec377c07fc786480 @@ -17503,8 +25236,8 @@ Ensure that 0MQ does not attempt to call select() on more than FD_SETSIZE file descriptors. - src/select.cpp | 4 ++++ - src/zmq.cpp | 4 ++++ + src/select.cpp | 4 ++++ + src/zmq.cpp | 4 ++++ 2 files changed, 8 insertions(+) commit f850190c16df0d55015dc15cd5c0c50289db5dda @@ -17513,7 +25246,7 @@ zmq.h: Fix typo and use of C99 comment - include/zmq.h | 4 ++-- + include/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 2673a84e07b93b8607958516c55341c2eb220a6e @@ -17540,7 +25273,7 @@ doc: Update zmq_socket(3) for 2.0.8 API changes - doc/zmq_socket.txt | 40 ++++++++++++++++++++++------------------ + doc/zmq_socket.txt | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) commit 26b39bcdef390f45bb316c4488b51470c27086e2 @@ -17555,7 +25288,7 @@ doc/zmq_device.txt - doc/zmq_device.txt | 99 ------------------------------------------------------ + doc/zmq_device.txt | 99 ---------------------------------------------------- 1 file changed, 99 deletions(-) commit 8800ac7de5d50426b0459ebea4568bb77954ea3d @@ -17566,7 +25299,7 @@ This reverts commit 6cd90304476c1c6873d67068009def63e520b848. - doc/Makefile.am | 7 ++----- + doc/Makefile.am | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit 32baeb610e779862b58c56f66571b01599743a9e @@ -17577,39 +25310,39 @@ This reverts commit 77a3c36ff1f11215229a4efdb821a3cb83a9d6fc. - doc/asciidoc.conf | 15 ------ - doc/zmq.txt | 19 +++++++ - doc/zmq_bind.txt | 9 +++- - doc/zmq_close.txt | 4 ++ - doc/zmq_connect.txt | 4 ++ - doc/zmq_cpp.txt | 4 ++ - doc/zmq_deviced.txt | 123 ---------------------------------------------- - doc/zmq_errno.txt | 4 ++ - doc/zmq_forwarder.txt | 4 ++ - doc/zmq_getsockopt.txt | 4 ++ - doc/zmq_init.txt | 4 ++ - doc/zmq_inproc.txt | 4 ++ - doc/zmq_ipc.txt | 4 ++ - doc/zmq_msg_close.txt | 4 ++ - doc/zmq_msg_copy.txt | 4 ++ - doc/zmq_msg_data.txt | 4 ++ - doc/zmq_msg_init.txt | 4 ++ - doc/zmq_msg_init_data.txt | 4 ++ - doc/zmq_msg_init_size.txt | 4 ++ - doc/zmq_msg_move.txt | 4 ++ - doc/zmq_msg_size.txt | 4 ++ - doc/zmq_pgm.txt | 5 +- - doc/zmq_poll.txt | 4 ++ - doc/zmq_queue.txt | 4 ++ - doc/zmq_recv.txt | 4 ++ - doc/zmq_send.txt | 4 ++ - doc/zmq_setsockopt.txt | 4 ++ - doc/zmq_socket.txt | 31 ++++++------ - doc/zmq_streamer.txt | 4 ++ - doc/zmq_strerror.txt | 4 ++ - doc/zmq_tcp.txt | 4 ++ - doc/zmq_term.txt | 5 ++ - doc/zmq_version.txt | 4 ++ + doc/asciidoc.conf | 15 ------ + doc/zmq.txt | 19 +++++++ + doc/zmq_bind.txt | 9 +++- + doc/zmq_close.txt | 4 ++ + doc/zmq_connect.txt | 4 ++ + doc/zmq_cpp.txt | 4 ++ + doc/zmq_deviced.txt | 123 --------------------------------------------- + doc/zmq_errno.txt | 4 ++ + doc/zmq_forwarder.txt | 4 ++ + doc/zmq_getsockopt.txt | 4 ++ + doc/zmq_init.txt | 4 ++ + doc/zmq_inproc.txt | 4 ++ + doc/zmq_ipc.txt | 4 ++ + doc/zmq_msg_close.txt | 4 ++ + doc/zmq_msg_copy.txt | 4 ++ + doc/zmq_msg_data.txt | 4 ++ + doc/zmq_msg_init.txt | 4 ++ + doc/zmq_msg_init_data.txt | 4 ++ + doc/zmq_msg_init_size.txt | 4 ++ + doc/zmq_msg_move.txt | 4 ++ + doc/zmq_msg_size.txt | 4 ++ + doc/zmq_pgm.txt | 5 +- + doc/zmq_poll.txt | 4 ++ + doc/zmq_queue.txt | 4 ++ + doc/zmq_recv.txt | 4 ++ + doc/zmq_send.txt | 4 ++ + doc/zmq_setsockopt.txt | 4 ++ + doc/zmq_socket.txt | 31 ++++++------ + doc/zmq_streamer.txt | 4 ++ + doc/zmq_strerror.txt | 4 ++ + doc/zmq_tcp.txt | 4 ++ + doc/zmq_term.txt | 5 ++ + doc/zmq_version.txt | 4 ++ 33 files changed, 155 insertions(+), 156 deletions(-) commit 4cb6dbd52f5ab65350a448ceb07ff77eacc2b84c @@ -17620,7 +25353,7 @@ This reverts commit c51de31f2fd31f782e419bfac2fb8d40d689f3e3. - doc/Makefile.am | 2 ++ + doc/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) commit 48d3e2d6607499b8c5feb1258c9bd40519923c69 @@ -17631,10 +25364,10 @@ This reverts commit 6ff193999d96487f7aa7e578980ab5554e61d8dc. - doc/asciidoc.conf | 2 +- - doc/zmq_forwarder.txt | 29 +++++++++++++++++++++++++++++ - doc/zmq_queue.txt | 29 +++++++++++++++++++++++++++++ - doc/zmq_streamer.txt | 29 +++++++++++++++++++++++++++++ + doc/asciidoc.conf | 2 +- + doc/zmq_forwarder.txt | 29 +++++++++++++++++++++++++++++ + doc/zmq_queue.txt | 29 +++++++++++++++++++++++++++++ + doc/zmq_streamer.txt | 29 +++++++++++++++++++++++++++++ 4 files changed, 88 insertions(+), 1 deletion(-) commit 6c393f53e28f41118eed9a8d034d8d46f2555572 @@ -17650,16 +25383,16 @@ doc/zmq_device.txt doc/zmq_tcp.txt - doc/zmq.txt | 22 +++++++++++------- - doc/zmq_bind.txt | 13 ++++------- - doc/zmq_connect.txt | 13 ++++------- - doc/zmq_device.txt | 60 ++++++++++++-------------------------------------- - doc/zmq_deviced.txt | 50 ++++++++++++----------------------------- - doc/zmq_getsockopt.txt | 2 +- - doc/zmq_pgm.txt | 4 ++-- - doc/zmq_poll.txt | 4 ++-- - doc/zmq_setsockopt.txt | 2 +- - doc/zmq_tcp.txt | 8 +++---- + doc/zmq.txt | 22 +++++++++++------- + doc/zmq_bind.txt | 13 ++++------- + doc/zmq_connect.txt | 13 ++++------- + doc/zmq_device.txt | 60 +++++++++++------------------------------------- + doc/zmq_deviced.txt | 50 +++++++++++----------------------------- + doc/zmq_getsockopt.txt | 2 +- + doc/zmq_pgm.txt | 4 ++-- + doc/zmq_poll.txt | 4 ++-- + doc/zmq_setsockopt.txt | 2 +- + doc/zmq_tcp.txt | 8 +++---- 10 files changed, 60 insertions(+), 118 deletions(-) commit 6647e61243fdfbdc600ef3bfbd15b7c2ca6e853e @@ -17670,7 +25403,7 @@ This reverts commit 96bcc9e6cf73781c31042278eb960c0363a78805. - doc/zmq_device.txt | 32 ++++++++++---------------------- + doc/zmq_device.txt | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) commit 83d253d72d4fe83f4a001a7cfb4059ccc52b04e0 @@ -17681,9 +25414,9 @@ This reverts commit de0173754cc82f6c08875a892892f043a804554c. - doc/Makefile.am | 2 +- - doc/zmq.txt | 4 +- - doc/zmq_deviced.txt | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/Makefile.am | 2 +- + doc/zmq.txt | 4 +- + doc/zmq_deviced.txt | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+), 2 deletions(-) commit 0a1f7e3524338690551c04ebfccd896a0b96f399 @@ -17713,8 +25446,8 @@ null; the prefix_tree asserts. I have fixed it by making the count an unsigned short. - src/prefix_tree.cpp | 12 ++++++------ - src/prefix_tree.hpp | 2 +- + src/prefix_tree.cpp | 12 ++++++------ + src/prefix_tree.hpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) commit 8ec0743c7551de3c76126d080961cece732370f1 @@ -17723,8 +25456,8 @@ Fix for signaler_t on HP-UX and AIX platforms - AUTHORS | 1 + - src/signaler.cpp | 6 +++--- + AUTHORS | 1 + + src/signaler.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) commit d5b6f680a54c682da066e769c46075a4bc57bd55 @@ -17733,7 +25466,7 @@ Mikael Kjaer added to AUTHORS - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit a81a37399b2ab4143aedf3ff4c442655b9e7e9b7 @@ -17758,7 +25491,7 @@ called it was considered invalid by the library. I am not sure this isn't just a "quirk" of the MSVC STL library as the other code looks valid to me as well. - src/select.cpp | 11 +++++++---- + src/select.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit 47aaf10211a0f3380dc82942a8cb4eba8c3c7ea3 @@ -17781,8 +25514,8 @@ maint: will become 2.0.9 - builds/msvc/platform.hpp | 2 +- - configure.in | 2 +- + builds/msvc/platform.hpp | 2 +- + configure.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 0fe7d3c998f65fb93b0f3d15c40d8bc2fe0923ad @@ -17798,8 +25531,8 @@ sys transport introdced; inproc://log moved to sys://log - src/ctx.cpp | 2 +- - src/socket_base.cpp | 10 +++++----- + src/ctx.cpp | 2 +- + src/socket_base.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) commit 6a0c323bb231a2460c238cd0b93293fcd482f9bc @@ -17808,8 +25541,8 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 24 ++++++++---------------- - src/ctx.cpp | 6 ++++-- + builds/msvc/libzmq/libzmq.vcproj | 24 ++++++++---------------- + src/ctx.cpp | 6 ++++-- 2 files changed, 12 insertions(+), 18 deletions(-) commit ce0972dca3982538fd123b61fbae3928fad6d1e7 @@ -17818,10 +25551,10 @@ context creates an inproc endpoint ('inproc://log') to distribute 0MQ's log messages - src/ctx.cpp | 25 +++++++++++++++++++++++-- - src/ctx.hpp | 10 ++++++++++ - src/object.cpp | 5 +++++ - src/object.hpp | 5 +++++ + src/ctx.cpp | 25 +++++++++++++++++++++++-- + src/ctx.hpp | 10 ++++++++++ + src/object.cpp | 5 +++++ + src/object.hpp | 5 +++++ 4 files changed, 43 insertions(+), 2 deletions(-) commit db73c76314d7109da4b400a3edb107c4eda802a2 @@ -17830,7 +25563,7 @@ assert when pipe attaches to PUB socket in process of termination -- fixed - src/pub.cpp | 1 - + src/pub.cpp | 1 - 1 file changed, 1 deletion(-) commit aaa07613d3d7ff1eafcec3d38769f806fae5ac5c @@ -17839,7 +25572,7 @@ pipe being attached to the PAIR socket during its termination process is immediately asked to terminate itself - src/pair.cpp | 7 ++++++- + src/pair.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 47c064f2eaa01c324e06588a4f07892762e78fcd @@ -17848,8 +25581,8 @@ hangup when closing socket with no pipes attached -- fixed - src/fq.cpp | 5 +++++ - src/lb.cpp | 5 +++++ + src/fq.cpp | 5 +++++ + src/lb.cpp | 5 +++++ 2 files changed, 10 insertions(+) commit 090e460d6f09b5611d34a4867efb6cf46dd44a34 @@ -17858,16 +25591,16 @@ naming cleanup: yarray->array - src/Makefile.am | 3 +- - src/array.hpp | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/ctx.hpp | 4 +- - src/fq.hpp | 4 +- - src/lb.hpp | 4 +- - src/pipe.hpp | 6 +-- - src/pub.hpp | 4 +- - src/socket_base.hpp | 4 +- - src/yarray.hpp | 110 --------------------------------------- - src/yarray_item.hpp | 64 ----------------------- + src/Makefile.am | 3 +- + src/array.hpp | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/ctx.hpp | 4 +- + src/fq.hpp | 4 +- + src/lb.hpp | 4 +- + src/pipe.hpp | 6 +-- + src/pub.hpp | 4 +- + src/socket_base.hpp | 4 +- + src/yarray.hpp | 110 -------------------------------------- + src/yarray_item.hpp | 64 ---------------------- 10 files changed, 160 insertions(+), 189 deletions(-) commit f5acbb5095901e56a9bfd29b9a8c1c7d3f165ce3 @@ -17876,19 +25609,19 @@ naming cleanup: zmq_encoder->encoder, zmq_decoder->decoder - src/Makefile.am | 6 +-- - src/decoder.cpp | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/decoder.hpp | 47 +++++++++++++++++---- - src/encoder.cpp | 89 ++++++++++++++++++++++++++++++++++++++++ - src/encoder.hpp | 39 ++++++++++++++---- - src/pgm_receiver.cpp | 2 +- - src/pgm_receiver.hpp | 6 +-- - src/pgm_sender.hpp | 4 +- - src/zmq_decoder.cpp | 114 --------------------------------------------------- - src/zmq_decoder.hpp | 59 -------------------------- - src/zmq_encoder.cpp | 89 ---------------------------------------- - src/zmq_encoder.hpp | 55 ------------------------- - src/zmq_engine.hpp | 8 ++-- + src/Makefile.am | 6 +-- + src/decoder.cpp | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/decoder.hpp | 47 +++++++++++++++++---- + src/encoder.cpp | 89 +++++++++++++++++++++++++++++++++++++++ + src/encoder.hpp | 39 +++++++++++++---- + src/pgm_receiver.cpp | 2 +- + src/pgm_receiver.hpp | 6 +-- + src/pgm_sender.hpp | 4 +- + src/zmq_decoder.cpp | 114 -------------------------------------------------- + src/zmq_decoder.hpp | 59 -------------------------- + src/zmq_encoder.cpp | 89 --------------------------------------- + src/zmq_encoder.hpp | 55 ------------------------ + src/zmq_engine.hpp | 8 ++-- 13 files changed, 283 insertions(+), 349 deletions(-) commit e45583c0f2b8fb11f119317e7c94052c07c24ea8 @@ -17897,7 +25630,7 @@ OSX build fixed -- semaphore replaced by mutex - src/semaphore.hpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- + src/semaphore.hpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) commit f0a36f9994e0a4e6e509bdf4b6dd75af27f984bb @@ -17906,7 +25639,7 @@ Minor patch to zmq_cpp(7) - doc/zmq_cpp.txt | 2 ++ + doc/zmq_cpp.txt | 2 ++ 1 file changed, 2 insertions(+) commit fba90af8a7cc4a790cc9c77b6313fc253b51c36c @@ -17915,7 +25648,7 @@ Issue 54 - socket_base.cpp:162 comparison error - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 68d62cfb4eb89549a3118e8e396531452b1174c3 @@ -17924,7 +25657,7 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 32 ++++++++++++++++---------------- + builds/msvc/libzmq/libzmq.vcproj | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) commit 0a8473deddae61a8c9221c3df089239ac2e2ca62 @@ -17933,17 +25666,17 @@ Added tests for transports per socket - tests/Makefile.am | 17 +++++++--- - tests/simple.cpp | 32 ------------------ - tests/test_pair.cpp | 78 -------------------------------------------- - tests/test_pair_inproc.cpp | 30 +++++++++++++++++ - tests/test_pair_ipc.cpp | 30 +++++++++++++++++ - tests/test_pair_tcp.cpp | 30 +++++++++++++++++ - tests/test_reqrep.cpp | 77 ------------------------------------------- - tests/test_reqrep_inproc.cpp | 30 +++++++++++++++++ - tests/test_reqrep_ipc.cpp | 30 +++++++++++++++++ - tests/test_reqrep_tcp.cpp | 30 +++++++++++++++++ - tests/testutil.hpp | 69 ++++++++++++++++++++++++++++++++++++--- + tests/Makefile.am | 17 ++++++--- + tests/simple.cpp | 32 ----------------- + tests/test_pair.cpp | 78 ------------------------------------------ + tests/test_pair_inproc.cpp | 30 ++++++++++++++++ + tests/test_pair_ipc.cpp | 30 ++++++++++++++++ + tests/test_pair_tcp.cpp | 30 ++++++++++++++++ + tests/test_reqrep.cpp | 77 ----------------------------------------- + tests/test_reqrep_inproc.cpp | 30 ++++++++++++++++ + tests/test_reqrep_ipc.cpp | 30 ++++++++++++++++ + tests/test_reqrep_tcp.cpp | 30 ++++++++++++++++ + tests/testutil.hpp | 69 ++++++++++++++++++++++++++++++++++--- 11 files changed, 258 insertions(+), 195 deletions(-) commit 6ec783e7023b4c4d4d10a3870b4c560684ae7069 @@ -17952,12 +25685,12 @@ prefix_tree_t renamed to trie_t - src/Makefile.am | 4 +- - src/prefix_tree.cpp | 180 ---------------------------------------------------- - src/prefix_tree.hpp | 55 ---------------- - src/sub.hpp | 4 +- - src/trie.cpp | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/trie.hpp | 58 +++++++++++++++++ + src/Makefile.am | 4 +- + src/prefix_tree.cpp | 180 --------------------------------------------------- + src/prefix_tree.hpp | 55 ---------------- + src/sub.hpp | 4 +- + src/trie.cpp | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/trie.hpp | 58 +++++++++++++++++ 6 files changed, 242 insertions(+), 239 deletions(-) commit beea535f9d7ff210ea035de190c0d87184ee1963 @@ -17966,9 +25699,9 @@ swap's block size made into a compile-time parameter - src/config.hpp | 4 ++++ - src/swap.cpp | 5 +++-- - src/swap.hpp | 2 +- + src/config.hpp | 4 ++++ + src/swap.cpp | 5 +++-- + src/swap.hpp | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) commit d8b975f4e73ae940c0c0f9c8c6c7aac1199fee09 @@ -17977,13 +25710,13 @@ msg_store_t renamed to swap_t - src/Makefile.am | 4 +- - src/msg_store.cpp | 307 ------------------------------------------------------ - src/msg_store.hpp | 114 -------------------- - src/pipe.cpp | 2 +- - src/pipe.hpp | 4 +- - src/swap.cpp | 307 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/swap.hpp | 114 ++++++++++++++++++++ + src/Makefile.am | 4 +- + src/msg_store.cpp | 307 ----------------------------------------------------- + src/msg_store.hpp | 114 -------------------- + src/pipe.cpp | 2 +- + src/pipe.hpp | 4 +- + src/swap.cpp | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/swap.hpp | 114 ++++++++++++++++++++ 7 files changed, 426 insertions(+), 426 deletions(-) commit d90b4071151e3752208d3a9d49fb50845f89ab1b @@ -17992,8 +25725,8 @@ refactoring of pipe/swap interaction - src/pipe.cpp | 194 ++++++++++++++++++++++++++++++----------------------------- - src/pipe.hpp | 39 ++++++------ + src/pipe.cpp | 194 ++++++++++++++++++++++++++++++---------------------------- + src/pipe.hpp | 39 ++++++------ 2 files changed, 120 insertions(+), 113 deletions(-) commit 42000d2c4f988a164eaeb9b580a4f588d91e353e @@ -18002,13 +25735,13 @@ terminology unified: revive->activate - src/command.hpp | 13 ++++++------- - src/fq.cpp | 4 ++-- - src/object.cpp | 26 +++++++++++++------------- - src/object.hpp | 8 ++++---- - src/pipe.cpp | 8 ++++---- - src/pipe.hpp | 4 ++-- - src/socket_base.cpp | 5 +++-- + src/command.hpp | 13 ++++++------- + src/fq.cpp | 4 ++-- + src/object.cpp | 26 +++++++++++++------------- + src/object.hpp | 8 ++++---- + src/pipe.cpp | 8 ++++---- + src/pipe.hpp | 4 ++-- + src/socket_base.cpp | 5 +++-- 7 files changed, 34 insertions(+), 34 deletions(-) commit 92923cd40b645af844c5ed1055a0a45c6daa3c89 @@ -18017,10 +25750,10 @@ bug in pipe deactivation fixed - src/pipe.cpp | 8 +++----- - src/socket_base.cpp | 2 +- - tests/test_pair.cpp | 7 ++++--- - tests/test_reqrep.cpp | 4 ++-- + src/pipe.cpp | 8 +++----- + src/socket_base.cpp | 2 +- + tests/test_pair.cpp | 7 ++++--- + tests/test_reqrep.cpp | 4 ++-- 4 files changed, 10 insertions(+), 11 deletions(-) commit 035c937ee7452708a9dd3abd851fda6a753808f4 @@ -18029,7 +25762,7 @@ zmq_poll: account for the fact that ZMQ_FD is edge-triggered - src/zmq.cpp | 31 ++++++++++++++++++++++++------- + src/zmq.cpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) commit 67aa788577fb49474dd7329b14316d25f1b3c08b @@ -18038,9 +25771,9 @@ Fixed socket states in tests - tests/test_pair.cpp | 3 +++ - tests/test_reqrep.cpp | 3 +++ - tests/testutil.hpp | 6 +++++- + tests/test_pair.cpp | 3 +++ + tests/test_reqrep.cpp | 3 +++ + tests/testutil.hpp | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) commit 4d9b046977f895f8d61731672a5e84967ed85eb2 @@ -18049,12 +25782,12 @@ two tests added - AUTHORS | 1 + - tests/Makefile.am | 4 ++- - tests/simple.cpp | 2 +- - tests/test_pair.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ - tests/test_reqrep.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ - tests/testutil.hpp | 64 ++++++++++++++++++++++++++++++++++++++++++++ + AUTHORS | 1 + + tests/Makefile.am | 4 ++- + tests/simple.cpp | 2 +- + tests/test_pair.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/test_reqrep.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/testutil.hpp | 64 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 217 insertions(+), 2 deletions(-) commit 0b76f234a2c521194029c6708c394391dfc66ea7 @@ -18073,10 +25806,10 @@ The test suite uses the standard automake support. Tests are always built, but run only when you do a "make check". - Makefile.am | 4 ++-- - configure.in | 2 +- - tests/Makefile.am | 8 ++++++++ - tests/simple.cpp | 32 ++++++++++++++++++++++++++++++++ + Makefile.am | 4 ++-- + configure.in | 2 +- + tests/Makefile.am | 8 ++++++++ + tests/simple.cpp | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) commit 98dc11843e3234e3d70b50d4f650089e7cf99e63 @@ -18085,7 +25818,7 @@ assert on malformed messages - src/zmq_decoder.cpp | 7 +++++++ + src/zmq_decoder.cpp | 7 +++++++ 1 file changed, 7 insertions(+) commit 56faac7f19bf2a6d2c7b6e0c2e35fcb667a72a48 @@ -18094,7 +25827,7 @@ zmq_poll returns prematurely even if infinite timeout is set - fixed - src/zmq.cpp | 204 +++++++++++++++++++++++++++++++++--------------------------- + src/zmq.cpp | 204 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 114 insertions(+), 90 deletions(-) commit 3cb84b5ceac0f8652a99ec61152a865292e02cf1 @@ -18103,9 +25836,9 @@ forwarder and streamer devices handle multi-part messages correctly - src/forwarder.cpp | 17 ++++++++++++++--- - src/queue.cpp | 15 ++++++++------- - src/streamer.cpp | 17 ++++++++++++++--- + src/forwarder.cpp | 17 ++++++++++++++--- + src/queue.cpp | 15 ++++++++------- + src/streamer.cpp | 17 ++++++++++++++--- 3 files changed, 36 insertions(+), 13 deletions(-) commit 43f2c6ff5b15d6feae2bd608e50503f7d4c62682 @@ -18114,8 +25847,8 @@ improved null checking in zmq_term - AUTHORS | 1 + - src/zmq.cpp | 7 ++++--- + AUTHORS | 1 + + src/zmq.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) commit b608c19c5a28f0f49a106bfddf680f0a410df6c8 @@ -18124,9 +25857,9 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 52 ++++++++++++++++++++++++++-------------- - src/pipe.hpp | 9 +++---- - src/socket_base.cpp | 1 + + builds/msvc/libzmq/libzmq.vcproj | 52 +++++++++++++++++++++++++------------- + src/pipe.hpp | 9 ++++--- + src/socket_base.cpp | 1 + 3 files changed, 40 insertions(+), 22 deletions(-) commit 9b8993efb48ccbe3df917338cc078129b5af495b @@ -18135,12 +25868,12 @@ elementary fixes to the named session - src/named_session.cpp | 21 +++++++++++---------- - src/session.cpp | 37 +++++++++++-------------------------- - src/session.hpp | 9 ++++----- - src/socket_base.cpp | 12 ++++++------ - src/socket_base.hpp | 7 +++---- - src/zmq_init.cpp | 6 ++---- + src/named_session.cpp | 21 +++++++++++---------- + src/session.cpp | 37 +++++++++++-------------------------- + src/session.hpp | 9 ++++----- + src/socket_base.cpp | 12 ++++++------ + src/socket_base.hpp | 7 +++---- + src/zmq_init.cpp | 6 ++---- 6 files changed, 37 insertions(+), 55 deletions(-) commit 46d70555659c05a0c8d95c6d7aa8c7e0cc5ebc66 @@ -18149,8 +25882,8 @@ connecter object unregisters its fd correctly - src/zmq_connecter.cpp | 12 ++++-------- - src/zmq_connecter.hpp | 1 - + src/zmq_connecter.cpp | 12 ++++-------- + src/zmq_connecter.hpp | 1 - 2 files changed, 4 insertions(+), 9 deletions(-) commit 87655b0b9d9121465e0b2ea1976b0879b1b1f756 @@ -18159,9 +25892,9 @@ listener object unregisters its fd correctly - src/zmq_engine.cpp | 3 --- - src/zmq_listener.cpp | 5 ++--- - src/zmq_listener.hpp | 2 +- + src/zmq_engine.cpp | 3 --- + src/zmq_listener.cpp | 5 ++--- + src/zmq_listener.hpp | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) commit 0d5f3ebbdad12a63e7cc28c53c38d750761a75e3 @@ -18170,7 +25903,7 @@ sessions created by listerner are correctly shut down - src/session.cpp | 2 ++ + src/session.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 5a731e73c855cd96040b3ecd55ef3b65606e1eb6 @@ -18179,8 +25912,8 @@ added ZMQ_MAKE_VALGRIND_HAPPY compile-time option - perf/remote_thr.cpp | 8 ++++++-- - src/object.cpp | 36 ++++++++++++++++++++++++++++++++++++ + perf/remote_thr.cpp | 8 ++++++-- + src/object.cpp | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) commit 43e34d028115c43577713c0c3e1f0c33b0aac94a @@ -18189,16 +25922,16 @@ engine leak fixed; pgm compilation fixed - src/connect_session.cpp | 20 ++++++++------------ - src/i_engine.hpp | 4 ++++ - src/pgm_receiver.cpp | 12 +++++++++--- - src/pgm_receiver.hpp | 7 ++++--- - src/pgm_sender.cpp | 12 +++++++++--- - src/pgm_sender.hpp | 7 ++++--- - src/session.cpp | 3 +++ - src/socket_base.cpp | 2 -- - src/zmq_engine.cpp | 6 ++++++ - src/zmq_engine.hpp | 1 + + src/connect_session.cpp | 20 ++++++++------------ + src/i_engine.hpp | 4 ++++ + src/pgm_receiver.cpp | 12 +++++++++--- + src/pgm_receiver.hpp | 7 ++++--- + src/pgm_sender.cpp | 12 +++++++++--- + src/pgm_sender.hpp | 7 ++++--- + src/session.cpp | 3 +++ + src/socket_base.cpp | 2 -- + src/zmq_engine.cpp | 6 ++++++ + src/zmq_engine.hpp | 1 + 10 files changed, 48 insertions(+), 26 deletions(-) commit 45f83d78a56f4b3a812c87fec03a75558445b2ab @@ -18207,14 +25940,14 @@ one more dezombification bug fixed - src/ctx.cpp | 33 +++++++++------------------------ - src/ctx.hpp | 7 +------ - src/object.cpp | 5 ----- - src/object.hpp | 3 --- - src/own.cpp | 7 ++++++- - src/own.hpp | 5 ++++- - src/socket_base.cpp | 21 ++++++++++++++++----- - src/socket_base.hpp | 12 ++++++++++-- + src/ctx.cpp | 33 +++++++++------------------------ + src/ctx.hpp | 7 +------ + src/object.cpp | 5 ----- + src/object.hpp | 3 --- + src/own.cpp | 7 ++++++- + src/own.hpp | 5 ++++- + src/socket_base.cpp | 21 ++++++++++++++++----- + src/socket_base.hpp | 12 ++++++++++-- 8 files changed, 46 insertions(+), 47 deletions(-) commit 936dbf956b0f1471a96fc06bcba67765257dbc4a @@ -18223,13 +25956,13 @@ dezombification procedure fixed - src/ctx.cpp | 46 ++++++++++++++++++++++++++++++++++------------ - src/ctx.hpp | 12 ++++++++---- - src/object.cpp | 5 +++++ - src/object.hpp | 3 +++ - src/socket_base.cpp | 10 ++++++---- - src/socket_base.hpp | 4 ++-- - src/zmq.cpp | 2 +- + src/ctx.cpp | 46 ++++++++++++++++++++++++++++++++++------------ + src/ctx.hpp | 12 ++++++++---- + src/object.cpp | 5 +++++ + src/object.hpp | 3 +++ + src/socket_base.cpp | 10 ++++++---- + src/socket_base.hpp | 4 ++-- + src/zmq.cpp | 2 +- 7 files changed, 59 insertions(+), 23 deletions(-) commit 76bd6e73c335dbebd8bd30565f83a810058f2cc8 @@ -18238,12 +25971,12 @@ engine termination on disconnect fixed - src/connect_session.cpp | 2 +- - src/connect_session.hpp | 6 +++--- - src/session.cpp | 14 ++++++++++++-- - src/session.hpp | 1 + - src/transient_session.cpp | 2 +- - src/transient_session.hpp | 5 +++-- + src/connect_session.cpp | 2 +- + src/connect_session.hpp | 6 +++--- + src/session.cpp | 14 ++++++++++++-- + src/session.hpp | 1 + + src/transient_session.cpp | 2 +- + src/transient_session.hpp | 5 +++-- 6 files changed, 21 insertions(+), 9 deletions(-) commit d13933bc62fce71b5a58118020e0dd3776e79aa9 @@ -18252,57 +25985,57 @@ I/O object hierarchy implemented - src/Makefile.am | 11 +- - src/command.hpp | 4 +- - src/connect_session.cpp | 115 ++++++++++++ - src/connect_session.hpp | 60 +++++++ - src/ctx.cpp | 6 +- - src/ctx.hpp | 2 +- - src/fq.cpp | 21 ++- - src/fq.hpp | 11 +- - src/i_engine.hpp | 15 +- - src/i_inout.hpp | 21 +-- - src/i_terminate_events.hpp | 38 ++++ - src/io_object.cpp | 22 ++- - src/io_object.hpp | 10 +- - src/lb.cpp | 22 ++- - src/lb.hpp | 11 +- - src/named_session.cpp | 87 +++++++++ - src/named_session.hpp | 56 ++++++ - src/object.cpp | 26 ++- - src/object.hpp | 23 +-- - src/own.cpp | 198 +++++++++++++++++++++ - src/own.hpp | 132 ++++++++++++++ - src/owned.cpp | 77 -------- - src/owned.hpp | 94 ---------- - src/pair.cpp | 28 +-- - src/pair.hpp | 7 +- - src/pub.cpp | 26 ++- - src/pub.hpp | 8 +- - src/pull.cpp | 14 +- - src/pull.hpp | 17 +- - src/push.cpp | 14 +- - src/push.hpp | 17 +- - src/session.cpp | 161 ++++++----------- - src/session.hpp | 73 +++++--- - src/socket_base.cpp | 435 +++++++++++++-------------------------------- - src/socket_base.hpp | 68 +++---- - src/sub.cpp | 12 +- - src/sub.hpp | 11 +- - src/transient_session.cpp | 36 ++++ - src/transient_session.hpp | 46 +++++ - src/xrep.cpp | 25 ++- - src/xrep.hpp | 12 +- - src/xreq.cpp | 17 +- - src/xreq.hpp | 13 +- - src/zmq_connecter.cpp | 38 ++-- - src/zmq_connecter.hpp | 24 +-- - src/zmq_engine.cpp | 52 +++--- - src/zmq_engine.hpp | 14 +- - src/zmq_init.cpp | 142 +++++++-------- - src/zmq_init.hpp | 33 ++-- - src/zmq_listener.cpp | 19 +- - src/zmq_listener.hpp | 11 +- + src/Makefile.am | 11 +- + src/command.hpp | 4 +- + src/connect_session.cpp | 115 ++++++++++++ + src/connect_session.hpp | 60 ++++++ + src/ctx.cpp | 6 +- + src/ctx.hpp | 2 +- + src/fq.cpp | 21 ++- + src/fq.hpp | 11 +- + src/i_engine.hpp | 15 +- + src/i_inout.hpp | 21 +-- + src/i_terminate_events.hpp | 38 ++++ + src/io_object.cpp | 22 ++- + src/io_object.hpp | 10 +- + src/lb.cpp | 22 ++- + src/lb.hpp | 11 +- + src/named_session.cpp | 87 +++++++++ + src/named_session.hpp | 56 ++++++ + src/object.cpp | 26 ++- + src/object.hpp | 23 +-- + src/own.cpp | 198 ++++++++++++++++++++ + src/own.hpp | 132 ++++++++++++++ + src/owned.cpp | 77 -------- + src/owned.hpp | 94 ---------- + src/pair.cpp | 28 ++- + src/pair.hpp | 7 +- + src/pub.cpp | 26 ++- + src/pub.hpp | 8 +- + src/pull.cpp | 14 +- + src/pull.hpp | 17 +- + src/push.cpp | 14 +- + src/push.hpp | 17 +- + src/session.cpp | 161 ++++++---------- + src/session.hpp | 73 +++++--- + src/socket_base.cpp | 435 +++++++++++++------------------------------- + src/socket_base.hpp | 68 ++----- + src/sub.cpp | 12 +- + src/sub.hpp | 11 +- + src/transient_session.cpp | 36 ++++ + src/transient_session.hpp | 46 +++++ + src/xrep.cpp | 25 ++- + src/xrep.hpp | 12 +- + src/xreq.cpp | 17 +- + src/xreq.hpp | 13 +- + src/zmq_connecter.cpp | 38 ++-- + src/zmq_connecter.hpp | 24 +-- + src/zmq_engine.cpp | 52 +++--- + src/zmq_engine.hpp | 14 +- + src/zmq_init.cpp | 142 +++++++-------- + src/zmq_init.hpp | 33 ++-- + src/zmq_listener.cpp | 19 +- + src/zmq_listener.hpp | 11 +- 51 files changed, 1441 insertions(+), 994 deletions(-) commit ee1f1af0091d9bdffa0e5ce1783da925b3cd7e56 @@ -18316,7 +26049,7 @@ while not strictly necessary it's better to get ZMQ_FD even if events is 0 since that detects ETERM and friends. - src/zmq.cpp | 14 ++++++++------ + src/zmq.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) commit a85d1e51bff991a0d2f93ded2724e0ee290edf12 @@ -18332,7 +26065,7 @@ unrequested events, and we don't need to poll on ZMQ_FD at all if a pollitem with no events set was passed in. - src/zmq.cpp | 227 ++++++++++++++++++++++++------------------------------------ + src/zmq.cpp | 227 +++++++++++++++++++++++------------------------------------ 1 file changed, 90 insertions(+), 137 deletions(-) commit 6b1ca2cb1e0adc9f28aae8d322b0832a3b174a04 @@ -18343,7 +26076,7 @@ Dunno where those s came from... - src/zmq.cpp | 6 +++--- + src/zmq.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit cd12508418530724f10a353fc3a14ab321d0be8e @@ -18356,7 +26089,7 @@ wip-shutdown branch. Only do the poll()-based version of zmq_poll (), the select()-based version will not compile at the moment. - src/zmq.cpp | 169 +++++++++++++++++++----------------------------------------- + src/zmq.cpp | 169 +++++++++++++++++++---------------------------------------- 1 file changed, 54 insertions(+), 115 deletions(-) commit eb7b8a413a99b2e43e8feee410f2b860e99e7056 @@ -18365,8 +26098,8 @@ REP socket layered on top of XREP socket - src/rep.cpp | 263 +++++++++--------------------------------------------------- - src/rep.hpp | 49 ++--------- + src/rep.cpp | 263 +++++++++-------------------------------------------------- + src/rep.hpp | 49 ++--------- 2 files changed, 45 insertions(+), 267 deletions(-) commit 3e97c0fef49e511dcae400e134876581cdae43f3 @@ -18375,10 +26108,10 @@ REQ socket implementation is layered on top of XREQ - src/fq.cpp | 7 ++ - src/pipe.cpp | 6 +- - src/req.cpp | 243 ++++++++--------------------------------------------------- - src/req.hpp | 54 ++----------- + src/fq.cpp | 7 ++ + src/pipe.cpp | 6 +- + src/req.cpp | 243 ++++++++-------------------------------------------------- + src/req.hpp | 54 ++----------- 4 files changed, 47 insertions(+), 263 deletions(-) commit f77edfce26bf50ab6eae6550d33f345c9785acca @@ -18387,9 +26120,9 @@ Destruction of session is delayed till both in & out pipes are closed - src/pipe.cpp | 5 ----- - src/pipe.hpp | 4 ---- - src/session.cpp | 7 ++++--- + src/pipe.cpp | 5 ----- + src/pipe.hpp | 4 ---- + src/session.cpp | 7 ++++--- 3 files changed, 4 insertions(+), 12 deletions(-) commit 05d908492dc382941fc633ad7082b5bd86e84e67 @@ -18416,53 +26149,53 @@ an equivalent mechanism (possibly a configurable timeout to zmq_term()) needs to be implemented. - include/zmq.h | 70 ++++---- - src/Makefile.am | 15 +- - src/app_thread.cpp | 195 --------------------- - src/app_thread.hpp | 88 ---------- - src/config.hpp | 5 +- - src/ctx.cpp | 249 ++++++++++++-------------- - src/ctx.hpp | 94 ++++------ - src/fq.cpp | 29 +-- - src/fq.hpp | 17 +- - src/i_endpoint.hpp | 43 ----- - src/io_thread.cpp | 5 +- - src/io_thread.hpp | 2 +- - src/lb.cpp | 21 ++- - src/lb.hpp | 13 +- - src/object.cpp | 29 ++- - src/object.hpp | 14 +- - src/owned.cpp | 10 +- - src/owned.hpp | 9 +- - src/pair.cpp | 72 ++++---- - src/pair.hpp | 26 ++- - src/pipe.cpp | 250 +++++++++++++++----------- - src/pipe.hpp | 111 +++++++----- - src/pub.cpp | 62 +++---- - src/pub.hpp | 21 ++- - src/pull.cpp | 48 +---- - src/pull.hpp | 16 +- - src/push.cpp | 50 +----- - src/push.hpp | 16 +- - src/rep.cpp | 81 ++++++--- - src/rep.hpp | 30 ++-- - src/req.cpp | 65 ++++--- - src/req.hpp | 32 ++-- - src/semaphore.hpp | 135 ++++++++++++++ - src/session.cpp | 62 +++---- - src/session.hpp | 26 ++- - src/socket_base.cpp | 495 +++++++++++++++++++++++++++++++++++++--------------- - src/socket_base.hpp | 100 +++++++---- - src/sub.cpp | 40 +---- - src/sub.hpp | 11 +- - src/thread.cpp | 20 --- - src/thread.hpp | 9 - - src/xrep.cpp | 65 +++---- - src/xrep.hpp | 26 ++- - src/xreq.cpp | 37 +--- - src/xreq.hpp | 10 +- - src/zmq.cpp | 7 +- - src/zmq_encoder.cpp | 2 +- + include/zmq.h | 70 ++++---- + src/Makefile.am | 15 +- + src/app_thread.cpp | 195 -------------------- + src/app_thread.hpp | 88 --------- + src/config.hpp | 5 +- + src/ctx.cpp | 249 ++++++++++++-------------- + src/ctx.hpp | 94 ++++------ + src/fq.cpp | 29 +-- + src/fq.hpp | 17 +- + src/i_endpoint.hpp | 43 ----- + src/io_thread.cpp | 5 +- + src/io_thread.hpp | 2 +- + src/lb.cpp | 21 ++- + src/lb.hpp | 13 +- + src/object.cpp | 29 ++- + src/object.hpp | 14 +- + src/owned.cpp | 10 +- + src/owned.hpp | 9 +- + src/pair.cpp | 72 ++++---- + src/pair.hpp | 26 ++- + src/pipe.cpp | 250 +++++++++++++++----------- + src/pipe.hpp | 111 +++++++----- + src/pub.cpp | 62 +++---- + src/pub.hpp | 21 ++- + src/pull.cpp | 48 +---- + src/pull.hpp | 16 +- + src/push.cpp | 50 +----- + src/push.hpp | 16 +- + src/rep.cpp | 81 ++++++--- + src/rep.hpp | 30 ++-- + src/req.cpp | 65 ++++--- + src/req.hpp | 32 ++-- + src/semaphore.hpp | 135 ++++++++++++++ + src/session.cpp | 62 +++---- + src/session.hpp | 26 ++- + src/socket_base.cpp | 495 +++++++++++++++++++++++++++++++++++++-------------- + src/socket_base.hpp | 100 +++++++---- + src/sub.cpp | 40 +---- + src/sub.hpp | 11 +- + src/thread.cpp | 20 --- + src/thread.hpp | 9 - + src/xrep.cpp | 65 +++---- + src/xrep.hpp | 26 ++- + src/xreq.cpp | 37 +--- + src/xreq.hpp | 10 +- + src/zmq.cpp | 7 +- + src/zmq_encoder.cpp | 2 +- 47 files changed, 1427 insertions(+), 1406 deletions(-) commit b7e0fa972f45d21e45cacb93a1a92d38fdc11f40 @@ -18471,8 +26204,8 @@ 'master' will become 2.1.x release - builds/msvc/platform.hpp | 4 ++-- - configure.in | 2 +- + builds/msvc/platform.hpp | 4 ++-- + configure.in | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) commit 1e089f7163c8c59b60b39742ee4bc40e1ca843c5 @@ -18481,7 +26214,7 @@ Update ChangeLog for v2.0.8 - ChangeLog | 493 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ChangeLog | 493 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 493 insertions(+) commit c9076c5d8b9b69f4e1bf797127735a563b712eb9 @@ -18494,7 +26227,7 @@ a brief description of the most common use case (REQ -> XREP) and (XREQ -> REP). - doc/zmq_socket.txt | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_socket.txt | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) commit 6d275a8788ad06dda451845402877010f114d6d4 @@ -18510,7 +26243,7 @@ Updated NEWS for stable 2.0.8 release - NEWS | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------ + NEWS | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 6 deletions(-) commit d788c1f7e49305976f3e1d0540c5671c47348880 @@ -18519,7 +26252,7 @@ Updated NEWS for stable 2.0.8 release - NEWS | 47 +++++++++++++++++++++++++++++++++++++++++------ + NEWS | 47 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) commit c06a3cc5101a36bf70c593937374371cafbacfc3 @@ -18528,8 +26261,8 @@ Update version number to 2.0.8 - builds/msvc/platform.hpp | 2 +- - configure.in | 2 +- + builds/msvc/platform.hpp | 2 +- + configure.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit b66dd7afd20b82668a3d7756900c91680bd1d91e @@ -18540,7 +26273,7 @@ Function returning unsigned long int cannot return (-1) - src/zmq.cpp | 4 ---- + src/zmq.cpp | 4 ---- 1 file changed, 4 deletions(-) commit 2b2accb8bf574bfb7d85893696f477d5bc6ca272 @@ -18549,7 +26282,7 @@ Added calls to zmq_msg_close in examples - doc/zmq_recv.txt | 3 +++ + doc/zmq_recv.txt | 3 +++ 1 file changed, 3 insertions(+) commit c52d1f2d47ac93e391ff707b50245aa33d7e8323 @@ -18558,7 +26291,7 @@ Fixed example for multipart zmq_recv() - doc/zmq_recv.txt | 2 +- + doc/zmq_recv.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 87612be91d4ff5252613196f061bd89d3bce25ec @@ -18574,7 +26307,7 @@ Fixed git URL in README - README | 2 +- + README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7aba2d10338727b030c3a9ff4ec34f7086ea5023 @@ -18583,7 +26316,7 @@ documentation leftover from v2.0.6 cleaned in zmq(7) - doc/zmq.txt | 3 +-- + doc/zmq.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit de0173754cc82f6c08875a892892f043a804554c @@ -18592,9 +26325,9 @@ Removed wip zmq_deviced from master - doc/Makefile.am | 2 +- - doc/zmq.txt | 4 +- - doc/zmq_deviced.txt | 145 ---------------------------------------------------- + doc/Makefile.am | 2 +- + doc/zmq.txt | 4 +- + doc/zmq_deviced.txt | 145 --------------------------------------------------- 3 files changed, 2 insertions(+), 149 deletions(-) commit 5be54b912029381736ee8b8798f95cc9a2544a70 @@ -18607,7 +26340,7 @@ Invalid messages are now discarded silently, instead of causing an assertion failure. - src/xrep.cpp | 9 ++++++--- + src/xrep.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit e74d350068e8a7d2becbd791f19e2c1ef20afae5 @@ -18616,8 +26349,8 @@ Fixed (un)signed type errors in get/setsockopt manual - doc/zmq_getsockopt.txt | 10 +++++----- - doc/zmq_setsockopt.txt | 10 +++++----- + doc/zmq_getsockopt.txt | 10 +++++----- + doc/zmq_setsockopt.txt | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) commit a12f446c4c160e6fb969c35ff01578e5f0965ecc @@ -18626,7 +26359,7 @@ Modified zmq_tcp(7) to emphasize wildcard interfaces - doc/zmq_tcp.txt | 10 +++++----- + doc/zmq_tcp.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit b6cdd369e328ceca2c46758d92ad8ea6a1f59cd7 @@ -18640,18 +26373,18 @@ * zmq_recv, zmq_poll, zmq_device, zmq_stopwatch_stop * Updated Reference Manual for these methods - doc/zmq_bind.txt | 2 ++ - doc/zmq_close.txt | 3 ++- - doc/zmq_connect.txt | 2 ++ - doc/zmq_device.txt | 13 +++++++++-- - doc/zmq_getsockopt.txt | 2 ++ - doc/zmq_poll.txt | 2 ++ - doc/zmq_recv.txt | 2 ++ - doc/zmq_send.txt | 2 ++ - doc/zmq_setsockopt.txt | 2 ++ - doc/zmq_socket.txt | 3 ++- - doc/zmq_term.txt | 3 ++- - src/zmq.cpp | 63 ++++++++++++++++++++++++++++++++++++++------------ + doc/zmq_bind.txt | 2 ++ + doc/zmq_close.txt | 3 ++- + doc/zmq_connect.txt | 2 ++ + doc/zmq_device.txt | 13 ++++++++-- + doc/zmq_getsockopt.txt | 2 ++ + doc/zmq_poll.txt | 2 ++ + doc/zmq_recv.txt | 2 ++ + doc/zmq_send.txt | 2 ++ + doc/zmq_setsockopt.txt | 2 ++ + doc/zmq_socket.txt | 3 ++- + doc/zmq_term.txt | 3 ++- + src/zmq.cpp | 63 ++++++++++++++++++++++++++++++++++++------------ 12 files changed, 79 insertions(+), 20 deletions(-) commit 677b3d906acc97c26855bdc31126492878ad6292 @@ -18672,7 +26405,7 @@ * zmq_device * zmq_stopwatch_stop - src/zmq.cpp | 15 +++++++++++++++ + src/zmq.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit b579aa9510fe6897735ba2aae5db399ef89ad573 @@ -18688,7 +26421,7 @@ Fix uninitialized use of nbytes in signaler fix - src/signaler.cpp | 2 +- + src/signaler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2100a9133312f7feecd22c4f809c8f3912c93274 @@ -18714,7 +26447,7 @@ This patch restarts the send() or recv() inside zmq::signaler_t if the call fails due to EINTR. - src/signaler.cpp | 22 +++++++++++++++++----- + src/signaler.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) commit 78e9ee84bf0e89eeb7134771b1f501ea0f9ccd9d @@ -18723,7 +26456,7 @@ Fixed MSVC project for PULL/PUSH - builds/msvc/libzmq/libzmq.vcproj | 8 ++++---- + builds/msvc/libzmq/libzmq.vcproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 96bcc9e6cf73781c31042278eb960c0363a78805 @@ -18735,7 +26468,7 @@ * Clarified broker model and proxy model * Added example of proxy model - doc/zmq_device.txt | 32 ++++++++++++++++++++++---------- + doc/zmq_device.txt | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) commit 13f3481e127a6b2390e847af6b01ee88f1b4ae61 @@ -18750,16 +26483,16 @@ - added refernce to new zmq_device[3] documented from index page - some minor spelling corrections - doc/zmq.txt | 22 ++++++++------------ - doc/zmq_bind.txt | 13 ++++++++---- - doc/zmq_connect.txt | 13 ++++++++---- - doc/zmq_device.txt | 56 ++++++++++++++++++++++++++++++++++++++------------ - doc/zmq_deviced.txt | 50 +++++++++++++++++++++++++++++++------------- - doc/zmq_getsockopt.txt | 2 +- - doc/zmq_pgm.txt | 4 ++-- - doc/zmq_poll.txt | 4 ++-- - doc/zmq_setsockopt.txt | 2 +- - doc/zmq_tcp.txt | 11 +++++----- + doc/zmq.txt | 22 +++++++------------ + doc/zmq_bind.txt | 13 +++++++---- + doc/zmq_connect.txt | 13 +++++++---- + doc/zmq_device.txt | 56 +++++++++++++++++++++++++++++++++++++----------- + doc/zmq_deviced.txt | 50 ++++++++++++++++++++++++++++++------------ + doc/zmq_getsockopt.txt | 2 +- + doc/zmq_pgm.txt | 4 ++-- + doc/zmq_poll.txt | 4 ++-- + doc/zmq_setsockopt.txt | 2 +- + doc/zmq_tcp.txt | 11 +++++----- 10 files changed, 117 insertions(+), 60 deletions(-) commit 6ff193999d96487f7aa7e578980ab5554e61d8dc @@ -18768,10 +26501,10 @@ Removed empty man pages for old standalone devices - doc/asciidoc.conf | 2 +- - doc/zmq_forwarder.txt | 29 ----------------------------- - doc/zmq_queue.txt | 29 ----------------------------- - doc/zmq_streamer.txt | 29 ----------------------------- + doc/asciidoc.conf | 2 +- + doc/zmq_forwarder.txt | 29 ----------------------------- + doc/zmq_queue.txt | 29 ----------------------------- + doc/zmq_streamer.txt | 29 ----------------------------- 4 files changed, 1 insertion(+), 88 deletions(-) commit c51de31f2fd31f782e419bfac2fb8d40d689f3e3 @@ -18780,7 +26513,7 @@ Reverting 'clean' change to Makefile - doc/Makefile.am | 2 -- + doc/Makefile.am | 2 -- 1 file changed, 2 deletions(-) commit 77a3c36ff1f11215229a4efdb821a3cb83a9d6fc @@ -18793,39 +26526,39 @@ * Created consistent page footer in documentation template * Page footer notes doc authors and copyright statement - doc/asciidoc.conf | 15 ++++++ - doc/zmq.txt | 19 ------- - doc/zmq_bind.txt | 9 +--- - doc/zmq_close.txt | 4 -- - doc/zmq_connect.txt | 4 -- - doc/zmq_cpp.txt | 4 -- - doc/zmq_deviced.txt | 123 ++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_errno.txt | 4 -- - doc/zmq_forwarder.txt | 4 -- - doc/zmq_getsockopt.txt | 4 -- - doc/zmq_init.txt | 4 -- - doc/zmq_inproc.txt | 4 -- - doc/zmq_ipc.txt | 4 -- - doc/zmq_msg_close.txt | 4 -- - doc/zmq_msg_copy.txt | 4 -- - doc/zmq_msg_data.txt | 4 -- - doc/zmq_msg_init.txt | 4 -- - doc/zmq_msg_init_data.txt | 4 -- - doc/zmq_msg_init_size.txt | 4 -- - doc/zmq_msg_move.txt | 4 -- - doc/zmq_msg_size.txt | 4 -- - doc/zmq_pgm.txt | 5 +- - doc/zmq_poll.txt | 4 -- - doc/zmq_queue.txt | 4 -- - doc/zmq_recv.txt | 4 -- - doc/zmq_send.txt | 4 -- - doc/zmq_setsockopt.txt | 4 -- - doc/zmq_socket.txt | 31 ++++++------ - doc/zmq_streamer.txt | 4 -- - doc/zmq_strerror.txt | 4 -- - doc/zmq_tcp.txt | 4 -- - doc/zmq_term.txt | 5 -- - doc/zmq_version.txt | 4 -- + doc/asciidoc.conf | 15 ++++++ + doc/zmq.txt | 19 ------- + doc/zmq_bind.txt | 9 +--- + doc/zmq_close.txt | 4 -- + doc/zmq_connect.txt | 4 -- + doc/zmq_cpp.txt | 4 -- + doc/zmq_deviced.txt | 123 +++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_errno.txt | 4 -- + doc/zmq_forwarder.txt | 4 -- + doc/zmq_getsockopt.txt | 4 -- + doc/zmq_init.txt | 4 -- + doc/zmq_inproc.txt | 4 -- + doc/zmq_ipc.txt | 4 -- + doc/zmq_msg_close.txt | 4 -- + doc/zmq_msg_copy.txt | 4 -- + doc/zmq_msg_data.txt | 4 -- + doc/zmq_msg_init.txt | 4 -- + doc/zmq_msg_init_data.txt | 4 -- + doc/zmq_msg_init_size.txt | 4 -- + doc/zmq_msg_move.txt | 4 -- + doc/zmq_msg_size.txt | 4 -- + doc/zmq_pgm.txt | 5 +- + doc/zmq_poll.txt | 4 -- + doc/zmq_queue.txt | 4 -- + doc/zmq_recv.txt | 4 -- + doc/zmq_send.txt | 4 -- + doc/zmq_setsockopt.txt | 4 -- + doc/zmq_socket.txt | 31 ++++++------ + doc/zmq_streamer.txt | 4 -- + doc/zmq_strerror.txt | 4 -- + doc/zmq_tcp.txt | 4 -- + doc/zmq_term.txt | 5 -- + doc/zmq_version.txt | 4 -- 33 files changed, 156 insertions(+), 155 deletions(-) commit 6cd90304476c1c6873d67068009def63e520b848 @@ -18834,7 +26567,7 @@ Added clean target that deletes generated man pages - doc/Makefile.am | 7 +++++-- + doc/Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit f575f252c99c99d3622f313d6bbad6635197a1e4 @@ -18843,7 +26576,7 @@ Added man page for the zmq_device method - doc/zmq_device.txt | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_device.txt | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) commit 11a410b65827a3958fb5f417c29e95c1953a0b42 @@ -18856,17 +26589,17 @@ applications nor bindings, but allows us to fix the documentation and user guide now, rather than keeping the old (confusing) names. - include/zmq.h | 61 +++++++++++++++++--------------- - src/Makefile.am | 8 ++--- - src/app_thread.cpp | 12 +++---- - src/downstream.cpp | 101 ----------------------------------------------------- - src/downstream.hpp | 61 -------------------------------- - src/pull.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/pull.hpp | 62 ++++++++++++++++++++++++++++++++ - src/push.cpp | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/push.hpp | 61 ++++++++++++++++++++++++++++++++ - src/upstream.cpp | 98 --------------------------------------------------- - src/upstream.hpp | 62 -------------------------------- + include/zmq.h | 61 ++++++++++++++++--------------- + src/Makefile.am | 8 ++--- + src/app_thread.cpp | 12 +++---- + src/downstream.cpp | 101 ---------------------------------------------------- + src/downstream.hpp | 61 ------------------------------- + src/pull.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/pull.hpp | 62 ++++++++++++++++++++++++++++++++ + src/push.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/push.hpp | 61 +++++++++++++++++++++++++++++++ + src/upstream.cpp | 98 -------------------------------------------------- + src/upstream.hpp | 62 -------------------------------- 11 files changed, 364 insertions(+), 361 deletions(-) commit 544b36da68729daffefa8f40d2efed5945851a01 @@ -18884,8 +26617,8 @@ shall block or return EAGAIN, depending on whether or not the call is blocking. Messages are never dropped. - src/xreq.cpp | 27 +++------------------------ - src/xreq.hpp | 3 --- + src/xreq.cpp | 27 +++------------------------ + src/xreq.hpp | 3 --- 2 files changed, 3 insertions(+), 27 deletions(-) commit 66470b2c55d74fb137211f4264bbfc5e3f454534 @@ -18894,8 +26627,8 @@ perf: fix typo - perf/local_thr.cpp | 2 +- - perf/remote_thr.cpp | 2 +- + perf/local_thr.cpp | 2 +- + perf/remote_thr.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 10533a560b4af1d3dae63c87c737e25bbdb78998 @@ -18904,9 +26637,9 @@ pipe: check_read() should check for message delimiter - src/pipe.cpp | 27 ++++++++++++++++++++++----- - src/pipe.hpp | 3 +++ - src/ypipe.hpp | 11 +++++++++++ + src/pipe.cpp | 27 ++++++++++++++++++++++----- + src/pipe.hpp | 3 +++ + src/ypipe.hpp | 11 +++++++++++ 3 files changed, 36 insertions(+), 5 deletions(-) commit e1c596b37eef2c2c72c605d7bf4a5c97050add6b @@ -18915,7 +26648,7 @@ Make sure lwm > 0 when hwm > 0 - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5b1a6a4bea1cebe860769f82702410f6c1d0ab1b @@ -18924,7 +26657,7 @@ Issue 42 - getaddrinfo() fails - src/ip.cpp | 7 ++----- + src/ip.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) commit aedf3f808befd8cf32a16e34b907c60c79eabfd7 @@ -18933,7 +26666,7 @@ EHOSTUNREACH is a valid return value from recv() - src/tcp_socket.cpp | 2 +- + src/tcp_socket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 269904361b565efa54a106e3eda96091320439bd @@ -18942,7 +26675,7 @@ minor comment clarification - src/tcp_connecter.cpp | 4 ++-- + src/tcp_connecter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit da49e5a4dd4602bf893193a5e6e64af54695b51c @@ -18951,9 +26684,9 @@ devices exit in case of context termination - src/forwarder.cpp | 15 +++++++++++++-- - src/queue.cpp | 42 +++++++++++++++++++++++++++++++++++------- - src/streamer.cpp | 15 +++++++++++++-- + src/forwarder.cpp | 15 +++++++++++++-- + src/queue.cpp | 42 +++++++++++++++++++++++++++++++++++------- + src/streamer.cpp | 15 +++++++++++++-- 3 files changed, 61 insertions(+), 11 deletions(-) commit ca057c7db8dcb2384e2498c938f3d83f64b78a7d @@ -18962,7 +26695,7 @@ Fix identity generation for transient inproc connections - src/socket_base.cpp | 4 ++-- + src/socket_base.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1f61c87ac527e2a75cabbce4ea4c5f916f4532e7 @@ -18971,7 +26704,7 @@ issue 40 - nbytes != -1 (tcp_socket.cpp:216) - src/tcp_socket.cpp | 3 ++- + src/tcp_socket.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit fd707fedc59124ed627780efed081acf33f455d2 @@ -18980,8 +26713,8 @@ issue 38 - Assertion failed: fetched (xrep.cpp:196) - src/xrep.cpp | 20 ++++++++++++-------- - src/xrep.hpp | 6 ++++++ + src/xrep.cpp | 20 ++++++++++++-------- + src/xrep.hpp | 6 ++++++ 2 files changed, 18 insertions(+), 8 deletions(-) commit 805af8241d7450fe1e60174739a78325677897f6 @@ -18990,7 +26723,7 @@ asciidoc.conf was missing from distribution tarball - doc/Makefile.am | 2 +- + doc/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0ab65324195ad70205514d465b03d851a6de051c @@ -18999,7 +26732,7 @@ Prevent socket reuse by second bind, on win32 - src/tcp_listener.cpp | 2 +- + src/tcp_listener.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 79a3d07c8587e840548791efc314b0184c584881 @@ -19008,7 +26741,7 @@ MSVC build fixed - src/msg_store.cpp | 17 +++++++++-------- + src/msg_store.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) commit ba91644fdb48cec97edc6965c4ca7ab564a3513f @@ -19017,8 +26750,8 @@ msg_store added to MSVC build - builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ - src/msg_store.cpp | 2 ++ + builds/msvc/libzmq/libzmq.vcproj | 8 ++++++++ + src/msg_store.cpp | 2 ++ 2 files changed, 10 insertions(+) commit 1dda8a2aaabd3b7705b0ecd67d6d9737d1978946 @@ -19027,7 +26760,7 @@ Used more expressive variable names - src/msg_store.cpp | 73 ++++++++++++++++++++++++------------------------------- + src/msg_store.cpp | 73 +++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 41 deletions(-) commit fca2e8e8cc30bcd134839f6d0f5f9963323dad2b @@ -19036,13 +26769,13 @@ Add SWAP support - src/Makefile.am | 2 + - src/msg_store.cpp | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/msg_store.hpp | 114 +++++++++++++++++++ - src/pipe.cpp | 114 +++++++++++++++---- - src/pipe.hpp | 29 +++-- - src/session.cpp | 4 +- - src/socket_base.cpp | 8 +- + src/Makefile.am | 2 + + src/msg_store.cpp | 313 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/msg_store.hpp | 114 +++++++++++++++++++ + src/pipe.cpp | 114 +++++++++++++++---- + src/pipe.hpp | 29 +++-- + src/session.cpp | 4 +- + src/socket_base.cpp | 8 +- 7 files changed, 545 insertions(+), 39 deletions(-) commit 10c28c1fc2f06c93e12a7c60f79a315cec7c5a52 @@ -19051,7 +26784,7 @@ Revive reader on pipe termination - src/pipe.cpp | 2 +- + src/pipe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2c3913bb19fa95e7decaa7967e2469dc428e46b0 @@ -19060,7 +26793,7 @@ fix double free error in PAIR socket - src/pair.cpp | 3 +++ + src/pair.cpp | 3 +++ 1 file changed, 3 insertions(+) commit cff7ba2315c0f62fa3679afa24ecea88da38a365 @@ -19069,12 +26802,12 @@ Windows build fixed - builds/msvc/c_local_lat/c_local_lat.vcproj | 4 ---- - builds/msvc/c_local_thr/c_local_thr.vcproj | 4 ---- - builds/msvc/c_remote_lat/c_remote_lat.vcproj | 4 ---- - builds/msvc/c_remote_thr/c_remote_thr.vcproj | 4 ---- - include/zmq_utils.h | 8 ++++++++ - src/zmq.cpp | 1 + + builds/msvc/c_local_lat/c_local_lat.vcproj | 4 ---- + builds/msvc/c_local_thr/c_local_thr.vcproj | 4 ---- + builds/msvc/c_remote_lat/c_remote_lat.vcproj | 4 ---- + builds/msvc/c_remote_thr/c_remote_thr.vcproj | 4 ---- + include/zmq_utils.h | 8 ++++++++ + src/zmq.cpp | 1 + 6 files changed, 9 insertions(+), 16 deletions(-) commit 7f01e9970d211235fc8057de6dc41ba8ceafe795 @@ -19083,17 +26816,17 @@ stopwatch returned to libzmq - include/zmq.h | 2 ++ - include/zmq_utils.h | 49 ++++++++++++++++++++++++++++++ - perf/Makefile.am | 9 +++--- - perf/helpers.cpp | 86 ----------------------------------------------------- - perf/helpers.h | 40 ------------------------- - perf/local_lat.cpp | 4 +-- - perf/local_thr.cpp | 6 ++-- - perf/remote_lat.cpp | 6 ++-- - perf/remote_thr.cpp | 4 +-- - src/Makefile.am | 2 +- - src/zmq.cpp | 63 +++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 2 ++ + include/zmq_utils.h | 49 +++++++++++++++++++++++++++++ + perf/Makefile.am | 9 +++--- + perf/helpers.cpp | 86 --------------------------------------------------- + perf/helpers.h | 40 ------------------------ + perf/local_lat.cpp | 4 +-- + perf/local_thr.cpp | 6 ++-- + perf/remote_lat.cpp | 6 ++-- + perf/remote_thr.cpp | 4 +-- + src/Makefile.am | 2 +- + src/zmq.cpp | 63 +++++++++++++++++++++++++++++++++++++ 11 files changed, 129 insertions(+), 142 deletions(-) commit 4777fe4010572d381a2ad8eb63df2fc5fb7e6642 @@ -19107,7 +26840,7 @@ fragments of the last incomplete message so it shouldn't change this variable at all. - src/pipe.cpp | 1 - + src/pipe.cpp | 1 - 1 file changed, 1 deletion(-) commit 9151de38959a21829d4ab60324d6750d2e1a4357 @@ -19116,7 +26849,7 @@ generate identity for transient inproc connections - src/socket_base.cpp | 12 +++++++++++- + src/socket_base.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 341e8a267309179bbb8249845e7efb14faf93d4d @@ -19125,7 +26858,7 @@ test commit - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 9858447fad3260cb16b1f2e56a14cfe3db737a36 @@ -19134,7 +26867,7 @@ getsockopt documentation fixed - doc/zmq_getsockopt.txt | 5 +++-- + doc/zmq_getsockopt.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit ac90b7e0ba497bfec09d7a69a2e01dc6d94a9c9a @@ -19143,8 +26876,8 @@ issue 35 - ZMQ_RCVMORE sometimes erroneously returns false - AUTHORS | 1 + - src/socket_base.cpp | 9 ++++++++- + AUTHORS | 1 + + src/socket_base.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) commit 5ee355d1880bc7391c199ea29adc620ceb0d96f1 @@ -19153,7 +26886,7 @@ if connect asserts, exact error is reported - src/tcp_connecter.cpp | 12 ++++++------ + src/tcp_connecter.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit 27877d73ea7dd972a773c7e960706130daaf5925 @@ -19162,7 +26895,7 @@ EHOSTUNREACH is acceptable outcome from connect - src/tcp_connecter.cpp | 8 ++++---- + src/tcp_connecter.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit c818b14bbd261aa836400e9dfb4848117dd2edb6 @@ -19171,7 +26904,7 @@ clearing thread info structure - src/ctx.cpp | 1 + + src/ctx.cpp | 1 + 1 file changed, 1 insertion(+) commit 74a3907be285891d90b82e2d315d03141a398752 @@ -19180,8 +26913,8 @@ couple of ICC warnings fixed - src/encoder.hpp | 2 +- - src/uuid.cpp | 4 +++- + src/encoder.hpp | 2 +- + src/uuid.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) commit 8782b4d696da7b1527f69e819d75d691bc3df105 @@ -19190,7 +26923,7 @@ -lcrypto added to linking flags for QNX - configure.in | 1 + + configure.in | 1 + 1 file changed, 1 insertion(+) commit 76e0153d4f3ef1d5fef1a9b926e0e8e3ab2d9685 @@ -19199,10 +26932,10 @@ issue 33 - missing virtual destructors - src/decoder.hpp | 4 +++- - src/encoder.hpp | 2 ++ - src/yarray_item.hpp | 4 +++- - src/ypipe.hpp | 6 ++++++ + src/decoder.hpp | 4 +++- + src/encoder.hpp | 2 ++ + src/yarray_item.hpp | 4 +++- + src/ypipe.hpp | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) commit d329c55da9c503e82831e940b0fc8dc9e5479975 @@ -19211,7 +26944,7 @@ issue 31 - Assertion failed: err == ECONNREFUSED || err == ETIMEDOUT (tcp_connecter.cpp:296) - src/tcp_connecter.cpp | 3 ++- + src/tcp_connecter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 604f7475ec1d19df416156879db3ddd3c90d5a13 @@ -19220,7 +26953,7 @@ issue 32 - poll_t poller broken - src/poll.cpp | 23 +++++++++++------------ + src/poll.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) commit 7a29e8594fb539e37b9d08982b1f491b0794b7d2 @@ -19229,7 +26962,7 @@ Piotr Trojanek added to AUTHORS file - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 751b60a18d028d9859394c7abe960cb1c42e605e @@ -19238,8 +26971,8 @@ extra ';' inside a struct or union -- clang warnings fixed - foreign/xmlParser/xmlParser.hpp | 2 +- - src/i_poll_events.hpp | 2 +- + foreign/xmlParser/xmlParser.hpp | 2 +- + src/i_poll_events.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 240fc33f65c6cd9f1ed0a511daf4ad00ff37f163 @@ -19248,7 +26981,7 @@ minor comment clarification - src/tcp_connecter.cpp | 4 ++-- + src/tcp_connecter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 784e73a7c84f2c0a454f4a9ef69586755482a9d5 @@ -19264,7 +26997,7 @@ C++ docs for zmq::poll function improved - doc/zmq_cpp.txt | 4 ++++ + doc/zmq_cpp.txt | 4 ++++ 1 file changed, 4 insertions(+) commit 8f51a10918d54e24818b863a9e3d530a00de21b5 @@ -19273,7 +27006,7 @@ Update ChangeLog for v2.0.7 - ChangeLog | 848 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ChangeLog | 848 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 848 insertions(+) commit 5c97ff9a2eb3e55007fd90b5c3a1c433de7bc60c @@ -19282,7 +27015,7 @@ More NEWS for 2.0.7 - NEWS | 9 +++++++++ + NEWS | 9 +++++++++ 1 file changed, 9 insertions(+) commit e8a9614aaeb45fc619eed2983f93edb744b4cef4 @@ -19291,7 +27024,7 @@ Update NEWS for 2.0.7 release - NEWS | 54 +++++++++++++++++++++++++++++++++++++++--------------- + NEWS | 54 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 15 deletions(-) commit 9b8f902d72438752b00d4c1bb3887c40423777e0 @@ -19300,7 +27033,7 @@ initial version of 2.0.7 NEWS - NEWS | 25 ++++++++++++++++++++++++- + NEWS | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) commit baf659fde5136c20f879ef713ec3effc34854ba6 @@ -19309,8 +27042,8 @@ Move news from ChangeLog into NEWS - ChangeLog | 397 +------------------------------------------------------------ - NEWS | 398 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ChangeLog | 397 +----------------------------------------------------------- + NEWS | 398 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 400 insertions(+), 395 deletions(-) commit 94dfe1368ac1cd4a456c86b8fc800d7c3911cfd3 @@ -19321,7 +27054,7 @@ Mingw seems to define NOMINMAX, so don't redefine it if already defined - src/windows.hpp | 4 +++- + src/windows.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit cf048bb1f8a665370d9e39aee2a7363327911b08 @@ -19330,14 +27063,14 @@ platform.hpp for MSVC contains only very basic stuff - builds/msvc/platform.hpp | 29 ----------------------------- - perf/helpers.cpp | 4 +++- - src/encoder.hpp | 5 +++++ - src/prefix_tree.cpp | 5 +++++ - src/uuid.cpp | 1 - - src/uuid.hpp | 1 + - src/windows.hpp | 4 ++++ - src/zmq_engine.cpp | 6 +++++- + builds/msvc/platform.hpp | 29 ----------------------------- + perf/helpers.cpp | 4 +++- + src/encoder.hpp | 5 +++++ + src/prefix_tree.cpp | 5 +++++ + src/uuid.cpp | 1 - + src/uuid.hpp | 1 + + src/windows.hpp | 4 ++++ + src/zmq_engine.cpp | 6 +++++- 8 files changed, 23 insertions(+), 32 deletions(-) commit 927993863eda325c66fc678810eeadd0c744cdf2 @@ -19346,12 +27079,12 @@ MSVC build fixed - builds/msvc/c_local_lat/c_local_lat.vcproj | 4 ++++ - builds/msvc/c_local_thr/c_local_thr.vcproj | 4 ++++ - builds/msvc/c_remote_lat/c_remote_lat.vcproj | 4 ++++ - builds/msvc/c_remote_thr/c_remote_thr.vcproj | 4 ++++ - foreign/xmlParser/xmlParser.cpp | 2 +- - perf/helpers.cpp | 4 +--- + builds/msvc/c_local_lat/c_local_lat.vcproj | 4 ++++ + builds/msvc/c_local_thr/c_local_thr.vcproj | 4 ++++ + builds/msvc/c_remote_lat/c_remote_lat.vcproj | 4 ++++ + builds/msvc/c_remote_thr/c_remote_thr.vcproj | 4 ++++ + foreign/xmlParser/xmlParser.cpp | 2 +- + perf/helpers.cpp | 4 +--- 6 files changed, 18 insertions(+), 4 deletions(-) commit 621d7415b3cdee1f79787e2961f113b00d237615 @@ -19360,7 +27093,7 @@ Fix Solaris/NetBSD breakage in atomic_ptr.hpp - src/atomic_ptr.hpp | 2 +- + src/atomic_ptr.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 67ca7dcbe6b072b74a112ce4df4529cda82c0f13 @@ -19369,16 +27102,16 @@ obsolete API elements removed - this commit breaks backward compatibility - devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- - devices/zmq_queue/zmq_queue.cpp | 2 +- - devices/zmq_streamer/zmq_streamer.cpp | 2 +- - include/zmq.h | 11 +---------- - include/zmq.hpp | 4 ++-- - perf/local_lat.cpp | 2 +- - perf/local_thr.cpp | 2 +- - perf/remote_lat.cpp | 2 +- - perf/remote_thr.cpp | 2 +- - src/zmq.cpp | 4 +--- + devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- + devices/zmq_queue/zmq_queue.cpp | 2 +- + devices/zmq_streamer/zmq_streamer.cpp | 2 +- + include/zmq.h | 11 +---------- + include/zmq.hpp | 4 ++-- + perf/local_lat.cpp | 2 +- + perf/local_thr.cpp | 2 +- + perf/remote_lat.cpp | 2 +- + perf/remote_thr.cpp | 2 +- + src/zmq.cpp | 4 +--- 10 files changed, 11 insertions(+), 22 deletions(-) commit d844a90690af357988b1c5ba027c740d4182d753 @@ -19387,10 +27120,10 @@ zmqd: Removing for now, not ready for 2.0.7 - Makefile.am | 4 +- - configure.in | 2 +- - zmqd/Makefile.am | 8 -- - zmqd/zmqd.cpp | 364 ------------------------------------------------------- + Makefile.am | 4 +- + configure.in | 2 +- + zmqd/Makefile.am | 8 -- + zmqd/zmqd.cpp | 364 ------------------------------------------------------ 4 files changed, 3 insertions(+), 375 deletions(-) commit 606c77368cccd2a277437b5de8764772295fdf89 @@ -19399,15 +27132,15 @@ Move perf helper functions to perf/helpers.cpp - include/zmq.h | 17 ----------- - perf/Makefile.am | 9 +++--- - perf/helpers.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/helpers.h | 40 +++++++++++++++++++++++++ - perf/local_lat.cpp | 3 +- - perf/local_thr.cpp | 5 ++-- - perf/remote_lat.cpp | 5 ++-- - perf/remote_thr.cpp | 3 +- - src/zmq.cpp | 58 ------------------------------------ + include/zmq.h | 17 ---------- + perf/Makefile.am | 9 +++--- + perf/helpers.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++ + perf/helpers.h | 40 ++++++++++++++++++++++++ + perf/local_lat.cpp | 3 +- + perf/local_thr.cpp | 5 +-- + perf/remote_lat.cpp | 5 +-- + perf/remote_thr.cpp | 3 +- + src/zmq.cpp | 58 ---------------------------------- 9 files changed, 141 insertions(+), 85 deletions(-) commit 05b4a7ae787760d5c24e048612b786fa0283854a @@ -19416,8 +27149,8 @@ Remove PGM examples from build - configure.in | 9 ----- - perf/Makefile.am | 112 +------------------------------------------------------ + configure.in | 9 ----- + perf/Makefile.am | 112 +----------------------------------------------------- 2 files changed, 1 insertion(+), 120 deletions(-) commit 4d65d7a5a98cbb95430a5b02706ab87d3fa0f56c @@ -19428,7 +27161,7 @@ Document MORE bit in flags field - doc/zmq_tcp.txt | 11 +++++++++-- + doc/zmq_tcp.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) commit 7fc15c21a17cfa58e60e4a513360cb12b542a570 @@ -19437,7 +27170,7 @@ Documentation: zmq_cpp(7) update for 2.0.7 - doc/zmq_cpp.txt | 15 +++++++++++---- + doc/zmq_cpp.txt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit 10f4bf3f35ab3da05fe5ca8a28cd131e3781249f @@ -19446,8 +27179,8 @@ Documentation: Cosmetic changes - doc/zmq_getsockopt.txt | 10 ++++++++++ - doc/zmq_setsockopt.txt | 11 +++++++++++ + doc/zmq_getsockopt.txt | 10 ++++++++++ + doc/zmq_setsockopt.txt | 11 +++++++++++ 2 files changed, 21 insertions(+) commit 8076fd1a3abece7dc91c2b2309dd0ecba57e882f @@ -19456,9 +27189,9 @@ Documentation: zmq_errno(3) - doc/Makefile.am | 2 +- - doc/zmq.txt | 9 ++++++--- - doc/zmq_errno.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/Makefile.am | 2 +- + doc/zmq.txt | 9 ++++++--- + doc/zmq_errno.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) commit 7c9b09bc511236c8cc5f6cea7623a8b98fedf302 @@ -19471,13 +27204,13 @@ Removed/changed lots of text regarding message queues More fixes for 2.0.7 changes - doc/zmq.txt | 18 ++---- - doc/zmq_getsockopt.txt | 23 ++++--- - doc/zmq_poll.txt | 28 ++++---- - doc/zmq_recv.txt | 22 +++---- - doc/zmq_send.txt | 9 ++- - doc/zmq_setsockopt.txt | 25 +++---- - doc/zmq_socket.txt | 172 +++++++++++++++++++++++++++++++++++++++++-------- + doc/zmq.txt | 18 ++--- + doc/zmq_getsockopt.txt | 23 ++++--- + doc/zmq_poll.txt | 28 ++++---- + doc/zmq_recv.txt | 22 +++---- + doc/zmq_send.txt | 9 ++- + doc/zmq_setsockopt.txt | 25 +++---- + doc/zmq_socket.txt | 172 ++++++++++++++++++++++++++++++++++++++++-------- 7 files changed, 205 insertions(+), 92 deletions(-) commit 9d00d300b0d6b45d2954792540cc95a0c3fb6a01 @@ -19486,7 +27219,7 @@ Documentation: zmq_init() API changes for 2.0.7 - doc/zmq_init.txt | 19 +++++-------------- + doc/zmq_init.txt | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) commit 8ba1d3c8ed32b39bb1133330d496587d96020e7e @@ -19495,12 +27228,12 @@ Documentation: zmq_term() and ETERM for 2.0.7 - doc/zmq_bind.txt | 2 +- - doc/zmq_connect.txt | 2 +- - doc/zmq_getsockopt.txt | 1 - - doc/zmq_poll.txt | 6 ++---- - doc/zmq_setsockopt.txt | 1 - - doc/zmq_term.txt | 20 +++++++++++++++++--- + doc/zmq_bind.txt | 2 +- + doc/zmq_connect.txt | 2 +- + doc/zmq_getsockopt.txt | 1 - + doc/zmq_poll.txt | 6 ++---- + doc/zmq_setsockopt.txt | 1 - + doc/zmq_term.txt | 20 +++++++++++++++++--- 6 files changed, 21 insertions(+), 11 deletions(-) commit 74a03dfd7dbb762be5d50eca4df214f8825ad44a @@ -19516,7 +27249,7 @@ Pieter Hintjens added to 'authors' section - AUTHORS | 2 +- + AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0b0716661e99a2b55151650ec94cd5fd268d0334 @@ -19525,7 +27258,7 @@ multiple vulnerabilities in xml paerser fixed - foreign/xmlParser/xmlParser.cpp | 37 +++++++++++++++++++++++++++++++------ + foreign/xmlParser/xmlParser.cpp | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) commit 99e6179edd9e3552fcdb7f4fce3306cd174f3359 @@ -19536,7 +27269,7 @@ The option_value parameter for zmq_getsockopt is in and out. - doc/zmq_getsockopt.txt | 6 ++++-- + doc/zmq_getsockopt.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit b4f3e0acd72de97bc5ef46ea74d9cd7ed7f9efc2 @@ -19547,8 +27280,8 @@ Clarify multi-part messages - doc/zmq_recv.txt | 16 ++++++++-------- - doc/zmq_send.txt | 13 ++++++------- + doc/zmq_recv.txt | 16 ++++++++-------- + doc/zmq_send.txt | 13 ++++++------- 2 files changed, 14 insertions(+), 15 deletions(-) commit 7bbe754cb4987669d4273ec37f5f50d29b9931df @@ -19559,7 +27292,7 @@ Clarify pipeline and exclusive pair patterns - doc/zmq_socket.txt | 14 ++++++-------- + doc/zmq_socket.txt | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) commit 8a4df431de872623c761fdeb291748d3d153b8d1 @@ -19570,7 +27303,7 @@ Add getsockopt to Makefile.am - doc/Makefile.am | 2 +- + doc/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit dfbaf4f9668f0493649d6ba1328cced64e5340b0 @@ -19581,8 +27314,8 @@ Multi-part messages - doc/zmq_recv.txt | 5 +++-- - doc/zmq_send.txt | 7 ++++--- + doc/zmq_recv.txt | 5 +++-- + doc/zmq_send.txt | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) commit 0fa73b039462c1754d407de85306904e9b0c73be @@ -19593,7 +27326,7 @@ Add getsockopt to index - doc/zmq.txt | 3 ++- + doc/zmq.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit eb9ff1e77977c6199c0a0439f4dd35fa39f3bd3c @@ -19604,9 +27337,9 @@ Multi-part messages - doc/zmq_getsockopt.txt | 17 +++++++++++++++++ - doc/zmq_recv.txt | 37 ++++++++++++++++++++++++++++++++++++- - doc/zmq_send.txt | 33 ++++++++++++++++++++++++++++++++- + doc/zmq_getsockopt.txt | 17 +++++++++++++++++ + doc/zmq_recv.txt | 37 ++++++++++++++++++++++++++++++++++++- + doc/zmq_send.txt | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 2 deletions(-) commit 8becacf82c950af951f477e3dc3f7ac79e110fc1 @@ -19617,8 +27350,8 @@ Add zmq_getsockopt(3), clean up zmq_setsockopt(3). - doc/zmq_getsockopt.txt | 209 +++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_setsockopt.txt | 62 ++++++++------- + doc/zmq_getsockopt.txt | 209 ++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_setsockopt.txt | 62 +++++++------- 2 files changed, 241 insertions(+), 30 deletions(-) commit be6019abd1ac6fe11c9c51dbadf9c72b37349c2a @@ -19627,7 +27360,7 @@ issue 28. - SNDMORE/ RCVMORE is dropping every other message - src/req.cpp | 8 ++++---- + src/req.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 2e9be56a4059cf230f6aa92eb1c71db5f1200b8e @@ -19636,7 +27369,7 @@ memory leak in REQ socket fixed - src/req.cpp | 34 ++++------------------------------ + src/req.cpp | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) commit 3bb60da0d085b1089ddec4617fcd40f2cda88567 @@ -19652,7 +27385,7 @@ memory leak in REP socket fixed - src/rep.cpp | 34 ++++------------------------------ + src/rep.cpp | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) commit da37c45b0c7200eea96118952e671972b71df4ce @@ -19663,8 +27396,8 @@ Use the term 'endpoint' correctly, and drop the nonsense about local/remote addresses which doesn't clearly explain what is going on - doc/zmq_bind.txt | 28 +++++++++++++++------------- - doc/zmq_connect.txt | 26 ++++++++++++++------------ + doc/zmq_bind.txt | 28 +++++++++++++++------------- + doc/zmq_connect.txt | 26 ++++++++++++++------------ 2 files changed, 29 insertions(+), 25 deletions(-) commit 74f1a4a579d3b09b3420092d9f076827be31c4e7 @@ -19676,7 +27409,7 @@ - ditch -utils package - add descriptions from Debian packaging - builds/redhat/zeromq.spec | 41 +++++++++++++++++------------------------ + builds/redhat/zeromq.spec | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) commit b4cc7b97ecaf743f3259f9df7d687558892b8a72 @@ -19685,7 +27418,7 @@ dist-hook for copying zeromq.spec to top-level - Makefile.am | 2 ++ + Makefile.am | 2 ++ 1 file changed, 2 insertions(+) commit 8bd3f743f50a61355b6cf18046d59c7d0289836b @@ -19694,7 +27427,7 @@ Import redhat packaging - builds/redhat/zeromq.spec | 137 ++++++++++++++++++++++++++++++++++++++++++++++ + builds/redhat/zeromq.spec | 137 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) commit 5219e4ce8f9aa082c5f91e248a9f66639c69727d @@ -19703,9 +27436,9 @@ Clarify socket types in documentation, reinstate ZMQ_PAIR - doc/zmq.txt | 4 +-- - doc/zmq_setsockopt.txt | 14 ++++---- - doc/zmq_socket.txt | 91 +++++++++++++++++++++++++++++++------------------- + doc/zmq.txt | 4 +-- + doc/zmq_setsockopt.txt | 14 ++++---- + doc/zmq_socket.txt | 91 +++++++++++++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 44 deletions(-) commit 8408ae066dce123fc93e4f53dbadb1f60b7f2e8a @@ -19714,15 +27447,15 @@ LWM is computed rather than explicitly specified by user - doc/zmq_setsockopt.txt | 15 --------------- - include/zmq.h | 1 + - src/config.hpp | 5 ++++- - src/options.cpp | 18 ------------------ - src/options.hpp | 1 - - src/pipe.cpp | 35 ++++++++++++++++++++++++++++++++--- - src/pipe.hpp | 4 +++- - src/session.cpp | 6 ++---- - src/socket_base.cpp | 12 ++++-------- + doc/zmq_setsockopt.txt | 15 --------------- + include/zmq.h | 1 + + src/config.hpp | 5 ++++- + src/options.cpp | 18 ------------------ + src/options.hpp | 1 - + src/pipe.cpp | 35 ++++++++++++++++++++++++++++++++--- + src/pipe.hpp | 4 +++- + src/session.cpp | 6 ++---- + src/socket_base.cpp | 12 ++++-------- 9 files changed, 46 insertions(+), 51 deletions(-) commit f34a468a263c7b4013a267297ee7f121e12dfb9d @@ -19731,7 +27464,7 @@ coding style fixed in zmqd - zmqd/zmqd.cpp | 426 +++++++++++++++++++++++++++++----------------------------- + zmqd/zmqd.cpp | 426 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 211 insertions(+), 215 deletions(-) commit 7773fdddfb357145cb15faaa5228fb3b2d0f6f78 @@ -19747,7 +27480,7 @@ Pieter Hintjens added to AUTHORS file - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 89783c37d2b8a7b5519eab7922b460449aa0bf3f @@ -19756,8 +27489,8 @@ incomplete messages can be stored in ypipe - src/pipe.cpp | 10 ++++------ - src/ypipe.hpp | 46 ++++++++++++++++++++++++++++------------------ + src/pipe.cpp | 10 ++++------ + src/ypipe.hpp | 46 ++++++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 24 deletions(-) commit f40ce4e500d32b4240395e09e0ce3359734f0189 @@ -19766,10 +27499,10 @@ single 0MQ daemon (zmqd) - initial version - Makefile.am | 4 +- - configure.in | 2 +- - zmqd/Makefile.am | 8 ++ - zmqd/zmqd.cpp | 368 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Makefile.am | 4 +- + configure.in | 2 +- + zmqd/Makefile.am | 8 ++ + zmqd/zmqd.cpp | 368 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 379 insertions(+), 3 deletions(-) commit 6705a3d5807542ee2ed8a1ef6e3d9f769e5d5a93 @@ -19778,7 +27511,7 @@ some more sanity checks in pgm_socket - src/pgm_socket.cpp | 1 + + src/pgm_socket.cpp | 1 + 1 file changed, 1 insertion(+) commit ff9d3985556aa58a5d120a3eb72867c7ebea924d @@ -19794,7 +27527,7 @@ some more sanity checks in pgm_socket - src/pgm_socket.cpp | 4 ++++ + src/pgm_socket.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit f6c1c972428f15356af09d6922910ef44d1f6cb3 @@ -19815,8 +27548,8 @@ Removed SPARC native atomic ops as they are untested and have been commented out for years Add "memory" to asm clobber for X86 atomic_counter::sub() - src/atomic_counter.hpp | 65 ++++++++------------------------------------------ - src/atomic_ptr.hpp | 58 +++++++------------------------------------- + src/atomic_counter.hpp | 65 ++++++++---------------------------------------- + src/atomic_ptr.hpp | 58 +++++++----------------------------------- 2 files changed, 19 insertions(+), 104 deletions(-) commit 127cb89ac1271bf85798294d450509b7c23019bd @@ -19825,7 +27558,7 @@ MAINTAINERS file added - MAINTAINERS | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + MAINTAINERS | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) commit 8e5ac100c95e02ef60aa827b4199002f324617ed @@ -19841,11 +27574,11 @@ fixes for OpenVMS - src/signaler.cpp | 1 + - src/tcp_connecter.cpp | 19 ++++++++++++++++--- - src/tcp_listener.cpp | 31 +++++++++++++++++++++++++++---- - src/uuid.cpp | 29 +++++++++++++++++++++++++++++ - src/uuid.hpp | 11 ++++++++++- + src/signaler.cpp | 1 + + src/tcp_connecter.cpp | 19 ++++++++++++++++--- + src/tcp_listener.cpp | 31 +++++++++++++++++++++++++++---- + src/uuid.cpp | 29 +++++++++++++++++++++++++++++ + src/uuid.hpp | 11 ++++++++++- 5 files changed, 83 insertions(+), 8 deletions(-) commit 9fbb9141a8895ac83e8051ac568223a9e57a278d @@ -19854,9 +27587,9 @@ Update historic include paths - devices/zmq_forwarder/Makefile.am | 2 +- - devices/zmq_queue/Makefile.am | 2 +- - devices/zmq_streamer/Makefile.am | 2 +- + devices/zmq_forwarder/Makefile.am | 2 +- + devices/zmq_queue/Makefile.am | 2 +- + devices/zmq_streamer/Makefile.am | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 9d16a415cbfd33f89d2f5afd96ed7cd34a21a634 @@ -19871,7 +27604,7 @@ from libzmq_la_CXXFLAGS and left them only in libzmq_la_CFLAGS so that our code is not built with the OpenPGM extra flags. - src/Makefile.am | 23 ++--------------------- + src/Makefile.am | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) commit 2cf9f04a460473ea10e901e68e66596583d0d286 @@ -19880,10 +27613,10 @@ Update OpenPGM to version 2.1.26 - configure.in | 2 +- - foreign/openpgm/libpgm-2.0.24.tar.gz | Bin 407110 -> 0 bytes - foreign/openpgm/libpgm-2.1.26.tar.gz | Bin 0 -> 413863 bytes - src/Makefile.am | 2 ++ + configure.in | 2 +- + foreign/openpgm/libpgm-2.0.24.tar.gz | Bin 407110 -> 0 bytes + foreign/openpgm/libpgm-2.1.26.tar.gz | Bin 0 -> 413863 bytes + src/Makefile.am | 2 ++ 4 files changed, 3 insertions(+), 1 deletion(-) commit a25414e55caa975185ac6534c40bb601e5c38a9a @@ -19892,7 +27625,7 @@ Fix in zmq_poll (Windows version) - src/zmq.cpp | 2 +- + src/zmq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4d33c43913dd640853cec75ce21080c2b33d8526 @@ -19901,9 +27634,9 @@ caution about zmq_msg_init_* functions added to the docs - doc/zmq_msg_init.txt | 4 ++++ - doc/zmq_msg_init_data.txt | 4 ++++ - doc/zmq_msg_init_size.txt | 4 ++++ + doc/zmq_msg_init.txt | 4 ++++ + doc/zmq_msg_init_data.txt | 4 ++++ + doc/zmq_msg_init_size.txt | 4 ++++ 3 files changed, 12 insertions(+) commit 4a3b857c4cf35261751d562ad7e4acc5ecf58be0 @@ -19912,7 +27645,7 @@ commands not processed immediatelly in some scenarios; fixed - src/app_thread.cpp | 6 ++++-- + src/app_thread.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 36b044a0d5a9918841839edf12767b31bfec36a0 @@ -19921,7 +27654,7 @@ ZMQ_PAIR socket removed from the documentation as it is unfinished yet - doc/zmq_socket.txt | 13 ------------- + doc/zmq_socket.txt | 13 ------------- 1 file changed, 13 deletions(-) commit f60d891b2309cdc6f2cc1507a238cec85e4aa9e7 @@ -19930,7 +27663,7 @@ Issue 23. zmq_init() crashes on illegal numbers - src/zmq.cpp | 5 ++++- + src/zmq.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 64c58662b7f491f2a3c8cb684f27ea1d5c549552 @@ -19939,7 +27672,7 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 10 +++++----- + builds/msvc/libzmq/libzmq.vcproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 835e893e54598ff474067cc68b787440baf6b05c @@ -19948,20 +27681,20 @@ dispatcher_t class renamed to ctx_t - src/Makefile.am | 4 +- - src/app_thread.cpp | 10 +- - src/app_thread.hpp | 2 +- - src/ctx.cpp | 316 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/ctx.hpp | 156 ++++++++++++++++++++++++++ - src/dispatcher.cpp | 316 ---------------------------------------------------- - src/dispatcher.hpp | 153 ------------------------- - src/io_thread.cpp | 6 +- - src/io_thread.hpp | 2 +- - src/object.cpp | 28 ++--- - src/object.hpp | 10 +- - src/socket_base.cpp | 11 +- - src/zmq.cpp | 17 ++- - src/zmq_encoder.cpp | 2 +- + src/Makefile.am | 4 +- + src/app_thread.cpp | 10 +- + src/app_thread.hpp | 2 +- + src/ctx.cpp | 316 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/ctx.hpp | 156 +++++++++++++++++++++++++ + src/dispatcher.cpp | 316 --------------------------------------------------- + src/dispatcher.hpp | 153 ------------------------- + src/io_thread.cpp | 6 +- + src/io_thread.hpp | 2 +- + src/object.cpp | 28 ++--- + src/object.hpp | 10 +- + src/socket_base.cpp | 11 +- + src/zmq.cpp | 17 ++- + src/zmq_encoder.cpp | 2 +- 14 files changed, 518 insertions(+), 515 deletions(-) commit 10f5334f2891b187ce57f38186cf977406097ab0 @@ -19977,10 +27710,10 @@ number of application threads to use 0MQ sockets is unlimited; app_threads parameter in zmq_init is unused and obsolete - src/config.hpp | 4 ++++ - src/dispatcher.cpp | 53 ++++++++++++++++++++++++++++++----------------------- - src/dispatcher.hpp | 15 +++------------ - src/zmq.cpp | 6 ++++-- + src/config.hpp | 4 ++++ + src/dispatcher.cpp | 53 +++++++++++++++++++++++++++++----------------------- + src/dispatcher.hpp | 15 +++------------ + src/zmq.cpp | 6 ++++-- 4 files changed, 41 insertions(+), 37 deletions(-) commit 3f5465ada1b465ac0e360d0416b8f42b0fddfab0 @@ -19989,7 +27722,7 @@ Windows port fixed - src/signaler.cpp | 6 +++--- + src/signaler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 235ed3a3dcffb7c658cbc9253eae9de54db24533 @@ -19998,16 +27731,16 @@ signaler transports commands per se rather than one-bit signals - src/app_thread.cpp | 20 ++--- - src/config.hpp | 5 -- - src/dispatcher.cpp | 71 +++++++---------- - src/dispatcher.hpp | 30 ++----- - src/io_thread.cpp | 17 ++-- - src/object.cpp | 6 +- - src/pipe.hpp | 2 +- - src/signaler.cpp | 224 ++++++++++++++++++++--------------------------------- - src/signaler.hpp | 45 ++++------- - src/ypipe.hpp | 83 +++++--------------- + src/app_thread.cpp | 20 ++--- + src/config.hpp | 5 -- + src/dispatcher.cpp | 71 +++++++---------- + src/dispatcher.hpp | 30 ++----- + src/io_thread.cpp | 17 ++-- + src/object.cpp | 6 +- + src/pipe.hpp | 2 +- + src/signaler.cpp | 224 ++++++++++++++++++++-------------------------------- + src/signaler.hpp | 45 +++-------- + src/ypipe.hpp | 83 +++++-------------- 10 files changed, 174 insertions(+), 329 deletions(-) commit 8b9bd05726c3df56d7f437889abccba3cbbffdee @@ -20016,9 +27749,9 @@ thread ID and dispatcher made private in object_t - src/app_thread.cpp | 6 +++--- - src/io_thread.cpp | 2 +- - src/object.hpp | 4 ++-- + src/app_thread.cpp | 6 +++--- + src/io_thread.cpp | 2 +- + src/object.hpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) commit 84e0c7991a9b316ed571533abc628cc1175750a3 @@ -20027,9 +27760,9 @@ queue device fixed - src/queue.cpp | 86 +++++++++++++++++++++++++++++------------------------------ - src/xreq.cpp | 27 ++++++++++++++++--- - src/xreq.hpp | 3 +++ + src/queue.cpp | 86 ++++++++++++++++++++++++++++----------------------------- + src/xreq.cpp | 27 ++++++++++++++++-- + src/xreq.hpp | 3 ++ 3 files changed, 70 insertions(+), 46 deletions(-) commit 4a6bac1deaedb3c111c7e28b2933ed98367cb193 @@ -20045,7 +27778,7 @@ prefix in XREP recv'd message misses MORE flag - src/xrep.cpp | 1 + + src/xrep.cpp | 1 + 1 file changed, 1 insertion(+) commit beb4da3c28cff501a33de34cec95ca110cd3084e @@ -20054,8 +27787,8 @@ windows port fixed - builds/msvc/libzmq/libzmq.vcproj | 34 +++++----------------------------- - src/signaler.cpp | 4 +--- + builds/msvc/libzmq/libzmq.vcproj | 34 +++++----------------------------- + src/signaler.cpp | 4 +--- 2 files changed, 6 insertions(+), 32 deletions(-) commit ae93ed318a450d6d763a5f629d478467f7362b07 @@ -20064,18 +27797,18 @@ signaler rewritten in such a way that any number (>64) of threads can be used - src/app_thread.cpp | 25 +++---- - src/app_thread.hpp | 2 +- - src/config.hpp | 4 ++ - src/dispatcher.cpp | 16 ++--- - src/dispatcher.hpp | 10 +-- - src/io_thread.cpp | 30 ++++---- - src/io_thread.hpp | 2 +- - src/object.cpp | 13 ++-- - src/object.hpp | 9 +-- - src/signaler.cpp | 200 +++++++++++++++++++++++++++++++---------------------- - src/signaler.hpp | 24 +++++-- - src/zmq.cpp | 2 +- + src/app_thread.cpp | 25 +++---- + src/app_thread.hpp | 2 +- + src/config.hpp | 4 ++ + src/dispatcher.cpp | 16 ++--- + src/dispatcher.hpp | 10 +-- + src/io_thread.cpp | 30 ++++---- + src/io_thread.hpp | 2 +- + src/object.cpp | 13 ++-- + src/object.hpp | 9 +-- + src/signaler.cpp | 200 +++++++++++++++++++++++++++++++--------------------- + src/signaler.hpp | 24 +++++-- + src/zmq.cpp | 2 +- 12 files changed, 190 insertions(+), 147 deletions(-) commit 1ffc6dd41f2e2ce45c67f3fe08780c5a09cf667d @@ -20084,9 +27817,9 @@ eventfd-style signaling removed - configure.in | 26 ------------------- - src/signaler.cpp | 78 +------------------------------------------------------- - src/signaler.hpp | 6 ----- + configure.in | 26 ------------------ + src/signaler.cpp | 78 +----------------------------------------------------- + src/signaler.hpp | 6 ----- 3 files changed, 1 insertion(+), 109 deletions(-) commit 37128b7b1aeed9ad2bf6816560b85b5f94dd5bec @@ -20095,16 +27828,16 @@ fd_signaler_t renamed to signaler_t - src/Makefile.am | 4 +- - src/app_thread.cpp | 3 +- - src/app_thread.hpp | 6 +- - src/dispatcher.hpp | 4 +- - src/fd_signaler.cpp | 432 ---------------------------------------------------- - src/fd_signaler.hpp | 80 ---------- - src/io_thread.cpp | 2 +- - src/io_thread.hpp | 6 +- - src/signaler.cpp | 432 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/signaler.hpp | 80 ++++++++++ + src/Makefile.am | 4 +- + src/app_thread.cpp | 3 +- + src/app_thread.hpp | 6 +- + src/dispatcher.hpp | 4 +- + src/fd_signaler.cpp | 432 --------------------------------------------------- + src/fd_signaler.hpp | 80 ---------- + src/io_thread.cpp | 2 +- + src/io_thread.hpp | 6 +- + src/signaler.cpp | 432 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/signaler.hpp | 80 ++++++++++ 10 files changed, 524 insertions(+), 525 deletions(-) commit c193fd146661b39027c5e3fa0776dcdf8c6af5e2 @@ -20113,24 +27846,24 @@ lock-free polling removed; ZMQ_POLL flag removed - doc/zmq_init.txt | 8 +- - include/zmq.h | 1 + - src/Makefile.am | 5 - - src/app_thread.cpp | 22 +--- - src/app_thread.hpp | 8 +- - src/atomic_bitmap.hpp | 310 ----------------------------------------------- - src/dispatcher.cpp | 7 +- - src/dispatcher.hpp | 6 +- - src/fd_signaler.hpp | 3 +- - src/i_signaler.hpp | 55 --------- - src/io_thread.cpp | 6 +- - src/io_thread.hpp | 5 +- - src/object.cpp | 1 - - src/queue.cpp | 5 +- - src/simple_semaphore.hpp | 242 ------------------------------------ - src/ypollset.cpp | 65 ---------- - src/ypollset.hpp | 69 ----------- - src/zmq.cpp | 11 +- + doc/zmq_init.txt | 8 +- + include/zmq.h | 1 + + src/Makefile.am | 5 - + src/app_thread.cpp | 22 +--- + src/app_thread.hpp | 8 +- + src/atomic_bitmap.hpp | 310 ---------------------------------------------- + src/dispatcher.cpp | 7 +- + src/dispatcher.hpp | 6 +- + src/fd_signaler.hpp | 3 +- + src/i_signaler.hpp | 55 -------- + src/io_thread.cpp | 6 +- + src/io_thread.hpp | 5 +- + src/object.cpp | 1 - + src/queue.cpp | 5 +- + src/simple_semaphore.hpp | 242 ------------------------------------ + src/ypollset.cpp | 65 ---------- + src/ypollset.hpp | 69 ----------- + src/zmq.cpp | 11 +- 18 files changed, 28 insertions(+), 801 deletions(-) commit 7cb076e56a18cb76c49f17bd34bc73c11e01b705 @@ -20139,9 +27872,9 @@ Defer NetBSD atomic ops to GCC builtins. Revert Sun atomic ops #define. - src/atomic_bitmap.hpp | 72 +++++++++++++++++++++++++++++++++----------------- - src/atomic_counter.hpp | 42 ++++++++++++++++++----------- - src/atomic_ptr.hpp | 25 ++++++++++++------ + src/atomic_bitmap.hpp | 72 ++++++++++++++++++++++++++++++++---------------- + src/atomic_counter.hpp | 42 ++++++++++++++++++---------- + src/atomic_ptr.hpp | 25 +++++++++++------ 3 files changed, 92 insertions(+), 47 deletions(-) commit ad6fa9d0d4f1cf29ce63998d7efe337b1a784ef6 @@ -20150,10 +27883,10 @@ initial version of multi-hop REQ/REP - src/rep.cpp | 97 +++++++++++++++++++---------- - src/req.cpp | 28 ++++++++- - src/xrep.cpp | 195 +++++++++++++++++++++++++++++++++++++++++++++++------------ - src/xrep.hpp | 35 +++++++++-- + src/rep.cpp | 97 +++++++++++++++++++---------- + src/req.cpp | 28 ++++++++- + src/xrep.cpp | 195 +++++++++++++++++++++++++++++++++++++++++++++++----------- + src/xrep.hpp | 35 +++++++++-- 4 files changed, 280 insertions(+), 75 deletions(-) commit 1ad6ade0ed465030716ce720077f3aa31e6cd136 @@ -20162,7 +27895,7 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 4 ++-- + builds/msvc/libzmq/libzmq.vcproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit beffee92a8ec9e14cca21e5901970c4d03967c3d @@ -20171,14 +27904,14 @@ P2P renamed to PAIR - doc/zmq_socket.txt | 8 +-- - include/zmq.h | 4 +- - src/Makefile.am | 4 +- - src/app_thread.cpp | 6 +-- - src/p2p.cpp | 139 ----------------------------------------------------- - src/p2p.hpp | 63 ------------------------ - src/pair.cpp | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/pair.hpp | 63 ++++++++++++++++++++++++ + doc/zmq_socket.txt | 8 +-- + include/zmq.h | 4 +- + src/Makefile.am | 4 +- + src/app_thread.cpp | 6 +-- + src/p2p.cpp | 139 ---------------------------------------------------- + src/p2p.hpp | 63 ------------------------ + src/pair.cpp | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/pair.hpp | 63 ++++++++++++++++++++++++ 8 files changed, 214 insertions(+), 212 deletions(-) commit 7d9603d722c9c2752dccd0c51f470e68d0e0c48c @@ -20187,7 +27920,7 @@ Bug in zmq_queue fixed - devices/zmq_queue/zmq_queue.cpp | 2 +- + devices/zmq_queue/zmq_queue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit d524c4e15d3cfa21f265d2c21e8a76ac97bfee2d @@ -20196,7 +27929,7 @@ fix of documentation typo - doc/zmq_setsockopt.txt | 2 +- + doc/zmq_setsockopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1c33941be9d564733c15fe0466906fdf0bbd46b8 @@ -20212,8 +27945,8 @@ atomic_ptr fix of Win64 - include/zmq.h | 2 +- - src/atomic_ptr.hpp | 2 +- + include/zmq.h | 2 +- + src/atomic_ptr.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 370cde09226d8a1b87eeac306fe97d64b4ea63a3 @@ -20222,7 +27955,7 @@ win build fixed - builds/msvc/libzmq/libzmq.vcproj | 4 ++-- + builds/msvc/libzmq/libzmq.vcproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0024d290765f53428ff78eddc5a4bc675a13c6a7 @@ -20231,10 +27964,10 @@ Build fixes for cross compiling and Win32 - configure.in | 27 ++++++++++++++++++--------- - foreign/xmlParser/xmlParser.cpp | 2 +- - include/zmq.h | 14 ++++++++------ - src/Makefile.am | 2 +- + configure.in | 27 ++++++++++++++++++--------- + foreign/xmlParser/xmlParser.cpp | 2 +- + include/zmq.h | 14 ++++++++------ + src/Makefile.am | 2 +- 4 files changed, 28 insertions(+), 17 deletions(-) commit 34964769399825e45b3efd02e642af97355707ef @@ -20243,10 +27976,10 @@ MSVC perf build fixed - builds/msvc/c_local_lat/c_local_lat.vcproj | 2 +- - builds/msvc/c_local_thr/c_local_thr.vcproj | 2 +- - builds/msvc/c_remote_lat/c_remote_lat.vcproj | 2 +- - builds/msvc/c_remote_thr/c_remote_thr.vcproj | 2 +- + builds/msvc/c_local_lat/c_local_lat.vcproj | 2 +- + builds/msvc/c_local_thr/c_local_thr.vcproj | 2 +- + builds/msvc/c_remote_lat/c_remote_lat.vcproj | 2 +- + builds/msvc/c_remote_thr/c_remote_thr.vcproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 7668e7976dc6c3e18a314d991381f29f5cbcc6ef @@ -20255,8 +27988,8 @@ zmq_poll returns ETERM in case of context termination - doc/zmq_socket.txt | 3 --- - src/zmq.cpp | 11 +++++++++-- + doc/zmq_socket.txt | 3 --- + src/zmq.cpp | 11 +++++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) commit 3236cb1a54316206d14a0f925dfa79d5b35f70fc @@ -20265,13 +27998,13 @@ ETERM is accounted for in the documentation - doc/zmq_bind.txt | 2 ++ - doc/zmq_connect.txt | 2 ++ - doc/zmq_poll.txt | 3 ++- - doc/zmq_recv.txt | 2 ++ - doc/zmq_send.txt | 2 ++ - doc/zmq_setsockopt.txt | 3 +++ - doc/zmq_socket.txt | 3 +++ + doc/zmq_bind.txt | 2 ++ + doc/zmq_connect.txt | 2 ++ + doc/zmq_poll.txt | 3 ++- + doc/zmq_recv.txt | 2 ++ + doc/zmq_send.txt | 2 ++ + doc/zmq_setsockopt.txt | 3 +++ + doc/zmq_socket.txt | 3 +++ 7 files changed, 16 insertions(+), 1 deletion(-) commit fba28c7c0cddd7c54fe45b38fc38ac6fe5a48438 @@ -20280,12 +28013,12 @@ issue 1 - Change zmq_term semantics - include/zmq.h | 1 + - src/app_thread.cpp | 25 ++++++++++++++++++++++--- - src/app_thread.hpp | 18 ++++++++++++++++-- - src/dispatcher.cpp | 7 +++++++ - src/socket_base.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++------- - src/zmq.cpp | 2 ++ + include/zmq.h | 1 + + src/app_thread.cpp | 25 ++++++++++++++++++++++--- + src/app_thread.hpp | 18 ++++++++++++++++-- + src/dispatcher.cpp | 7 +++++++ + src/socket_base.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++------- + src/zmq.cpp | 2 ++ 6 files changed, 91 insertions(+), 12 deletions(-) commit dff79d778db46bebe1e3b0cbd28b328972b9adb8 @@ -20294,7 +28027,7 @@ version number bumped to 2.0.7 for MSVC build - builds/msvc/platform.hpp | 2 +- + builds/msvc/platform.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6cf076510a39c8eb60b1ec2f28aa895b9fb6eaae @@ -20303,7 +28036,7 @@ C-style comments in zmq.h - include/zmq.h | 128 ++++++++++++++++++++++++++-------------------------------- + include/zmq.h | 128 +++++++++++++++++++++++++-------------------------------- 1 file changed, 57 insertions(+), 71 deletions(-) commit 00cf3ceb8da8cb58b343cb75798a042588f09752 @@ -20312,9 +28045,9 @@ multi-part message functionality available via ZMQ_SNDMORE and ZMQ_RCVMORE - include/zmq.h | 3 +++ - src/socket_base.cpp | 27 ++++++++++++++++++++++----- - src/socket_base.hpp | 3 +++ + include/zmq.h | 3 +++ + src/socket_base.cpp | 27 ++++++++++++++++++++++----- + src/socket_base.hpp | 3 +++ 3 files changed, 28 insertions(+), 5 deletions(-) commit 6fea42258348c8489d2cd64ca0e92981148134f8 @@ -20323,7 +28056,7 @@ getsockopt added to c++ binding - include/zmq.hpp | 8 ++++++++ + include/zmq.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) commit b668387d917cd80c5d4b9631bc0008b6a014c083 @@ -20332,11 +28065,11 @@ Remove -Wxxx gcc-isms from subdir Makefiles - configure.in | 6 +++--- - devices/zmq_forwarder/Makefile.am | 1 - - devices/zmq_queue/Makefile.am | 1 - - devices/zmq_streamer/Makefile.am | 1 - - perf/Makefile.am | 4 ---- + configure.in | 6 +++--- + devices/zmq_forwarder/Makefile.am | 1 - + devices/zmq_queue/Makefile.am | 1 - + devices/zmq_streamer/Makefile.am | 1 - + perf/Makefile.am | 4 ---- 5 files changed, 3 insertions(+), 10 deletions(-) commit f6fa41dd7b3677d0f7441db83cbd6c8a0283a499 @@ -20348,16 +28081,16 @@ This lets us build the binaries in a portable fashion w/o having to worry about how to link with the C++ runtime. - configure.in | 7 --- - perf/Makefile.am | 8 ++-- - perf/local_lat.c | 106 ---------------------------------------- - perf/local_lat.cpp | 106 ++++++++++++++++++++++++++++++++++++++++ - perf/local_thr.c | 136 ---------------------------------------------------- - perf/local_thr.cpp | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/remote_lat.c | 119 --------------------------------------------- - perf/remote_lat.cpp | 119 +++++++++++++++++++++++++++++++++++++++++++++ - perf/remote_thr.c | 98 ------------------------------------- - perf/remote_thr.cpp | 98 +++++++++++++++++++++++++++++++++++++ + configure.in | 7 --- + perf/Makefile.am | 8 +-- + perf/local_lat.c | 106 --------------------------------------- + perf/local_lat.cpp | 106 +++++++++++++++++++++++++++++++++++++++ + perf/local_thr.c | 136 --------------------------------------------------- + perf/local_thr.cpp | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++ + perf/remote_lat.c | 119 -------------------------------------------- + perf/remote_lat.cpp | 119 ++++++++++++++++++++++++++++++++++++++++++++ + perf/remote_thr.c | 98 ------------------------------------- + perf/remote_thr.cpp | 98 +++++++++++++++++++++++++++++++++++++ 10 files changed, 463 insertions(+), 470 deletions(-) commit c214a24f06bb41885dfbd73e42acb6e043df05ef @@ -20366,9 +28099,9 @@ fix for Sun C++ 5.8 - src/forwarder.cpp | 2 ++ - src/queue.cpp | 2 ++ - src/streamer.cpp | 2 ++ + src/forwarder.cpp | 2 ++ + src/queue.cpp | 2 ++ + src/streamer.cpp | 2 ++ 3 files changed, 6 insertions(+) commit 770aedbd09fb1e11a4e4880da2603a517856c16c @@ -20381,8 +28114,8 @@ Isolate GCC-isms inside checks that we are actually using GCC/G++. Only check for -lstdc++ when on GCC and doing static linking. - configure.in | 38 ++++++++++++++++++++++++++------------ - src/Makefile.am | 2 +- + configure.in | 38 ++++++++++++++++++++++++++------------ + src/Makefile.am | 2 +- 2 files changed, 27 insertions(+), 13 deletions(-) commit 1dc0380e29fecd70f6299243d81f67db850db616 @@ -20396,10 +28129,10 @@ Fixed spelling in debian/copyright. Removed RFC check in debian/rules, again irrelevant to a generic git package. - debian/README.source | 37 ------------------------------------- - debian/TODO.source | 5 ----- - debian/copyright | 2 +- - debian/rules | 6 ------ + debian/README.source | 37 ------------------------------------- + debian/TODO.source | 5 ----- + debian/copyright | 2 +- + debian/rules | 6 ------ 4 files changed, 1 insertion(+), 49 deletions(-) commit 8aa2acd0f8906b95232e765da805e3fab947b76b @@ -20408,41 +28141,41 @@ Debian packaging update from Adrian von Bidder - debian/README.Debian | 10 +-- - debian/README.source | 37 ++++++++ - debian/TODO.source | 5 ++ - debian/changelog | 24 ++++- - debian/cl-zeromq.files | 7 -- - debian/cl-zeromq.install | 6 -- - debian/cl-zeromq.links | 1 - - debian/control | 195 ++++++++++++---------------------------- - debian/copyright | 105 ++++++++++++++++++++-- - debian/dirs | 5 -- - debian/docs | 2 - - debian/libzeromq-dev.files | 37 -------- - debian/libzeromq-dev.install | 19 ---- - debian/libzeromq-python.files | 1 - - debian/libzeromq-python.install | 1 - - debian/libzeromq-ruby.files | 1 - - debian/libzeromq-ruby.install | 1 - - debian/libzeromq0.files | 2 - - debian/libzeromq0.install | 1 - - debian/libzmq-dev.install | 5 ++ - debian/libzmq-dev.manpages | 2 + - debian/libzmq0.install | 1 + - debian/libzmq0.manpages | 5 ++ - debian/rules | 126 +++++++++----------------- - debian/shlibs.local | 1 - - debian/source/format | 1 + - debian/source/options | 1 + - debian/zeromq-bin.install | 3 + - debian/zeromq-bin.manpages | 3 + - debian/zeromq-examples.files | 2 - - debian/zeromq-examples.install | 2 - - debian/zeromq-perf.files | 10 --- - debian/zeromq-perf.install | 10 --- - debian/zeromq-utils.files | 6 -- - debian/zeromq-utils.install | 6 -- + debian/README.Debian | 10 +- + debian/README.source | 37 ++++++++ + debian/TODO.source | 5 + + debian/changelog | 24 ++++- + debian/cl-zeromq.files | 7 -- + debian/cl-zeromq.install | 6 -- + debian/cl-zeromq.links | 1 - + debian/control | 195 +++++++++++---------------------------- + debian/copyright | 105 +++++++++++++++++++-- + debian/dirs | 5 - + debian/docs | 2 - + debian/libzeromq-dev.files | 37 -------- + debian/libzeromq-dev.install | 19 ---- + debian/libzeromq-python.files | 1 - + debian/libzeromq-python.install | 1 - + debian/libzeromq-ruby.files | 1 - + debian/libzeromq-ruby.install | 1 - + debian/libzeromq0.files | 2 - + debian/libzeromq0.install | 1 - + debian/libzmq-dev.install | 5 + + debian/libzmq-dev.manpages | 2 + + debian/libzmq0.install | 1 + + debian/libzmq0.manpages | 5 + + debian/rules | 126 +++++++++---------------- + debian/shlibs.local | 1 - + debian/source/format | 1 + + debian/source/options | 1 + + debian/zeromq-bin.install | 3 + + debian/zeromq-bin.manpages | 3 + + debian/zeromq-examples.files | 2 - + debian/zeromq-examples.install | 2 - + debian/zeromq-perf.files | 10 -- + debian/zeromq-perf.install | 10 -- + debian/zeromq-utils.files | 6 -- + debian/zeromq-utils.install | 6 -- 35 files changed, 283 insertions(+), 361 deletions(-) commit 1d28dc9059d0014314ad22d98ddb7c6f21c151e7 @@ -20454,7 +28187,7 @@ Don't fail hard if an unreleased tarball is being built and asciidoc is not installed; instead just print a big fat warning - configure.in | 23 +++++++++-------------- + configure.in | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) commit 6ea76e95736152e83f977ad860f40a231cedb1ef @@ -20463,7 +28196,7 @@ version bumped to 2.0.7 - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 716f4ac8714d33d21f9853f58482e35c1e3ad934 @@ -20472,12 +28205,12 @@ zmq_getsockopt function added - include/zmq.h | 2 + - src/options.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++- - src/options.hpp | 1 + - src/socket_base.cpp | 7 ++++ - src/socket_base.hpp | 4 +- - src/zmq.cpp | 6 +++ + include/zmq.h | 2 + + src/options.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++- + src/options.hpp | 1 + + src/socket_base.cpp | 7 ++++ + src/socket_base.hpp | 4 +- + src/zmq.cpp | 6 +++ 6 files changed, 122 insertions(+), 4 deletions(-) commit 027bb1d2a7c83c7c719f6bdc3100eb639019d2f0 @@ -20486,7 +28219,7 @@ issue 10 - zmq_strerror problem on Windows - src/zmq.cpp | 4 ++++ + src/zmq.cpp | 4 ++++ 1 file changed, 4 insertions(+) commit 5cd9f74a70e2c8503c29aaca881c193a936b7b44 @@ -20495,7 +28228,7 @@ few fixed related to multi-part messages in REP socket - src/rep.cpp | 21 +++++++++++++-------- + src/rep.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) commit 77cbd18e9c0480a6c26fd29de5d70569762108be @@ -20504,7 +28237,7 @@ issue 11 - Assertion failed: it != peers.end () (pgm_receiver.cpp:161) - src/pgm_receiver.cpp | 15 ++++++++------- + src/pgm_receiver.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) commit 38e9103e0c82bcbb61a9c23ed3a4ace1c7420f95 @@ -20513,7 +28246,7 @@ issue 13 (Assertion failed: load.get () == 0 (epoll.cpp:49)) fixed - src/object.cpp | 2 ++ + src/object.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 0f7aab5212ef66f7e292fe4ca891660859972ec4 @@ -20529,7 +28262,7 @@ unitialised member in seesion_t class - fixed - src/session.cpp | 1 + + src/session.cpp | 1 + 1 file changed, 1 insertion(+) commit b0250cc89df8d6c3d3fff7c8edc17a09ceaaa107 @@ -20538,7 +28271,7 @@ Win32 build fixed - builds/msvc/libzmq/libzmq.vcproj | 24 ++++++++++++++++++++++++ + builds/msvc/libzmq/libzmq.vcproj | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) commit 065e4d00ff628097ce693ac7d9056fbcaf23d0bc @@ -20554,19 +28287,19 @@ devices can be created via API - devices/zmq_forwarder/zmq_forwarder.cpp | 6 +- - devices/zmq_queue/zmq_queue.cpp | 110 +------------------------------- - devices/zmq_streamer/zmq_streamer.cpp | 6 +- - include/zmq.h | 10 +++ - include/zmq.hpp | 7 ++ - src/Makefile.am | 6 ++ - src/forwarder.cpp | 36 +++++++++++ - src/forwarder.hpp | 31 +++++++++ - src/queue.cpp | 98 ++++++++++++++++++++++++++++ - src/queue.hpp | 31 +++++++++ - src/streamer.cpp | 36 +++++++++++ - src/streamer.hpp | 31 +++++++++ - src/zmq.cpp | 20 ++++++ + devices/zmq_forwarder/zmq_forwarder.cpp | 6 +- + devices/zmq_queue/zmq_queue.cpp | 110 +------------------------------ + devices/zmq_streamer/zmq_streamer.cpp | 6 +- + include/zmq.h | 10 +++ + include/zmq.hpp | 7 ++ + src/Makefile.am | 6 ++ + src/forwarder.cpp | 36 ++++++++++ + src/forwarder.hpp | 31 +++++++++ + src/queue.cpp | 98 +++++++++++++++++++++++++++ + src/queue.hpp | 31 +++++++++ + src/streamer.cpp | 36 ++++++++++ + src/streamer.hpp | 31 +++++++++ + src/zmq.cpp | 20 ++++++ 13 files changed, 309 insertions(+), 119 deletions(-) commit a7973a2c4997e2ff79126eb073dc675c574de917 @@ -20575,8 +28308,8 @@ Documentation fixes - doc/zmq_bind.txt | 6 +++--- - doc/zmq_setsockopt.txt | 7 +++++-- + doc/zmq_bind.txt | 6 +++--- + doc/zmq_setsockopt.txt | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) commit 0777567e8911382ac42859f907730df023ebec26 @@ -20585,7 +28318,7 @@ ENODEV from zmq_bind error described - doc/zmq_bind.txt | 4 +++- + doc/zmq_bind.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 37fd1a77a6927ae351e10fe8d5b68d0b0d525d22 @@ -20594,7 +28327,7 @@ Handle full-pipe for REP sockets more gracefully - src/rep.cpp | 14 ++++++++++---- + src/rep.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit 2f219d7c287cd518bc77b576e507d7a17c9535e9 @@ -20603,22 +28336,22 @@ ZMQ_TBC renamed to ZMQ_MORE - include/zmq.h | 4 ++-- - src/fq.cpp | 12 ++++++------ - src/fq.hpp | 2 +- - src/lb.cpp | 12 ++++++------ - src/lb.hpp | 2 +- - src/pipe.cpp | 6 +++--- - src/pub.cpp | 2 +- - src/rep.cpp | 22 +++++++++++----------- - src/rep.hpp | 2 +- - src/req.cpp | 20 ++++++++++---------- - src/req.hpp | 2 +- - src/session.cpp | 2 +- - src/socket_base.cpp | 6 +++--- - src/sub.cpp | 14 +++++++------- - src/sub.hpp | 2 +- - src/zmq_encoder.cpp | 6 +++--- + include/zmq.h | 4 ++-- + src/fq.cpp | 12 ++++++------ + src/fq.hpp | 2 +- + src/lb.cpp | 12 ++++++------ + src/lb.hpp | 2 +- + src/pipe.cpp | 6 +++--- + src/pub.cpp | 2 +- + src/rep.cpp | 22 +++++++++++----------- + src/rep.hpp | 2 +- + src/req.cpp | 20 ++++++++++---------- + src/req.hpp | 2 +- + src/session.cpp | 2 +- + src/socket_base.cpp | 6 +++--- + src/sub.cpp | 14 +++++++------- + src/sub.hpp | 2 +- + src/zmq_encoder.cpp | 6 +++--- 16 files changed, 58 insertions(+), 58 deletions(-) commit 842b4dd2e492459cbc0cc79ffdb34ddab8f0b528 @@ -20627,8 +28360,8 @@ muti-part message functionality available via API - include/zmq.h | 1 + - src/socket_base.cpp | 5 +++++ + include/zmq.h | 1 + + src/socket_base.cpp | 5 +++++ 2 files changed, 6 insertions(+) commit 8d8e0857be3d2ab941de443e436061ef82752c17 @@ -20637,8 +28370,8 @@ as advertised, zmq_flush and ZMQ_NOFLUSH were removed - include/zmq.h | 2 -- - src/zmq.cpp | 6 ------ + include/zmq.h | 2 -- + src/zmq.cpp | 6 ------ 2 files changed, 8 deletions(-) commit 06538fc11790a0cf895c43d137a33febf97f3a28 @@ -20647,10 +28380,10 @@ multi-part messages work with REQ/REP sockets - src/rep.cpp | 71 ++++++++++++++++++++++++++++++++++++++++--------------------- - src/rep.hpp | 9 ++++++-- - src/req.cpp | 61 ++++++++++++++++++++++++++++++++++------------------ - src/req.hpp | 9 ++++++-- + src/rep.cpp | 71 +++++++++++++++++++++++++++++++++++++++-------------------- + src/rep.hpp | 9 ++++++-- + src/req.cpp | 61 ++++++++++++++++++++++++++++++++------------------ + src/req.hpp | 9 ++++++-- 4 files changed, 101 insertions(+), 49 deletions(-) commit bbfac783f91f6692b7f9c0aa5392ac955f7b49bf @@ -20659,8 +28392,8 @@ multi-part message work with UPSTREAM/DOWNSTREAM - src/lb.cpp | 25 +++++++++++++++++++------ - src/lb.hpp | 3 +++ + src/lb.cpp | 25 +++++++++++++++++++------ + src/lb.hpp | 3 +++ 2 files changed, 22 insertions(+), 6 deletions(-) commit ed291b02516ac5c9fe01f328d505305d36fe6319 @@ -20669,13 +28402,13 @@ multi-part messages work with PUB/SUB - src/fq.cpp | 31 +++++++++++++++++++++++++------ - src/fq.hpp | 4 ++++ - src/pipe.cpp | 10 ++++++++-- - src/pub.cpp | 3 ++- - src/sub.cpp | 27 +++++++++++++++++++++++++-- - src/sub.hpp | 4 ++++ - src/ypipe.hpp | 2 +- + src/fq.cpp | 31 +++++++++++++++++++++++++------ + src/fq.hpp | 4 ++++ + src/pipe.cpp | 10 ++++++++-- + src/pub.cpp | 3 ++- + src/sub.cpp | 27 +++++++++++++++++++++++++-- + src/sub.hpp | 4 ++++ + src/ypipe.hpp | 2 +- 7 files changed, 69 insertions(+), 12 deletions(-) commit 0b9897b141ae03ccd00132a638d030a2521cf5b3 @@ -20691,7 +28424,7 @@ Clarify use of poll() with C++ API, fix typo - doc/zmq_cpp.txt | 5 ++++- + doc/zmq_cpp.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit c802a72a0b4aae06cd65158af3c65e65e0dfc2e0 @@ -20700,7 +28433,7 @@ configure does not mention xmlto when missing - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0a53ff7b9f8a212793c540535c322bfaa93d3430 @@ -20716,8 +28449,8 @@ PUB socket was blocking occassionally - fixed - src/pub.cpp | 84 ++++++++++++++++++++++++++++--------------------------------- - src/pub.hpp | 17 +++++++------ + src/pub.cpp | 84 +++++++++++++++++++++++++++-------------------------------- + src/pub.hpp | 17 ++++++------ 2 files changed, 47 insertions(+), 54 deletions(-) commit f031677100b41347e09932fc973040097a2187e4 @@ -20726,8 +28459,8 @@ rollback of half-processed messages in case of disconnection - src/session.cpp | 27 ++++++++++++++++++++++++++- - src/session.hpp | 4 ++++ + src/session.cpp | 27 ++++++++++++++++++++++++++- + src/session.hpp | 4 ++++ 2 files changed, 30 insertions(+), 1 deletion(-) commit dfdaff5eba1e6980adb3326c119d2070d0ad42bb @@ -20736,22 +28469,22 @@ XREP-style prefixing/trimming messages removed - src/i_engine.hpp | 10 ++-------- - src/options.cpp | 3 +-- - src/options.hpp | 3 --- - src/pgm_receiver.cpp | 12 ------------ - src/pgm_receiver.hpp | 2 -- - src/pgm_sender.cpp | 12 ------------ - src/pgm_sender.hpp | 2 -- - src/session.cpp | 5 ----- - src/xrep.cpp | 5 ++--- - src/zmq_decoder.cpp | 48 +++++++----------------------------------------- - src/zmq_decoder.hpp | 8 -------- - src/zmq_encoder.cpp | 31 ++++--------------------------- - src/zmq_encoder.hpp | 6 ------ - src/zmq_engine.cpp | 10 ---------- - src/zmq_engine.hpp | 2 -- - src/zmq_init.cpp | 3 +-- + src/i_engine.hpp | 10 ++-------- + src/options.cpp | 3 +-- + src/options.hpp | 3 --- + src/pgm_receiver.cpp | 12 ------------ + src/pgm_receiver.hpp | 2 -- + src/pgm_sender.cpp | 12 ------------ + src/pgm_sender.hpp | 2 -- + src/session.cpp | 5 ----- + src/xrep.cpp | 5 ++--- + src/zmq_decoder.cpp | 48 +++++++----------------------------------------- + src/zmq_decoder.hpp | 8 -------- + src/zmq_encoder.cpp | 31 ++++--------------------------- + src/zmq_encoder.hpp | 6 ------ + src/zmq_engine.cpp | 10 ---------- + src/zmq_engine.hpp | 2 -- + src/zmq_init.cpp | 3 +-- 16 files changed, 17 insertions(+), 145 deletions(-) commit cbaf10978a8ffa98d98161aeec8d020c517b127b @@ -20760,8 +28493,8 @@ fixes for building with Sun CC - src/dispatcher.cpp | 3 ++- - src/tcp_listener.cpp | 6 +++--- + src/dispatcher.cpp | 3 ++- + src/tcp_listener.cpp | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) commit ae35a1644cd8f2441de73f1260c46bb0da6a1605 @@ -20770,10 +28503,10 @@ fix include paths in perf on Win32 - perf/local_lat.c | 2 +- - perf/local_thr.c | 2 +- - perf/remote_lat.c | 2 +- - perf/remote_thr.c | 2 +- + perf/local_lat.c | 2 +- + perf/local_thr.c | 2 +- + perf/remote_lat.c | 2 +- + perf/remote_thr.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) commit 49a30d49f37148db1be105615668998c8fb8ea86 @@ -20782,8 +28515,8 @@ Update contributors for 2.0.6 - AUTHORS | 96 +++++++++++++++++++++++++++++++++------------------------------ - ChangeLog | 19 ++++++++----- + AUTHORS | 96 ++++++++++++++++++++++++++++++++----------------------------- + ChangeLog | 19 +++++++----- 2 files changed, 62 insertions(+), 53 deletions(-) commit fe18ce1abab2ef43f97ef6f2b093a69f42cb7103 @@ -20801,7 +28534,7 @@ Add Git location to README - README | 4 +++- + README | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 6d5a9e96400025044af8172887ef99589c0d1eb1 @@ -20810,7 +28543,7 @@ Update README - README | 39 +++++++++++++++++++++++++++++++++++++-- + README | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) commit ad75d0213483f3c585ce144386623e64e65eca0d @@ -20819,10 +28552,10 @@ Add MSVC build files to distribution - .gitignore | 12 ++++-------- - Makefile.am | 2 +- - builds/msvc/Makefile.am | 12 ++++++++++++ - configure.in | 3 ++- + .gitignore | 12 ++++-------- + Makefile.am | 2 +- + builds/msvc/Makefile.am | 12 ++++++++++++ + configure.in | 3 ++- 4 files changed, 19 insertions(+), 10 deletions(-) commit a9e0c3cd7e0c54f872749f387cf3d69b216bc613 @@ -20831,8 +28564,8 @@ Removing leftover MSVC builds - builds/msvc/display/display.vcproj | 176 ------------------------------------- - builds/msvc/prompt/prompt.vcproj | 176 ------------------------------------- + builds/msvc/display/display.vcproj | 176 ------------------------------------ + builds/msvc/prompt/prompt.vcproj | 176 ------------------------------------ 2 files changed, 352 deletions(-) commit 5472861179ff232c55e7a7021a93da5c680f2017 @@ -20848,7 +28581,7 @@ Clarify zmq_poll restrictions - doc/zmq_poll.txt | 3 +++ + doc/zmq_poll.txt | 3 +++ 1 file changed, 3 insertions(+) commit 1705ec224745b935e13d8f18ef81bcbef45ff143 @@ -20857,7 +28590,7 @@ C++ interface documentation updates - doc/zmq_cpp.txt | 195 +++++++++++++++++++++++++++++++++++++++++++------------- + doc/zmq_cpp.txt | 195 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 151 insertions(+), 44 deletions(-) commit 8fcf6ffb67aba2ff9f78f4ba327d29755f03535a @@ -20866,7 +28599,7 @@ Cleanups to autogen.sh - autogen.sh | 2 +- + autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit fceba036279a0e9bb39aebd862b70ad1bb5b3f40 @@ -20878,7 +28611,7 @@ Use POSIX "command -v" construct to test for prerequisite commands Clarify error messages on failure - autogen.sh | 30 ++++++++++++++---------------- + autogen.sh | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) commit 61ad236e9543a569fe066872a5fda4fa40ea7591 @@ -20887,34 +28620,34 @@ ZMQ_NOFLUSH and zmq_flush obsoleted - doc/Makefile.am | 2 +- - doc/zmq.txt | 1 - - doc/zmq_flush.txt | 55 ----------------------------------------------------- - doc/zmq_send.txt | 8 -------- - doc/zmq_socket.txt | 1 - - include/zmq.hpp | 7 ------- - src/downstream.cpp | 10 ---------- - src/downstream.hpp | 1 - - src/lb.cpp | 3 +-- - src/p2p.cpp | 10 +--------- - src/p2p.hpp | 1 - - src/pub.cpp | 17 +++-------------- - src/pub.hpp | 1 - - src/rep.cpp | 6 ------ - src/rep.hpp | 1 - - src/req.cpp | 6 ------ - src/req.hpp | 1 - - src/socket_base.cpp | 5 ----- - src/socket_base.hpp | 2 -- - src/sub.cpp | 6 ------ - src/sub.hpp | 1 - - src/upstream.cpp | 6 ------ - src/upstream.hpp | 1 - - src/xrep.cpp | 6 ------ - src/xrep.hpp | 1 - - src/xreq.cpp | 7 ------- - src/xreq.hpp | 1 - - src/zmq.cpp | 3 ++- + doc/Makefile.am | 2 +- + doc/zmq.txt | 1 - + doc/zmq_flush.txt | 55 --------------------------------------------------- + doc/zmq_send.txt | 8 -------- + doc/zmq_socket.txt | 1 - + include/zmq.hpp | 7 ------- + src/downstream.cpp | 10 ---------- + src/downstream.hpp | 1 - + src/lb.cpp | 3 +-- + src/p2p.cpp | 10 +--------- + src/p2p.hpp | 1 - + src/pub.cpp | 17 +++------------- + src/pub.hpp | 1 - + src/rep.cpp | 6 ------ + src/rep.hpp | 1 - + src/req.cpp | 6 ------ + src/req.hpp | 1 - + src/socket_base.cpp | 5 ----- + src/socket_base.hpp | 2 -- + src/sub.cpp | 6 ------ + src/sub.hpp | 1 - + src/upstream.cpp | 6 ------ + src/upstream.hpp | 1 - + src/xrep.cpp | 6 ------ + src/xrep.hpp | 1 - + src/xreq.cpp | 7 ------- + src/xreq.hpp | 1 - + src/zmq.cpp | 3 ++- 28 files changed, 8 insertions(+), 162 deletions(-) commit c42343d3f027248514344aec9e3814dfe1047d59 @@ -20923,8 +28656,8 @@ pipe_t::rollback removes only unfinished message from the pipe rather than all unflushed messages - src/pipe.cpp | 4 ++++ - src/pipe.hpp | 2 +- + src/pipe.cpp | 4 ++++ + src/pipe.hpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) commit dcb983699e52bf2e075baaeef250bcd3c82e4846 @@ -20933,7 +28666,7 @@ zmq_queue implementation added - devices/zmq_queue/zmq_queue.cpp | 114 ++++++++++++++++++++++++++++++++++++++-- + devices/zmq_queue/zmq_queue.cpp | 114 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 109 insertions(+), 5 deletions(-) commit 22db38bf3d9c96a840af50300632d44fd01ed3a8 @@ -20942,18 +28675,18 @@ MSVC build: C++ perf tests removed; all executables go into bin directory - builds/msvc/c_local_lat/c_local_lat.vcproj | 8 +- - builds/msvc/c_local_thr/c_local_thr.vcproj | 8 +- - builds/msvc/c_remote_lat/c_remote_lat.vcproj | 8 +- - builds/msvc/c_remote_thr/c_remote_thr.vcproj | 8 +- - builds/msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 ----------------------- - builds/msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 ----------------------- - builds/msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 ----------------------- - builds/msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 ----------------------- - builds/msvc/msvc.sln | 44 +----- - builds/msvc/zmq_forwarder/zmq_forwarder.vcproj | 2 + - builds/msvc/zmq_queue/zmq_queue.vcproj | 2 + - builds/msvc/zmq_streamer/zmq_streamer.vcproj | 2 + + builds/msvc/c_local_lat/c_local_lat.vcproj | 8 +- + builds/msvc/c_local_thr/c_local_thr.vcproj | 8 +- + builds/msvc/c_remote_lat/c_remote_lat.vcproj | 8 +- + builds/msvc/c_remote_thr/c_remote_thr.vcproj | 8 +- + builds/msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 ---------------------- + builds/msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 ---------------------- + builds/msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 ---------------------- + builds/msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 ---------------------- + builds/msvc/msvc.sln | 44 +----- + builds/msvc/zmq_forwarder/zmq_forwarder.vcproj | 2 + + builds/msvc/zmq_queue/zmq_queue.vcproj | 2 + + builds/msvc/zmq_streamer/zmq_streamer.vcproj | 2 + 12 files changed, 26 insertions(+), 760 deletions(-) commit c08a7f8896e8fdae8379d2fce552b360daaeadc8 @@ -20962,23 +28695,23 @@ C perf tests are built non-optionally; C++ perf tests removed - Makefile.am | 6 +-- - configure.in | 26 +-------- - perf/Makefile.am | 131 +++++++++++++++++++++++++++++++++++++++++++++- - perf/c/Makefile.am | 129 --------------------------------------------- - perf/c/local_lat.c | 106 ------------------------------------- - perf/c/local_thr.c | 136 ------------------------------------------------ - perf/c/remote_lat.c | 119 ------------------------------------------ - perf/c/remote_thr.c | 98 ---------------------------------- - perf/cpp/Makefile.am | 20 ------- - perf/cpp/local_lat.cpp | 52 ------------------ - perf/cpp/local_thr.cpp | 71 ------------------------- - perf/cpp/remote_lat.cpp | 63 ---------------------- - perf/cpp/remote_thr.cpp | 54 ------------------- - perf/local_lat.c | 106 +++++++++++++++++++++++++++++++++++++ - perf/local_thr.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++ - perf/remote_lat.c | 119 ++++++++++++++++++++++++++++++++++++++++++ - perf/remote_thr.c | 98 ++++++++++++++++++++++++++++++++++ + Makefile.am | 6 +-- + configure.in | 26 +-------- + perf/Makefile.am | 131 ++++++++++++++++++++++++++++++++++++++++++++- + perf/c/Makefile.am | 129 -------------------------------------------- + perf/c/local_lat.c | 106 ------------------------------------ + perf/c/local_thr.c | 136 ----------------------------------------------- + perf/c/remote_lat.c | 119 ----------------------------------------- + perf/c/remote_thr.c | 98 ---------------------------------- + perf/cpp/Makefile.am | 20 ------- + perf/cpp/local_lat.cpp | 52 ------------------ + perf/cpp/local_thr.cpp | 71 ------------------------- + perf/cpp/remote_lat.cpp | 63 ---------------------- + perf/cpp/remote_thr.cpp | 54 ------------------- + perf/local_lat.c | 106 ++++++++++++++++++++++++++++++++++++ + perf/local_thr.c | 136 +++++++++++++++++++++++++++++++++++++++++++++++ + perf/remote_lat.c | 119 +++++++++++++++++++++++++++++++++++++++++ + perf/remote_thr.c | 98 ++++++++++++++++++++++++++++++++++ 17 files changed, 590 insertions(+), 880 deletions(-) commit 1fbeba2fe3c3bd6046eea4d6432791194d4238f2 @@ -20987,7 +28720,7 @@ simplify configuration summary - configure.in | 19 ++++--------------- + configure.in | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) commit 66b67fbdf2b047ef7adb8ec018a6fe89dd9cbfca @@ -20996,9 +28729,9 @@ devices are built unconditionally - configure.in | 34 ---------------------------------- - devices/Makefile.am | 13 +------------ - src/req.cpp | 2 +- + configure.in | 34 ---------------------------------- + devices/Makefile.am | 13 +------------ + src/req.cpp | 2 +- 3 files changed, 2 insertions(+), 47 deletions(-) commit 430aa533347dcbca57857d318a6898f480967cba @@ -21007,7 +28740,7 @@ text concerning language bindings removed from configure - configure.in | 3 --- + configure.in | 3 --- 1 file changed, 3 deletions(-) commit 54df388aced3ae059009eec3df66c7dea717747b @@ -21016,12 +28749,12 @@ Java binding removed from MSVC build - builds/msvc/j_local_lat/j_local_lat.vcproj | 78 -------- - builds/msvc/j_local_thr/j_local_thr.vcproj | 78 -------- - builds/msvc/j_remote_lat/j_remote_lat.vcproj | 78 -------- - builds/msvc/j_remote_thr/j_remote_thr.vcproj | 78 -------- - builds/msvc/java/java.vcproj | 272 --------------------------- - builds/msvc/msvc.sln | 45 ----- + builds/msvc/j_local_lat/j_local_lat.vcproj | 78 -------- + builds/msvc/j_local_thr/j_local_thr.vcproj | 78 -------- + builds/msvc/j_remote_lat/j_remote_lat.vcproj | 78 -------- + builds/msvc/j_remote_thr/j_remote_thr.vcproj | 78 -------- + builds/msvc/java/java.vcproj | 272 -------------------------- + builds/msvc/msvc.sln | 45 ----- 6 files changed, 629 deletions(-) commit 6badd204d5686de8b2a6e8ee88da78260c0ff949 @@ -21030,7 +28763,7 @@ Implement flow control for ZMQ_REP sockets - src/rep.cpp | 14 +++++++------- + src/rep.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 923609b0922c3bf07f16c8c99aba4fe98f08ef60 @@ -21039,8 +28772,8 @@ Implement flow control for ZMQ_REQ sockets - src/req.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++++++++------------- - src/req.hpp | 3 ++ + src/req.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++++++------------- + src/req.hpp | 3 ++ 2 files changed, 80 insertions(+), 21 deletions(-) commit 42e575cb6b62fe1e5d12d2e4fb5c6874d47eb57e @@ -21049,7 +28782,7 @@ Implement flow control fox ZMQ_XREP sockets - src/xrep.cpp | 8 +++++--- + src/xrep.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit e34184acc327ae4b085a1a50ff6502e2dc148522 @@ -21058,7 +28791,7 @@ Implement flow control for ZMQ_XREQ sockets - src/xreq.cpp | 2 +- + src/xreq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 06d7a447378c8e9f0805c219deaf8e7e7ef1eeb0 @@ -21067,8 +28800,8 @@ Implement flow control for ZMQ_PUB sockets - src/pub.cpp | 34 ++++++++++++++++++++++++++-------- - src/pub.hpp | 7 +++++++ + src/pub.cpp | 34 ++++++++++++++++++++++++++-------- + src/pub.hpp | 7 +++++++ 2 files changed, 33 insertions(+), 8 deletions(-) commit f9c84a1a689f4f64cfa45cb22d4f02ec246c7f93 @@ -21077,7 +28810,7 @@ Implement flow control for ZMQ_DOWNSTREAM sockets - src/downstream.cpp | 2 +- + src/downstream.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5d4f6b18cd57897cc0e77e474118e104a0d5cfc3 @@ -21086,8 +28819,8 @@ Implement flow control for ZMQ_P2P sockets - src/p2p.cpp | 21 +++++++++++++++------ - src/p2p.hpp | 1 + + src/p2p.cpp | 21 +++++++++++++++------ + src/p2p.hpp | 1 + 2 files changed, 16 insertions(+), 6 deletions(-) commit f9521c6b6a35103c03b742a311a34d7b04da0b84 @@ -21096,8 +28829,8 @@ PGM: implement flow control - src/pgm_receiver.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- - src/pgm_receiver.hpp | 9 +++++++++ + src/pgm_receiver.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- + src/pgm_receiver.hpp | 9 +++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) commit 61ee6fae536a8000be87b5aaf271f6519a3b7d3f @@ -21114,46 +28847,46 @@ The following commits will add flow-control support for individual socket types. - src/command.hpp | 8 ++++++++ - src/downstream.cpp | 6 +++++- - src/downstream.hpp | 1 + - src/err.hpp | 6 ++++++ - src/i_endpoint.hpp | 1 + - src/i_engine.hpp | 2 ++ - src/lb.cpp | 49 ++++++++++++++++++++------------------------ - src/lb.hpp | 1 - - src/object.cpp | 19 ++++++++++++++++++ - src/object.hpp | 3 +++ - src/options.cpp | 8 ++++---- - src/options.hpp | 4 ++-- - src/p2p.cpp | 11 ++++++---- - src/p2p.hpp | 1 + - src/pgm_receiver.cpp | 5 +++++ - src/pgm_receiver.hpp | 1 + - src/pgm_sender.cpp | 5 +++++ - src/pgm_sender.hpp | 1 + - src/pipe.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++---------- - src/pipe.hpp | 29 +++++++++++++++++--------- - src/pub.cpp | 16 +++++++++++---- - src/pub.hpp | 1 + - src/rep.cpp | 10 +++++++-- - src/rep.hpp | 1 + - src/req.cpp | 11 ++++++---- - src/req.hpp | 1 + - src/session.cpp | 7 +++++++ - src/session.hpp | 1 + - src/socket_base.cpp | 5 +++++ - src/socket_base.hpp | 2 ++ - src/sub.cpp | 5 +++++ - src/sub.hpp | 1 + - src/upstream.cpp | 5 +++++ - src/upstream.hpp | 1 + - src/xrep.cpp | 8 +++++++- - src/xrep.hpp | 1 + - src/xreq.cpp | 6 +++++- - src/xreq.hpp | 1 + - src/zmq_engine.cpp | 17 +++++++++++----- - src/zmq_engine.hpp | 1 + + src/command.hpp | 8 +++++++ + src/downstream.cpp | 6 +++++- + src/downstream.hpp | 1 + + src/err.hpp | 6 ++++++ + src/i_endpoint.hpp | 1 + + src/i_engine.hpp | 2 ++ + src/lb.cpp | 49 +++++++++++++++++++------------------------ + src/lb.hpp | 1 - + src/object.cpp | 19 +++++++++++++++++ + src/object.hpp | 3 +++ + src/options.cpp | 8 +++---- + src/options.hpp | 4 ++-- + src/p2p.cpp | 11 ++++++---- + src/p2p.hpp | 1 + + src/pgm_receiver.cpp | 5 +++++ + src/pgm_receiver.hpp | 1 + + src/pgm_sender.cpp | 5 +++++ + src/pgm_sender.hpp | 1 + + src/pipe.cpp | 57 ++++++++++++++++++++++++++++++++++++++++---------- + src/pipe.hpp | 29 ++++++++++++++++--------- + src/pub.cpp | 16 ++++++++++---- + src/pub.hpp | 1 + + src/rep.cpp | 10 +++++++-- + src/rep.hpp | 1 + + src/req.cpp | 11 ++++++---- + src/req.hpp | 1 + + src/session.cpp | 7 +++++++ + src/session.hpp | 1 + + src/socket_base.cpp | 5 +++++ + src/socket_base.hpp | 2 ++ + src/sub.cpp | 5 +++++ + src/sub.hpp | 1 + + src/upstream.cpp | 5 +++++ + src/upstream.hpp | 1 + + src/xrep.cpp | 8 ++++++- + src/xrep.hpp | 1 + + src/xreq.cpp | 6 +++++- + src/xreq.hpp | 1 + + src/zmq_engine.cpp | 17 ++++++++++----- + src/zmq_engine.hpp | 1 + 40 files changed, 242 insertions(+), 77 deletions(-) commit 31d36104aa7caead6f299f0c5cb58a9fde7cf9b0 @@ -21162,9 +28895,9 @@ devices/ build fixed - devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- - devices/zmq_queue/zmq_queue.cpp | 2 +- - devices/zmq_streamer/zmq_streamer.cpp | 2 +- + devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- + devices/zmq_queue/zmq_queue.cpp | 2 +- + devices/zmq_streamer/zmq_streamer.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 10bbe6af9900b4609cfcadc031dcf4dcb8ebfb3b @@ -21173,7 +28906,7 @@ Cleanup .gitignore - .gitignore | 6 ------ + .gitignore | 6 ------ 1 file changed, 6 deletions(-) commit 27e2d08449ea52649e2e42b263f76fbd5d8382c5 @@ -21186,43 +28919,43 @@ --with-c and --with-cpp options to configure removed, C and C++ now built and installed by default - bindings/c/zmq.h | 249 ---------------------------------------------- - bindings/cpp/zmq.hpp | 266 -------------------------------------------------- - configure.in | 32 +----- - include/zmq.h | 249 ++++++++++++++++++++++++++++++++++++++++++++++ - include/zmq.hpp | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/Makefile.am | 10 +- - perf/c/Makefile.am | 2 +- - perf/cpp/Makefile.am | 2 +- - src/Makefile.am | 12 +-- - src/app_thread.cpp | 2 +- - src/dispatcher.cpp | 2 +- - src/downstream.cpp | 2 +- - src/err.cpp | 2 +- - src/fq.cpp | 2 +- - src/i_inout.hpp | 2 +- - src/io_thread.cpp | 2 +- - src/lb.cpp | 2 +- - src/msg_content.hpp | 2 +- - src/options.cpp | 2 +- - src/p2p.cpp | 2 +- - src/pipe.cpp | 2 +- - src/pipe.hpp | 2 +- - src/pub.cpp | 2 +- - src/rep.cpp | 2 +- - src/req.cpp | 2 +- - src/socket_base.cpp | 2 +- - src/socket_base.hpp | 2 +- - src/sub.cpp | 2 +- - src/sub.hpp | 2 +- - src/tcp_connecter.cpp | 2 +- - src/tcp_listener.cpp | 2 +- - src/upstream.cpp | 2 +- - src/xrep.cpp | 2 +- - src/xreq.cpp | 2 +- - src/zmq.cpp | 2 +- - src/zmq_decoder.hpp | 2 +- - src/zmq_encoder.hpp | 2 +- + bindings/c/zmq.h | 249 --------------------------------------------- + bindings/cpp/zmq.hpp | 266 ------------------------------------------------- + configure.in | 32 +----- + include/zmq.h | 249 +++++++++++++++++++++++++++++++++++++++++++++ + include/zmq.hpp | 266 +++++++++++++++++++++++++++++++++++++++++++++++++ + perf/Makefile.am | 10 +- + perf/c/Makefile.am | 2 +- + perf/cpp/Makefile.am | 2 +- + src/Makefile.am | 12 +-- + src/app_thread.cpp | 2 +- + src/dispatcher.cpp | 2 +- + src/downstream.cpp | 2 +- + src/err.cpp | 2 +- + src/fq.cpp | 2 +- + src/i_inout.hpp | 2 +- + src/io_thread.cpp | 2 +- + src/lb.cpp | 2 +- + src/msg_content.hpp | 2 +- + src/options.cpp | 2 +- + src/p2p.cpp | 2 +- + src/pipe.cpp | 2 +- + src/pipe.hpp | 2 +- + src/pub.cpp | 2 +- + src/rep.cpp | 2 +- + src/req.cpp | 2 +- + src/socket_base.cpp | 2 +- + src/socket_base.hpp | 2 +- + src/sub.cpp | 2 +- + src/sub.hpp | 2 +- + src/tcp_connecter.cpp | 2 +- + src/tcp_listener.cpp | 2 +- + src/upstream.cpp | 2 +- + src/xrep.cpp | 2 +- + src/xreq.cpp | 2 +- + src/zmq.cpp | 2 +- + src/zmq_decoder.hpp | 2 +- + src/zmq_encoder.hpp | 2 +- 37 files changed, 549 insertions(+), 595 deletions(-) commit 90944759b66771bbe399922eecedc5095fa2a509 @@ -21231,22 +28964,22 @@ Removed Java binding from core distribution - Makefile.am | 4 +- - bindings/Makefile.am | 7 - - bindings/java/Context.cpp | 112 ------------ - bindings/java/Makefile.am | 72 -------- - bindings/java/Poller.cpp | 126 -------------- - bindings/java/Socket.cpp | 345 ------------------------------------- - bindings/java/org/zmq/Context.java | 58 ------- - bindings/java/org/zmq/Poller.java | 135 --------------- - bindings/java/org/zmq/Socket.java | 134 -------------- - configure.in | 73 +------- - perf/Makefile.am | 8 +- - perf/java/Makefile.am | 5 - - perf/java/local_lat.java | 55 ------ - perf/java/local_thr.java | 71 -------- - perf/java/remote_lat.java | 60 ------- - perf/java/remote_thr.java | 57 ------ + Makefile.am | 4 +- + bindings/Makefile.am | 7 - + bindings/java/Context.cpp | 112 ------------ + bindings/java/Makefile.am | 72 -------- + bindings/java/Poller.cpp | 126 ------------- + bindings/java/Socket.cpp | 345 ------------------------------------ + bindings/java/org/zmq/Context.java | 58 ------ + bindings/java/org/zmq/Poller.java | 135 -------------- + bindings/java/org/zmq/Socket.java | 134 -------------- + configure.in | 73 +------- + perf/Makefile.am | 8 +- + perf/java/Makefile.am | 5 - + perf/java/local_lat.java | 55 ------ + perf/java/local_thr.java | 71 -------- + perf/java/remote_lat.java | 60 ------- + perf/java/remote_thr.java | 57 ------ 16 files changed, 9 insertions(+), 1313 deletions(-) commit 9fda070e4d66d538e3c709c6cb8934cbf4442c29 @@ -21255,7 +28988,7 @@ Typeset literal correctly - doc/zmq_pgm.txt | 4 ++-- + doc/zmq_pgm.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 0a1e0beaa2849a51ea659eba0f142ce340d2cc6d @@ -21264,7 +28997,7 @@ Fixes to PGM wire format description - doc/zmq_pgm.txt | 69 +++++++++++++++++++++++++++++++-------------------------- + doc/zmq_pgm.txt | 69 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 31 deletions(-) commit 5fef480aeb28424769d97c92f331d87f87b87c85 @@ -21273,7 +29006,7 @@ Fixes to TCP wire format specification - doc/zmq_tcp.txt | 42 ++++++++++++++++++++++++++---------------- + doc/zmq_tcp.txt | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) commit 8f90ae8dfdf5efbb6c8429897dc95cad621af00b @@ -21282,8 +29015,8 @@ wire formats in docs clarified - doc/zmq_pgm.txt | 40 +++++++++++++++++++++++++++++++--------- - doc/zmq_tcp.txt | 22 +++++++++++++--------- + doc/zmq_pgm.txt | 40 +++++++++++++++++++++++++++++++--------- + doc/zmq_tcp.txt | 22 +++++++++++++--------- 2 files changed, 44 insertions(+), 18 deletions(-) commit 98801ebcaea1117ae596a3bae0653c3720a94359 @@ -21292,23 +29025,23 @@ Documentation fixes - doc/zmq.txt | 3 ++- - doc/zmq_bind.txt | 4 ++-- - doc/zmq_close.txt | 2 +- - doc/zmq_connect.txt | 4 ++-- - doc/zmq_flush.txt | 2 +- - doc/zmq_msg_close.txt | 2 +- - doc/zmq_msg_copy.txt | 2 +- - doc/zmq_msg_init.txt | 2 +- - doc/zmq_msg_init_data.txt | 2 +- - doc/zmq_msg_init_size.txt | 2 +- - doc/zmq_msg_move.txt | 2 +- - doc/zmq_poll.txt | 13 +++++++------ - doc/zmq_recv.txt | 2 +- - doc/zmq_send.txt | 2 +- - doc/zmq_setsockopt.txt | 18 ++++++++---------- - doc/zmq_socket.txt | 7 ++++--- - doc/zmq_term.txt | 2 +- + doc/zmq.txt | 3 ++- + doc/zmq_bind.txt | 4 ++-- + doc/zmq_close.txt | 2 +- + doc/zmq_connect.txt | 4 ++-- + doc/zmq_flush.txt | 2 +- + doc/zmq_msg_close.txt | 2 +- + doc/zmq_msg_copy.txt | 2 +- + doc/zmq_msg_init.txt | 2 +- + doc/zmq_msg_init_data.txt | 2 +- + doc/zmq_msg_init_size.txt | 2 +- + doc/zmq_msg_move.txt | 2 +- + doc/zmq_poll.txt | 13 +++++++------ + doc/zmq_recv.txt | 2 +- + doc/zmq_send.txt | 2 +- + doc/zmq_setsockopt.txt | 18 ++++++++---------- + doc/zmq_socket.txt | 7 ++++--- + doc/zmq_term.txt | 2 +- 17 files changed, 36 insertions(+), 35 deletions(-) commit bc468b34513a0fd76e69e03f3f978abd7d8c3871 @@ -21317,7 +29050,7 @@ Add missing section with zmq_version() - doc/zmq.txt | 8 ++++++++ + doc/zmq.txt | 8 ++++++++ 1 file changed, 8 insertions(+) commit edebff902a9785ecdb3a27f6a78ac7cc68b38a56 @@ -21326,7 +29059,7 @@ Add dependency for zmq_epgm.7 - doc/Makefile.am | 2 +- + doc/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ca70b40383fd12ce866054dd87cecb3d732c8d9f @@ -21335,7 +29068,7 @@ Hack, zmq_epgm.7 needs to be copied from zmq_pgm.7 - doc/Makefile.am | 2 ++ + doc/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) commit 1aee86408d575d6572b071d7564da7f006d1757e @@ -21344,40 +29077,40 @@ Documentation rewrite - doc/Makefile.am | 4 +- - doc/asciidoc.conf | 8 ++ - doc/zmq.txt | 227 ++++++++++++++++++------------ - doc/zmq_bind.txt | 60 +++++--- - doc/zmq_close.txt | 37 +++-- - doc/zmq_connect.txt | 60 +++++--- - doc/zmq_epgm.txt | 1 + - doc/zmq_flush.txt | 48 +++---- - doc/zmq_forwarder.txt | 17 +-- - doc/zmq_init.txt | 52 ++++--- - doc/zmq_inproc.txt | 85 ++++++++--- - doc/zmq_ipc.txt | 72 +++++++--- - doc/zmq_java.txt | 27 ---- - doc/zmq_msg_close.txt | 43 +++--- - doc/zmq_msg_copy.txt | 46 +++--- - doc/zmq_msg_data.txt | 32 ++--- - doc/zmq_msg_init.txt | 29 ++-- - doc/zmq_msg_init_data.txt | 51 ++++--- - doc/zmq_msg_init_size.txt | 51 +++---- - doc/zmq_msg_move.txt | 38 +++-- - doc/zmq_msg_size.txt | 35 ++--- - doc/zmq_pgm.txt | 174 +++++++++++++---------- - doc/zmq_poll.txt | 122 ++++++++++------ - doc/zmq_queue.txt | 17 +-- - doc/zmq_recv.txt | 53 ++++--- - doc/zmq_send.txt | 66 +++++---- - doc/zmq_setsockopt.txt | 348 ++++++++++++++++++++++++++++++---------------- - doc/zmq_socket.txt | 184 ++++++++++++------------ - doc/zmq_streamer.txt | 17 +-- - doc/zmq_strerror.txt | 25 ++-- - doc/zmq_tcp.txt | 129 +++++++++++------ - doc/zmq_term.txt | 33 ++--- - doc/zmq_udp.txt | 56 -------- - doc/zmq_version.txt | 23 +-- + doc/Makefile.am | 4 +- + doc/asciidoc.conf | 8 ++ + doc/zmq.txt | 227 +++++++++++++++++------------ + doc/zmq_bind.txt | 60 +++++--- + doc/zmq_close.txt | 37 +++-- + doc/zmq_connect.txt | 60 +++++--- + doc/zmq_epgm.txt | 1 + + doc/zmq_flush.txt | 48 +++---- + doc/zmq_forwarder.txt | 17 +-- + doc/zmq_init.txt | 52 ++++--- + doc/zmq_inproc.txt | 85 ++++++++--- + doc/zmq_ipc.txt | 72 +++++++--- + doc/zmq_java.txt | 27 ---- + doc/zmq_msg_close.txt | 43 +++--- + doc/zmq_msg_copy.txt | 46 +++--- + doc/zmq_msg_data.txt | 32 ++--- + doc/zmq_msg_init.txt | 29 ++-- + doc/zmq_msg_init_data.txt | 51 ++++--- + doc/zmq_msg_init_size.txt | 51 +++---- + doc/zmq_msg_move.txt | 38 +++-- + doc/zmq_msg_size.txt | 35 ++--- + doc/zmq_pgm.txt | 174 +++++++++++++---------- + doc/zmq_poll.txt | 122 +++++++++++----- + doc/zmq_queue.txt | 17 +-- + doc/zmq_recv.txt | 53 ++++--- + doc/zmq_send.txt | 66 +++++---- + doc/zmq_setsockopt.txt | 348 ++++++++++++++++++++++++++++++--------------- + doc/zmq_socket.txt | 184 ++++++++++++------------ + doc/zmq_streamer.txt | 17 +-- + doc/zmq_strerror.txt | 25 ++-- + doc/zmq_tcp.txt | 129 +++++++++++------ + doc/zmq_term.txt | 33 ++--- + doc/zmq_udp.txt | 56 -------- + doc/zmq_version.txt | 23 +-- 34 files changed, 1297 insertions(+), 973 deletions(-) commit d790940fd06060c8a2c624b0e41e470ad31ae0d8 @@ -21386,8 +29119,8 @@ udp transport renamed to epgm - configure.in | 4 ++-- - src/socket_base.cpp | 10 ++++------ + configure.in | 4 ++-- + src/socket_base.cpp | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) commit 5a776f5597cac632ca507e2d80ca0de064bba1d6 @@ -21396,7 +29129,7 @@ PGM late joiners would start receiving a complete message rather than a message part - src/zmq_encoder.cpp | 6 ++++-- + src/zmq_encoder.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 0f891e091cc46775226ee1fe28784876395a7b92 @@ -21405,8 +29138,8 @@ message flags from the wire are written to zmq_msg_t and vice versa - src/zmq_decoder.cpp | 4 ++-- - src/zmq_encoder.cpp | 4 ++-- + src/zmq_decoder.cpp | 4 ++-- + src/zmq_encoder.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 531c6af0d4df606ddef15da821dad20399b9480a @@ -21415,10 +29148,10 @@ message flags added to zmq_msg_t strcuture - bindings/c/zmq.h | 14 +++++++++----- - src/pipe.cpp | 2 +- - src/pub.cpp | 4 ++-- - src/zmq.cpp | 14 ++++++++------ + bindings/c/zmq.h | 14 +++++++++----- + src/pipe.cpp | 2 +- + src/pub.cpp | 4 ++-- + src/zmq.cpp | 14 ++++++++------ 4 files changed, 20 insertions(+), 14 deletions(-) commit 96ccc1c5fceb56bd7ffc2e6bef9ddab5347d722b @@ -21427,10 +29160,10 @@ 'flags' fields added to the wire format - src/zmq_decoder.cpp | 40 +++++++++++++++++++++++++++++----------- - src/zmq_decoder.hpp | 1 + - src/zmq_encoder.cpp | 11 ++++++++--- - src/zmq_encoder.hpp | 2 +- + src/zmq_decoder.cpp | 40 +++++++++++++++++++++++++++++----------- + src/zmq_decoder.hpp | 1 + + src/zmq_encoder.cpp | 11 ++++++++--- + src/zmq_encoder.hpp | 2 +- 4 files changed, 39 insertions(+), 15 deletions(-) commit e04e2cdbbaf351eb04164bdcd293fcb8fa22a9a4 @@ -21439,10 +29172,10 @@ rollback functionality added to pipe - src/pipe.cpp | 13 +++++++++++++ - src/pipe.hpp | 3 +++ - src/ypipe.hpp | 11 +++++++++++ - src/yqueue.hpp | 37 ++++++++++++++++++++++++++++++++++++- + src/pipe.cpp | 13 +++++++++++++ + src/pipe.hpp | 3 +++ + src/ypipe.hpp | 11 +++++++++++ + src/yqueue.hpp | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 63 insertions(+), 1 deletion(-) commit 9481c69b0f60068f12aa26699588fed6a8faceec @@ -21451,7 +29184,7 @@ problem with NIC name resolution on OSX fixed - src/ip.cpp | 2 ++ + src/ip.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 26b0aea24f9add0a1811e23f709d96b44b459571 @@ -21460,10 +29193,10 @@ Win32 build fixes - configure.in | 8 ++++---- - src/Makefile.am | 4 ++++ - src/ip.hpp | 10 +++++----- - src/uuid.hpp | 2 +- + configure.in | 8 ++++---- + src/Makefile.am | 4 ++++ + src/ip.hpp | 10 +++++----- + src/uuid.hpp | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) commit 352da8ae8775f057a7ec67a7bd3f2270ac1c4d0f @@ -21472,7 +29205,7 @@ type mismatch in tcp_listener (win version) fixed - src/tcp_listener.cpp | 4 ++-- + src/tcp_listener.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 14054ecce7d367d8e3d47f84f72d2fc748aec8e4 @@ -21481,7 +29214,7 @@ Fix typo: zmq_close -> zmq_msg_close - src/rep.cpp | 2 +- + src/rep.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 708298d798693a19ace9a4811a3760d8de0a5c1d @@ -21490,7 +29223,7 @@ Fix possible lockups when reading from ZMQ_REP sockets - src/rep.cpp | 16 ++++++++++++++-- + src/rep.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) commit 157a66fc42d46c79edc01f6feed8f482fb5d53f1 @@ -21499,7 +29232,7 @@ polling on POSIX sockets returns POLLERR (win32) - src/zmq.cpp | 12 +++++++++--- + src/zmq.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit 4e7158b67dcbbc307e76616a85aa34cc83ad6606 @@ -21508,7 +29241,7 @@ return POLLERR from polling on POSIX sockets (linux version) - src/zmq.cpp | 11 ++++++++--- + src/zmq.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 7442f53956e5d32d9c6a3543f8bef1664a773926 @@ -21524,17 +29257,17 @@ Ruby binding removed - bindings/Makefile.am | 8 +- - bindings/ruby/Makefile.am | 11 -- - bindings/ruby/extconf.rb | 28 ----- - bindings/ruby/rbzmq.cpp | 288 ---------------------------------------------- - configure.in | 57 +-------- - perf/Makefile.am | 8 +- - perf/ruby/Makefile.am | 1 - - perf/ruby/local_lat.rb | 41 ------- - perf/ruby/local_thr.rb | 61 ---------- - perf/ruby/remote_lat.rb | 53 --------- - perf/ruby/remote_thr.rb | 45 -------- + bindings/Makefile.am | 8 +- + bindings/ruby/Makefile.am | 11 -- + bindings/ruby/extconf.rb | 28 ----- + bindings/ruby/rbzmq.cpp | 288 --------------------------------------------- + configure.in | 57 +-------- + perf/Makefile.am | 8 +- + perf/ruby/Makefile.am | 1 - + perf/ruby/local_lat.rb | 41 ------- + perf/ruby/local_thr.rb | 61 ---------- + perf/ruby/remote_lat.rb | 53 --------- + perf/ruby/remote_thr.rb | 45 ------- 11 files changed, 7 insertions(+), 594 deletions(-) commit 83f85ea51dee1fb2fcee22543a90361b860d6cb8 @@ -21543,8 +29276,8 @@ ruby binding removed from msvc build - builds/msvc/msvc.sln | 9 ------ - builds/msvc/ruby/ruby.vcproj | 68 -------------------------------------------- + builds/msvc/msvc.sln | 9 ------ + builds/msvc/ruby/ruby.vcproj | 68 ------------------------------------------ 2 files changed, 77 deletions(-) commit 696ada883331359bee76b1ea996d8ac846624bea @@ -21553,8 +29286,8 @@ python binding removed from nsvc build - builds/msvc/msvc.sln | 8 -- - builds/msvc/python/python.vcproj | 176 --------------------------------------- + builds/msvc/msvc.sln | 8 -- + builds/msvc/python/python.vcproj | 176 -------------------------------------- 2 files changed, 184 deletions(-) commit 45414b5444db0a1f7e325c7dce92fbe84667d093 @@ -21563,20 +29296,20 @@ python binding removed - bindings/Makefile.am | 8 +- - bindings/python/Makefile.am | 7 - - bindings/python/pyzmq.cpp | 556 -------------------------------------------- - bindings/python/setup.py.in | 14 -- - configure.in | 65 +----- - doc/Makefile.am | 2 +- - doc/zmq.txt | 3 - - doc/zmq_python.txt | 27 --- - perf/Makefile.am | 9 +- - perf/python/Makefile.am | 1 - - perf/python/local_lat.py | 49 ---- - perf/python/local_thr.py | 70 ------ - perf/python/remote_lat.py | 61 ----- - perf/python/remote_thr.py | 53 ----- + bindings/Makefile.am | 8 +- + bindings/python/Makefile.am | 7 - + bindings/python/pyzmq.cpp | 556 ------------------------------------------- + bindings/python/setup.py.in | 14 -- + configure.in | 65 +---- + doc/Makefile.am | 2 +- + doc/zmq.txt | 3 - + doc/zmq_python.txt | 27 --- + perf/Makefile.am | 9 +- + perf/python/Makefile.am | 1 - + perf/python/local_lat.py | 49 ---- + perf/python/local_thr.py | 70 ------ + perf/python/remote_lat.py | 61 ----- + perf/python/remote_thr.py | 53 ----- 14 files changed, 11 insertions(+), 914 deletions(-) commit efefa069b2ce407a7da4328ab024c47920a76960 @@ -21585,9 +29318,9 @@ Cygwin support - configure.in | 7 +++++++ - src/uuid.cpp | 3 ++- - src/uuid.hpp | 6 ++++-- + configure.in | 7 +++++++ + src/uuid.cpp | 3 ++- + src/uuid.hpp | 6 ++++-- 3 files changed, 13 insertions(+), 3 deletions(-) commit deda7ca54a3c8f1ba735e8654ca87f8808606122 @@ -21596,10 +29329,10 @@ Java Poller patch - .gitignore | 3 ++ - bindings/java/Context.cpp | 106 ------------------------------------- - bindings/java/Makefile.am | 22 ++++++-- - bindings/java/org/zmq/Context.java | 18 ------- + .gitignore | 3 + + bindings/java/Context.cpp | 106 ------------------------------------ + bindings/java/Makefile.am | 22 ++++++-- + bindings/java/org/zmq/Context.java | 18 ------ 4 files changed, 21 insertions(+), 128 deletions(-) commit 4a1a83887d6faf36cb01f1c69142e6aafafe5eba @@ -21608,7 +29341,7 @@ Win32 build of Java binding fixed - builds/msvc/java/java.vcproj | 36 ++++++++++++++++++++++++++++++++---- + builds/msvc/java/java.vcproj | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) commit 4440b13c359dab2c1ba55e31c604ac093172d68e @@ -21617,8 +29350,8 @@ Poller object implemented in Java binding - bindings/java/Poller.cpp | 126 +++++++++++++++++++++++++++++++++++ - bindings/java/org/zmq/Poller.java | 135 ++++++++++++++++++++++++++++++++++++++ + bindings/java/Poller.cpp | 126 ++++++++++++++++++++++++++++++++++ + bindings/java/org/zmq/Poller.java | 135 +++++++++++++++++++++++++++++++++++++ 2 files changed, 261 insertions(+) commit 1c4daf79ce12da75acb8010c99b3c1d509a7a950 @@ -21627,7 +29360,7 @@ MIT license text added - COPYING.LESSER | 31 ++++++++++++++++++++++++++++--- + COPYING.LESSER | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) commit 57e057c825156b6effd15c07ee302f4ccdd2561c @@ -21636,10 +29369,10 @@ 1st version of Java poll added - bindings/java/Context.cpp | 140 +++++++++++++++++++++++++++++++------ - bindings/java/Socket.cpp | 89 +++++++++-------------- - bindings/java/org/zmq/Context.java | 21 +++++- - bindings/java/org/zmq/Socket.java | 5 +- + bindings/java/Context.cpp | 140 ++++++++++++++++++++++++++++++------ + bindings/java/Socket.cpp | 89 +++++++++-------------- + bindings/java/org/zmq/Context.java | 21 +++++- + bindings/java/org/zmq/Socket.java | 5 +- 4 files changed, 173 insertions(+), 82 deletions(-) commit ed8fe68383ca94ca33a9919bc2ed5b5a5d62cab0 @@ -21648,7 +29381,7 @@ handle invalid PGM connection string decently - src/pgm_socket.cpp | 6 ++++++ + src/pgm_socket.cpp | 6 ++++++ 1 file changed, 6 insertions(+) commit be51cfa419bb6c75eb24d241769a7c5543c432a7 @@ -21664,7 +29397,7 @@ minor cast issues on cygwin fixed - src/ip.cpp | 4 ++-- + src/ip.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit b7f01f9071c26292c30517bac18dae92efaf3ffb @@ -21673,8 +29406,8 @@ chat example removed from win build; missing fd_signaler_t::poll on win added - builds/msvc/msvc.sln | 18 ------------------ - src/fd_signaler.cpp | 26 +++++++++++++++++++------- + builds/msvc/msvc.sln | 18 ------------------ + src/fd_signaler.cpp | 26 +++++++++++++++++++------- 2 files changed, 19 insertions(+), 25 deletions(-) commit 476ebde6280a428e2dd8fee7c70670aa449831c9 @@ -21683,9 +29416,9 @@ use binary UUIDs instead of string representation to save some bytes - src/uuid.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++++------- - src/uuid.hpp | 22 +++++++++++--- - src/zmq_init.cpp | 6 ++-- + src/uuid.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++------- + src/uuid.hpp | 22 +++++++++++--- + src/zmq_init.cpp | 6 ++-- 3 files changed, 98 insertions(+), 17 deletions(-) commit cc5c30f5dc2d6490c0199709ceb2d86e3cc3895d @@ -21694,7 +29427,7 @@ Fix: OpenPGM is now distributed as .tar.gz - Makefile.am | 2 +- + Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit bba36e6ee6ecdee5f3ded30b9f11e7684393bfd2 @@ -21706,7 +29439,7 @@ The current IPv6 support is half-assed and breaks for too many people. Revert back to IPv4 only for now. - src/ip.cpp | 18 ++++++++++-------- + src/ip.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit 39b89619742cf4aed25a5b3ccc5ff6d23d9d15cf @@ -21715,10 +29448,10 @@ Update OpenPGM to 2.0.24 (stable) - .gitignore | 1 + - configure.in | 16 ++++++++-------- - foreign/openpgm/libpgm-2.0.23rc8.tar.bz2 | Bin 321822 -> 0 bytes - foreign/openpgm/libpgm-2.0.24.tar.gz | Bin 0 -> 407110 bytes + .gitignore | 1 + + configure.in | 16 ++++++++-------- + foreign/openpgm/libpgm-2.0.23rc8.tar.bz2 | Bin 321822 -> 0 bytes + foreign/openpgm/libpgm-2.0.24.tar.gz | Bin 0 -> 407110 bytes 4 files changed, 9 insertions(+), 8 deletions(-) commit ccd47f1ee8c9268b99478c6cce3d8b1aada62566 @@ -21727,13 +29460,13 @@ chat example moved to separate repo - Makefile.am | 4 +-- - configure.in | 13 +-------- - examples/Makefile.am | 7 ----- - examples/chat/Makefile.am | 11 -------- - examples/chat/README | 42 ----------------------------- - examples/chat/display.cpp | 50 ----------------------------------- - examples/chat/prompt.cpp | 67 ----------------------------------------------- + Makefile.am | 4 +-- + configure.in | 13 +-------- + examples/Makefile.am | 7 ----- + examples/chat/Makefile.am | 11 -------- + examples/chat/README | 42 ---------------------------- + examples/chat/display.cpp | 50 --------------------------------- + examples/chat/prompt.cpp | 67 --------------------------------------------- 7 files changed, 3 insertions(+), 191 deletions(-) commit 8980a985828579d03f031b18a1bebcd65eded417 @@ -21742,7 +29475,7 @@ zmq_error used from ruby binding - bindings/ruby/rbzmq.cpp | 27 +++++++++++++-------------- + bindings/ruby/rbzmq.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) commit 551fa104ffdb8c417b7d75ce70c463992e7d4652 @@ -21751,7 +29484,7 @@ zmq_errno used in C++ binding - bindings/cpp/zmq.hpp | 7 +++---- + bindings/cpp/zmq.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) commit 95329719cda2b941e422d06daad3a7ba4c4a8829 @@ -21760,7 +29493,7 @@ zmq_errno is exported from the DLL - bindings/c/zmq.h | 2 +- + bindings/c/zmq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 2441ef11a22170499d7ae12865dc98a61230f7ed @@ -21769,8 +29502,8 @@ zmq_errno helper function added - bindings/c/zmq.h | 10 ++++++++++ - src/zmq.cpp | 5 +++++ + bindings/c/zmq.h | 10 ++++++++++ + src/zmq.cpp | 5 +++++ 2 files changed, 15 insertions(+) commit 2dd55605ea3956413cb25cab705ffdbdb2e00da5 @@ -21779,7 +29512,7 @@ recv fails after polling for IN on REQ socket - src/req.cpp | 13 +++++++++---- + src/req.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) commit 025c9e173c58971993858ea66fb2eeaf08de195d @@ -21788,13 +29521,10 @@ execution disabled on certain source files; some comments on java binding; MSVC temp files added to .gitignore - .gitignore | 9 +++++++++ - bindings/java/Context.cpp | 0 - bindings/java/Socket.cpp | 0 - bindings/java/org/zmq/Context.java | 2 ++ - bindings/java/org/zmq/Socket.java | 2 ++ - examples/chat/display.cpp | 0 - 6 files changed, 13 insertions(+) + .gitignore | 9 +++++++++ + bindings/java/org/zmq/Context.java | 2 ++ + bindings/java/org/zmq/Socket.java | 2 ++ + 3 files changed, 13 insertions(+) commit 71b4947f951f0120e4aadccb42f2452bb95dba06 Author: unknown @@ -21802,7 +29532,7 @@ Win32 build fixed - builds/msvc/libzmq/libzmq.vcproj | 4 ++++ + builds/msvc/libzmq/libzmq.vcproj | 4 ++++ 1 file changed, 4 insertions(+) commit 7c0df6ee02eb792c6afea7f047539840addb2f02 @@ -21811,11 +29541,11 @@ Java binding beautified, inline documentation added - AUTHORS | 1 + - bindings/java/Context.cpp | 106 +++++++++++++------- - bindings/java/Socket.cpp | 197 ++++++++++++++++++++++++++++--------- - bindings/java/org/zmq/Context.java | 17 ++-- - bindings/java/org/zmq/Socket.java | 59 +++++++---- + AUTHORS | 1 + + bindings/java/Context.cpp | 106 ++++++++++++------- + bindings/java/Socket.cpp | 197 +++++++++++++++++++++++++++--------- + bindings/java/org/zmq/Context.java | 17 ++-- + bindings/java/org/zmq/Socket.java | 59 +++++++---- 5 files changed, 267 insertions(+), 113 deletions(-) commit ef1b5974891a30b15299464859023a531c2328f8 @@ -21824,7 +29554,7 @@ minor fix in zmq_socket(3) man page - doc/zmq_socket.txt | 2 +- + doc/zmq_socket.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b9a612ff3f74a3add607b054213d0f52e85cc426 @@ -21840,7 +29570,7 @@ zmq_poll doesn't exit when infinite timeout is set and interrupt occurs - src/zmq.cpp | 56 +++++++++++++++++++++++++++++++++++++++----------------- + src/zmq.cpp | 56 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 17 deletions(-) commit 61f0ef569b2f879b6b4e1f247253ceec08e774c7 @@ -21849,7 +29579,7 @@ NetBSD: Check for and use atomic_ops(3) if available - configure.in | 18 ++++++++++++++---- + configure.in | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) commit 3a69cca386a895313729f418ee44443794feed0f @@ -21858,7 +29588,7 @@ Fix $build_doc/$install_man check yet again - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1294c1d33a1c73218eb94bf18ceb9ae873d08891 @@ -21867,7 +29597,7 @@ typo in zmq_ipc(7) fixed - doc/zmq_ipc.txt | 4 ++-- + doc/zmq_ipc.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit ff99d753ae30a7b5fef730fdcf1643e2928d9993 @@ -21876,8 +29606,8 @@ Minor buid system tunning - autogen.sh | 8 ++++++++ - configure.in | 1 - + autogen.sh | 8 ++++++++ + configure.in | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) commit 740e531fbb47ad324737c075251c674e9dced6f1 @@ -21886,7 +29616,7 @@ Aleksey Yeschenko added to the credit section of AUTHORS file - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit 57148b1fdeec0080b77ecfa837add9557226261c @@ -21897,7 +29627,7 @@ Fixes git builds w/o asciidoc, bug introduced in 46824abe - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 8b86dcf81cc7b80267f334f4f26dfd319532ad25 @@ -21906,9 +29636,9 @@ build on cygwin enabled - AUTHORS | 1 + - configure.in | 3 +++ - src/poller.hpp | 2 ++ + AUTHORS | 1 + + configure.in | 3 +++ + src/poller.hpp | 2 ++ 3 files changed, 6 insertions(+) commit 727054547f32680f7db098497c2d7b1a0b20e2d8 @@ -21917,7 +29647,7 @@ don't check for identity, if the connection is anonymous - src/session.cpp | 12 +++++++++--- + src/session.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) commit aff1f6621ae13083c7f15f7f1f808560254a2dcb @@ -21933,13 +29663,13 @@ Multi-hop REQ/REP, part XII., generate unique identities for anonymous connections - doc/zmq_setsockopt.txt | 10 ++++++---- - src/options.cpp | 9 +++++++++ - src/session.cpp | 6 +++--- - src/uuid.hpp | 6 +++--- - src/zmq_encoder.cpp | 1 - - src/zmq_engine.cpp | 4 +++- - src/zmq_init.cpp | 40 ++++++++++++++++++++-------------------- + doc/zmq_setsockopt.txt | 10 ++++++---- + src/options.cpp | 9 +++++++++ + src/session.cpp | 6 +++--- + src/uuid.hpp | 6 +++--- + src/zmq_encoder.cpp | 1 - + src/zmq_engine.cpp | 4 +++- + src/zmq_init.cpp | 40 ++++++++++++++++++++-------------------- 7 files changed, 44 insertions(+), 32 deletions(-) commit 2a79a943de417679c562cd4a917e1d1bc19b0d25 @@ -21948,21 +29678,21 @@ Add NetBSD support - configure.in | 13 +++++++++++++ - src/atomic_bitmap.hpp | 16 ++++++++-------- - src/atomic_counter.hpp | 14 +++++++------- - src/atomic_ptr.hpp | 14 +++++++------- - src/ip.cpp | 11 ++--------- - src/ip.hpp | 10 ++++++++++ - src/kqueue.cpp | 17 ++++++++++++++--- - src/kqueue.hpp | 3 ++- - src/poll.cpp | 3 ++- - src/poll.hpp | 3 ++- - src/poller.hpp | 2 ++ - src/tcp_listener.cpp | 2 +- - src/uuid.cpp | 2 +- - src/uuid.hpp | 4 ++-- - src/zmq.cpp | 6 ++++-- + configure.in | 13 +++++++++++++ + src/atomic_bitmap.hpp | 16 ++++++++-------- + src/atomic_counter.hpp | 14 +++++++------- + src/atomic_ptr.hpp | 14 +++++++------- + src/ip.cpp | 11 ++--------- + src/ip.hpp | 10 ++++++++++ + src/kqueue.cpp | 17 ++++++++++++++--- + src/kqueue.hpp | 3 ++- + src/poll.cpp | 3 ++- + src/poll.hpp | 3 ++- + src/poller.hpp | 2 ++ + src/tcp_listener.cpp | 2 +- + src/uuid.cpp | 2 +- + src/uuid.hpp | 4 ++-- + src/zmq.cpp | 6 ++++-- 15 files changed, 77 insertions(+), 43 deletions(-) commit 776b12633981fd95050e138daeeba00a65d9532b @@ -21971,7 +29701,7 @@ Fix typo - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit ab27f84b14a317d78a9dd145ef5c82e0ef88f583 @@ -21980,7 +29710,7 @@ libstdc++ depends on libm on some platforms - configure.in | 4 +++- + configure.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 495f0d105f809a265c34aa9a0eb20af0dcdcf283 @@ -21992,7 +29722,7 @@ We only care about libstdc++ when using GNU C++. Further, libstdc++ depends on libm on some platforms, fix this. - configure.in | 11 ++++++----- + configure.in | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) commit 46824abeb2b016c51f406401d965816f71189aed @@ -22004,8 +29734,8 @@ This fixes the build_doc logic to work as advertised and never try to (re)build documentation when working with a tarball release. - configure.in | 14 +++++++++++--- - doc/Makefile.am | 3 ++- + configure.in | 14 +++++++++++--- + doc/Makefile.am | 3 ++- 2 files changed, 13 insertions(+), 4 deletions(-) commit 8be491b7bdb8525eb37cebf355697c566a482e2d @@ -22020,7 +29750,7 @@ to each system instead. This may still break something, so people should test their platforms and speak up if so. - configure.in | 15 +++++++++++++-- + configure.in | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) commit d008637bc42da3fca50e423c2df0736be2745ac7 @@ -22029,7 +29759,7 @@ one more attempt to fix the previous win32 problem - src/socket_base.cpp | 28 ++++++++++++++-------------- + src/socket_base.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) commit f97da5e6449b183ad3ebb9b0ba8c37ff3dc17387 @@ -22045,7 +29775,7 @@ recv returning -1 while errno=0 fixed - src/socket_base.cpp | 2 ++ + src/socket_base.cpp | 2 ++ 1 file changed, 2 insertions(+) commit 41354bfa9820eb4495cf98342177d036df2a7dc7 @@ -22054,7 +29784,7 @@ zmq_version fixed on Win32 platform - builds/msvc/platform.hpp | 5 +++++ + builds/msvc/platform.hpp | 5 +++++ 1 file changed, 5 insertions(+) commit f745c96a9bcf930d10fe31de5f7b3e772cccfa83 @@ -22068,7 +29798,7 @@ define _GNU_SOURCE so that we get any extensions on systems with glibc, e.g. eventfd. - configure.in | 16 +++++----------- + configure.in | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) commit 9d8623b28f09f5a6db94c7d69ae264984ef1fbe3 @@ -22077,7 +29807,7 @@ ZMQII-76: Bug in how replies are handled when the REQ endpoint goes away - src/rep.cpp | 22 ++++++++++++++-------- + src/rep.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) commit 33cb20a747a2ca2c7b0487b023cfd6548ffe11e8 @@ -22086,12 +29816,12 @@ ZMQII-77: Put librbzmq symbols into ZMQ module - AUTHORS | 1 + - bindings/ruby/rbzmq.cpp | 75 +++++++++++++++++++++++++------------------------ - perf/ruby/local_lat.rb | 4 +-- - perf/ruby/local_thr.rb | 6 ++-- - perf/ruby/remote_lat.rb | 4 +-- - perf/ruby/remote_thr.rb | 4 +-- + AUTHORS | 1 + + bindings/ruby/rbzmq.cpp | 75 ++++++++++++++++++++++++----------------------- + perf/ruby/local_lat.rb | 4 +-- + perf/ruby/local_thr.rb | 6 ++-- + perf/ruby/remote_lat.rb | 4 +-- + perf/ruby/remote_thr.rb | 4 +-- 6 files changed, 49 insertions(+), 45 deletions(-) commit 1e7878489dc5d3013b5e5858fe404ab6b4a6947a @@ -22100,8 +29830,8 @@ exconf.rb checks for libzmq.so installation - AUTHORS | 1 + - bindings/ruby/extconf.rb | 8 ++++++-- + AUTHORS | 1 + + bindings/ruby/extconf.rb | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) commit 8214d386c3f10dcc7f034a1159e82aa2d470829f @@ -22117,7 +29847,7 @@ Special exception clause added to LGPL license - COPYING.LESSER | 17 ++++++++++++++++- + COPYING.LESSER | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) commit 96b2690716a811a4c782de0eccfb9affa398cfe4 @@ -22133,7 +29863,7 @@ PGM tarball should be removed on 'distclean', not 'clean' - Makefile.am | 2 +- + Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b9caa319e279cd8cd367e0a64308b9e80c4ead3d @@ -22142,39 +29872,39 @@ Multi-hop REQ/REP, part XI., finalise the XREQ/XREP functionality - src/downstream.cpp | 2 +- - src/downstream.hpp | 3 ++- - src/i_endpoint.hpp | 4 +++- - src/i_engine.hpp | 9 +++++---- - src/p2p.cpp | 2 +- - src/p2p.hpp | 3 ++- - src/pgm_receiver.cpp | 8 +++++++- - src/pgm_receiver.hpp | 3 ++- - src/pgm_sender.cpp | 8 +++++++- - src/pgm_sender.hpp | 3 ++- - src/pub.cpp | 2 +- - src/pub.hpp | 3 ++- - src/rep.cpp | 2 +- - src/rep.hpp | 3 ++- - src/req.cpp | 2 +- - src/req.hpp | 3 ++- - src/session.cpp | 7 ++++++- - src/session.hpp | 3 ++- - src/socket_base.cpp | 12 ++++++------ - src/socket_base.hpp | 5 +++-- - src/sub.cpp | 2 +- - src/sub.hpp | 3 ++- - src/upstream.cpp | 2 +- - src/upstream.hpp | 3 ++- - src/xrep.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++------ - src/xrep.hpp | 10 +++++++++- - src/xreq.cpp | 2 +- - src/xreq.hpp | 3 ++- - src/zmq_decoder.cpp | 48 ++++++++++++++++++++++++++++++------------------ - src/zmq_encoder.cpp | 15 +++++++++++---- - src/zmq_engine.cpp | 8 ++++++-- - src/zmq_engine.hpp | 3 ++- - src/zmq_init.cpp | 6 +----- + src/downstream.cpp | 2 +- + src/downstream.hpp | 3 ++- + src/i_endpoint.hpp | 4 +++- + src/i_engine.hpp | 9 +++++---- + src/p2p.cpp | 2 +- + src/p2p.hpp | 3 ++- + src/pgm_receiver.cpp | 8 +++++++- + src/pgm_receiver.hpp | 3 ++- + src/pgm_sender.cpp | 8 +++++++- + src/pgm_sender.hpp | 3 ++- + src/pub.cpp | 2 +- + src/pub.hpp | 3 ++- + src/rep.cpp | 2 +- + src/rep.hpp | 3 ++- + src/req.cpp | 2 +- + src/req.hpp | 3 ++- + src/session.cpp | 7 ++++++- + src/session.hpp | 3 ++- + src/socket_base.cpp | 12 ++++++------ + src/socket_base.hpp | 5 +++-- + src/sub.cpp | 2 +- + src/sub.hpp | 3 ++- + src/upstream.cpp | 2 +- + src/upstream.hpp | 3 ++- + src/xrep.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++------ + src/xrep.hpp | 10 +++++++++- + src/xreq.cpp | 2 +- + src/xreq.hpp | 3 ++- + src/zmq_decoder.cpp | 48 +++++++++++++++++++++++++++++------------------ + src/zmq_encoder.cpp | 15 +++++++++++---- + src/zmq_engine.cpp | 8 ++++++-- + src/zmq_engine.hpp | 3 ++- + src/zmq_init.cpp | 6 +----- 33 files changed, 171 insertions(+), 72 deletions(-) commit 2ddce205350f11dacd8d8550f7d4e6e088c7fbcd @@ -22190,9 +29920,9 @@ missing COPYING file added - .gitignore | 1 - - COPYING | 674 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_poll.txt | 3 +- + .gitignore | 1 - + COPYING | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_poll.txt | 3 +- 3 files changed, 676 insertions(+), 2 deletions(-) commit afb526f31a82b8697b5f7e73e50b14705a3a74b2 @@ -22201,8 +29931,8 @@ Fix 'make dist' to work with no special magic - bindings/java/Makefile.am | 13 +++++++------ - perf/c/Makefile.am | 4 ++-- + bindings/java/Makefile.am | 13 +++++++------ + perf/c/Makefile.am | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) commit 8e9b78af271ae54882abf3010260d1e80ddd70f2 @@ -22211,7 +29941,7 @@ Correct path for pgm distclean - Makefile.am | 4 ++-- + Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit df0c18ca17aa0dcd0e9f3737666a794b943f0982 @@ -22220,7 +29950,7 @@ Missed one instance of pgm2 - Makefile.am | 6 +++--- + Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit b09eeeb2fac380da1e3455cdf97278850842e1c8 @@ -22229,7 +29959,7 @@ Update gitignore - .gitignore | 6 +++++- + .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit 80c820d758aa65d71fbf4a24fd59d11de1f72fa5 @@ -22238,10 +29968,10 @@ Cleaning up more PGM cruft - Makefile.am | 3 +++ - configure.in | 65 +++++++++++++++++++----------------------------------- - perf/c/Makefile.am | 4 ++-- - src/Makefile.am | 12 +++++++--- + Makefile.am | 3 +++ + configure.in | 65 +++++++++++++++++++--------------------------------- + perf/c/Makefile.am | 4 ++-- + src/Makefile.am | 12 +++++++--- 4 files changed, 37 insertions(+), 47 deletions(-) commit 635e314643885ce8508ee64632bed7d6228fe8b6 @@ -22250,7 +29980,7 @@ Clarify python.h messages - configure.in | 4 ++-- + configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 55800cea8c63ea84bd99e4c660ef1fd17a353e32 @@ -22259,7 +29989,7 @@ Fix typo - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5687661ba4a1ecf70e130047dc288cb6cff6f21a @@ -22268,7 +29998,7 @@ Cleanup messages from configure.in - configure.in | 44 ++++++++++++++++++++++---------------------- + configure.in | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) commit 48a90cfb347bc983362ce2bc021591d513d6a5ec @@ -22277,7 +30007,7 @@ Replace check for sparc with host_cpu - configure.in | 25 ++++++++----------------- + configure.in | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) commit 0ded6c1973596436d7e5c54cfb89ada4d6c7473d @@ -22291,7 +30021,7 @@ Don't assume tar has -j Reorder --with-pgm checks - configure.in | 70 ++++++++++++++++++++++++++++++++++++------------------------ + configure.in | 70 +++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 28 deletions(-) commit 94c74d5c18183b49507d633c7b06713841cfcb03 @@ -22300,7 +30030,7 @@ Brian Granger added to credits list - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit f96f53c9687b5a032ef45ce42154a7f944492eec @@ -22309,7 +30039,7 @@ ZMQ_POLLERR placeholder added to zmq.h - bindings/c/zmq.h | 1 + + bindings/c/zmq.h | 1 + 1 file changed, 1 insertion(+) commit 5041b0bc0bce43e5b6d8b6c6264141d33f3c2a7c @@ -22318,7 +30048,7 @@ fixing the previous commit :( - src/ip.cpp | 1 - + src/ip.cpp | 1 - 1 file changed, 1 deletion(-) commit 7778010d76e6da534307ca3f0a3506d3d7f0ec5d @@ -22327,7 +30057,7 @@ care taken of the fact that AI_NUMERICSERV is not defined on OSX 10.5 - src/ip.cpp | 11 ++++++++++- + src/ip.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) commit 817c89a78ea7b773046b010ca129fd1206e1c8f0 @@ -22336,7 +30066,7 @@ removed first dummy run of PKG_CHECK_EXISTS - configure.in | 5 ----- + configure.in | 5 ----- 1 file changed, 5 deletions(-) commit 43620b3d35e3f3a6e49046fdc0426651bf58dedb @@ -22345,12 +30075,12 @@ Multi-hop REQ/REP, part X., optional delayed creation of pipes during connect - src/options.cpp | 1 + - src/options.hpp | 6 ++++++ - src/rep.cpp | 5 +++++ - src/session.cpp | 48 ++++++++++++++++++++++------------------------ - src/socket_base.cpp | 55 ++++++++++++++++++++++++++++++++++------------------- - src/xrep.cpp | 4 ++++ + src/options.cpp | 1 + + src/options.hpp | 6 ++++++ + src/rep.cpp | 5 +++++ + src/session.cpp | 48 +++++++++++++++++++++----------------------- + src/socket_base.cpp | 55 ++++++++++++++++++++++++++++++++------------------- + src/xrep.cpp | 4 ++++ 6 files changed, 74 insertions(+), 45 deletions(-) commit 4405250d93a2ad6eb3940c4bc4fe8ea32bd52f9e @@ -22359,16 +30089,16 @@ Multi-hop REQ/REP, part IX., pass the peer identity as far as socket_base_t - src/command.cpp | 4 ++++ - src/command.hpp | 2 ++ - src/object.cpp | 28 ++++++++++++++++++++++++---- - src/object.hpp | 4 ++-- - src/options.cpp | 2 +- - src/options.hpp | 5 ++--- - src/pgm_socket.cpp | 7 +++++-- - src/session.cpp | 2 +- - src/socket_base.cpp | 5 +++-- - src/socket_base.hpp | 3 ++- + src/command.cpp | 4 ++++ + src/command.hpp | 2 ++ + src/object.cpp | 28 ++++++++++++++++++++++++---- + src/object.hpp | 4 ++-- + src/options.cpp | 2 +- + src/options.hpp | 5 ++--- + src/pgm_socket.cpp | 7 +++++-- + src/session.cpp | 2 +- + src/socket_base.cpp | 5 +++-- + src/socket_base.hpp | 3 ++- 10 files changed, 46 insertions(+), 16 deletions(-) commit f5ce81f2893ec0707c2f4346740878e68b51e13a @@ -22377,25 +30107,25 @@ Multi-hop REQ/REP, part VIII., new blob_t type used for holding identity - src/Makefile.am | 1 + - src/blob.hpp | 33 +++++++++++++++++++++++++++++++++ - src/i_engine.hpp | 5 +++-- - src/object.cpp | 19 +++++++++---------- - src/object.hpp | 7 ++++--- - src/pgm_receiver.cpp | 3 +-- - src/pgm_receiver.hpp | 2 +- - src/pgm_sender.cpp | 3 +-- - src/pgm_sender.hpp | 2 +- - src/session.cpp | 32 +++++++++++--------------------- - src/session.hpp | 13 +++++-------- - src/socket_base.cpp | 24 ++++++++++-------------- - src/socket_base.hpp | 14 ++++++-------- - src/zmq_decoder.cpp | 34 +++++++++++++--------------------- - src/zmq_decoder.hpp | 6 +++--- - src/zmq_engine.cpp | 5 ++--- - src/zmq_engine.hpp | 2 +- - src/zmq_init.cpp | 17 ++++++----------- - src/zmq_init.hpp | 5 ++--- + src/Makefile.am | 1 + + src/blob.hpp | 33 +++++++++++++++++++++++++++++++++ + src/i_engine.hpp | 5 +++-- + src/object.cpp | 19 +++++++++---------- + src/object.hpp | 7 ++++--- + src/pgm_receiver.cpp | 3 +-- + src/pgm_receiver.hpp | 2 +- + src/pgm_sender.cpp | 3 +-- + src/pgm_sender.hpp | 2 +- + src/session.cpp | 32 +++++++++++--------------------- + src/session.hpp | 13 +++++-------- + src/socket_base.cpp | 24 ++++++++++-------------- + src/socket_base.hpp | 14 ++++++-------- + src/zmq_decoder.cpp | 34 +++++++++++++--------------------- + src/zmq_decoder.hpp | 6 +++--- + src/zmq_engine.cpp | 5 ++--- + src/zmq_engine.hpp | 2 +- + src/zmq_init.cpp | 17 ++++++----------- + src/zmq_init.hpp | 5 ++--- 19 files changed, 113 insertions(+), 114 deletions(-) commit cdc2efe9b5f0d1f45065b1c32e5eabd7e9f78a12 @@ -22404,11 +30134,11 @@ Multi-hop REQ/REP, part VII., identity-related algorithms rewritten - src/session.cpp | 114 +++++++++++++++++++++++++++++++--------------------- - src/session.hpp | 10 +---- - src/socket_base.cpp | 25 +++++++----- - src/socket_base.hpp | 9 +++-- - src/zmq_init.cpp | 4 +- + src/session.cpp | 114 +++++++++++++++++++++++++++++++-------------------- + src/session.hpp | 10 +---- + src/socket_base.cpp | 25 ++++++----- + src/socket_base.hpp | 9 ++-- + src/zmq_init.cpp | 4 +- 5 files changed, 93 insertions(+), 69 deletions(-) commit 923eacd28a725a6b32de588fe7a54dbe252d84aa @@ -22417,9 +30147,9 @@ Multi-hop REQ/REP, part VI., session 'name' renamed to 'peer_identity' - src/session.cpp | 16 ++++++++-------- - src/session.hpp | 14 +++++++++----- - src/zmq_init.cpp | 7 ++++--- + src/session.cpp | 16 ++++++++-------- + src/session.hpp | 14 +++++++++----- + src/zmq_init.cpp | 7 ++++--- 3 files changed, 21 insertions(+), 16 deletions(-) commit 2e78e48503375a415d95ee8df80df9c065172abc @@ -22428,13 +30158,13 @@ Multi-hop REQ/REP, part V., peer identity is passed from init object to session - src/command.cpp | 10 ++++++++++ - src/command.hpp | 2 ++ - src/object.cpp | 22 ++++++++++++++++++++-- - src/object.hpp | 6 ++++-- - src/session.cpp | 3 ++- - src/session.hpp | 3 ++- - src/zmq_init.cpp | 3 ++- + src/command.cpp | 10 ++++++++++ + src/command.hpp | 2 ++ + src/object.cpp | 22 ++++++++++++++++++++-- + src/object.hpp | 6 ++++-- + src/session.cpp | 3 ++- + src/session.hpp | 3 ++- + src/zmq_init.cpp | 3 ++- 7 files changed, 42 insertions(+), 7 deletions(-) commit d8430f4b9a43bf8c99854298edc9f1bc35c0e8ec @@ -22443,11 +30173,11 @@ Multi-hop REQ/REP, part IV., add command deallocation mechanism - src/Makefile.am | 1 + - src/command.cpp | 24 ++++++++++++++++++++++++ - src/command.hpp | 3 +++ - src/dispatcher.cpp | 4 ++++ - src/object.cpp | 18 +++++++++++------- + src/Makefile.am | 1 + + src/command.cpp | 24 ++++++++++++++++++++++++ + src/command.hpp | 3 +++ + src/dispatcher.cpp | 4 ++++ + src/object.cpp | 18 +++++++++++------- 5 files changed, 43 insertions(+), 7 deletions(-) commit 313b5dfadd8753b341197cc109bce40e08856cf6 @@ -22456,18 +30186,18 @@ Multi-hop REQ/REP, part III., change 'type' in options to simple 'traceroute' flag - src/downstream.cpp | 1 - - src/options.cpp | 4 ++-- - src/options.hpp | 6 +++--- - src/p2p.cpp | 1 - - src/pub.cpp | 1 - - src/rep.cpp | 1 - - src/req.cpp | 1 - - src/sub.cpp | 1 - - src/upstream.cpp | 1 - - src/xrep.cpp | 5 ++++- - src/xreq.cpp | 1 - - src/zmq_init.cpp | 2 +- + src/downstream.cpp | 1 - + src/options.cpp | 4 ++-- + src/options.hpp | 6 +++--- + src/p2p.cpp | 1 - + src/pub.cpp | 1 - + src/rep.cpp | 1 - + src/req.cpp | 1 - + src/sub.cpp | 1 - + src/upstream.cpp | 1 - + src/xrep.cpp | 5 ++++- + src/xreq.cpp | 1 - + src/zmq_init.cpp | 2 +- 12 files changed, 10 insertions(+), 15 deletions(-) commit 96e0442332fcc680ddafdcaa8fcbdc6acd992c76 @@ -22483,18 +30213,18 @@ Multi-hop REQ/REP, part I., tracerouting switched on on XREP socket - src/i_engine.hpp | 8 ++++++++ - src/pgm_receiver.cpp | 9 ++++++++- - src/pgm_receiver.hpp | 1 + - src/pgm_sender.cpp | 9 ++++++++- - src/pgm_sender.hpp | 1 + - src/zmq_decoder.cpp | 27 +++++++++++++-------------- - src/zmq_decoder.hpp | 6 +++++- - src/zmq_encoder.cpp | 13 +++++++++---- - src/zmq_encoder.hpp | 8 ++++++-- - src/zmq_engine.cpp | 11 +++++++++-- - src/zmq_engine.hpp | 1 + - src/zmq_init.cpp | 6 ++++++ + src/i_engine.hpp | 8 ++++++++ + src/pgm_receiver.cpp | 9 ++++++++- + src/pgm_receiver.hpp | 1 + + src/pgm_sender.cpp | 9 ++++++++- + src/pgm_sender.hpp | 1 + + src/zmq_decoder.cpp | 27 +++++++++++++-------------- + src/zmq_decoder.hpp | 6 +++++- + src/zmq_encoder.cpp | 13 +++++++++---- + src/zmq_encoder.hpp | 8 ++++++-- + src/zmq_engine.cpp | 11 +++++++++-- + src/zmq_engine.hpp | 1 + + src/zmq_init.cpp | 6 ++++++ 12 files changed, 75 insertions(+), 25 deletions(-) commit dc8f4b1b761103784b422b7604bc8f36d429d3f4 @@ -22503,8 +30233,8 @@ Fix memory leak in bind() - src/socket_base.cpp | 4 +++- - src/zmq_listener.hpp | 3 +-- + src/socket_base.cpp | 4 +++- + src/zmq_listener.hpp | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) commit 7b4cf2a4d040057f6f378cac2cd125513a859c1b @@ -22513,17 +30243,17 @@ Multi-hop REQ/REP, part I., socket type is known to all associated objects - src/downstream.cpp | 1 + - src/options.cpp | 1 + - src/options.hpp | 3 +++ - src/p2p.cpp | 1 + - src/pub.cpp | 1 + - src/rep.cpp | 1 + - src/req.cpp | 1 + - src/sub.cpp | 1 + - src/upstream.cpp | 1 + - src/xrep.cpp | 1 + - src/xreq.cpp | 1 + + src/downstream.cpp | 1 + + src/options.cpp | 1 + + src/options.hpp | 3 +++ + src/p2p.cpp | 1 + + src/pub.cpp | 1 + + src/rep.cpp | 1 + + src/req.cpp | 1 + + src/sub.cpp | 1 + + src/upstream.cpp | 1 + + src/xrep.cpp | 1 + + src/xreq.cpp | 1 + 11 files changed, 13 insertions(+) commit cd7300fd4f25754f844b17a77685ec837ebecbbb @@ -22532,7 +30262,7 @@ Resolve command starvation in recv() - src/socket_base.cpp | 38 +++++++++++++++++++------------------- + src/socket_base.cpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) commit 7f7ac843d58b3d8a77f681fa4c35bd21726b6f31 @@ -22544,7 +30274,7 @@ As decided on the mailing list, there have been five 2.x releases to date, so the upcoming release will be numbered 2.0.6. - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit de41c9da31246314bb2b0c55dfe3b2884d48df3b @@ -22564,11 +30294,11 @@ this propagates to src/platform.hpp (for zmq_version) and doc/Makefile.am (for documentation generation) automagically. - configure.in | 28 +++++++++++++++++++++++++++- - doc/Makefile.am | 6 ++++-- - doc/asciidoc.conf | 2 +- - src/config.hpp | 5 ----- - src/zmq.cpp | 6 +++--- + configure.in | 28 +++++++++++++++++++++++++++- + doc/Makefile.am | 6 ++++-- + doc/asciidoc.conf | 2 +- + src/config.hpp | 5 ----- + src/zmq.cpp | 6 +++--- 5 files changed, 35 insertions(+), 12 deletions(-) commit 92d0147b20f77cad5d20e257aec502f628e7889e @@ -22577,7 +30307,7 @@ python binding build with 2.4 version of python fixed - bindings/python/pyzmq.cpp | 2 +- + bindings/python/pyzmq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 432fbd796bb4905fb19ceee802009b17e88e9256 @@ -22586,8 +30316,8 @@ ZMQII-72: Add zmq_version function (documentation) - doc/Makefile.am | 4 ++-- - doc/zmq_version.txt | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + doc/Makefile.am | 4 ++-- + doc/zmq_version.txt | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) commit bd9213e71222df66634d59581264ffe67210222c @@ -22596,9 +30326,9 @@ ZMQII-72: Add zmq_version function - bindings/c/zmq.h | 6 ++++++ - src/config.hpp | 4 ++++ - src/zmq.cpp | 8 ++++++++ + bindings/c/zmq.h | 6 ++++++ + src/config.hpp | 4 ++++ + src/zmq.cpp | 8 ++++++++ 3 files changed, 18 insertions(+) commit 7cab423fc20e46f54fa561e51b566cc8a63ca5c1 @@ -22614,7 +30344,7 @@ lb: bugfix - never skip active pipe when sending msg - src/lb.cpp | 17 +++++++++++------ + src/lb.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) commit 6b3c1798e7554dd1ce63b2ad137e327f3f32fcf1 @@ -22623,7 +30353,7 @@ fq: bugfix - don't read msg from inactive pipe - src/fq.cpp | 7 ++++++- + src/fq.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 354efc513fdb4096f8830e6c2e3e8f1311303e61 @@ -22632,79 +30362,79 @@ Convert documentation to AsciiDoc - .gitignore | 5 ++ - Makefile.am | 8 +- - configure.in | 19 ++++- - doc/Makefile.am | 41 ++++++++++ - doc/asciidoc.conf | 34 +++++++++ - doc/zmq.txt | 175 +++++++++++++++++++++++++++++++++++++++++++ - doc/zmq_bind.txt | 67 +++++++++++++++++ - doc/zmq_close.txt | 52 +++++++++++++ - doc/zmq_connect.txt | 63 ++++++++++++++++ - doc/zmq_cpp.txt | 89 ++++++++++++++++++++++ - doc/zmq_flush.txt | 59 +++++++++++++++ - doc/zmq_forwarder.txt | 32 ++++++++ - doc/zmq_init.txt | 61 +++++++++++++++ - doc/zmq_inproc.txt | 50 +++++++++++++ - doc/zmq_ipc.txt | 44 +++++++++++ - doc/zmq_java.txt | 27 +++++++ - doc/zmq_msg_close.txt | 53 +++++++++++++ - doc/zmq_msg_copy.txt | 60 +++++++++++++++ - doc/zmq_msg_data.txt | 50 +++++++++++++ - doc/zmq_msg_init.txt | 54 +++++++++++++ - doc/zmq_msg_init_data.txt | 67 +++++++++++++++++ - doc/zmq_msg_init_size.txt | 61 +++++++++++++++ - doc/zmq_msg_move.txt | 55 ++++++++++++++ - doc/zmq_msg_size.txt | 53 +++++++++++++ - doc/zmq_pgm.txt | 106 ++++++++++++++++++++++++++ - doc/zmq_poll.txt | 85 +++++++++++++++++++++ - doc/zmq_python.txt | 27 +++++++ - doc/zmq_queue.txt | 32 ++++++++ - doc/zmq_recv.txt | 66 ++++++++++++++++ - doc/zmq_send.txt | 77 +++++++++++++++++++ - doc/zmq_setsockopt.txt | 155 ++++++++++++++++++++++++++++++++++++++ - doc/zmq_socket.txt | 126 +++++++++++++++++++++++++++++++ - doc/zmq_streamer.txt | 32 ++++++++ - doc/zmq_strerror.txt | 50 +++++++++++++ - doc/zmq_tcp.txt | 93 +++++++++++++++++++++++ - doc/zmq_term.txt | 49 ++++++++++++ - doc/zmq_udp.txt | 56 ++++++++++++++ - man/Makefile.am | 22 ------ - man/convert2html.sh | 55 -------------- - man/convert2pdf.sh | 88 ---------------------- - man/man1/zmq_forwarder.1 | 11 --- - man/man1/zmq_queue.1 | 11 --- - man/man1/zmq_streamer.1 | 11 --- - man/man3/zmq_bind.3 | 52 ------------- - man/man3/zmq_close.3 | 30 -------- - man/man3/zmq_connect.3 | 49 ------------ - man/man3/zmq_flush.3 | 37 --------- - man/man3/zmq_init.3 | 40 ---------- - man/man3/zmq_msg_close.3 | 32 -------- - man/man3/zmq_msg_copy.3 | 43 ----------- - man/man3/zmq_msg_data.3 | 27 ------- - man/man3/zmq_msg_init.3 | 33 -------- - man/man3/zmq_msg_init_data.3 | 55 -------------- - man/man3/zmq_msg_init_size.3 | 44 ----------- - man/man3/zmq_msg_move.3 | 38 ---------- - man/man3/zmq_msg_size.3 | 30 -------- - man/man3/zmq_poll.3 | 71 ------------------ - man/man3/zmq_recv.3 | 52 ------------- - man/man3/zmq_send.3 | 64 ---------------- - man/man3/zmq_setsockopt.3 | 137 --------------------------------- - man/man3/zmq_socket.3 | 110 --------------------------- - man/man3/zmq_strerror.3 | 27 ------- - man/man3/zmq_term.3 | 25 ------- - man/man7/zmq.7 | 151 ------------------------------------- - man/man7/zmq_cl.7 | 124 ------------------------------ - man/man7/zmq_cpp.7 | 103 ------------------------- - man/man7/zmq_inproc.7 | 42 ----------- - man/man7/zmq_ipc.7 | 34 --------- - man/man7/zmq_java.7 | 9 --- - man/man7/zmq_pgm.7 | 98 ------------------------ - man/man7/zmq_python.7 | 9 --- - man/man7/zmq_tcp.7 | 80 -------------------- - man/man7/zmq_udp.7 | 45 ----------- + .gitignore | 5 ++ + Makefile.am | 8 +- + configure.in | 19 ++++- + doc/Makefile.am | 41 ++++++++++ + doc/asciidoc.conf | 34 ++++++++ + doc/zmq.txt | 175 ++++++++++++++++++++++++++++++++++++++++++ + doc/zmq_bind.txt | 67 ++++++++++++++++ + doc/zmq_close.txt | 52 +++++++++++++ + doc/zmq_connect.txt | 63 +++++++++++++++ + doc/zmq_cpp.txt | 89 +++++++++++++++++++++ + doc/zmq_flush.txt | 59 ++++++++++++++ + doc/zmq_forwarder.txt | 32 ++++++++ + doc/zmq_init.txt | 61 +++++++++++++++ + doc/zmq_inproc.txt | 50 ++++++++++++ + doc/zmq_ipc.txt | 44 +++++++++++ + doc/zmq_java.txt | 27 +++++++ + doc/zmq_msg_close.txt | 53 +++++++++++++ + doc/zmq_msg_copy.txt | 60 +++++++++++++++ + doc/zmq_msg_data.txt | 50 ++++++++++++ + doc/zmq_msg_init.txt | 54 +++++++++++++ + doc/zmq_msg_init_data.txt | 67 ++++++++++++++++ + doc/zmq_msg_init_size.txt | 61 +++++++++++++++ + doc/zmq_msg_move.txt | 55 +++++++++++++ + doc/zmq_msg_size.txt | 53 +++++++++++++ + doc/zmq_pgm.txt | 106 +++++++++++++++++++++++++ + doc/zmq_poll.txt | 85 ++++++++++++++++++++ + doc/zmq_python.txt | 27 +++++++ + doc/zmq_queue.txt | 32 ++++++++ + doc/zmq_recv.txt | 66 ++++++++++++++++ + doc/zmq_send.txt | 77 +++++++++++++++++++ + doc/zmq_setsockopt.txt | 155 +++++++++++++++++++++++++++++++++++++ + doc/zmq_socket.txt | 126 ++++++++++++++++++++++++++++++ + doc/zmq_streamer.txt | 32 ++++++++ + doc/zmq_strerror.txt | 50 ++++++++++++ + doc/zmq_tcp.txt | 93 ++++++++++++++++++++++ + doc/zmq_term.txt | 49 ++++++++++++ + doc/zmq_udp.txt | 56 ++++++++++++++ + man/Makefile.am | 22 ------ + man/convert2html.sh | 55 ------------- + man/convert2pdf.sh | 88 --------------------- + man/man1/zmq_forwarder.1 | 11 --- + man/man1/zmq_queue.1 | 11 --- + man/man1/zmq_streamer.1 | 11 --- + man/man3/zmq_bind.3 | 52 ------------- + man/man3/zmq_close.3 | 30 -------- + man/man3/zmq_connect.3 | 49 ------------ + man/man3/zmq_flush.3 | 37 --------- + man/man3/zmq_init.3 | 40 ---------- + man/man3/zmq_msg_close.3 | 32 -------- + man/man3/zmq_msg_copy.3 | 43 ----------- + man/man3/zmq_msg_data.3 | 27 ------- + man/man3/zmq_msg_init.3 | 33 -------- + man/man3/zmq_msg_init_data.3 | 55 ------------- + man/man3/zmq_msg_init_size.3 | 44 ----------- + man/man3/zmq_msg_move.3 | 38 --------- + man/man3/zmq_msg_size.3 | 30 -------- + man/man3/zmq_poll.3 | 71 ----------------- + man/man3/zmq_recv.3 | 52 ------------- + man/man3/zmq_send.3 | 64 --------------- + man/man3/zmq_setsockopt.3 | 137 --------------------------------- + man/man3/zmq_socket.3 | 110 -------------------------- + man/man3/zmq_strerror.3 | 27 ------- + man/man3/zmq_term.3 | 25 ------ + man/man7/zmq.7 | 151 ------------------------------------ + man/man7/zmq_cl.7 | 124 ------------------------------ + man/man7/zmq_cpp.7 | 103 ------------------------- + man/man7/zmq_inproc.7 | 42 ---------- + man/man7/zmq_ipc.7 | 34 -------- + man/man7/zmq_java.7 | 9 --- + man/man7/zmq_pgm.7 | 98 ----------------------- + man/man7/zmq_python.7 | 9 --- + man/man7/zmq_tcp.7 | 80 ------------------- + man/man7/zmq_udp.7 | 45 ----------- 73 files changed, 2224 insertions(+), 1898 deletions(-) commit 2d44bf3644c8e12aa86c48e9da4df19bfa9ea703 @@ -22713,8 +30443,8 @@ ZMQII-69: Make 0MQ build on HP-UX - src/fd_signaler.cpp | 4 ++-- - src/tcp_connecter.cpp | 6 +++++- + src/fd_signaler.cpp | 4 ++-- + src/tcp_connecter.cpp | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) commit 8c25bab31d63bf5e2c4eec6d9084cf7d1c1e5dd3 @@ -22723,7 +30453,7 @@ ZMQII-70: zmq_poll on win32 fails with EINVAL - src/zmq.cpp | 27 ++++++++++++++------------- + src/zmq.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) commit 8f86cac2f6721eec4b600383eb113f7fedf41ce1 @@ -22732,9 +30462,9 @@ ZMQII-69: Make 0MQ build on HP-UX - src/fd_signaler.cpp | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/ip.cpp | 4 +-- - src/tcp_connecter.hpp | 9 +++++- + src/fd_signaler.cpp | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/ip.cpp | 4 +-- + src/tcp_connecter.hpp | 9 +++++- 3 files changed, 87 insertions(+), 4 deletions(-) commit fd673ae231119682a242967551cfa034fa32791a @@ -22743,8 +30473,8 @@ couple of typos in the documentation fixed - examples/chat/README | 2 +- - man/man3/zmq_term.3 | 2 +- + examples/chat/README | 2 +- + man/man3/zmq_term.3 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 6b2ca4e158c3394f5aba8f0f01ff1734423683f9 @@ -22753,7 +30483,7 @@ ZMQII-67: Build checks for python even if it's not needed - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4c870ede7fdecaf1f952b01096e09cc03a7c7aef @@ -22762,8 +30492,8 @@ ZMQII-57: Shutdown OpenPGM library - src/pgm_socket.cpp | 31 +------------------------------ - src/zmq.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++++- + src/pgm_socket.cpp | 31 +------------------------------ + src/zmq.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 31 deletions(-) commit 396e41a2a4b31f91ef4c4458d53be9e3a9b4bb92 @@ -22772,7 +30502,7 @@ minor change to README - README | 2 -- + README | 2 -- 1 file changed, 2 deletions(-) commit 01533a5aefb49e23be95cab9cfa5ca32cd438d25 @@ -22781,10 +30511,10 @@ ZMQII-65: Two OS threads are mapped to the same app_thread_t - src/app_thread.cpp | 23 +++------------- - src/app_thread.hpp | 19 ------------- - src/dispatcher.cpp | 79 ++++++++++++++++++++++++++++++++++-------------------- - src/dispatcher.hpp | 29 +++++++++++++++----- + src/app_thread.cpp | 23 +++------------ + src/app_thread.hpp | 19 ------------- + src/dispatcher.cpp | 79 +++++++++++++++++++++++++++++++++------------------- + src/dispatcher.hpp | 29 ++++++++++++++----- 4 files changed, 76 insertions(+), 74 deletions(-) commit 7593d815ac57f2877480c5056b2f1aa65460f5c3 @@ -22793,7 +30523,7 @@ ZMQII-64: First message stuck in 0MQ in case of immediate disconnection - src/zmq_engine.cpp | 8 ++++++-- + src/zmq_engine.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 427bc3276aa236c8691fee7e634717d0579a3055 @@ -22802,7 +30532,7 @@ minor code cleanup - src/socket_base.cpp | 2 +- + src/socket_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b0ee6b0c8ab8a5052a5e111dda24308dd00c0d62 @@ -22811,7 +30541,7 @@ ZMQII-62: zmq_close after sending message via P2P socket fails - src/p2p.cpp | 5 +++++ + src/p2p.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit bbaa494fb569d94c356ddecca7dbf249ffc217cf @@ -22820,9 +30550,9 @@ ZMQII-59: TCP server crashes sometimes when message is send and socket is closed immediately - src/dispatcher.cpp | 23 +++++++++++++++++++++++ - src/dispatcher.hpp | 16 ++-------------- - src/object.cpp | 12 +++++------- + src/dispatcher.cpp | 23 +++++++++++++++++++++++ + src/dispatcher.hpp | 16 ++-------------- + src/object.cpp | 12 +++++------- 3 files changed, 30 insertions(+), 21 deletions(-) commit d21bf21a362cf6d20d8d060bb91ee2fdca1dd88b @@ -22831,7 +30561,7 @@ allow async connect on Win32 return WSAECONNABORTED - src/tcp_connecter.cpp | 3 ++- + src/tcp_connecter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 0888fcd06f1c66ec3dfab744bfc24d1486737c7e @@ -22840,7 +30570,7 @@ yqueue_t uses malloc/free instead of new/delete - src/yqueue.hpp | 14 +++++++------- + src/yqueue.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) commit 30076c4f7a5b0c70ef0c5a6574cac531bc996f5e @@ -22849,7 +30579,7 @@ ZMQII-58: TCP connecting asserts on Win32 (same fix for POSIX) - src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c46b7ed1978ead346022577ff015b092f3257c84 @@ -22858,7 +30588,7 @@ ZMQII-58: TCP connecting asserts on Win32 - src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit b86483acbe109566f4e0fb43266fdd98e7648d55 @@ -22867,10 +30597,10 @@ ZMQII-50: Document Ruby Bindings - man/Makefile.am | 2 +- - man/convert2html.sh | 1 - - man/convert2pdf.sh | 2 -- - man/man7/zmq_ruby.7 | 9 --------- + man/Makefile.am | 2 +- + man/convert2html.sh | 1 - + man/convert2pdf.sh | 2 -- + man/man7/zmq_ruby.7 | 9 --------- 4 files changed, 1 insertion(+), 13 deletions(-) commit bc90231227a84f4b7dffe432a8efa70b75c19031 @@ -22879,7 +30609,7 @@ contrain interface name resolving in OpenPGM to IPv4 interfaces - src/pgm_socket.cpp | 8 ++++++-- + src/pgm_socket.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) commit 0f697fe2b460dfbec7481f6d535b95f6b4cc2eac @@ -22888,8 +30618,8 @@ ZMQII-56: Avoid allocation of chunk in yqueue.hpp by keeping a spare one - AUTHORS | 1 + - src/yqueue.hpp | 31 ++++++++++++++++++++++++++----- + AUTHORS | 1 + + src/yqueue.hpp | 31 ++++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) commit 72bbc92b70a67fab1dbba6fbd53f574944bdd8e4 @@ -22905,10 +30635,10 @@ Update OpenPGM to 2.0.23rc8 - configure.in | 10 +++++----- - foreign/openpgm/libpgm-2.0.21rc6.tar.bz2 | Bin 323697 -> 0 bytes - foreign/openpgm/libpgm-2.0.23rc8.tar.bz2 | Bin 0 -> 321822 bytes - src/Makefile.am | 3 ++- + configure.in | 10 +++++----- + foreign/openpgm/libpgm-2.0.21rc6.tar.bz2 | Bin 323697 -> 0 bytes + foreign/openpgm/libpgm-2.0.23rc8.tar.bz2 | Bin 0 -> 321822 bytes + src/Makefile.am | 3 ++- 4 files changed, 7 insertions(+), 6 deletions(-) commit 4172fdd6970d4b42443442bf6633f9a9bd4c6f2b @@ -22917,9 +30647,9 @@ Win32 build fixed - builds/msvc/libzmq/libzmq.vcproj | 8 +++++ - builds/msvc/msvc.sln | 9 ++++++ - builds/msvc/ruby/ruby.vcproj | 68 ++++++++++++++++++++++++++++++++++++++++ + builds/msvc/libzmq/libzmq.vcproj | 8 +++++ + builds/msvc/msvc.sln | 9 +++++ + builds/msvc/ruby/ruby.vcproj | 68 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) commit 7c25feb51bdbc9563cc65ff4829f761ef7231483 @@ -22928,7 +30658,7 @@ ZMQII-55: At most one PGM/UDP transport can be opened - src/pgm_socket.cpp | 38 ++++++++++++++++++++------------------ + src/pgm_socket.cpp | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) commit 9cee8f9c3e22f1e880988271ab1c31c92827efde @@ -22937,7 +30667,7 @@ problem with PGM messages larger than 1 MTU fixed - src/pgm_receiver.cpp | 104 ++++++++++++++++++++++++++------------------------- + src/pgm_receiver.cpp | 104 ++++++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 50 deletions(-) commit 27e47bdcc0358b84a57378e19359556e2dbcb50e @@ -22946,7 +30676,7 @@ ZMQII-54: Affinity isn't honoured - src/dispatcher.cpp | 15 +++++++-------- + src/dispatcher.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) commit 5d16070ffcd426e81ea27520f6847d68e5e5af80 @@ -22955,7 +30685,7 @@ ZMQII-53: Memory leak when using invalid socket type - src/dispatcher.cpp | 6 +++++- + src/dispatcher.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit a1e70f29575994798df1d57314193782f6d9cdcb @@ -22964,7 +30694,7 @@ ZMQII-52: Asserion during reconnection - src/zmq_init.cpp | 3 +-- + src/zmq_init.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit 528610ff55ef283b99cbcda007200a6b4092be59 @@ -22973,7 +30703,7 @@ typo in zmq_socket(3) man page fixed - man/man3/zmq_socket.3 | 2 +- + man/man3/zmq_socket.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 00b9a5dedeb47efd78aea59b579a4b5befba743a @@ -22982,11 +30712,11 @@ ZMQII-51: Implement O(1) topic matching - src/Makefile.am | 2 + - src/prefix_tree.cpp | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/prefix_tree.hpp | 55 +++++++++++++++++ - src/sub.cpp | 44 ++----------- - src/sub.hpp | 13 ++-- + src/Makefile.am | 2 + + src/prefix_tree.cpp | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/prefix_tree.hpp | 55 ++++++++++++++++ + src/sub.cpp | 44 ++----------- + src/sub.hpp | 13 ++-- 5 files changed, 242 insertions(+), 47 deletions(-) commit 70ea8e9d4b88a1ecb1c076eccc2e9bd872c2230c @@ -22995,8 +30725,8 @@ ZMQII-48: Implement P2P socket type - src/p2p.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++------------ - src/p2p.hpp | 5 +++++ + src/p2p.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++------------ + src/p2p.hpp | 5 +++++ 2 files changed, 49 insertions(+), 12 deletions(-) commit eb47c1b064ec2f433d3889b7fd4a297a965166bb @@ -23012,58 +30742,58 @@ moving debian directory to the root of the project - debian/README.Debian | 6 ++ - debian/changelog | 6 ++ - debian/cl-zeromq.files | 7 ++ - debian/cl-zeromq.install | 6 ++ - debian/cl-zeromq.links | 1 + - debian/compat | 1 + - debian/control | 161 +++++++++++++++++++++++++++++++ - debian/copyright | 18 ++++ - debian/dirs | 5 + - debian/docs | 2 + - debian/libzeromq-dev.files | 37 +++++++ - debian/libzeromq-dev.install | 19 ++++ - debian/libzeromq-python.files | 1 + - debian/libzeromq-python.install | 1 + - debian/libzeromq-ruby.files | 1 + - debian/libzeromq-ruby.install | 1 + - debian/libzeromq0.files | 2 + - debian/libzeromq0.install | 1 + - debian/rules | 136 ++++++++++++++++++++++++++ - debian/shlibs.local | 1 + - debian/zeromq-examples.files | 2 + - debian/zeromq-examples.install | 2 + - debian/zeromq-perf.files | 10 ++ - debian/zeromq-perf.install | 10 ++ - debian/zeromq-utils.files | 6 ++ - debian/zeromq-utils.install | 6 ++ - packages/debian/README.Debian | 6 -- - packages/debian/changelog | 6 -- - packages/debian/cl-zeromq.files | 7 -- - packages/debian/cl-zeromq.install | 6 -- - packages/debian/cl-zeromq.links | 1 - - packages/debian/compat | 1 - - packages/debian/control | 161 ------------------------------- - packages/debian/copyright | 18 ---- - packages/debian/dirs | 5 - - packages/debian/docs | 2 - - packages/debian/libzeromq-dev.files | 37 ------- - packages/debian/libzeromq-dev.install | 19 ---- - packages/debian/libzeromq-python.files | 1 - - packages/debian/libzeromq-python.install | 1 - - packages/debian/libzeromq-ruby.files | 1 - - packages/debian/libzeromq-ruby.install | 1 - - packages/debian/libzeromq0.files | 2 - - packages/debian/libzeromq0.install | 1 - - packages/debian/rules | 136 -------------------------- - packages/debian/shlibs.local | 1 - - packages/debian/zeromq-examples.files | 2 - - packages/debian/zeromq-examples.install | 2 - - packages/debian/zeromq-perf.files | 10 -- - packages/debian/zeromq-perf.install | 10 -- - packages/debian/zeromq-utils.files | 6 -- - packages/debian/zeromq-utils.install | 6 -- + debian/README.Debian | 6 ++ + debian/changelog | 6 ++ + debian/cl-zeromq.files | 7 ++ + debian/cl-zeromq.install | 6 ++ + debian/cl-zeromq.links | 1 + + debian/compat | 1 + + debian/control | 161 ++++++++++++++++++++++++++++++ + debian/copyright | 18 ++++ + debian/dirs | 5 + + debian/docs | 2 + + debian/libzeromq-dev.files | 37 +++++++ + debian/libzeromq-dev.install | 19 ++++ + debian/libzeromq-python.files | 1 + + debian/libzeromq-python.install | 1 + + debian/libzeromq-ruby.files | 1 + + debian/libzeromq-ruby.install | 1 + + debian/libzeromq0.files | 2 + + debian/libzeromq0.install | 1 + + debian/rules | 136 +++++++++++++++++++++++++ + debian/shlibs.local | 1 + + debian/zeromq-examples.files | 2 + + debian/zeromq-examples.install | 2 + + debian/zeromq-perf.files | 10 ++ + debian/zeromq-perf.install | 10 ++ + debian/zeromq-utils.files | 6 ++ + debian/zeromq-utils.install | 6 ++ + packages/debian/README.Debian | 6 -- + packages/debian/changelog | 6 -- + packages/debian/cl-zeromq.files | 7 -- + packages/debian/cl-zeromq.install | 6 -- + packages/debian/cl-zeromq.links | 1 - + packages/debian/compat | 1 - + packages/debian/control | 161 ------------------------------ + packages/debian/copyright | 18 ---- + packages/debian/dirs | 5 - + packages/debian/docs | 2 - + packages/debian/libzeromq-dev.files | 37 ------- + packages/debian/libzeromq-dev.install | 19 ---- + packages/debian/libzeromq-python.files | 1 - + packages/debian/libzeromq-python.install | 1 - + packages/debian/libzeromq-ruby.files | 1 - + packages/debian/libzeromq-ruby.install | 1 - + packages/debian/libzeromq0.files | 2 - + packages/debian/libzeromq0.install | 1 - + packages/debian/rules | 136 ------------------------- + packages/debian/shlibs.local | 1 - + packages/debian/zeromq-examples.files | 2 - + packages/debian/zeromq-examples.install | 2 - + packages/debian/zeromq-perf.files | 10 -- + packages/debian/zeromq-perf.install | 10 -- + packages/debian/zeromq-utils.files | 6 -- + packages/debian/zeromq-utils.install | 6 -- 52 files changed, 449 insertions(+), 449 deletions(-) commit 4d5e643299e22b53120173319490957b98c0199e @@ -23072,7 +30802,7 @@ patching libtool script moved at the end of configure - configure.in | 18 ++++++++++-------- + configure.in | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) commit 849095a042b8326f5789baa04d1dbb7ca36d4632 @@ -23088,24 +30818,24 @@ CL binding ripped out of the tree - .gitignore | 3 + - bindings/Makefile.am | 8 +- - bindings/cl/Makefile.am | 9 -- - bindings/cl/meta.lisp | 59 ----------- - bindings/cl/package.lisp | 108 ------------------- - bindings/cl/zeromq-api.lisp | 180 ------------------------------- - bindings/cl/zeromq.asd | 38 ------- - bindings/cl/zeromq.lisp | 250 -------------------------------------------- - configure.in | 21 ---- - perf/Makefile.am | 2 +- - perf/cl/Makefile.am | 2 - - perf/cl/lat-parms.lisp | 22 ---- - perf/cl/local-lat-poll.lisp | 43 -------- - perf/cl/local-lat.lisp | 52 --------- - perf/cl/local-thr.lisp | 54 ---------- - perf/cl/remote-lat.lisp | 50 --------- - perf/cl/remote-thr.lisp | 41 -------- - perf/cl/thr-parms.lisp | 25 ----- + .gitignore | 3 + + bindings/Makefile.am | 8 +- + bindings/cl/Makefile.am | 9 -- + bindings/cl/meta.lisp | 59 ---------- + bindings/cl/package.lisp | 108 ------------------- + bindings/cl/zeromq-api.lisp | 180 ------------------------------- + bindings/cl/zeromq.asd | 38 ------- + bindings/cl/zeromq.lisp | 250 ------------------------------------------- + configure.in | 21 ---- + perf/Makefile.am | 2 +- + perf/cl/Makefile.am | 2 - + perf/cl/lat-parms.lisp | 22 ---- + perf/cl/local-lat-poll.lisp | 43 -------- + perf/cl/local-lat.lisp | 52 --------- + perf/cl/local-thr.lisp | 54 ---------- + perf/cl/remote-lat.lisp | 50 --------- + perf/cl/remote-thr.lisp | 41 ------- + perf/cl/thr-parms.lisp | 25 ----- 18 files changed, 6 insertions(+), 961 deletions(-) commit e5ff617c4e061d29c9a019efa2292fd09c87a71e @@ -23114,7 +30844,7 @@ fixed OpenPGM compilation on mingw32 - src/windows.hpp | 4 ++++ + src/windows.hpp | 4 ++++ 1 file changed, 4 insertions(+) commit 8f57ff4634ae44cd998bc0b864a8987f241e2fce @@ -23123,8 +30853,8 @@ fixed OpenPGM compilation on mingw32 - perf/c/Makefile.am | 1 + - src/Makefile.am | 1 + + perf/c/Makefile.am | 1 + + src/Makefile.am | 1 + 2 files changed, 2 insertions(+) commit 2056c888d2567ab96c3539fd60bfb652e19df335 @@ -23133,7 +30863,7 @@ changed version of the master branch back to dev - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 0b97e7a4f23f7add763ac6e0fc945c9a342a7d32 @@ -23142,12 +30872,12 @@ libpgm updated to 2.6.21rc6 - configure.in | 12 ++++++------ - foreign/openpgm/libpgm-2.0.20rc5.tar.bz2 | Bin 316958 -> 0 bytes - foreign/openpgm/libpgm-2.0.21rc6.tar.bz2 | Bin 0 -> 323697 bytes - perf/c/Makefile.am | 6 ++++++ - src/Makefile.am | 13 +++++++++++-- - src/pgm_socket.cpp | 25 +++++++++++++++++++------ + configure.in | 12 ++++++------ + foreign/openpgm/libpgm-2.0.20rc5.tar.bz2 | Bin 316958 -> 0 bytes + foreign/openpgm/libpgm-2.0.21rc6.tar.bz2 | Bin 0 -> 323697 bytes + perf/c/Makefile.am | 6 ++++++ + src/Makefile.am | 13 +++++++++++-- + src/pgm_socket.cpp | 25 +++++++++++++++++++------ 6 files changed, 42 insertions(+), 14 deletions(-) commit 943125bd12dbf181f4dfce7babddf1af7bcb7e18 @@ -23156,7 +30886,7 @@ Hard-wired constant on OpenVMS replaced by symbolic constant - src/fd_signaler.cpp | 4 ++-- + src/fd_signaler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit aa27034db5d47f4630f464da53f63a0e62c34daa @@ -23165,7 +30895,7 @@ IPv6 patch - part V. (win32) - src/ip.cpp | 21 +++------------------ + src/ip.cpp | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) commit adc5d7693d9279134c0494210b9d2b885e95d950 @@ -23174,7 +30904,7 @@ IPv6 patch - part IV. - src/ip.cpp | 41 ++++++++++++++++++++++++++++++++++------- + src/ip.cpp | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) commit fca9a2159a1fb963901d11dc6f734a622baa92d6 @@ -23190,7 +30920,7 @@ IPv6 patch - part III. - src/ip.cpp | 42 ++++++++++++++++++++++++------------------ + src/ip.cpp | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) commit 454f43a45b2d453b53984387e8a8a50cad568f41 @@ -23199,7 +30929,7 @@ IP address resolving on Win32 fixed - src/ip.cpp | 20 ++++++++++++++------ + src/ip.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) commit df4548aa76617314cb1a47e6d408cc663640cd70 @@ -23215,12 +30945,12 @@ IPv6 patch part 2/2 - src/ip.cpp | 26 +++++++++++++++++++------- - src/ip.hpp | 11 +++++++---- - src/tcp_connecter.cpp | 17 ++++++++++------- - src/tcp_connecter.hpp | 1 + - src/tcp_listener.cpp | 11 ++++++----- - src/tcp_listener.hpp | 1 + + src/ip.cpp | 26 +++++++++++++++++++------- + src/ip.hpp | 11 +++++++---- + src/tcp_connecter.cpp | 17 ++++++++++------- + src/tcp_connecter.hpp | 1 + + src/tcp_listener.cpp | 11 ++++++----- + src/tcp_listener.hpp | 1 + 6 files changed, 44 insertions(+), 23 deletions(-) commit 6aaf095dd259dc42d78cc7bd8c5a7f867eb23166 @@ -23229,7 +30959,7 @@ IPv6 support -part II. - src/ip.cpp | 158 +++++++++++++++++++++++-------------------------------------- + src/ip.cpp | 158 +++++++++++++++++++++++------------------------------------- 1 file changed, 60 insertions(+), 98 deletions(-) commit d762e1a9c976680dde2d2f38dac9f5861bd82dad @@ -23238,7 +30968,7 @@ Win32 build fixed - bindings/cpp/zmq.hpp | 16 ++++++++-------- + bindings/cpp/zmq.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) commit 34d65e22c557671c74d6c51026b2434912966319 @@ -23247,12 +30977,12 @@ Tero Marttila's Ipv6 patch - part I. - src/fd_signaler.cpp | 1 - - src/ip.cpp | 24 ++++++++++++++---------- - src/ip.hpp | 6 +++--- - src/tcp_connecter.cpp | 17 +++++++++-------- - src/tcp_connecter.hpp | 2 +- - src/tcp_listener.cpp | 16 ++++++++-------- + src/fd_signaler.cpp | 1 - + src/ip.cpp | 24 ++++++++++++++---------- + src/ip.hpp | 6 +++--- + src/tcp_connecter.cpp | 17 +++++++++-------- + src/tcp_connecter.hpp | 2 +- + src/tcp_listener.cpp | 16 ++++++++-------- 6 files changed, 35 insertions(+), 31 deletions(-) commit 6edec4fe93c60693a5faee7e4e8821eac4f43d4d @@ -23261,7 +30991,7 @@ zmq_udp(7) man page fixed - man/man7/zmq_udp.7 | 6 +++--- + man/man7/zmq_udp.7 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 70601c243fa7e91f5cceaa80190d7b413940020b @@ -23270,7 +31000,7 @@ zmq_pgm(7) man page fixed - man/man7/zmq_pgm.7 | 6 +++--- + man/man7/zmq_pgm.7 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit d1e09578b275aca93c50cde078322a0348342c60 @@ -23279,8 +31009,8 @@ Hardcoded loopback address removed from fd_signaler - AUTHORS | 1 + - src/fd_signaler.cpp | 4 +++- + AUTHORS | 1 + + src/fd_signaler.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) commit f4832faf29df6470bf59f1f1866c07fa4278a75b @@ -23289,19 +31019,19 @@ small fix to man pages to comply with lintian - man/Makefile.am | 2 +- - man/convert2html.sh | 1 + - man/convert2pdf.sh | 2 ++ - man/man7/zmq_cl.7 | 2 +- - man/man7/zmq_cpp.7 | 2 +- - man/man7/zmq_inproc.7 | 2 +- - man/man7/zmq_ipc.7 | 2 +- - man/man7/zmq_java.7 | 9 +++++++++ - man/man7/zmq_pgm.7 | 2 +- - man/man7/zmq_python.7 | 2 +- - man/man7/zmq_ruby.7 | 2 +- - man/man7/zmq_tcp.7 | 2 +- - man/man7/zmq_udp.7 | 2 +- + man/Makefile.am | 2 +- + man/convert2html.sh | 1 + + man/convert2pdf.sh | 2 ++ + man/man7/zmq_cl.7 | 2 +- + man/man7/zmq_cpp.7 | 2 +- + man/man7/zmq_inproc.7 | 2 +- + man/man7/zmq_ipc.7 | 2 +- + man/man7/zmq_java.7 | 9 +++++++++ + man/man7/zmq_pgm.7 | 2 +- + man/man7/zmq_python.7 | 2 +- + man/man7/zmq_ruby.7 | 2 +- + man/man7/zmq_tcp.7 | 2 +- + man/man7/zmq_udp.7 | 2 +- 13 files changed, 22 insertions(+), 10 deletions(-) commit b1b66df37c0b05ba05d9636234bad0cc02a1bd03 @@ -23310,7 +31040,7 @@ PGM man page improved - man/man7/zmq_pgm.7 | 8 ++++++++ + man/man7/zmq_pgm.7 | 8 ++++++++ 1 file changed, 8 insertions(+) commit 66ef22993f22a0d47703c1203f57d95c4316bc70 @@ -23319,7 +31049,7 @@ zmq_close man page improved - man/man3/zmq_close.3 | 5 ++++- + man/man3/zmq_close.3 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit a008af6088ef1ad3baf1b9e6ae699cc07367efa3 @@ -23328,7 +31058,7 @@ Asko Kauppi added to the list of authors - AUTHORS | 1 + + AUTHORS | 1 + 1 file changed, 1 insertion(+) commit f0757c003eb232247a460631276b40e4fc02f3c9 @@ -23337,7 +31067,7 @@ ZMQII-43: Race condition when writing to pipe - src/session.cpp | 2 +- + src/session.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 6a46ca75e5970733cfe135ecf77074b69fdda34f @@ -23346,7 +31076,7 @@ ZMQ-42: Building with ICC fails - src/tcp_connecter.cpp | 1 + + src/tcp_connecter.cpp | 1 + 1 file changed, 1 insertion(+) commit 111f0ff078372e8a0f5c0b98170d451d6561e85e @@ -23355,7 +31085,7 @@ ZMQII-41: Poll function in C++ binding doesn't convert errors to exceptions - bindings/cpp/zmq.hpp | 5 ++++- + bindings/cpp/zmq.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 6b0457fcaad3fa9a2e632b3799119c40da8dd6ca @@ -23364,7 +31094,7 @@ minor documentation patch - man/man3/zmq_setsockopt.3 | 10 +++++----- + man/man3/zmq_setsockopt.3 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 7094edd6baf0d69c3879da7f16c7222388952931 @@ -23373,10 +31103,10 @@ error handling in C perf tests improved - perf/c/local_lat.c | 51 ++++++++++++++++++++++++++++++++++---------- - perf/c/local_thr.c | 61 +++++++++++++++++++++++++++++++++++++++++------------ - perf/c/remote_lat.c | 51 ++++++++++++++++++++++++++++++++++---------- - perf/c/remote_thr.c | 41 +++++++++++++++++++++++++++-------- + perf/c/local_lat.c | 51 ++++++++++++++++++++++++++++++++---------- + perf/c/local_thr.c | 61 ++++++++++++++++++++++++++++++++++++++++----------- + perf/c/remote_lat.c | 51 ++++++++++++++++++++++++++++++++---------- + perf/c/remote_thr.c | 41 ++++++++++++++++++++++++++-------- 4 files changed, 160 insertions(+), 44 deletions(-) commit 4ceb83935062bb84fd5da702679a126d12aed8be @@ -23385,19 +31115,19 @@ typos in man pages fixed - .gitignore | 13 +++++++++++++ - man/man3/zmq_bind.3 | 2 +- - man/man3/zmq_connect.3 | 2 +- - man/man3/zmq_recv.3 | 2 +- - man/man3/zmq_send.3 | 2 +- - man/man3/zmq_socket.3 | 8 ++++---- - man/man7/zmq.7 | 4 ++-- - man/man7/zmq_cpp.7 | 2 +- - man/man7/zmq_inproc.7 | 2 +- - man/man7/zmq_ipc.7 | 8 ++++---- - man/man7/zmq_pgm.7 | 10 +++++----- - man/man7/zmq_tcp.7 | 4 ++-- - man/man7/zmq_udp.7 | 12 ++++++------ + .gitignore | 13 +++++++++++++ + man/man3/zmq_bind.3 | 2 +- + man/man3/zmq_connect.3 | 2 +- + man/man3/zmq_recv.3 | 2 +- + man/man3/zmq_send.3 | 2 +- + man/man3/zmq_socket.3 | 8 ++++---- + man/man7/zmq.7 | 4 ++-- + man/man7/zmq_cpp.7 | 2 +- + man/man7/zmq_inproc.7 | 2 +- + man/man7/zmq_ipc.7 | 8 ++++---- + man/man7/zmq_pgm.7 | 10 +++++----- + man/man7/zmq_tcp.7 | 4 ++-- + man/man7/zmq_udp.7 | 12 ++++++------ 13 files changed, 42 insertions(+), 29 deletions(-) commit bddff50271b7c4c15c34d7a0aa1c04f3e3e3c107 @@ -23406,7 +31136,7 @@ ZMQII-40: wrong return code from recolve_ip_interface - src/ip.cpp | 2 +- + src/ip.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 55944729ed5527692b1ead17af553aa32c316781 @@ -23415,7 +31145,7 @@ ChangeLog modified for 2.0-beta2 version - ChangeLog | 11 +++++++++++ + ChangeLog | 11 +++++++++++ 1 file changed, 11 insertions(+) commit f40e3a6931fb6463c349ef765d99515edc569fd7 @@ -23424,7 +31154,7 @@ version number bumped - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 51e012c446b500fe3dfb46b6475ebf018ecfeaa0 @@ -23433,10 +31163,10 @@ Solaris build fixed - AUTHORS | 1 + - src/ip.cpp | 2 +- - src/tcp_connecter.cpp | 6 ++++-- - src/tcp_listener.cpp | 7 +++---- + AUTHORS | 1 + + src/ip.cpp | 2 +- + src/tcp_connecter.cpp | 6 ++++-- + src/tcp_listener.cpp | 7 +++---- 4 files changed, 9 insertions(+), 7 deletions(-) commit a507d16e13fdd6b13e1e69d0d305750995513a1f @@ -23445,8 +31175,8 @@ Win32 build fixed - src/tcp_connecter.cpp | 2 ++ - src/tcp_listener.cpp | 4 +++- + src/tcp_connecter.cpp | 2 ++ + src/tcp_listener.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) commit 2bb57ac57ace37203c505ff17147210feca34d73 @@ -23455,30 +31185,30 @@ ZMQII-39: Implement IPC transport - man/Makefile.am | 2 +- - man/convert2html.sh | 1 + - man/convert2pdf.sh | 2 + - man/man7/zmq.7 | 3 + - man/man7/zmq_inproc.7 | 3 +- - man/man7/zmq_ipc.7 | 34 +++++++++++ - man/man7/zmq_pgm.7 | 1 + - man/man7/zmq_tcp.7 | 1 + - man/man7/zmq_udp.7 | 1 + - src/ip.cpp | 17 ++++++ - src/ip.hpp | 9 +++ - src/socket_base.cpp | 23 +++++-- - src/tcp_connecter.cpp | 117 +++++++++++++++++++++++------------ - src/tcp_connecter.hpp | 4 +- - src/tcp_listener.cpp | 166 +++++++++++++++++++++++++++++++++++--------------- - src/tcp_listener.hpp | 10 ++- - src/zmq_connecter.cpp | 10 +-- - src/zmq_connecter.hpp | 7 ++- - src/zmq_engine.cpp | 9 ++- - src/zmq_engine.hpp | 6 +- - src/zmq_init.cpp | 4 +- - src/zmq_init.hpp | 3 +- - src/zmq_listener.cpp | 6 +- - src/zmq_listener.hpp | 4 +- + man/Makefile.am | 2 +- + man/convert2html.sh | 1 + + man/convert2pdf.sh | 2 + + man/man7/zmq.7 | 3 + + man/man7/zmq_inproc.7 | 3 +- + man/man7/zmq_ipc.7 | 34 ++++++++++ + man/man7/zmq_pgm.7 | 1 + + man/man7/zmq_tcp.7 | 1 + + man/man7/zmq_udp.7 | 1 + + src/ip.cpp | 17 +++++ + src/ip.hpp | 9 +++ + src/socket_base.cpp | 23 +++++-- + src/tcp_connecter.cpp | 117 +++++++++++++++++++++++----------- + src/tcp_connecter.hpp | 4 +- + src/tcp_listener.cpp | 166 ++++++++++++++++++++++++++++++++++--------------- + src/tcp_listener.hpp | 10 ++- + src/zmq_connecter.cpp | 10 +-- + src/zmq_connecter.hpp | 7 ++- + src/zmq_engine.cpp | 9 ++- + src/zmq_engine.hpp | 6 +- + src/zmq_init.cpp | 4 +- + src/zmq_init.hpp | 3 +- + src/zmq_listener.cpp | 6 +- + src/zmq_listener.hpp | 4 +- 24 files changed, 323 insertions(+), 120 deletions(-) commit 56c369272c279224562d11b0a66590ac7826f4f3 @@ -23494,7 +31224,7 @@ ZMQII-34: ensure that poll won't return POLLIN event when the message will be filtered out anyway (Win32) - src/zmq.cpp | 54 +++++++++++++++++++++++++++++++++++++----------------- + src/zmq.cpp | 54 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 17 deletions(-) commit b60342ae1a95dbb303705f5b89a94b33805a3841 @@ -23503,11 +31233,11 @@ man pages are more specific on NIC name issue - man/man3/zmq_bind.3 | 12 ++++++++---- - man/man3/zmq_connect.3 | 12 ++++++++---- - man/man7/zmq_pgm.7 | 5 +++++ - man/man7/zmq_tcp.7 | 5 +++++ - man/man7/zmq_udp.7 | 5 +++++ + man/man3/zmq_bind.3 | 12 ++++++++---- + man/man3/zmq_connect.3 | 12 ++++++++---- + man/man7/zmq_pgm.7 | 5 +++++ + man/man7/zmq_tcp.7 | 5 +++++ + man/man7/zmq_udp.7 | 5 +++++ 5 files changed, 31 insertions(+), 8 deletions(-) commit 067ba3b9f77a253d4ce58e05ef1fa7702c32b2a3 @@ -23516,10 +31246,10 @@ ZMQII-34: ensure that poll won't return POLLIN event when the message will be filtered out anyway (POSIX) - src/socket_base.cpp | 4 +-- - src/sub.cpp | 92 ++++++++++++++++++++++++++++++++++++++--------------- - src/sub.hpp | 10 ++++++ - src/zmq.cpp | 50 ++++++++++++++++++----------- + src/socket_base.cpp | 4 +-- + src/sub.cpp | 92 +++++++++++++++++++++++++++++++++++++-------------- + src/sub.hpp | 10 ++++++ + src/zmq.cpp | 50 ++++++++++++++++++---------- 4 files changed, 110 insertions(+), 46 deletions(-) commit 06105d164230800e8ea42ddd513e2f7fb27e6f2f @@ -23528,10 +31258,10 @@ transports man pages updated - man/man7/zmq_inproc.7 | 34 ++++++++++++++++++++++- - man/man7/zmq_pgm.7 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++- - man/man7/zmq_tcp.7 | 5 ++++ - man/man7/zmq_udp.7 | 32 ++++++++++++++++++++- + man/man7/zmq_inproc.7 | 34 +++++++++++++++++++++- + man/man7/zmq_pgm.7 | 77 ++++++++++++++++++++++++++++++++++++++++++++++++- + man/man7/zmq_tcp.7 | 5 ++++ + man/man7/zmq_udp.7 | 32 +++++++++++++++++++- 4 files changed, 145 insertions(+), 3 deletions(-) commit 30a107e06d48ebbc7a635ba4fb21a24e385cf4e4 @@ -23540,8 +31270,8 @@ timeout parameter for zmq_poll added in cl binding - bindings/cl/zeromq-api.lisp | 12 +++++++----- - bindings/cl/zeromq.lisp | 3 ++- + bindings/cl/zeromq-api.lisp | 12 +++++++----- + bindings/cl/zeromq.lisp | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) commit 20a8edcf5c2d9d5099d194e5a87c501d49c47328 @@ -23550,8 +31280,8 @@ ZMQII-38: Compiler complains about missing virtual constructors - src/i_endpoint.hpp | 2 ++ - src/i_inout.hpp | 2 ++ + src/i_endpoint.hpp | 2 ++ + src/i_inout.hpp | 2 ++ 2 files changed, 4 insertions(+) commit 76dbb4f3bb88f73bc40e3de72e258e321375cd2f @@ -23560,7 +31290,7 @@ zmq_tcp man page added - man/man7/zmq_tcp.7 | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++- + man/man7/zmq_tcp.7 | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) commit bcd278a5a5fa9c08af6786c6f3c1ec5fa974fadf @@ -23569,7 +31299,7 @@ ZMQII-37: SIGSEGV when polling on REQ socket - src/req.cpp | 2 +- + src/req.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 4c613b39faebe18af95cab07a7d5f687285c4655 @@ -23578,7 +31308,7 @@ script to convert man pages to html added - man/convert2html.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + man/convert2html.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) commit 72b2f07a707724b353e9733f60cb4bade9b43966 @@ -23587,8 +31317,8 @@ ZMQII-36: Chat example & forwarder broken because of changes subscribe semantics - devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- - examples/chat/display.cpp | 2 +- + devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- + examples/chat/display.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 65f450f22e311d9a9251d05f8fb902a8fa2afe54 @@ -23597,7 +31327,7 @@ minor man page fix - man/man3/zmq_connect.3 | 2 -- + man/man3/zmq_connect.3 | 2 -- 1 file changed, 2 deletions(-) commit bd07baf0281ddb5f332bd03b06038fc0ac048285 @@ -23606,7 +31336,7 @@ ZMQII-33: zmq_poll may exceed timeout if signal interrupts the waiting - src/zmq.cpp | 4 ++-- + src/zmq.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e806615dd18e625b0b7fb1074cc4da5fda18529b @@ -23615,8 +31345,8 @@ ZMQII-31: memory leak in zmq_poll (on timeout) - AUTHORS | 1 + - src/zmq.cpp | 4 +++- + AUTHORS | 1 + + src/zmq.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) commit 9fc8827b8a8e9d842b85b7f7f9790fc0a2ef88f6 @@ -23632,8 +31362,8 @@ zmq.cpp build probelm on non-linux platforms fixed - man/man3/zmq_setsockopt.3 | 10 ++++------ - src/zmq.cpp | 5 ++++- + man/man3/zmq_setsockopt.3 | 10 ++++------ + src/zmq.cpp | 5 ++++- 2 files changed, 8 insertions(+), 7 deletions(-) commit e9a4ad38ce04ee21a7f81d5a36e3c58cf7138f5d @@ -23642,7 +31372,7 @@ updated version to 2.0-beta1 in configure.in - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 7546526e667b35c05c80515d651e950a771813e1 @@ -23651,7 +31381,7 @@ ChangeLog updated for 2.0-beta1 - ChangeLog | 10 ++++++++++ + ChangeLog | 10 ++++++++++ 1 file changed, 10 insertions(+) commit e21b33e9cfe12725de23bf2ef44967f53bcb2a10 @@ -23660,7 +31390,7 @@ forced WINVER to 0x0501 for mingv32 build - src/windows.hpp | 5 +++-- + src/windows.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit ef049efe2ec56bb0ff5395ba8cba6e1722922e43 @@ -23669,13 +31399,13 @@ perf tests modified to reflect change in subscription format - perf/c/local_thr.c | 2 +- - perf/cl/local-thr.lisp | 2 +- - perf/cpp/local_thr.cpp | 2 +- - perf/java/local_thr.java | 2 +- - perf/python/local_thr.py | 2 +- - perf/ruby/local_thr.rb | 2 +- - src/zmq_engine.cpp | 8 +++++--- + perf/c/local_thr.c | 2 +- + perf/cl/local-thr.lisp | 2 +- + perf/cpp/local_thr.cpp | 2 +- + perf/java/local_thr.java | 2 +- + perf/python/local_thr.py | 2 +- + perf/ruby/local_thr.rb | 2 +- + src/zmq_engine.cpp | 8 +++++--- 7 files changed, 11 insertions(+), 9 deletions(-) commit 8d339e959694107df8f1666634a34f54ad76ae41 @@ -23684,8 +31414,8 @@ Fixed newer autotools warningng about AC_CONFIG_MACRO_DIR - Makefile.am | 2 ++ - configure.in | 1 + + Makefile.am | 2 ++ + configure.in | 1 + 2 files changed, 3 insertions(+) commit 11fec367d1a13c3f0248f8542eb805b8d9571685 @@ -23694,10 +31424,10 @@ added pending event fd handling by the pgm_sender - src/pgm_sender.cpp | 9 ++++++++- - src/pgm_sender.hpp | 1 + - src/pgm_socket.cpp | 10 +++++++--- - src/pgm_socket.hpp | 2 +- + src/pgm_sender.cpp | 9 ++++++++- + src/pgm_sender.hpp | 1 + + src/pgm_socket.cpp | 10 +++++++--- + src/pgm_socket.hpp | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) commit 472ddf8de2c93f750831d52b5473cdbed1db51e8 @@ -23713,9 +31443,9 @@ updated to libpgm-2.0.20rc5 - configure.in | 10 +++++----- - foreign/openpgm/libpgm-2.0.19rc4.tar.bz2 | Bin 317223 -> 0 bytes - foreign/openpgm/libpgm-2.0.20rc5.tar.bz2 | Bin 0 -> 316958 bytes + configure.in | 10 +++++----- + foreign/openpgm/libpgm-2.0.19rc4.tar.bz2 | Bin 317223 -> 0 bytes + foreign/openpgm/libpgm-2.0.20rc5.tar.bz2 | Bin 0 -> 316958 bytes 3 files changed, 5 insertions(+), 5 deletions(-) commit 4f6baf4dde627656b63cc4e2acdb78a8577ba640 @@ -23724,190 +31454,190 @@ Copyrights transferred from FastMQ to iMatix - autogen.sh | 7 +------ - bindings/c/zmq.h | 2 +- - bindings/cpp/zmq.hpp | 2 +- - bindings/java/Context.cpp | 2 +- - bindings/java/Socket.cpp | 2 +- - bindings/java/org/zmq/Context.java | 2 +- - bindings/java/org/zmq/Socket.java | 2 +- - bindings/python/pyzmq.cpp | 2 +- - bindings/ruby/extconf.rb | 2 +- - bindings/ruby/rbzmq.cpp | 2 +- - builds/msvc/platform.hpp | 2 +- - devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- - devices/zmq_queue/zmq_queue.cpp | 2 +- - devices/zmq_streamer/zmq_streamer.cpp | 2 +- - examples/chat/display.cpp | 2 +- - examples/chat/prompt.cpp | 2 +- - man/convert2pdf.sh | 2 +- - man/man1/zmq_forwarder.1 | 2 +- - man/man1/zmq_queue.1 | 2 +- - man/man1/zmq_streamer.1 | 2 +- - man/man3/zmq_bind.3 | 2 +- - man/man3/zmq_close.3 | 2 +- - man/man3/zmq_connect.3 | 2 +- - man/man3/zmq_flush.3 | 2 +- - man/man3/zmq_init.3 | 2 +- - man/man3/zmq_msg_close.3 | 2 +- - man/man3/zmq_msg_copy.3 | 2 +- - man/man3/zmq_msg_data.3 | 2 +- - man/man3/zmq_msg_init.3 | 2 +- - man/man3/zmq_msg_init_data.3 | 2 +- - man/man3/zmq_msg_init_size.3 | 2 +- - man/man3/zmq_msg_move.3 | 2 +- - man/man3/zmq_msg_size.3 | 2 +- - man/man3/zmq_poll.3 | 2 +- - man/man3/zmq_recv.3 | 2 +- - man/man3/zmq_send.3 | 2 +- - man/man3/zmq_setsockopt.3 | 2 +- - man/man3/zmq_socket.3 | 2 +- - man/man3/zmq_strerror.3 | 2 +- - man/man3/zmq_term.3 | 2 +- - man/man7/zmq.7 | 2 +- - man/man7/zmq_cl.7 | 2 +- - man/man7/zmq_cpp.7 | 2 +- - man/man7/zmq_inproc.7 | 2 +- - man/man7/zmq_pgm.7 | 2 +- - man/man7/zmq_python.7 | 2 +- - man/man7/zmq_ruby.7 | 2 +- - man/man7/zmq_tcp.7 | 2 +- - man/man7/zmq_udp.7 | 2 +- - packages/debian/copyright | 2 +- - perf/c/local_lat.c | 2 +- - perf/c/local_thr.c | 2 +- - perf/c/remote_lat.c | 2 +- - perf/c/remote_thr.c | 2 +- - perf/cpp/local_lat.cpp | 2 +- - perf/cpp/local_thr.cpp | 2 +- - perf/cpp/remote_lat.cpp | 2 +- - perf/cpp/remote_thr.cpp | 2 +- - perf/java/local_lat.java | 2 +- - perf/java/local_thr.java | 2 +- - perf/java/remote_lat.java | 2 +- - perf/java/remote_thr.java | 2 +- - perf/python/local_lat.py | 2 +- - perf/python/local_thr.py | 2 +- - perf/python/remote_lat.py | 2 +- - perf/python/remote_thr.py | 2 +- - perf/ruby/local_lat.rb | 2 +- - perf/ruby/local_thr.rb | 2 +- - perf/ruby/remote_lat.rb | 2 +- - perf/ruby/remote_thr.rb | 2 +- - src/app_thread.cpp | 2 +- - src/app_thread.hpp | 2 +- - src/atomic_bitmap.hpp | 2 +- - src/atomic_counter.hpp | 2 +- - src/atomic_ptr.hpp | 2 +- - src/command.hpp | 2 +- - src/config.hpp | 2 +- - src/decoder.hpp | 2 +- - src/devpoll.cpp | 2 +- - src/devpoll.hpp | 2 +- - src/dispatcher.cpp | 2 +- - src/dispatcher.hpp | 2 +- - src/downstream.cpp | 2 +- - src/downstream.hpp | 2 +- - src/encoder.hpp | 2 +- - src/epoll.cpp | 2 +- - src/epoll.hpp | 2 +- - src/err.cpp | 2 +- - src/err.hpp | 2 +- - src/fd.hpp | 2 +- - src/fd_signaler.cpp | 2 +- - src/fd_signaler.hpp | 2 +- - src/fq.cpp | 2 +- - src/fq.hpp | 2 +- - src/i_endpoint.hpp | 2 +- - src/i_engine.hpp | 2 +- - src/i_inout.hpp | 2 +- - src/i_poll_events.hpp | 2 +- - src/i_signaler.hpp | 2 +- - src/io_object.cpp | 2 +- - src/io_object.hpp | 2 +- - src/io_thread.cpp | 2 +- - src/io_thread.hpp | 2 +- - src/ip.cpp | 2 +- - src/ip.hpp | 2 +- - src/kqueue.cpp | 2 +- - src/kqueue.hpp | 2 +- - src/lb.cpp | 2 +- - src/lb.hpp | 2 +- - src/likely.hpp | 2 +- - src/msg_content.hpp | 2 +- - src/mutex.hpp | 2 +- - src/object.cpp | 2 +- - src/object.hpp | 2 +- - src/options.cpp | 2 +- - src/options.hpp | 2 +- - src/owned.cpp | 2 +- - src/owned.hpp | 2 +- - src/p2p.cpp | 2 +- - src/p2p.hpp | 2 +- - src/pgm_receiver.cpp | 2 +- - src/pgm_receiver.hpp | 2 +- - src/pgm_sender.cpp | 2 +- - src/pgm_sender.hpp | 2 +- - src/pgm_socket.cpp | 2 +- - src/pgm_socket.hpp | 2 +- - src/pipe.cpp | 2 +- - src/pipe.hpp | 2 +- - src/poll.cpp | 2 +- - src/poll.hpp | 2 +- - src/poller.hpp | 2 +- - src/pub.cpp | 2 +- - src/pub.hpp | 2 +- - src/rep.cpp | 2 +- - src/rep.hpp | 2 +- - src/req.cpp | 2 +- - src/req.hpp | 2 +- - src/select.cpp | 2 +- - src/select.hpp | 2 +- - src/session.cpp | 2 +- - src/session.hpp | 2 +- - src/simple_semaphore.hpp | 2 +- - src/socket_base.cpp | 2 +- - src/socket_base.hpp | 2 +- - src/stdint.hpp | 2 +- - src/sub.cpp | 2 +- - src/sub.hpp | 2 +- - src/tcp_connecter.cpp | 2 +- - src/tcp_connecter.hpp | 2 +- - src/tcp_listener.cpp | 2 +- - src/tcp_listener.hpp | 2 +- - src/tcp_socket.cpp | 2 +- - src/tcp_socket.hpp | 2 +- - src/thread.cpp | 2 +- - src/thread.hpp | 2 +- - src/upstream.cpp | 2 +- - src/upstream.hpp | 2 +- - src/uuid.cpp | 2 +- - src/uuid.hpp | 2 +- - src/windows.hpp | 2 +- - src/wire.hpp | 2 +- - src/xrep.cpp | 2 +- - src/xrep.hpp | 2 +- - src/xreq.cpp | 2 +- - src/xreq.hpp | 2 +- - src/yarray.hpp | 2 +- - src/yarray_item.hpp | 2 +- - src/ypipe.hpp | 2 +- - src/ypollset.cpp | 2 +- - src/ypollset.hpp | 2 +- - src/yqueue.hpp | 2 +- - src/zmq.cpp | 2 +- - src/zmq_connecter.cpp | 2 +- - src/zmq_connecter.hpp | 2 +- - src/zmq_decoder.cpp | 2 +- - src/zmq_decoder.hpp | 2 +- - src/zmq_encoder.cpp | 2 +- - src/zmq_encoder.hpp | 2 +- - src/zmq_engine.cpp | 2 +- - src/zmq_engine.hpp | 2 +- - src/zmq_init.cpp | 2 +- - src/zmq_init.hpp | 2 +- - src/zmq_listener.cpp | 2 +- - src/zmq_listener.hpp | 2 +- + autogen.sh | 7 +------ + bindings/c/zmq.h | 2 +- + bindings/cpp/zmq.hpp | 2 +- + bindings/java/Context.cpp | 2 +- + bindings/java/Socket.cpp | 2 +- + bindings/java/org/zmq/Context.java | 2 +- + bindings/java/org/zmq/Socket.java | 2 +- + bindings/python/pyzmq.cpp | 2 +- + bindings/ruby/extconf.rb | 2 +- + bindings/ruby/rbzmq.cpp | 2 +- + builds/msvc/platform.hpp | 2 +- + devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- + devices/zmq_queue/zmq_queue.cpp | 2 +- + devices/zmq_streamer/zmq_streamer.cpp | 2 +- + examples/chat/display.cpp | 2 +- + examples/chat/prompt.cpp | 2 +- + man/convert2pdf.sh | 2 +- + man/man1/zmq_forwarder.1 | 2 +- + man/man1/zmq_queue.1 | 2 +- + man/man1/zmq_streamer.1 | 2 +- + man/man3/zmq_bind.3 | 2 +- + man/man3/zmq_close.3 | 2 +- + man/man3/zmq_connect.3 | 2 +- + man/man3/zmq_flush.3 | 2 +- + man/man3/zmq_init.3 | 2 +- + man/man3/zmq_msg_close.3 | 2 +- + man/man3/zmq_msg_copy.3 | 2 +- + man/man3/zmq_msg_data.3 | 2 +- + man/man3/zmq_msg_init.3 | 2 +- + man/man3/zmq_msg_init_data.3 | 2 +- + man/man3/zmq_msg_init_size.3 | 2 +- + man/man3/zmq_msg_move.3 | 2 +- + man/man3/zmq_msg_size.3 | 2 +- + man/man3/zmq_poll.3 | 2 +- + man/man3/zmq_recv.3 | 2 +- + man/man3/zmq_send.3 | 2 +- + man/man3/zmq_setsockopt.3 | 2 +- + man/man3/zmq_socket.3 | 2 +- + man/man3/zmq_strerror.3 | 2 +- + man/man3/zmq_term.3 | 2 +- + man/man7/zmq.7 | 2 +- + man/man7/zmq_cl.7 | 2 +- + man/man7/zmq_cpp.7 | 2 +- + man/man7/zmq_inproc.7 | 2 +- + man/man7/zmq_pgm.7 | 2 +- + man/man7/zmq_python.7 | 2 +- + man/man7/zmq_ruby.7 | 2 +- + man/man7/zmq_tcp.7 | 2 +- + man/man7/zmq_udp.7 | 2 +- + packages/debian/copyright | 2 +- + perf/c/local_lat.c | 2 +- + perf/c/local_thr.c | 2 +- + perf/c/remote_lat.c | 2 +- + perf/c/remote_thr.c | 2 +- + perf/cpp/local_lat.cpp | 2 +- + perf/cpp/local_thr.cpp | 2 +- + perf/cpp/remote_lat.cpp | 2 +- + perf/cpp/remote_thr.cpp | 2 +- + perf/java/local_lat.java | 2 +- + perf/java/local_thr.java | 2 +- + perf/java/remote_lat.java | 2 +- + perf/java/remote_thr.java | 2 +- + perf/python/local_lat.py | 2 +- + perf/python/local_thr.py | 2 +- + perf/python/remote_lat.py | 2 +- + perf/python/remote_thr.py | 2 +- + perf/ruby/local_lat.rb | 2 +- + perf/ruby/local_thr.rb | 2 +- + perf/ruby/remote_lat.rb | 2 +- + perf/ruby/remote_thr.rb | 2 +- + src/app_thread.cpp | 2 +- + src/app_thread.hpp | 2 +- + src/atomic_bitmap.hpp | 2 +- + src/atomic_counter.hpp | 2 +- + src/atomic_ptr.hpp | 2 +- + src/command.hpp | 2 +- + src/config.hpp | 2 +- + src/decoder.hpp | 2 +- + src/devpoll.cpp | 2 +- + src/devpoll.hpp | 2 +- + src/dispatcher.cpp | 2 +- + src/dispatcher.hpp | 2 +- + src/downstream.cpp | 2 +- + src/downstream.hpp | 2 +- + src/encoder.hpp | 2 +- + src/epoll.cpp | 2 +- + src/epoll.hpp | 2 +- + src/err.cpp | 2 +- + src/err.hpp | 2 +- + src/fd.hpp | 2 +- + src/fd_signaler.cpp | 2 +- + src/fd_signaler.hpp | 2 +- + src/fq.cpp | 2 +- + src/fq.hpp | 2 +- + src/i_endpoint.hpp | 2 +- + src/i_engine.hpp | 2 +- + src/i_inout.hpp | 2 +- + src/i_poll_events.hpp | 2 +- + src/i_signaler.hpp | 2 +- + src/io_object.cpp | 2 +- + src/io_object.hpp | 2 +- + src/io_thread.cpp | 2 +- + src/io_thread.hpp | 2 +- + src/ip.cpp | 2 +- + src/ip.hpp | 2 +- + src/kqueue.cpp | 2 +- + src/kqueue.hpp | 2 +- + src/lb.cpp | 2 +- + src/lb.hpp | 2 +- + src/likely.hpp | 2 +- + src/msg_content.hpp | 2 +- + src/mutex.hpp | 2 +- + src/object.cpp | 2 +- + src/object.hpp | 2 +- + src/options.cpp | 2 +- + src/options.hpp | 2 +- + src/owned.cpp | 2 +- + src/owned.hpp | 2 +- + src/p2p.cpp | 2 +- + src/p2p.hpp | 2 +- + src/pgm_receiver.cpp | 2 +- + src/pgm_receiver.hpp | 2 +- + src/pgm_sender.cpp | 2 +- + src/pgm_sender.hpp | 2 +- + src/pgm_socket.cpp | 2 +- + src/pgm_socket.hpp | 2 +- + src/pipe.cpp | 2 +- + src/pipe.hpp | 2 +- + src/poll.cpp | 2 +- + src/poll.hpp | 2 +- + src/poller.hpp | 2 +- + src/pub.cpp | 2 +- + src/pub.hpp | 2 +- + src/rep.cpp | 2 +- + src/rep.hpp | 2 +- + src/req.cpp | 2 +- + src/req.hpp | 2 +- + src/select.cpp | 2 +- + src/select.hpp | 2 +- + src/session.cpp | 2 +- + src/session.hpp | 2 +- + src/simple_semaphore.hpp | 2 +- + src/socket_base.cpp | 2 +- + src/socket_base.hpp | 2 +- + src/stdint.hpp | 2 +- + src/sub.cpp | 2 +- + src/sub.hpp | 2 +- + src/tcp_connecter.cpp | 2 +- + src/tcp_connecter.hpp | 2 +- + src/tcp_listener.cpp | 2 +- + src/tcp_listener.hpp | 2 +- + src/tcp_socket.cpp | 2 +- + src/tcp_socket.hpp | 2 +- + src/thread.cpp | 2 +- + src/thread.hpp | 2 +- + src/upstream.cpp | 2 +- + src/upstream.hpp | 2 +- + src/uuid.cpp | 2 +- + src/uuid.hpp | 2 +- + src/windows.hpp | 2 +- + src/wire.hpp | 2 +- + src/xrep.cpp | 2 +- + src/xrep.hpp | 2 +- + src/xreq.cpp | 2 +- + src/xreq.hpp | 2 +- + src/yarray.hpp | 2 +- + src/yarray_item.hpp | 2 +- + src/ypipe.hpp | 2 +- + src/ypollset.cpp | 2 +- + src/ypollset.hpp | 2 +- + src/yqueue.hpp | 2 +- + src/zmq.cpp | 2 +- + src/zmq_connecter.cpp | 2 +- + src/zmq_connecter.hpp | 2 +- + src/zmq_decoder.cpp | 2 +- + src/zmq_decoder.hpp | 2 +- + src/zmq_encoder.cpp | 2 +- + src/zmq_encoder.hpp | 2 +- + src/zmq_engine.cpp | 2 +- + src/zmq_engine.hpp | 2 +- + src/zmq_init.cpp | 2 +- + src/zmq_init.hpp | 2 +- + src/zmq_listener.cpp | 2 +- + src/zmq_listener.hpp | 2 +- 184 files changed, 184 insertions(+), 189 deletions(-) commit bf01727f4b5d2e12daa5e4289c556fb3b7ade3f3 @@ -23916,9 +31646,9 @@ updated to libpgm 2.0.19rc4 - configure.in | 10 +++++----- - foreign/openpgm/libpgm-2.0.18rc3.tar.bz2 | Bin 315989 -> 0 bytes - foreign/openpgm/libpgm-2.0.19rc4.tar.bz2 | Bin 0 -> 317223 bytes + configure.in | 10 +++++----- + foreign/openpgm/libpgm-2.0.18rc3.tar.bz2 | Bin 315989 -> 0 bytes + foreign/openpgm/libpgm-2.0.19rc4.tar.bz2 | Bin 0 -> 317223 bytes 3 files changed, 5 insertions(+), 5 deletions(-) commit 1528edb963b2c9d292758f7704eeda336d358db2 @@ -23927,7 +31657,7 @@ fixed autogen.sh complaining about existing config dir - autogen.sh | 2 +- + autogen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit f2b235db165e459f7f265993477dae0dc987125a @@ -23936,10 +31666,10 @@ ZMQII-29: Add timeout to zmq_poll function - bindings/c/zmq.h | 2 +- - bindings/cpp/zmq.hpp | 4 ++-- - man/man3/zmq_poll.3 | 10 ++++++++-- - src/zmq.cpp | 23 ++++++++++++++++++----- + bindings/c/zmq.h | 2 +- + bindings/cpp/zmq.hpp | 4 ++-- + man/man3/zmq_poll.3 | 10 ++++++++-- + src/zmq.cpp | 23 ++++++++++++++++++----- 4 files changed, 29 insertions(+), 10 deletions(-) commit 7884f4541aa6f95b76e0b2429baaf11108c543a1 @@ -23948,7 +31678,7 @@ problem with new version of autoreconf fixed - autogen.sh | 7 ++++++- + autogen.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) commit 1b90e5f6f50ecb512b22f73850f763a9a009c483 @@ -23957,7 +31687,7 @@ added missing likely.hpp file into the dist - src/Makefile.am | 1 + + src/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 9bda63cd6378682af3b685dbbe0c47cdc4455295 @@ -23966,7 +31696,7 @@ fixed minor gcc warning in src/pgm_receiver.cpp - src/pgm_receiver.cpp | 2 +- + src/pgm_receiver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 819590c04cb24f1627b140883e4106bb8a6f62eb @@ -23975,9 +31705,9 @@ libpgm updated to 2.0.18rc3 - configure.in | 10 +++++----- - foreign/openpgm/libpgm-2.0.17rc2.tar.bz2 | Bin 315051 -> 0 bytes - foreign/openpgm/libpgm-2.0.18rc3.tar.bz2 | Bin 0 -> 315989 bytes + configure.in | 10 +++++----- + foreign/openpgm/libpgm-2.0.17rc2.tar.bz2 | Bin 315051 -> 0 bytes + foreign/openpgm/libpgm-2.0.18rc3.tar.bz2 | Bin 0 -> 315989 bytes 3 files changed, 5 insertions(+), 5 deletions(-) commit 9fadf0b218b66e8448a2356f124dc1bb10f1f81d @@ -23986,7 +31716,7 @@ fixed minor gcc warning in src/pgm_socket.cpp - src/pgm_socket.cpp | 4 ++-- + src/pgm_socket.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit d6da7903d0fc42356adbf4c43e04774a1b465632 @@ -23995,8 +31725,8 @@ removed unused foreign/openpgm/create_custom_gsi_1.patch file - Makefile.am | 1 - - foreign/openpgm/create_custom_gsi_1.patch | 43 ------------------------------- + Makefile.am | 1 - + foreign/openpgm/create_custom_gsi_1.patch | 43 ----------------------------- 2 files changed, 44 deletions(-) commit 7cb02fb3e7cbe614caefbb5d9ab34936fba2724f @@ -24005,7 +31735,7 @@ fixed make dist for non pgm configuration - configure.in | 3 +++ + configure.in | 3 +++ 1 file changed, 3 insertions(+) commit 102077471c5863242b5e9a2e063e272edd5b48ea @@ -24014,7 +31744,7 @@ error in zmq_poll manpage fixed - man/man3/zmq_poll.3 | 4 ++-- + man/man3/zmq_poll.3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit e9cebc86ed8eeff2cc5dde49807a4851b43d1232 @@ -24023,7 +31753,7 @@ EINPROGRESS definition added on Win32 platform - bindings/c/zmq.h | 3 +++ + bindings/c/zmq.h | 3 +++ 1 file changed, 3 insertions(+) commit 23e5c3b342793ca871747b7d6681d445b34925bb @@ -24032,7 +31762,7 @@ polling on SUB socket fixed - src/sub.cpp | 5 +---- + src/sub.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) commit 72161fb075025410312c6735d681c3de9a36a4e5 @@ -24041,10 +31771,10 @@ format of subscriptions changed (no * needed anymore) - src/socket_base.cpp | 11 ++++--- - src/sub.cpp | 90 ++++++++++++++++++++++------------------------------- - src/sub.hpp | 9 ++---- - src/zmq_engine.cpp | 7 +++-- + src/socket_base.cpp | 11 ++++--- + src/sub.cpp | 90 +++++++++++++++++++++------------------------------ + src/sub.hpp | 9 ++---- + src/zmq_engine.cpp | 7 ++-- 4 files changed, 51 insertions(+), 66 deletions(-) commit c97967ed4b70de700db38cc2661bbe43262bc029 @@ -24053,8 +31783,8 @@ MSVC build fixed - builds/msvc/libzmq/libzmq.vcproj | 16 ++++------------ - src/zmq_init.cpp | 1 + + builds/msvc/libzmq/libzmq.vcproj | 16 ++++------------ + src/zmq_init.cpp | 1 + 2 files changed, 5 insertions(+), 12 deletions(-) commit 5852db451a76905336601c5ba3e4f33006f007fb @@ -24063,12 +31793,12 @@ PGM code cleanup - src/pgm_receiver.cpp | 148 +++++++++++++++++------------------------- - src/pgm_receiver.hpp | 13 ++-- - src/pgm_sender.cpp | 94 ++++++++++----------------- - src/pgm_sender.hpp | 16 +---- - src/pgm_socket.cpp | 178 +++++++++++++++------------------------------------ - src/pgm_socket.hpp | 37 ++--------- + src/pgm_receiver.cpp | 148 ++++++++++++++++------------------------- + src/pgm_receiver.hpp | 13 ++-- + src/pgm_sender.cpp | 94 ++++++++++---------------- + src/pgm_sender.hpp | 16 +---- + src/pgm_socket.cpp | 178 +++++++++++++++----------------------------------- + src/pgm_socket.hpp | 37 ++--------- 6 files changed, 159 insertions(+), 327 deletions(-) commit aebff623f36efddc0de7a3192832b61802f8cec8 @@ -24077,26 +31807,26 @@ ZMQII-28: Bidirectional introduction on TCP connection establishment - src/Makefile.am | 8 +- - src/i_inout.hpp | 6 +- - src/pgm_receiver.cpp | 3 +- - src/pgm_receiver.hpp | 6 +- - src/pgm_sender.cpp | 3 +- - src/pgm_sender.hpp | 6 +- - src/session.cpp | 54 ++++++++++--- - src/session.hpp | 24 ++++-- - src/socket_base.cpp | 83 +++++++++++++------ - src/socket_base.hpp | 27 ++++--- - src/zmq_connecter.cpp | 15 ++-- - src/zmq_connecter.hpp | 8 +- - src/zmq_connecter_init.cpp | 132 ------------------------------ - src/zmq_connecter_init.hpp | 79 ------------------ - src/zmq_engine.cpp | 2 +- - src/zmq_init.cpp | 195 +++++++++++++++++++++++++++++++++++++++++++++ - src/zmq_init.hpp | 89 +++++++++++++++++++++ - src/zmq_listener.cpp | 6 +- - src/zmq_listener_init.cpp | 137 ------------------------------- - src/zmq_listener_init.hpp | 79 ------------------ + src/Makefile.am | 8 +- + src/i_inout.hpp | 6 +- + src/pgm_receiver.cpp | 3 +- + src/pgm_receiver.hpp | 6 +- + src/pgm_sender.cpp | 3 +- + src/pgm_sender.hpp | 6 +- + src/session.cpp | 54 +++++++++--- + src/session.hpp | 24 ++++-- + src/socket_base.cpp | 83 +++++++++++++------ + src/socket_base.hpp | 27 +++--- + src/zmq_connecter.cpp | 15 ++-- + src/zmq_connecter.hpp | 8 +- + src/zmq_connecter_init.cpp | 132 ------------------------------ + src/zmq_connecter_init.hpp | 79 ------------------ + src/zmq_engine.cpp | 2 +- + src/zmq_init.cpp | 195 ++++++++++++++++++++++++++++++++++++++++++++ + src/zmq_init.hpp | 89 ++++++++++++++++++++ + src/zmq_listener.cpp | 6 +- + src/zmq_listener_init.cpp | 137 ------------------------------- + src/zmq_listener_init.hpp | 79 ------------------ 20 files changed, 445 insertions(+), 517 deletions(-) commit b3bd4c15fe869de4f5c530ecc5942968677a85c3 @@ -24105,7 +31835,7 @@ OpenPGM error handling fixed - src/pgm_socket.cpp | 15 +++++++++------ + src/pgm_socket.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) commit 7cf18a2aec8300099e3c3e236ac3cefa3be746d0 @@ -24114,8 +31844,8 @@ minor fixes - src/app_thread.cpp | 4 ++-- - src/object.hpp | 4 ---- + src/app_thread.cpp | 4 ++-- + src/object.hpp | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) commit 5a0674dfeccf0d80dc92e77a8630be280c71fb84 @@ -24124,9 +31854,9 @@ OpenPGM error handling improved - bindings/python/pyzmq.cpp | 2 +- - src/pgm_socket.cpp | 64 ++++++++++++++++++++++++++++++++++++----------- - src/pgm_socket.hpp | 12 ++++----- + bindings/python/pyzmq.cpp | 2 +- + src/pgm_socket.cpp | 64 +++++++++++++++++++++++++++++++++++---------- + src/pgm_socket.hpp | 12 ++++----- 3 files changed, 57 insertions(+), 21 deletions(-) commit 990a1e8686bdeb3472a27d00cb2436936a4d0d26 @@ -24135,7 +31865,7 @@ zmq_cl(7) man page added - man/man7/zmq_cl.7 | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- + man/man7/zmq_cl.7 | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 118 insertions(+), 3 deletions(-) commit bad224251e97205abaf987e8e998bc14af32223c @@ -24144,7 +31874,7 @@ minor errors in zmq_cpp man page fixed - man/man7/zmq_cpp.7 | 12 ++++++------ + man/man7/zmq_cpp.7 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) commit d50c7daf9eafe36ca2df7210ff2e82487e85f842 @@ -24153,7 +31883,7 @@ hint parameter (zmq_free_fn) added to Lisp binding - bindings/cl/zeromq.lisp | 7 ++++--- + bindings/cl/zeromq.lisp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) commit 1924cba88985a36cb1422efd2fb287292b41eb44 @@ -24162,7 +31892,7 @@ memory management in Lisp binding fixed - bindings/cl/zeromq-api.lisp | 59 +++++++++++++++++++++++++++++++-------------- + bindings/cl/zeromq-api.lisp | 59 ++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 18 deletions(-) commit 86d68cbcbd24e6dfe6dd1ed230c7806408b70668 @@ -24171,7 +31901,7 @@ memory leaks related to OpenPGM errors fixed - src/pgm_socket.cpp | 11 +++++++---- + src/pgm_socket.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) commit 500d32a540d762d30a59e952a4f2216d73e4654c @@ -24180,13 +31910,13 @@ examples & perf added to the Debian package - packages/debian/control | 50 +++++++++++++++++++++++++++++---- - packages/debian/dirs | 3 ++ - packages/debian/rules | 7 +++-- - packages/debian/zeromq-examples.files | 2 ++ - packages/debian/zeromq-examples.install | 2 ++ - packages/debian/zeromq-perf.files | 10 +++++++ - packages/debian/zeromq-perf.install | 10 +++++++ + packages/debian/control | 50 +++++++++++++++++++++++++++---- + packages/debian/dirs | 3 ++ + packages/debian/rules | 7 +++-- + packages/debian/zeromq-examples.files | 2 ++ + packages/debian/zeromq-examples.install | 2 ++ + packages/debian/zeromq-perf.files | 10 +++++++ + packages/debian/zeromq-perf.install | 10 +++++++ 7 files changed, 75 insertions(+), 9 deletions(-) commit 667d1a8280e2dedd7f3ccdbd39605263ba8e98d7 @@ -24195,7 +31925,7 @@ man page updated to match change in zmq_free_fn - man/man3/zmq_msg_init_data.3 | 23 +++++++++++++++-------- + man/man3/zmq_msg_init_data.3 | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) commit ab5abf6c7ec7668c4a8373d87c491d22d0db144d @@ -24204,10 +31934,10 @@ hint parameter added to zmq_free function - bindings/c/zmq.h | 4 ++-- - bindings/cpp/zmq.hpp | 10 ++++++---- - src/msg_content.hpp | 1 + - src/zmq.cpp | 6 ++++-- + bindings/c/zmq.h | 4 ++-- + bindings/cpp/zmq.hpp | 10 ++++++---- + src/msg_content.hpp | 1 + + src/zmq.cpp | 6 ++++-- 4 files changed, 13 insertions(+), 8 deletions(-) commit 02202ec30ecca9e538cc807ce86b54d822c823bd @@ -24216,7 +31946,7 @@ addition to CREDITS section of AUTHORS file - AUTHORS | 2 ++ + AUTHORS | 2 ++ 1 file changed, 2 insertions(+) commit 5e77a1daa46f1b757b08f65895778f803575469c @@ -24225,28 +31955,28 @@ debian package added - packages/debian/README.Debian | 6 ++ - packages/debian/changelog | 6 ++ - packages/debian/cl-zeromq.files | 7 ++ - packages/debian/cl-zeromq.install | 6 ++ - packages/debian/cl-zeromq.links | 1 + - packages/debian/compat | 1 + - packages/debian/control | 123 ++++++++++++++++++++++++++++ - packages/debian/copyright | 18 +++++ - packages/debian/dirs | 2 + - packages/debian/docs | 2 + - packages/debian/libzeromq-dev.files | 37 +++++++++ - packages/debian/libzeromq-dev.install | 19 +++++ - packages/debian/libzeromq-python.files | 1 + - packages/debian/libzeromq-python.install | 1 + - packages/debian/libzeromq-ruby.files | 1 + - packages/debian/libzeromq-ruby.install | 1 + - packages/debian/libzeromq0.files | 2 + - packages/debian/libzeromq0.install | 1 + - packages/debian/rules | 135 +++++++++++++++++++++++++++++++ - packages/debian/shlibs.local | 1 + - packages/debian/zeromq-utils.files | 6 ++ - packages/debian/zeromq-utils.install | 6 ++ + packages/debian/README.Debian | 6 ++ + packages/debian/changelog | 6 ++ + packages/debian/cl-zeromq.files | 7 ++ + packages/debian/cl-zeromq.install | 6 ++ + packages/debian/cl-zeromq.links | 1 + + packages/debian/compat | 1 + + packages/debian/control | 123 +++++++++++++++++++++++++++ + packages/debian/copyright | 18 ++++ + packages/debian/dirs | 2 + + packages/debian/docs | 2 + + packages/debian/libzeromq-dev.files | 37 ++++++++ + packages/debian/libzeromq-dev.install | 19 +++++ + packages/debian/libzeromq-python.files | 1 + + packages/debian/libzeromq-python.install | 1 + + packages/debian/libzeromq-ruby.files | 1 + + packages/debian/libzeromq-ruby.install | 1 + + packages/debian/libzeromq0.files | 2 + + packages/debian/libzeromq0.install | 1 + + packages/debian/rules | 135 ++++++++++++++++++++++++++++++ + packages/debian/shlibs.local | 1 + + packages/debian/zeromq-utils.files | 6 ++ + packages/debian/zeromq-utils.install | 6 ++ 22 files changed, 383 insertions(+) commit 7479871cde46371c593f35c0ace3d9e984fddb1a @@ -24262,23 +31992,23 @@ all news converted to nothrow variant - src/app_thread.cpp | 23 ++++++++++++----------- - src/dispatcher.cpp | 12 ++++++++---- - src/epoll.cpp | 3 ++- - src/io_thread.cpp | 4 +++- - src/kqueue.cpp | 3 ++- - src/pgm_receiver.cpp | 4 +++- - src/pgm_socket.cpp | 2 ++ - src/session.cpp | 8 ++++++-- - src/socket_base.cpp | 33 +++++++++++++++++++++------------ - src/tcp_listener.cpp | 1 - - src/yqueue.hpp | 5 +++-- - src/zmq.cpp | 4 ++-- - src/zmq_connecter.cpp | 6 ++++-- - src/zmq_connecter_init.cpp | 5 ++++- - src/zmq_engine.cpp | 4 +++- - src/zmq_listener.cpp | 6 ++++-- - src/zmq_listener_init.cpp | 9 ++++++--- + src/app_thread.cpp | 23 ++++++++++++----------- + src/dispatcher.cpp | 12 ++++++++---- + src/epoll.cpp | 3 ++- + src/io_thread.cpp | 4 +++- + src/kqueue.cpp | 3 ++- + src/pgm_receiver.cpp | 4 +++- + src/pgm_socket.cpp | 2 ++ + src/session.cpp | 8 ++++++-- + src/socket_base.cpp | 33 +++++++++++++++++++++------------ + src/tcp_listener.cpp | 1 - + src/yqueue.hpp | 5 +++-- + src/zmq.cpp | 4 ++-- + src/zmq_connecter.cpp | 6 ++++-- + src/zmq_connecter_init.cpp | 5 ++++- + src/zmq_engine.cpp | 4 +++- + src/zmq_listener.cpp | 6 ++++-- + src/zmq_listener_init.cpp | 9 ++++++--- 17 files changed, 85 insertions(+), 47 deletions(-) commit 3e640836674872961f48efb4dc7badb20d736407 @@ -24287,8 +32017,8 @@ win32 build fixed - builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ - src/zmq_listener_init.cpp | 1 + + builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ + src/zmq_listener_init.cpp | 1 + 2 files changed, 17 insertions(+) commit 2cef05d86976784f4bc1083cb0fa548e267ac132 @@ -24297,20 +32027,20 @@ reconnection mechanism added to tcp transport - src/i_inout.hpp | 15 +++++++++++++-- - src/io_object.hpp | 1 + - src/io_thread.hpp | 1 + - src/object.hpp | 5 +++-- - src/session.cpp | 23 +++++++++++++++++++++-- - src/session.hpp | 5 ++++- - src/zmq_connecter.cpp | 10 +++++++--- - src/zmq_connecter.hpp | 5 ++++- - src/zmq_connecter_init.cpp | 36 +++++++++++++++++++++--------------- - src/zmq_connecter_init.hpp | 11 +++++++---- - src/zmq_engine.cpp | 23 ++++++++++++++++++++--- - src/zmq_engine.hpp | 5 ++++- - src/zmq_listener_init.cpp | 22 ++++++++++++++++++++-- - src/zmq_listener_init.hpp | 5 ++++- + src/i_inout.hpp | 15 +++++++++++++-- + src/io_object.hpp | 1 + + src/io_thread.hpp | 1 + + src/object.hpp | 5 +++-- + src/session.cpp | 23 +++++++++++++++++++++-- + src/session.hpp | 5 ++++- + src/zmq_connecter.cpp | 10 +++++++--- + src/zmq_connecter.hpp | 5 ++++- + src/zmq_connecter_init.cpp | 36 +++++++++++++++++++++--------------- + src/zmq_connecter_init.hpp | 11 +++++++---- + src/zmq_engine.cpp | 23 ++++++++++++++++++++--- + src/zmq_engine.hpp | 5 ++++- + src/zmq_listener_init.cpp | 22 ++++++++++++++++++++-- + src/zmq_listener_init.hpp | 5 ++++- 14 files changed, 130 insertions(+), 37 deletions(-) commit 14b112301e62af5115ab870d97ae448c2e3deddb @@ -24319,7 +32049,7 @@ handle error during connecting by eventual reconnection - src/zmq_connecter.cpp | 6 ++++-- + src/zmq_connecter.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit e49115224a7957b0e5d49326bc02ae6af186eaf9 @@ -24328,28 +32058,28 @@ zmq_encoder/decoder are able to add/trim prefixes from messages; fair queueing and load balancing algorithms factorised into separate classes - src/Makefile.am | 4 ++ - src/downstream.cpp | 34 +++------------- - src/downstream.hpp | 10 ++--- - src/fq.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/fq.hpp | 64 +++++++++++++++++++++++++++++ - src/lb.cpp | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/lb.hpp | 63 +++++++++++++++++++++++++++++ - src/pgm_receiver.cpp | 2 +- - src/pgm_sender.cpp | 2 +- - src/sub.cpp | 50 ++++------------------- - src/sub.hpp | 21 +++------- - src/upstream.cpp | 58 ++++----------------------- - src/upstream.hpp | 14 ++----- - src/xrep.cpp | 17 ++++---- - src/xrep.hpp | 5 ++- - src/xreq.cpp | 28 ++++++------- - src/xreq.hpp | 8 +++- - src/zmq_decoder.cpp | 40 +++++++++++++++---- - src/zmq_decoder.hpp | 7 +++- - src/zmq_encoder.cpp | 21 ++++++++-- - src/zmq_encoder.hpp | 4 +- - src/zmq_engine.cpp | 4 +- + src/Makefile.am | 4 ++ + src/downstream.cpp | 34 +++------------- + src/downstream.hpp | 10 ++--- + src/fq.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++++++ + src/fq.hpp | 64 +++++++++++++++++++++++++++++ + src/lb.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/lb.hpp | 63 ++++++++++++++++++++++++++++ + src/pgm_receiver.cpp | 2 +- + src/pgm_sender.cpp | 2 +- + src/sub.cpp | 50 ++++------------------- + src/sub.hpp | 21 +++------- + src/upstream.cpp | 58 ++++---------------------- + src/upstream.hpp | 14 ++----- + src/xrep.cpp | 17 ++++---- + src/xrep.hpp | 5 ++- + src/xreq.cpp | 28 ++++++------- + src/xreq.hpp | 8 +++- + src/zmq_decoder.cpp | 40 ++++++++++++++---- + src/zmq_decoder.hpp | 7 +++- + src/zmq_encoder.cpp | 21 ++++++++-- + src/zmq_encoder.hpp | 4 +- + src/zmq_engine.cpp | 4 +- 22 files changed, 476 insertions(+), 197 deletions(-) commit bd792faa9d6c78c375dbc52c6d773e157335da36 @@ -24358,7 +32088,7 @@ ZMQ_SNDBUF and ZMQ_RCVBUF honoured in PGM transport - src/pgm_socket.cpp | 13 ++++++++++++- + src/pgm_socket.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) commit 68488215da8e03a74ca4da6b822e4cfa3b71d73a @@ -24367,10 +32097,10 @@ Man pages for XREQ/XREP/zmq_queue updated - man/Makefile.am | 2 +- - man/convert2pdf.sh | 2 ++ - man/man1/zmq_queue.1 | 11 +++++++++++ - man/man3/zmq_socket.3 | 37 +++++++++++++++++++++++++++++++++++-- + man/Makefile.am | 2 +- + man/convert2pdf.sh | 2 ++ + man/man1/zmq_queue.1 | 11 +++++++++++ + man/man3/zmq_socket.3 | 37 +++++++++++++++++++++++++++++++++++-- 4 files changed, 49 insertions(+), 3 deletions(-) commit 0637e06387ac0676e9595246eb60a6809664b01a @@ -24379,12 +32109,12 @@ zmq_streamer & zmq_queue are built under MSVC - builds/msvc/libzmq/libzmq.vcproj | 20 ++- - builds/msvc/msvc.sln | 18 +++ - builds/msvc/zmq_queue/zmq_queue.vcproj | 174 +++++++++++++++++++++++++++ - builds/msvc/zmq_streamer/zmq_streamer.vcproj | 174 +++++++++++++++++++++++++++ - src/xrep.cpp | 5 + - src/xreq.cpp | 5 + + builds/msvc/libzmq/libzmq.vcproj | 20 ++- + builds/msvc/msvc.sln | 18 +++ + builds/msvc/zmq_queue/zmq_queue.vcproj | 174 ++++++++++++++++++++++++++ + builds/msvc/zmq_streamer/zmq_streamer.vcproj | 174 ++++++++++++++++++++++++++ + src/xrep.cpp | 5 + + src/xreq.cpp | 5 + 6 files changed, 394 insertions(+), 2 deletions(-) commit fa6bf24d8030b0e54fd25b167064482e4cf08a36 @@ -24393,26 +32123,26 @@ XREP & XREQ socket types added; zmq_queue device added - bindings/c/zmq.h | 6 +- - bindings/cl/zeromq.lisp | 6 +- - bindings/java/org/zmq/Socket.java | 6 +- - bindings/python/pyzmq.cpp | 6 ++ - bindings/ruby/rbzmq.cpp | 2 + - configure.in | 15 +++- - devices/Makefile.am | 8 ++- - devices/zmq_forwarder/Makefile.am | 2 +- - devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- - devices/zmq_queue/Makefile.am | 9 +++ - devices/zmq_queue/zmq_queue.cpp | 122 ++++++++++++++++++++++++++++++++ - devices/zmq_streamer/Makefile.am | 2 +- - devices/zmq_streamer/zmq_streamer.cpp | 2 +- - src/Makefile.am | 4 ++ - src/app_thread.cpp | 8 +++ - src/pgm_sender.cpp | 4 -- - src/xrep.cpp | 95 +++++++++++++++++++++++++ - src/xrep.hpp | 57 +++++++++++++++ - src/xreq.cpp | 95 +++++++++++++++++++++++++ - src/xreq.hpp | 57 +++++++++++++++ + bindings/c/zmq.h | 6 +- + bindings/cl/zeromq.lisp | 6 +- + bindings/java/org/zmq/Socket.java | 6 +- + bindings/python/pyzmq.cpp | 6 ++ + bindings/ruby/rbzmq.cpp | 2 + + configure.in | 15 +++- + devices/Makefile.am | 8 +- + devices/zmq_forwarder/Makefile.am | 2 +- + devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- + devices/zmq_queue/Makefile.am | 9 +++ + devices/zmq_queue/zmq_queue.cpp | 122 +++++++++++++++++++++++++++++++ + devices/zmq_streamer/Makefile.am | 2 +- + devices/zmq_streamer/zmq_streamer.cpp | 2 +- + src/Makefile.am | 4 + + src/app_thread.cpp | 8 ++ + src/pgm_sender.cpp | 4 - + src/xrep.cpp | 95 ++++++++++++++++++++++++ + src/xrep.hpp | 57 +++++++++++++++ + src/xreq.cpp | 95 ++++++++++++++++++++++++ + src/xreq.hpp | 57 +++++++++++++++ 20 files changed, 490 insertions(+), 18 deletions(-) commit c43aded531014895973c283fdd82bb2e5e85c789 @@ -24421,11 +32151,11 @@ debug code removed from PGM engines - src/pgm_receiver.cpp | 21 ------------ - src/pgm_receiver.hpp | 10 +++--- - src/pgm_sender.cpp | 33 ++----------------- - src/pgm_socket.cpp | 92 +++++----------------------------------------------- - src/pgm_socket.hpp | 24 +++++--------- + src/pgm_receiver.cpp | 21 ------------ + src/pgm_receiver.hpp | 10 +++--- + src/pgm_sender.cpp | 33 ++---------------- + src/pgm_socket.cpp | 92 +++++--------------------------------------------- + src/pgm_socket.hpp | 24 +++++-------- 5 files changed, 24 insertions(+), 156 deletions(-) commit f4ac8d7a443bd1afb35634d1cccb79943cc316e0 @@ -24434,16 +32164,16 @@ OpenPGM v1 support removed - Makefile.am | 4 +- - configure.in | 134 ++------------------ - foreign/openpgm/libpgm-1.2.14.tar.bz2 | Bin 280029 -> 0 bytes - foreign/openpgm/lost_data_tsi.patch | 76 ------------ - src/Makefile.am | 59 --------- - src/pgm_receiver.cpp | 10 -- - src/pgm_sender.cpp | 18 --- - src/pgm_sender.hpp | 2 - - src/pgm_socket.cpp | 226 +--------------------------------- - src/pgm_socket.hpp | 16 --- + Makefile.am | 4 +- + configure.in | 134 ++----------------- + foreign/openpgm/libpgm-1.2.14.tar.bz2 | Bin 280029 -> 0 bytes + foreign/openpgm/lost_data_tsi.patch | 76 ----------- + src/Makefile.am | 59 --------- + src/pgm_receiver.cpp | 10 -- + src/pgm_sender.cpp | 18 --- + src/pgm_sender.hpp | 2 - + src/pgm_socket.cpp | 226 +-------------------------------- + src/pgm_socket.hpp | 16 --- 10 files changed, 18 insertions(+), 527 deletions(-) commit 73b765e4b497f6a505cbf88c524085fa0e58e59c @@ -24452,12 +32182,12 @@ PGM transport fixed - src/encoder.hpp | 26 ++++--- - src/pgm_receiver.cpp | 5 +- - src/pgm_sender.cpp | 6 +- - src/pgm_socket.cpp | 193 ++++++++++++++++++++------------------------------- - src/pgm_socket.hpp | 5 +- - src/zmq_engine.cpp | 4 +- + src/encoder.hpp | 26 ++++--- + src/pgm_receiver.cpp | 5 +- + src/pgm_sender.cpp | 6 +- + src/pgm_socket.cpp | 193 ++++++++++++++++++++------------------------------ + src/pgm_socket.hpp | 5 +- + src/zmq_engine.cpp | 4 +- 6 files changed, 105 insertions(+), 134 deletions(-) commit d5670f34baa0751a5b4567a28caea4e4fa208727 @@ -24466,14 +32196,14 @@ ZMQII-26: Use zero-copy for large messages (rx side) - src/decoder.hpp | 87 ++++++++++++++++++++++++++++++++++-------- - src/encoder.hpp | 107 +++++++++++++++++++++++++++++++--------------------- - src/zmq_decoder.cpp | 3 +- - src/zmq_decoder.hpp | 2 +- - src/zmq_encoder.cpp | 3 +- - src/zmq_encoder.hpp | 2 +- - src/zmq_engine.cpp | 72 +++++++++++++++-------------------- - src/zmq_engine.hpp | 13 ++----- + src/decoder.hpp | 87 +++++++++++++++++++++++++++++++++-------- + src/encoder.hpp | 107 ++++++++++++++++++++++++++++++--------------------- + src/zmq_decoder.cpp | 3 +- + src/zmq_decoder.hpp | 2 +- + src/zmq_encoder.cpp | 3 +- + src/zmq_encoder.hpp | 2 +- + src/zmq_engine.cpp | 72 +++++++++++++++------------------- + src/zmq_engine.hpp | 13 ++----- 8 files changed, 174 insertions(+), 115 deletions(-) commit 770178724f9493e99c832863031aef016f143e9f @@ -24482,9 +32212,9 @@ errors are never predicted in branch prediction (likely/unlikely macros added) - src/atomic_counter.hpp | 1 - - src/err.hpp | 91 ++++++++++++++++++++++++++++++-------------------- - src/likely.hpp | 32 ++++++++++++++++++ + src/atomic_counter.hpp | 1 - + src/err.hpp | 91 +++++++++++++++++++++++++++++------------------- + src/likely.hpp | 32 +++++++++++++++++ 3 files changed, 87 insertions(+), 37 deletions(-) commit d4fdc26efc6b21103e446f712a484af910a57f2f @@ -24493,8 +32223,8 @@ zmq_poll implemented on Win32 platform - bindings/c/zmq.h | 7 ++++ - src/zmq.cpp | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++---- + bindings/c/zmq.h | 7 +++ + src/zmq.cpp | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 125 insertions(+), 7 deletions(-) commit 986ab66b8f260614b2bd18f870ad98402c0f247a @@ -24503,7 +32233,7 @@ ZMQII-27: Allow setting SNDBUF and RCVBUF size from 0MQ API (Win32) - src/tcp_socket.cpp | 15 +++++++++++++++ + src/tcp_socket.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) commit 8d58643655b653c520fcdcc2a89b5067788f32fc @@ -24512,10 +32242,10 @@ MSVC build for chat example added - builds/msvc/display/display.vcproj | 176 +++++++++++++++++++++++++++++++++++++ - builds/msvc/msvc.sln | 18 ++++ - builds/msvc/prompt/prompt.vcproj | 176 +++++++++++++++++++++++++++++++++++++ - examples/chat/prompt.cpp | 5 ++ + builds/msvc/display/display.vcproj | 176 ++++++++++++++++++++++++++++++++++++ + builds/msvc/msvc.sln | 18 ++++ + builds/msvc/prompt/prompt.vcproj | 176 ++++++++++++++++++++++++++++++++++++ + examples/chat/prompt.cpp | 5 + 4 files changed, 375 insertions(+) commit 2e39f892c353851fe90261db0a0875abab50539f @@ -24524,20 +32254,20 @@ ZMQII-27: Allow setting SNDBUF and RCVBUF size from 0MQ API (POSIX) - bindings/c/zmq.h | 2 ++ - bindings/cl/zeromq.lisp | 2 ++ - bindings/java/org/zmq/Socket.java | 2 ++ - bindings/python/pyzmq.cpp | 6 ++++++ - bindings/ruby/rbzmq.cpp | 2 ++ - man/man3/zmq_setsockopt.3 | 24 ++++++++++++++++++++++++ - src/options.cpp | 18 ++++++++++++++++++ - src/options.hpp | 3 +++ - src/tcp_socket.cpp | 17 +++++++++++++++-- - src/tcp_socket.hpp | 3 ++- - src/zmq_connecter_init.cpp | 2 +- - src/zmq_engine.cpp | 8 +++++--- - src/zmq_engine.hpp | 5 ++++- - src/zmq_listener_init.cpp | 2 +- + bindings/c/zmq.h | 2 ++ + bindings/cl/zeromq.lisp | 2 ++ + bindings/java/org/zmq/Socket.java | 2 ++ + bindings/python/pyzmq.cpp | 6 ++++++ + bindings/ruby/rbzmq.cpp | 2 ++ + man/man3/zmq_setsockopt.3 | 24 ++++++++++++++++++++++++ + src/options.cpp | 18 ++++++++++++++++++ + src/options.hpp | 3 +++ + src/tcp_socket.cpp | 17 +++++++++++++++-- + src/tcp_socket.hpp | 3 ++- + src/zmq_connecter_init.cpp | 2 +- + src/zmq_engine.cpp | 8 +++++--- + src/zmq_engine.hpp | 5 ++++- + src/zmq_listener_init.cpp | 2 +- 14 files changed, 87 insertions(+), 9 deletions(-) commit 72dacc35702a14ab0bb5a2650dffbb3bbda63175 @@ -24546,7 +32276,7 @@ zero-copy on tx side optimised to minimise number of user/kernel space transitions - src/encoder.hpp | 14 ++++++++++---- + src/encoder.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) commit 1c1dfb50f88002ce7a024f2d8980b968d3aee1ae @@ -24555,7 +32285,7 @@ zmq_cpp(7) man page filled in - man/man7/zmq_cpp.7 | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- + man/man7/zmq_cpp.7 | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 2 deletions(-) commit cab5a4a1596e5019c7fd306ad49aac67209b467c @@ -24564,8 +32294,8 @@ minor documentation updates - examples/chat/README | 4 ++-- - src/encoder.hpp | 12 ++++++------ + examples/chat/README | 4 ++-- + src/encoder.hpp | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) commit c98e29fb6e017a667452cd0a50536da691600353 @@ -24574,7 +32304,7 @@ README added to chat example - examples/chat/README | 42 ++++++++++++++++++++++++++++++++++++++++++ + examples/chat/README | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) commit 902d4f2282f4ed59f942be6fa1013b20dd964536 @@ -24583,7 +32313,7 @@ minor fix of zero-copy on tx side - src/encoder.hpp | 6 ++---- + src/encoder.hpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit 9be877c68503c35f9f72c8b92bd11454e4fcad97 @@ -24592,9 +32322,9 @@ ZMQII-26: Use zero-copy for large messages - src/encoder.hpp | 28 +++++++++++++++++++++++----- - src/zmq_engine.cpp | 21 +++++++++++++-------- - src/zmq_engine.hpp | 12 ++++++++---- + src/encoder.hpp | 28 +++++++++++++++++++++++----- + src/zmq_engine.cpp | 21 +++++++++++++-------- + src/zmq_engine.hpp | 12 ++++++++---- 3 files changed, 44 insertions(+), 17 deletions(-) commit bfef2fcd0ba590169ad46ea45da9d36dca1b5b97 @@ -24603,10 +32333,10 @@ autotools build system builds chat example now - Makefile.am | 4 ++-- - configure.in | 25 ++++++++++++++++++------- - examples/Makefile.am | 7 +++++++ - examples/chat/Makefile.am | 11 +++++++++++ + Makefile.am | 4 ++-- + configure.in | 25 ++++++++++++++++++------- + examples/Makefile.am | 7 +++++++ + examples/chat/Makefile.am | 11 +++++++++++ 4 files changed, 38 insertions(+), 9 deletions(-) commit a08a72dd082e5e62f0d043c71ea7d9b6fb80b57e @@ -24615,9 +32345,9 @@ chat example added - examples/chat/display.cpp | 50 ++++++++++++++++++++++++++++++++++++++ - examples/chat/prompt.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++ - src/fd_signaler.cpp | 2 +- + examples/chat/display.cpp | 50 ++++++++++++++++++++++++++++++++++++ + examples/chat/prompt.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++ + src/fd_signaler.cpp | 2 +- 3 files changed, 113 insertions(+), 1 deletion(-) commit 82012667cca5249ba7aa16ac5880b86ac54f3e98 @@ -24626,7 +32356,7 @@ Deadlock on zmq_close - src/fd_signaler.cpp | 9 ++++++--- + src/fd_signaler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) commit 9f495942736bfc1c1ef5f0b23d5a1bdab56d3757 @@ -24635,9 +32365,9 @@ C & C++ header files clean-up - bindings/c/zmq.h | 257 ++++----------------------------------------------- - bindings/cpp/zmq.hpp | 62 ++++++------- - src/ypipe.hpp | 12 +-- + bindings/c/zmq.h | 257 ++++---------------------------------------------- + bindings/cpp/zmq.hpp | 62 ++++++------ + src/ypipe.hpp | 12 +-- 3 files changed, 53 insertions(+), 278 deletions(-) commit 356ce8fe917c1b3b645555bcd2ff0ff989c6829a @@ -24646,17 +32376,17 @@ man pages updated - man/man1/zmq_forwarder.1 | 2 +- - man/man1/zmq_streamer.1 | 2 +- - man/man7/zmq.7 | 145 ++++++++++++++++++++++++++++++++++++++++++++++- - man/man7/zmq_cl.7 | 2 +- - man/man7/zmq_cpp.7 | 3 +- - man/man7/zmq_inproc.7 | 2 +- - man/man7/zmq_pgm.7 | 2 +- - man/man7/zmq_python.7 | 2 +- - man/man7/zmq_ruby.7 | 2 +- - man/man7/zmq_tcp.7 | 2 +- - man/man7/zmq_udp.7 | 2 +- + man/man1/zmq_forwarder.1 | 2 +- + man/man1/zmq_streamer.1 | 2 +- + man/man7/zmq.7 | 145 +++++++++++++++++++++++++++++++++++++++++++++- + man/man7/zmq_cl.7 | 2 +- + man/man7/zmq_cpp.7 | 3 +- + man/man7/zmq_inproc.7 | 2 +- + man/man7/zmq_pgm.7 | 2 +- + man/man7/zmq_python.7 | 2 +- + man/man7/zmq_ruby.7 | 2 +- + man/man7/zmq_tcp.7 | 2 +- + man/man7/zmq_udp.7 | 2 +- 11 files changed, 153 insertions(+), 13 deletions(-) commit 3e051e874ad03299cc9a9693cf8f20d6e37af329 @@ -24665,7 +32395,7 @@ Vitaly Mayatskikh added to authors section - AUTHORS | 2 +- + AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 721e37a371713ddb20c4dfcca253fe01f71a4af7 @@ -24674,7 +32404,7 @@ platform.hpp.in removed from the codebase - src/platform.hpp.in | 234 ---------------------------------------------------- + src/platform.hpp.in | 234 --------------------------------------------------- 1 file changed, 234 deletions(-) commit 734aaa2dcbd130cfc5d8ef0bd31bd259117f6c0c @@ -24683,17 +32413,17 @@ placeholders for new man pages added - man/Makefile.am | 9 ++++++--- - man/convert2pdf.sh | 18 ++++++++++++++++++ - man/man1/zmq_streamer.1 | 11 +++++++++++ - man/man7/zmq_cl.7 | 9 +++++++++ - man/man7/zmq_cpp.7 | 9 +++++++++ - man/man7/zmq_inproc.7 | 9 +++++++++ - man/man7/zmq_pgm.7 | 9 +++++++++ - man/man7/zmq_python.7 | 9 +++++++++ - man/man7/zmq_ruby.7 | 9 +++++++++ - man/man7/zmq_tcp.7 | 9 +++++++++ - man/man7/zmq_udp.7 | 9 +++++++++ + man/Makefile.am | 9 ++++++--- + man/convert2pdf.sh | 18 ++++++++++++++++++ + man/man1/zmq_streamer.1 | 11 +++++++++++ + man/man7/zmq_cl.7 | 9 +++++++++ + man/man7/zmq_cpp.7 | 9 +++++++++ + man/man7/zmq_inproc.7 | 9 +++++++++ + man/man7/zmq_pgm.7 | 9 +++++++++ + man/man7/zmq_python.7 | 9 +++++++++ + man/man7/zmq_ruby.7 | 9 +++++++++ + man/man7/zmq_tcp.7 | 9 +++++++++ + man/man7/zmq_udp.7 | 9 +++++++++ 11 files changed, 107 insertions(+), 3 deletions(-) commit 6fcdc5fa69ea44d38e5505c23a6e9645efd35027 @@ -24702,23 +32432,23 @@ common lisp binding & perf tests added - bindings/Makefile.am | 8 +- - bindings/cl/Makefile.am | 9 ++ - bindings/cl/meta.lisp | 59 +++++++++++ - bindings/cl/package.lisp | 108 ++++++++++++++++++++ - bindings/cl/zeromq-api.lisp | 155 ++++++++++++++++++++++++++++ - bindings/cl/zeromq.asd | 38 +++++++ - bindings/cl/zeromq.lisp | 244 ++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 21 ++++ - perf/Makefile.am | 2 +- - perf/cl/Makefile.am | 2 + - perf/cl/lat-parms.lisp | 22 ++++ - perf/cl/local-lat-poll.lisp | 43 ++++++++ - perf/cl/local-lat.lisp | 52 ++++++++++ - perf/cl/local-thr.lisp | 54 ++++++++++ - perf/cl/remote-lat.lisp | 50 +++++++++ - perf/cl/remote-thr.lisp | 41 ++++++++ - perf/cl/thr-parms.lisp | 25 +++++ + bindings/Makefile.am | 8 +- + bindings/cl/Makefile.am | 9 ++ + bindings/cl/meta.lisp | 59 +++++++++++ + bindings/cl/package.lisp | 108 +++++++++++++++++++ + bindings/cl/zeromq-api.lisp | 155 +++++++++++++++++++++++++++ + bindings/cl/zeromq.asd | 38 +++++++ + bindings/cl/zeromq.lisp | 244 +++++++++++++++++++++++++++++++++++++++++++ + configure.in | 21 ++++ + perf/Makefile.am | 2 +- + perf/cl/Makefile.am | 2 + + perf/cl/lat-parms.lisp | 22 ++++ + perf/cl/local-lat-poll.lisp | 43 ++++++++ + perf/cl/local-lat.lisp | 52 +++++++++ + perf/cl/local-thr.lisp | 54 ++++++++++ + perf/cl/remote-lat.lisp | 50 +++++++++ + perf/cl/remote-thr.lisp | 41 ++++++++ + perf/cl/thr-parms.lisp | 25 +++++ 17 files changed, 930 insertions(+), 3 deletions(-) commit 7146ef85e96551ce6f7b80d014463f246d09c878 @@ -24727,18 +32457,18 @@ seqnum mechanism automated - src/dispatcher.cpp | 2 ++ - src/object.cpp | 27 ++++++++++++++++++++------- - src/object.hpp | 12 +++++++++--- - src/owned.cpp | 26 ++++++++------------------ - src/owned.hpp | 14 ++------------ - src/session.cpp | 5 ----- - src/socket_base.cpp | 12 ++++++------ - src/socket_base.hpp | 1 + - src/zmq_connecter.cpp | 1 - - src/zmq_connecter_init.cpp | 4 ++-- - src/zmq_listener.cpp | 2 -- - src/zmq_listener_init.cpp | 6 ++++-- + src/dispatcher.cpp | 2 ++ + src/object.cpp | 27 ++++++++++++++++++++------- + src/object.hpp | 12 +++++++++--- + src/owned.cpp | 26 ++++++++------------------ + src/owned.hpp | 14 ++------------ + src/session.cpp | 5 ----- + src/socket_base.cpp | 12 ++++++------ + src/socket_base.hpp | 1 + + src/zmq_connecter.cpp | 1 - + src/zmq_connecter_init.cpp | 4 ++-- + src/zmq_listener.cpp | 2 -- + src/zmq_listener_init.cpp | 6 ++++-- 12 files changed, 54 insertions(+), 58 deletions(-) commit cb84580bbced0b5d34ddcbac6e0aed5d0ad7cae6 @@ -24747,7 +32477,7 @@ harmless uninitialised memory read fixed - src/yqueue.hpp | 6 ++++-- + src/yqueue.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit 9bd309bda6522dfdd514dd0c4edae04322c83ed1 @@ -24756,12 +32486,12 @@ annoying optimisation in 'bind' command removed - src/command.hpp | 4 +--- - src/object.cpp | 11 ++++------- - src/object.hpp | 6 +++--- - src/session.cpp | 5 ++--- - src/socket_base.cpp | 13 +++---------- - src/socket_base.hpp | 3 +-- + src/command.hpp | 4 +--- + src/object.cpp | 11 ++++------- + src/object.hpp | 6 +++--- + src/session.cpp | 5 ++--- + src/socket_base.cpp | 13 +++---------- + src/socket_base.hpp | 3 +-- 6 files changed, 14 insertions(+), 28 deletions(-) commit c04583ff6ca3c27de5628a61b6b6ce59fd13c9d9 @@ -24770,7 +32500,7 @@ minor code beautification - src/pipe.cpp | 10 +++++----- + src/pipe.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit 0d704fceee5e1bd0fe9438fa380452b69cd29114 @@ -24779,8 +32509,8 @@ MSVC warnings fixed - src/pipe.cpp | 32 ++++++++++++++++++++++++-------- - src/pipe.hpp | 6 ++++-- + src/pipe.cpp | 32 ++++++++++++++++++++++++-------- + src/pipe.hpp | 6 ++++-- 2 files changed, 28 insertions(+), 10 deletions(-) commit 9cff475af849897f669049fd7748f875fa1cd6c3 @@ -24789,11 +32519,10 @@ added libpgm-2.0.17rc2 into the dist package - Makefile.am | 4 ++-- - configure.in | 21 +++++++++++++++------ - foreign/openpgm/libpgm-2.0.17rc2.tar.bz2 | Bin 0 -> 315051 bytes - man/convert2pdf.sh | 0 - 4 files changed, 17 insertions(+), 8 deletions(-) + Makefile.am | 4 ++-- + configure.in | 21 +++++++++++++++------ + foreign/openpgm/libpgm-2.0.17rc2.tar.bz2 | Bin 0 -> 315051 bytes + 3 files changed, 17 insertions(+), 8 deletions(-) commit 82242f6a9e06d855ff2ac5616196a97868838a6c Author: malosek @@ -24801,7 +32530,7 @@ minor formatting fix in zmq_init.3 man page - man/man3/zmq_init.3 | 3 ++- + man/man3/zmq_init.3 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit c637bf292d0dc97be5c94c5c96a033c2d665576c @@ -24817,8 +32546,8 @@ minor tweaks in pgm code - src/pgm_sender.cpp | 4 ++++ - src/pgm_socket.cpp | 2 +- + src/pgm_sender.cpp | 4 ++++ + src/pgm_socket.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) commit fa1641afc593be5926e558381861112b584e861a @@ -24827,8 +32556,8 @@ msvc build fixed - bindings/c/zmq.h | 3 +++ - builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ + bindings/c/zmq.h | 3 +++ + builds/msvc/libzmq/libzmq.vcproj | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) commit 19ce7c0e77f703ed2ec3b54685ddf4a6f2329ffe @@ -24837,8 +32566,8 @@ zmq_msg_data.3 referenced twice in Makefile.am - fixed - AUTHORS | 1 + - man/Makefile.am | 4 ++-- + AUTHORS | 1 + + man/Makefile.am | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) commit 8d85638f77ec0aa886170ba6bb49763ef165393b @@ -24847,12 +32576,12 @@ memory leak in message encoder fixed - AUTHORS | 1 + - perf/c/local_thr.c | 3 +++ - src/session.cpp | 4 ---- - src/zmq_decoder.cpp | 8 +++++++- - src/zmq_encoder.cpp | 7 ++++++- - src/zmq_listener_init.cpp | 1 - + AUTHORS | 1 + + perf/c/local_thr.c | 3 +++ + src/session.cpp | 4 ---- + src/zmq_decoder.cpp | 8 +++++++- + src/zmq_encoder.cpp | 7 ++++++- + src/zmq_listener_init.cpp | 1 - 6 files changed, 17 insertions(+), 7 deletions(-) commit 92aa9e94e21b652839faa3dda27c67571bad315d @@ -24861,7 +32590,7 @@ experimental code to use futexes instead of mutexes added to simple_semapthore_t - src/simple_semaphore.hpp | 60 +++++++++++++++++++++++++++++++++++++++++++++--- + src/simple_semaphore.hpp | 60 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) commit c98fd6bc3f2a49d7cb0b820a07354168c98f60b7 @@ -24870,28 +32599,28 @@ ZMQII-25: Implement streamed request/reply - bindings/c/zmq.h | 6 ++ - bindings/java/org/zmq/Socket.java | 2 + - bindings/python/pyzmq.cpp | 6 ++ - bindings/ruby/rbzmq.cpp | 2 + - configure.in | 15 +++- - devices/Makefile.am | 8 +- - devices/zmq_forwarder/zmq_forwarder.cpp | 7 +- - devices/zmq_streamer/Makefile.am | 9 ++ - devices/zmq_streamer/zmq_streamer.cpp | 122 +++++++++++++++++++++++++++ - man/man3/zmq_socket.3 | 9 ++ - src/Makefile.am | 4 + - src/app_thread.cpp | 14 +++- - src/downstream.cpp | 131 +++++++++++++++++++++++++++++ - src/downstream.hpp | 64 ++++++++++++++ - src/p2p.hpp | 4 +- - src/pub.hpp | 4 +- - src/rep.cpp | 2 +- - src/rep.hpp | 4 +- - src/req.hpp | 4 +- - src/sub.hpp | 4 +- - src/upstream.cpp | 143 ++++++++++++++++++++++++++++++++ - src/upstream.hpp | 69 +++++++++++++++ + bindings/c/zmq.h | 6 ++ + bindings/java/org/zmq/Socket.java | 2 + + bindings/python/pyzmq.cpp | 6 ++ + bindings/ruby/rbzmq.cpp | 2 + + configure.in | 15 +++- + devices/Makefile.am | 8 +- + devices/zmq_forwarder/zmq_forwarder.cpp | 7 +- + devices/zmq_streamer/Makefile.am | 9 ++ + devices/zmq_streamer/zmq_streamer.cpp | 122 ++++++++++++++++++++++++++ + man/man3/zmq_socket.3 | 9 ++ + src/Makefile.am | 4 + + src/app_thread.cpp | 14 ++- + src/downstream.cpp | 131 ++++++++++++++++++++++++++++ + src/downstream.hpp | 64 ++++++++++++++ + src/p2p.hpp | 4 +- + src/pub.hpp | 4 +- + src/rep.cpp | 2 +- + src/rep.hpp | 4 +- + src/req.hpp | 4 +- + src/sub.hpp | 4 +- + src/upstream.cpp | 143 +++++++++++++++++++++++++++++++ + src/upstream.hpp | 69 +++++++++++++++ 22 files changed, 612 insertions(+), 21 deletions(-) commit 5cd98bc575517ea72c435770a5313711484f7d34 @@ -24900,15 +32629,15 @@ the rest of man3 man pages filled in - man/man3/zmq_msg_close.3 | 20 +++++++++++++++++ - man/man3/zmq_msg_copy.3 | 31 ++++++++++++++++++++++++++ - man/man3/zmq_msg_data.3 | 15 +++++++++++++ - man/man3/zmq_msg_init.3 | 21 ++++++++++++++++++ - man/man3/zmq_msg_init_data.3 | 33 +++++++++++++++++++++++++++ - man/man3/zmq_msg_init_size.3 | 32 ++++++++++++++++++++++++++ - man/man3/zmq_msg_move.3 | 26 ++++++++++++++++++++++ - man/man3/zmq_msg_size.3 | 18 +++++++++++++++ - man/man3/zmq_poll.3 | 53 ++++++++++++++++++++++++++++++++++++++++++++ + man/man3/zmq_msg_close.3 | 20 ++++++++++++++++ + man/man3/zmq_msg_copy.3 | 31 ++++++++++++++++++++++++ + man/man3/zmq_msg_data.3 | 15 ++++++++++++ + man/man3/zmq_msg_init.3 | 21 +++++++++++++++++ + man/man3/zmq_msg_init_data.3 | 33 ++++++++++++++++++++++++++ + man/man3/zmq_msg_init_size.3 | 32 +++++++++++++++++++++++++ + man/man3/zmq_msg_move.3 | 26 +++++++++++++++++++++ + man/man3/zmq_msg_size.3 | 18 ++++++++++++++ + man/man3/zmq_poll.3 | 53 ++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 249 insertions(+) commit e90ada0d044636201c57786307a49a52f9cf7643 @@ -24917,17 +32646,17 @@ more man pages filled in - bindings/c/zmq.h | 2 +- - man/man3/zmq_bind.3 | 36 ++++++++++++++++ - man/man3/zmq_close.3 | 15 +++++++ - man/man3/zmq_connect.3 | 37 ++++++++++++++++- - man/man3/zmq_flush.3 | 25 +++++++++++ - man/man3/zmq_init.3 | 3 +- - man/man3/zmq_recv.3 | 40 ++++++++++++++++++ - man/man3/zmq_send.3 | 52 +++++++++++++++++++++++ - man/man3/zmq_setsockopt.3 | 103 ++++++++++++++++++++++++++++++++++++++++++++++ - man/man3/zmq_socket.3 | 56 +++++++++++++++++++++++++ - man/man3/zmq_term.3 | 2 + + bindings/c/zmq.h | 2 +- + man/man3/zmq_bind.3 | 36 ++++++++++++++++ + man/man3/zmq_close.3 | 15 +++++++ + man/man3/zmq_connect.3 | 37 +++++++++++++++- + man/man3/zmq_flush.3 | 25 +++++++++++ + man/man3/zmq_init.3 | 3 +- + man/man3/zmq_recv.3 | 40 ++++++++++++++++++ + man/man3/zmq_send.3 | 52 +++++++++++++++++++++++ + man/man3/zmq_setsockopt.3 | 103 +++++++++++++++++++++++++++++++++++++++++++++ + man/man3/zmq_socket.3 | 56 ++++++++++++++++++++++++ + man/man3/zmq_term.3 | 2 + 11 files changed, 368 insertions(+), 3 deletions(-) commit 6602cce9af93539df8f1c43235e7e7130a3df60d @@ -24936,11 +32665,11 @@ zmq_init, zmq_term & zmq_strerror man pages added - man/Makefile.am | 2 +- - man/convert2pdf.sh | 2 ++ - man/man3/zmq_init.3 | 26 ++++++++++++++++++++++++++ - man/man3/zmq_strerror.3 | 27 +++++++++++++++++++++++++++ - man/man3/zmq_term.3 | 11 +++++++++++ + man/Makefile.am | 2 +- + man/convert2pdf.sh | 2 ++ + man/man3/zmq_init.3 | 26 ++++++++++++++++++++++++++ + man/man3/zmq_strerror.3 | 27 +++++++++++++++++++++++++++ + man/man3/zmq_term.3 | 11 +++++++++++ 5 files changed, 67 insertions(+), 1 deletion(-) commit ed5563f75285197aa0cdbe8a0dc6f80c5bb1f89c @@ -24949,16 +32678,16 @@ man pages (dummy) added for zmq_msg_* functions - man/Makefile.am | 5 ++++- - man/convert2pdf.sh | 16 ++++++++++++++++ - man/man3/zmq_msg_close.3 | 12 ++++++++++++ - man/man3/zmq_msg_copy.3 | 12 ++++++++++++ - man/man3/zmq_msg_data.3 | 12 ++++++++++++ - man/man3/zmq_msg_init.3 | 12 ++++++++++++ - man/man3/zmq_msg_init_data.3 | 15 +++++++++++++++ - man/man3/zmq_msg_init_size.3 | 12 ++++++++++++ - man/man3/zmq_msg_move.3 | 12 ++++++++++++ - man/man3/zmq_msg_size.3 | 12 ++++++++++++ + man/Makefile.am | 5 ++++- + man/convert2pdf.sh | 16 ++++++++++++++++ + man/man3/zmq_msg_close.3 | 12 ++++++++++++ + man/man3/zmq_msg_copy.3 | 12 ++++++++++++ + man/man3/zmq_msg_data.3 | 12 ++++++++++++ + man/man3/zmq_msg_init.3 | 12 ++++++++++++ + man/man3/zmq_msg_init_data.3 | 15 +++++++++++++++ + man/man3/zmq_msg_init_size.3 | 12 ++++++++++++ + man/man3/zmq_msg_move.3 | 12 ++++++++++++ + man/man3/zmq_msg_size.3 | 12 ++++++++++++ 10 files changed, 119 insertions(+), 1 deletion(-) commit 55b64a02e7f3b1ce9e512240a9f9a337ead3b54c @@ -24967,23 +32696,23 @@ man pages - initial (dummy) version - Makefile.am | 8 ++++++-- - configure.in | 8 +++++++- - man/Makefile.am | 16 ++++++++++++++++ - man/convert2pdf.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++++ - man/man1/zmq_forwarder.1 | 11 +++++++++++ - man/man3/zmq_bind.3 | 12 ++++++++++++ - man/man3/zmq_close.3 | 12 ++++++++++++ - man/man3/zmq_connect.3 | 12 ++++++++++++ - man/man3/zmq_flush.3 | 12 ++++++++++++ - man/man3/zmq_init.3 | 12 ++++++++++++ - man/man3/zmq_poll.3 | 12 ++++++++++++ - man/man3/zmq_recv.3 | 12 ++++++++++++ - man/man3/zmq_send.3 | 12 ++++++++++++ - man/man3/zmq_setsockopt.3 | 12 ++++++++++++ - man/man3/zmq_socket.3 | 12 ++++++++++++ - man/man3/zmq_term.3 | 12 ++++++++++++ - man/man7/zmq.7 | 9 +++++++++ + Makefile.am | 8 ++++++-- + configure.in | 8 +++++++- + man/Makefile.am | 16 +++++++++++++++ + man/convert2pdf.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++ + man/man1/zmq_forwarder.1 | 11 +++++++++++ + man/man3/zmq_bind.3 | 12 ++++++++++++ + man/man3/zmq_close.3 | 12 ++++++++++++ + man/man3/zmq_connect.3 | 12 ++++++++++++ + man/man3/zmq_flush.3 | 12 ++++++++++++ + man/man3/zmq_init.3 | 12 ++++++++++++ + man/man3/zmq_poll.3 | 12 ++++++++++++ + man/man3/zmq_recv.3 | 12 ++++++++++++ + man/man3/zmq_send.3 | 12 ++++++++++++ + man/man3/zmq_setsockopt.3 | 12 ++++++++++++ + man/man3/zmq_socket.3 | 12 ++++++++++++ + man/man3/zmq_term.3 | 12 ++++++++++++ + man/man7/zmq.7 | 9 +++++++++ 17 files changed, 229 insertions(+), 3 deletions(-) commit c41daca3da6ffd033f93c3e24898414567f71eb3 @@ -24992,12 +32721,12 @@ race condition in inproc transport shutdown fixed - src/command.hpp | 3 +++ - src/object.cpp | 9 ++++++--- - src/object.hpp | 6 +++--- - src/session.cpp | 4 +++- - src/socket_base.cpp | 16 ++++++++++++---- - src/socket_base.hpp | 3 ++- + src/command.hpp | 3 +++ + src/object.cpp | 9 ++++++--- + src/object.hpp | 6 +++--- + src/session.cpp | 4 +++- + src/socket_base.cpp | 16 ++++++++++++---- + src/socket_base.hpp | 3 ++- 6 files changed, 29 insertions(+), 12 deletions(-) commit 64634605b3ccb90d582cfdf380535c89bf900a0e @@ -25006,12 +32735,12 @@ obsolete parameter removed from 'bind' command - src/command.hpp | 1 - - src/object.cpp | 9 +++------ - src/object.hpp | 6 +++--- - src/session.cpp | 2 +- - src/socket_base.cpp | 6 ++---- - src/socket_base.hpp | 3 +-- + src/command.hpp | 1 - + src/object.cpp | 9 +++------ + src/object.hpp | 6 +++--- + src/session.cpp | 2 +- + src/socket_base.cpp | 6 ++---- + src/socket_base.hpp | 3 +-- 6 files changed, 10 insertions(+), 17 deletions(-) commit 0e9ab2e8a3f5bc22f2c331c14236a2918a5512a8 @@ -25020,13 +32749,13 @@ inproc transport - initial commit - src/dispatcher.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++++++ - src/dispatcher.hpp | 12 +++++++++++ - src/object.cpp | 15 +++++++++++++ - src/object.hpp | 6 ++++++ - src/socket_base.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++-- - src/socket_base.hpp | 12 +++++++++++ - src/zmq.cpp | 6 ++++-- + src/dispatcher.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++ + src/dispatcher.hpp | 12 ++++++++++ + src/object.cpp | 15 +++++++++++++ + src/object.hpp | 6 +++++ + src/socket_base.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++-- + src/socket_base.hpp | 12 ++++++++++ + src/zmq.cpp | 6 +++-- 7 files changed, 165 insertions(+), 4 deletions(-) commit 14f2fecdcd9732fe741c211138a4ba327816a937 @@ -25035,7 +32764,7 @@ ZMQII-24: SEGFAULT when anonymous session disconnects - src/pipe.cpp | 6 +++++- + src/pipe.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) commit c2e0661b0afb2f50f47e0275fa6603947f26d240 @@ -25044,8 +32773,8 @@ uninitialised variable in devpoll_t and kqueue_t - src/devpoll.cpp | 3 ++- - src/kqueue.cpp | 3 ++- + src/devpoll.cpp | 3 ++- + src/kqueue.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) commit 26ca5ed8c62f8a88a32106a5c9e003712f4ca655 @@ -25054,7 +32783,7 @@ Fixing concurrency issue in rep.cpp resulting in broken connections with multiple requesters under heavy load. - src/rep.cpp | 9 +++++---- + src/rep.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) commit 84585a9561b5e3bd39baa8d49b889455362334ea @@ -25063,7 +32792,7 @@ pgm_transport_recvmsgv in process_upstream returns PGM_IO_STATUS_RATE_LIMITED on busy sender - src/pgm_socket.cpp | 5 +++-- + src/pgm_socket.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) commit c2cd7977f7a82e978d77b2d4d8e23d78f71e809c @@ -25072,7 +32801,7 @@ update pgm_socket to recent openpgm2 - src/pgm_socket.cpp | 19 +++++++++---------- + src/pgm_socket.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) commit 08b02a43ae21e833a04d274fb20ef3bbc73c0d09 @@ -25081,8 +32810,8 @@ fixed get_sender_fds and get_receiver_fds for openpgm2 - src/pgm_socket.cpp | 83 ++++++++++++++++++++++++++++++++---------------------- - src/pgm_socket.hpp | 2 +- + src/pgm_socket.cpp | 83 +++++++++++++++++++++++++++++++--------------------- + src/pgm_socket.hpp | 2 +- 2 files changed, 51 insertions(+), 34 deletions(-) commit 7d672d3ab8c74371b58b293f807db74760b18155 @@ -25091,9 +32820,9 @@ minor fixes for MSVC++ 2005 build - src/app_thread.cpp | 3 +++ - src/fd.hpp | 2 +- - src/windows.hpp | 5 +++++ + src/app_thread.cpp | 3 +++ + src/fd.hpp | 2 +- + src/windows.hpp | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) commit 7cbdcc954213b715ce83316538403bbce1fac99f @@ -25102,7 +32831,7 @@ ZMQII-21: Problem with fd_signaler_t::poll on socket close - src/fd_signaler.cpp | 31 ++++++++++++++++++++++++------- + src/fd_signaler.cpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) commit 55acf365ea76b908388ca9726232bde90242cdcb @@ -25111,7 +32840,7 @@ releasing python global lock when doing blocking operations - bindings/python/pyzmq.cpp | 5 +++++ + bindings/python/pyzmq.cpp | 5 +++++ 1 file changed, 5 insertions(+) commit 8b08047cb08dd6ba7ae142007f82607183574ef6 @@ -25120,9 +32849,9 @@ added --with-pgm2-examples configure option - configure.in | 17 +++++++++ - perf/c/Makefile.am | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++- - src/Makefile.am | 4 ++- + configure.in | 17 +++++++++ + perf/c/Makefile.am | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++- + src/Makefile.am | 4 +- 3 files changed, 123 insertions(+), 2 deletions(-) commit 71e455bfe5dd1df1220e9280e536be56238d2178 @@ -25131,7 +32860,7 @@ ZMQII-19: add --disable-eventfd configure option - configure.in | 27 +++++++++++++++++++++++++-- + configure.in | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) commit 50c7d12be6c10c294143491b479c50349a3c84a3 @@ -25140,7 +32869,7 @@ added HAVE_LIBWS2_32 into platform.hpp.in - src/platform.hpp.in | 3 +++ + src/platform.hpp.in | 3 +++ 1 file changed, 3 insertions(+) commit 0ce02058ebc35184b91399eee35d44ef01cd9e38 @@ -25149,8 +32878,8 @@ updated 0MQ to recent OpenPGM2 rev.562 - src/Makefile.am | 1 + - src/pgm_socket.cpp | 2 +- + src/Makefile.am | 1 + + src/pgm_socket.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) commit ea2f6558fd2a759b78364ded493c598f5ca5a2d3 @@ -25159,7 +32888,7 @@ mingw fixed winsock linking issue - configure.in | 3 ++- + configure.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) commit 7afc61ae7c4859fa1a6273e1964d378c00142746 @@ -25168,15 +32897,15 @@ 0MQ compilable on winXP mingw with --with-pgm2 option - configure.in | 12 +++++++++--- - src/Makefile.am | 53 +++++++++++++++++++++++++++++++++------------------- - src/pgm_receiver.cpp | 5 +++++ - src/pgm_receiver.hpp | 8 +++++++- - src/pgm_sender.cpp | 6 ++++-- - src/pgm_sender.hpp | 4 ++++ - src/pgm_socket.cpp | 23 +++++++++++++++-------- - src/pgm_socket.hpp | 13 +++++-------- - src/platform.hpp.in | 3 +++ + configure.in | 12 +++++++++--- + src/Makefile.am | 53 ++++++++++++++++++++++++++++++++------------------ + src/pgm_receiver.cpp | 5 +++++ + src/pgm_receiver.hpp | 8 +++++++- + src/pgm_sender.cpp | 6 ++++-- + src/pgm_sender.hpp | 4 ++++ + src/pgm_socket.cpp | 23 ++++++++++++++-------- + src/pgm_socket.hpp | 13 +++++-------- + src/platform.hpp.in | 3 +++ 9 files changed, 86 insertions(+), 41 deletions(-) commit ac83175ef0f0084f281a416785679f8b56f551b9 @@ -25185,8 +32914,8 @@ updated to recent PGM2 changes - foreign/openpgm/create_custom_gsi_1.patch | 2 +- - src/pgm_socket.cpp | 26 +++++++++++++++++--------- + foreign/openpgm/create_custom_gsi_1.patch | 2 +- + src/pgm_socket.cpp | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) commit 3daeff2786ce1d6d8e58f0ad15e693f2c48c94f9 @@ -25195,11 +32924,11 @@ mingw port - configure.in | 13 ++++++++----- - src/fd.hpp | 4 ++-- - src/platform.hpp.in | 3 +++ - src/uuid.hpp | 7 ++++++- - src/windows.hpp | 6 ++++++ + configure.in | 13 ++++++++----- + src/fd.hpp | 4 ++-- + src/platform.hpp.in | 3 +++ + src/uuid.hpp | 7 ++++++- + src/windows.hpp | 6 ++++++ 5 files changed, 25 insertions(+), 8 deletions(-) commit de2e439a52e93a4cb17a19e9ef9cadfd5ebf2cea @@ -25208,7 +32937,7 @@ 1 minor change in xmlParser.cpp - foreign/xmlParser/xmlParser.cpp | 2 +- + foreign/xmlParser/xmlParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 14dc1f45cd1a328415db09ef1e06def6179dae00 @@ -25217,9 +32946,9 @@ build system tuning - fixed make dist - Makefile.am | 7 ++++--- - configure.in | 15 +++++++++++---- - src/Makefile.am | 11 ++++++----- + Makefile.am | 7 ++++--- + configure.in | 15 +++++++++++---- + src/Makefile.am | 11 ++++++----- 3 files changed, 21 insertions(+), 12 deletions(-) commit b0c97a5f8b88fca73338c1c173b446515e2ed366 @@ -25228,8 +32957,8 @@ build system tuning - Makefile.am | 1 + - src/Makefile.am | 4 ++-- + Makefile.am | 1 + + src/Makefile.am | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) commit d57ee0984ac3f8712063a7f83d7200be25ca5513 @@ -25245,9 +32974,9 @@ create_custom_gsi.patch renamed to create_custom_gsi_1.patch - configure.in | 4 +-- - foreign/openpgm/create_custom_gsi.patch | 43 ------------------------------- - foreign/openpgm/create_custom_gsi_1.patch | 43 +++++++++++++++++++++++++++++++ + configure.in | 4 +-- + foreign/openpgm/create_custom_gsi.patch | 43 ----------------------------- + foreign/openpgm/create_custom_gsi_1.patch | 43 +++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 45 deletions(-) commit e1b9fcd4b185cdcfd460a5d2ecb29d085856bb20 @@ -25256,12 +32985,12 @@ moved pgm_create_custom_gsi into PGM1 and drop ssl dependency - configure.in | 18 ++++++-------- - foreign/openpgm/create_custom_gsi.patch | 43 +++++++++++++++++++++++++++++++++ - foreign/openpgm/lost_data_tsi.patch | 4 +-- - src/pgm_socket.cpp | 18 +------------- - src/pgm_socket.hpp | 3 --- - src/platform.hpp.in | 6 ----- + configure.in | 18 ++++++------- + foreign/openpgm/create_custom_gsi.patch | 43 +++++++++++++++++++++++++++++++ + foreign/openpgm/lost_data_tsi.patch | 4 +-- + src/pgm_socket.cpp | 18 +------------ + src/pgm_socket.hpp | 3 --- + src/platform.hpp.in | 6 ----- 6 files changed, 54 insertions(+), 38 deletions(-) commit 4efe2366d7394e8969fc9aa64c50be6842d8455f @@ -25270,23 +32999,23 @@ poller is a concept now rather than virtualised class - src/Makefile.am | 2 +- - src/devpoll.cpp | 41 ++++++++++++--------------- - src/devpoll.hpp | 13 +++++---- - src/epoll.cpp | 16 +++++------ - src/epoll.hpp | 14 +++++----- - src/i_poller.hpp | 84 ------------------------------------------------------- - src/io_object.cpp | 2 +- - src/io_object.hpp | 6 ++-- - src/io_thread.cpp | 41 ++------------------------- - src/io_thread.hpp | 8 +++--- - src/kqueue.cpp | 17 ++++++----- - src/kqueue.hpp | 13 +++++---- - src/poll.cpp | 18 ++++++------ - src/poll.hpp | 13 +++++---- - src/poller.hpp | 68 ++++++++++++++++++++++++++++++++++++++++++++ - src/select.cpp | 33 ++++++++++------------ - src/select.hpp | 13 +++++---- + src/Makefile.am | 2 +- + src/devpoll.cpp | 41 ++++++++++++-------------- + src/devpoll.hpp | 13 +++++---- + src/epoll.cpp | 16 +++++----- + src/epoll.hpp | 14 ++++----- + src/i_poller.hpp | 84 ----------------------------------------------------- + src/io_object.cpp | 2 +- + src/io_object.hpp | 6 ++-- + src/io_thread.cpp | 41 ++------------------------ + src/io_thread.hpp | 8 ++--- + src/kqueue.cpp | 17 +++++------ + src/kqueue.hpp | 13 +++++---- + src/poll.cpp | 18 +++++------- + src/poll.hpp | 13 +++++---- + src/poller.hpp | 68 +++++++++++++++++++++++++++++++++++++++++++ + src/select.cpp | 33 +++++++++------------ + src/select.hpp | 13 +++++---- 17 files changed, 170 insertions(+), 232 deletions(-) commit 4a3b4dadead8fe2af65443d0be4cc8462b9aa597 @@ -25295,8 +33024,8 @@ ZMQII-9: Check and implement speculative reads & writes - src/ypollset.cpp | 1 - - src/zmq_engine.cpp | 6 ++++++ + src/ypollset.cpp | 1 - + src/zmq_engine.cpp | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) commit 49a9ef5fcb661827ee174415b4608e609bd0a65b @@ -25305,12 +33034,12 @@ windows error handling improved - bindings/c/zmq.h | 12 ++++++++++++ - src/err.cpp | 43 +++++++++++++++++++++++++++++++++++++++++-- - src/err.hpp | 1 + - src/tcp_connecter.cpp | 10 +++++----- - src/tcp_listener.cpp | 17 ++++++++++++----- - src/zmq.cpp | 8 ++++++++ + bindings/c/zmq.h | 12 ++++++++++++ + src/err.cpp | 43 +++++++++++++++++++++++++++++++++++++++++-- + src/err.hpp | 1 + + src/tcp_connecter.cpp | 10 +++++----- + src/tcp_listener.cpp | 17 ++++++++++++----- + src/zmq.cpp | 8 ++++++++ 6 files changed, 79 insertions(+), 12 deletions(-) commit cc631c4c6649b0d67114db13386a949426e35dbf @@ -25319,25 +33048,25 @@ ZMQII-18: Implement I/O multiplexing (first approximation) - bindings/c/zmq.h | 33 +++++++++++++++ - bindings/cpp/zmq.hpp | 5 +++ - src/fd_signaler.hpp | 2 - - src/i_signaler.hpp | 6 +++ - src/p2p.cpp | 11 +++++ - src/p2p.hpp | 2 + - src/pub.cpp | 11 +++++ - src/pub.hpp | 2 + - src/rep.cpp | 17 ++++++++ - src/rep.hpp | 2 + - src/req.cpp | 13 ++++++ - src/req.hpp | 2 + - src/socket_base.cpp | 15 +++++++ - src/socket_base.hpp | 12 ++++++ - src/sub.cpp | 13 ++++++ - src/sub.hpp | 2 + - src/ypollset.cpp | 6 +++ - src/ypollset.hpp | 1 + - src/zmq.cpp | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++- + bindings/c/zmq.h | 33 ++++++++++++++ + bindings/cpp/zmq.hpp | 5 +++ + src/fd_signaler.hpp | 2 - + src/i_signaler.hpp | 6 +++ + src/p2p.cpp | 11 +++++ + src/p2p.hpp | 2 + + src/pub.cpp | 11 +++++ + src/pub.hpp | 2 + + src/rep.cpp | 17 ++++++++ + src/rep.hpp | 2 + + src/req.cpp | 13 ++++++ + src/req.hpp | 2 + + src/socket_base.cpp | 15 +++++++ + src/socket_base.hpp | 12 ++++++ + src/sub.cpp | 13 ++++++ + src/sub.hpp | 2 + + src/ypollset.cpp | 6 +++ + src/ypollset.hpp | 1 + + src/zmq.cpp | 117 +++++++++++++++++++++++++++++++++++++++++++++++++- 19 files changed, 269 insertions(+), 3 deletions(-) commit f2ff2c6e5c4e244dea28e1ac6ec3f886b7ebc356 @@ -25346,9 +33075,9 @@ checking for available messages added to ypipe/pipe - src/pipe.cpp | 11 +++++++++++ - src/pipe.hpp | 3 +++ - src/ypipe.hpp | 24 ++++++++++++++++-------- + src/pipe.cpp | 11 +++++++++++ + src/pipe.hpp | 3 +++ + src/ypipe.hpp | 24 ++++++++++++++++-------- 3 files changed, 30 insertions(+), 8 deletions(-) commit 84d854a088d27b642355d4e835a2d93e405452ae @@ -25357,7 +33086,7 @@ documentation error in zmq.h fixed - bindings/c/zmq.h | 4 ++-- + bindings/c/zmq.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 64e68e748607473befbcf2d96590d45dc7bc98db @@ -25366,8 +33095,8 @@ detecting data loss for PGM2 receiver - src/pgm_receiver.cpp | 10 ++++++++++ - src/pgm_socket.cpp | 40 ++++++++++++++++++++++++++++++++++------ + src/pgm_receiver.cpp | 10 ++++++++++ + src/pgm_socket.cpp | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 6 deletions(-) commit 39d915ded8ccb612ae1f9aaefcd93f349f4c8f4c @@ -25376,11 +33105,11 @@ PGM2 sender - src/pgm_receiver.cpp | 2 +- - src/pgm_sender.cpp | 26 ++++++++++++++-- - src/pgm_sender.hpp | 3 ++ - src/pgm_socket.cpp | 85 +++++++++++++++++++++++++++++++++++++++++----------- - src/pgm_socket.hpp | 8 +++-- + src/pgm_receiver.cpp | 2 +- + src/pgm_sender.cpp | 26 +++++++++++++-- + src/pgm_sender.hpp | 3 ++ + src/pgm_socket.cpp | 85 +++++++++++++++++++++++++++++++++++++++----------- + src/pgm_socket.hpp | 8 +++-- 5 files changed, 100 insertions(+), 24 deletions(-) commit cf6cc0128ff4d26e0059f399bbb8342ce259b996 @@ -25389,10 +33118,10 @@ pgm2 receiver working (partly) - src/Makefile.am | 3 +- - src/pgm_socket.cpp | 161 ++++++++++++++++++++++++++++++++++++---------------- - src/pgm_socket.hpp | 14 ++++- - src/socket_base.cpp | 4 +- + src/Makefile.am | 3 +- + src/pgm_socket.cpp | 161 +++++++++++++++++++++++++++++++++++---------------- + src/pgm_socket.hpp | 14 ++++- + src/socket_base.cpp | 4 +- 4 files changed, 129 insertions(+), 53 deletions(-) commit 72c5c5fff42fc0b4c9d1eaaaebe9d6e1dd8824f2 @@ -25401,13 +33130,13 @@ --with-pgm2 compilable - configure.in | 10 +++--- - src/pgm_receiver.cpp | 2 +- - src/pgm_receiver.hpp | 2 +- - src/pgm_sender.cpp | 2 +- - src/pgm_sender.hpp | 2 +- - src/pgm_socket.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++++------- - src/pgm_socket.hpp | 9 +----- + configure.in | 10 +++--- + src/pgm_receiver.cpp | 2 +- + src/pgm_receiver.hpp | 2 +- + src/pgm_sender.cpp | 2 +- + src/pgm_sender.hpp | 2 +- + src/pgm_socket.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++------- + src/pgm_socket.hpp | 9 +---- 7 files changed, 89 insertions(+), 29 deletions(-) commit 33afdcd1adccd19ebd9f4ec9cc6d23a37975d135 @@ -25416,16 +33145,16 @@ added --with-pgm2 into build system - configure.in | 116 +++++++++++++++++++++++++++++++++++++++++---------- - src/Makefile.am | 89 +++++++++++++++++++++++++++++++++++++-- - src/pgm_receiver.cpp | 2 +- - src/pgm_receiver.hpp | 2 +- - src/pgm_sender.cpp | 2 +- - src/pgm_sender.hpp | 2 +- - src/pgm_socket.cpp | 2 +- - src/pgm_socket.hpp | 2 +- - src/platform.hpp.in | 8 +++- - src/socket_base.cpp | 4 +- + configure.in | 116 +++++++++++++++++++++++++++++++++++++++++--------- + src/Makefile.am | 89 ++++++++++++++++++++++++++++++++++++-- + src/pgm_receiver.cpp | 2 +- + src/pgm_receiver.hpp | 2 +- + src/pgm_sender.cpp | 2 +- + src/pgm_sender.hpp | 2 +- + src/pgm_socket.cpp | 2 +- + src/pgm_socket.hpp | 2 +- + src/platform.hpp.in | 8 +++- + src/socket_base.cpp | 4 +- 10 files changed, 196 insertions(+), 33 deletions(-) commit 5aee5fd0cfc6351e843de1540eafa4e757066edc @@ -25434,7 +33163,7 @@ Updated libzmq.vcproj file - builds/msvc/libzmq/libzmq.vcproj | 28 ++++++++++++++++++++++++++++ + builds/msvc/libzmq/libzmq.vcproj | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) commit 27d8627cb5d8c91df2f09ecc1272e84be4fe3c80 @@ -25443,7 +33172,7 @@ Updated changelog for alpha3 release - ChangeLog | 26 ++++++++++++++++---------- + ChangeLog | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) commit b0a1a16fc2a84afa0eb2715f680297caef521b54 @@ -25459,24 +33188,24 @@ ZMQII-16: Change "struct zmq_msg_t" to "zmq_msg_t" in C binding - bindings/c/zmq.h | 24 ++++++++++++------------ - perf/c/local_lat.c | 2 +- - perf/c/local_thr.c | 2 +- - perf/c/remote_lat.c | 2 +- - perf/c/remote_thr.c | 2 +- - src/p2p.cpp | 4 ++-- - src/p2p.hpp | 4 ++-- - src/pipe.cpp | 2 +- - src/pipe.hpp | 4 ++-- - src/pub.cpp | 4 ++-- - src/pub.hpp | 4 ++-- - src/rep.cpp | 4 ++-- - src/rep.hpp | 4 ++-- - src/req.cpp | 4 ++-- - src/req.hpp | 4 ++-- - src/socket_base.hpp | 10 ++++++---- - src/sub.cpp | 4 ++-- - src/sub.hpp | 6 +++--- + bindings/c/zmq.h | 24 ++++++++++++------------ + perf/c/local_lat.c | 2 +- + perf/c/local_thr.c | 2 +- + perf/c/remote_lat.c | 2 +- + perf/c/remote_thr.c | 2 +- + src/p2p.cpp | 4 ++-- + src/p2p.hpp | 4 ++-- + src/pipe.cpp | 2 +- + src/pipe.hpp | 4 ++-- + src/pub.cpp | 4 ++-- + src/pub.hpp | 4 ++-- + src/rep.cpp | 4 ++-- + src/rep.hpp | 4 ++-- + src/req.cpp | 4 ++-- + src/req.hpp | 4 ++-- + src/socket_base.hpp | 10 ++++++---- + src/sub.cpp | 4 ++-- + src/sub.hpp | 6 +++--- 18 files changed, 46 insertions(+), 44 deletions(-) commit 25211307696752acc17e91783aa662dc9e423b21 @@ -25485,7 +33214,7 @@ ZMQII-14: Change default for ZMQ_MCAST_LOOP to true - src/options.cpp | 2 +- + src/options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 85cbd7f83c10c70da8fa44fe7673143703f9710d @@ -25494,14 +33223,14 @@ added PGM bus functionality - Makefile.am | 1 + - configure.in | 20 +++- - foreign/openpgm/lost_data_tsi.patch | 76 ++++++++++++++++ - src/pgm_receiver.cpp | 176 +++++++++++++++++++----------------- - src/pgm_receiver.hpp | 37 +++++--- - src/pgm_socket.cpp | 159 ++++++++------------------------ - src/pgm_socket.hpp | 19 ++-- - src/platform.hpp.in | 6 ++ + Makefile.am | 1 + + configure.in | 20 +++- + foreign/openpgm/lost_data_tsi.patch | 76 +++++++++++++++ + src/pgm_receiver.cpp | 176 ++++++++++++++++++----------------- + src/pgm_receiver.hpp | 37 +++++--- + src/pgm_socket.cpp | 159 ++++++++----------------------- + src/pgm_socket.hpp | 19 ++-- + src/platform.hpp.in | 6 ++ 8 files changed, 265 insertions(+), 229 deletions(-) commit 3bd8f83f6d412221e4673ceb90b8ca7fa74ff2f1 @@ -25510,11 +33239,11 @@ language bindings use zmq_strerror instead of strerror - bindings/cpp/zmq.hpp | 9 +-------- - bindings/java/Context.cpp | 12 +++--------- - bindings/java/Socket.cpp | 11 ++--------- - bindings/python/pyzmq.cpp | 20 ++++++++++---------- - bindings/ruby/rbzmq.cpp | 18 +++++++++--------- + bindings/cpp/zmq.hpp | 9 +-------- + bindings/java/Context.cpp | 12 +++--------- + bindings/java/Socket.cpp | 11 ++--------- + bindings/python/pyzmq.cpp | 20 ++++++++++---------- + bindings/ruby/rbzmq.cpp | 18 +++++++++--------- 5 files changed, 25 insertions(+), 45 deletions(-) commit a0db7f6b811e687eda452a7de9f5db112f715544 @@ -25523,8 +33252,8 @@ POSIX error codes unsupported on win platform faked - bindings/c/zmq.h | 16 +++++++++++++--- - src/zmq.cpp | 13 +++++++++++++ + bindings/c/zmq.h | 16 +++++++++++++--- + src/zmq.cpp | 13 +++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) commit e136d923b7060ef64d44264f88e49057e6638f31 @@ -25533,15 +33262,15 @@ ZMQ-specific error codes added - bindings/c/zmq.h | 34 +++++++++++++++++++++++++++++----- - src/dispatcher.cpp | 2 +- - src/err.cpp | 5 +++++ - src/pub.cpp | 2 +- - src/rep.cpp | 6 +++--- - src/req.cpp | 8 ++++---- - src/socket_base.cpp | 10 +++++----- - src/sub.cpp | 4 ++-- - src/zmq.cpp | 15 +++++++++++++++ + bindings/c/zmq.h | 34 +++++++++++++++++++++++++++++----- + src/dispatcher.cpp | 2 +- + src/err.cpp | 5 +++++ + src/pub.cpp | 2 +- + src/rep.cpp | 6 +++--- + src/req.cpp | 8 ++++---- + src/socket_base.cpp | 10 +++++----- + src/sub.cpp | 4 ++-- + src/zmq.cpp | 15 +++++++++++++++ 9 files changed, 65 insertions(+), 21 deletions(-) commit cc8136896d30890efb24aadc2d3058652aa43d45 @@ -25550,9 +33279,9 @@ documentation in zmq.h improved - bindings/c/zmq.h | 283 ++++++++++++++++++++++++++++++++++++--------------- - bindings/cpp/zmq.hpp | 13 --- - src/zmq.cpp | 28 +---- + bindings/c/zmq.h | 283 ++++++++++++++++++++++++++++++++++++-------------- + bindings/cpp/zmq.hpp | 13 --- + src/zmq.cpp | 28 +---- 3 files changed, 208 insertions(+), 116 deletions(-) commit e6ca5da1815023e90306914dab101eeef4b6f199 @@ -25561,9 +33290,9 @@ Windows build fixed - src/fd_signaler.cpp | 31 ++++++++++++++++--------------- - src/p2p.cpp | 3 +++ - src/rep.cpp | 2 ++ + src/fd_signaler.cpp | 31 ++++++++++++++++--------------- + src/p2p.cpp | 3 +++ + src/rep.cpp | 2 ++ 3 files changed, 21 insertions(+), 15 deletions(-) commit b15f695976d21300beabc3e0ecef87c1a0b4dc4c @@ -25572,23 +33301,23 @@ different fixes to req/rep - src/dispatcher.cpp | 8 ++++---- - src/fd_signaler.cpp | 22 +++++++++++----------- - src/options.cpp | 4 +++- - src/options.hpp | 5 +++++ - src/p2p.cpp | 14 +++----------- - src/p2p.hpp | 2 -- - src/pub.cpp | 14 +++----------- - src/pub.hpp | 2 -- - src/rep.cpp | 14 +++----------- - src/rep.hpp | 2 -- - src/req.cpp | 14 +++----------- - src/req.hpp | 2 -- - src/session.cpp | 36 ++++++++++++++++++++++++------------ - src/socket_base.cpp | 40 +++++++++++++--------------------------- - src/socket_base.hpp | 13 ++++--------- - src/sub.cpp | 14 +++----------- - src/sub.hpp | 2 -- + src/dispatcher.cpp | 8 ++++---- + src/fd_signaler.cpp | 22 +++++++++++----------- + src/options.cpp | 4 +++- + src/options.hpp | 5 +++++ + src/p2p.cpp | 14 +++----------- + src/p2p.hpp | 2 -- + src/pub.cpp | 14 +++----------- + src/pub.hpp | 2 -- + src/rep.cpp | 14 +++----------- + src/rep.hpp | 2 -- + src/req.cpp | 14 +++----------- + src/req.hpp | 2 -- + src/session.cpp | 36 ++++++++++++++++++++++++------------ + src/socket_base.cpp | 40 +++++++++++++--------------------------- + src/socket_base.hpp | 13 ++++--------- + src/sub.cpp | 14 +++----------- + src/sub.hpp | 2 -- 17 files changed, 79 insertions(+), 129 deletions(-) commit cb1b6fe32cbf3c7cf5961bb4156f2de743693a3a @@ -25597,30 +33326,30 @@ initial version of req/rep sockets - src/Makefile.am | 8 + - src/app_thread.cpp | 20 ++- - src/app_thread.hpp | 3 +- - src/i_endpoint.hpp | 7 +- - src/options.cpp | 80 +++++++++ - src/options.hpp | 3 + - src/p2p.cpp | 92 +++++++++++ - src/p2p.hpp | 56 +++++++ - src/pipe.cpp | 28 +--- - src/pipe.hpp | 19 +-- - src/pub.cpp | 129 ++++++++++++++- - src/pub.hpp | 24 ++- - src/rep.cpp | 204 +++++++++++++++++++++++ - src/rep.hpp | 79 +++++++++ - src/req.cpp | 206 +++++++++++++++++++++++ - src/req.hpp | 84 ++++++++++ - src/session.cpp | 49 +++--- - src/session.hpp | 6 +- - src/socket_base.cpp | 460 ++++++++++++++-------------------------------------- - src/socket_base.hpp | 77 ++++----- - src/sub.cpp | 88 +++++++++- - src/sub.hpp | 38 ++++- - src/yarray.hpp | 110 +++++++++++++ - src/yarray_item.hpp | 62 +++++++ + src/Makefile.am | 8 + + src/app_thread.cpp | 20 ++- + src/app_thread.hpp | 3 +- + src/i_endpoint.hpp | 7 +- + src/options.cpp | 80 +++++++++ + src/options.hpp | 3 + + src/p2p.cpp | 92 +++++++++++ + src/p2p.hpp | 56 +++++++ + src/pipe.cpp | 28 +--- + src/pipe.hpp | 19 +-- + src/pub.cpp | 129 ++++++++++++++- + src/pub.hpp | 24 ++- + src/rep.cpp | 204 +++++++++++++++++++++++ + src/rep.hpp | 79 +++++++++ + src/req.cpp | 206 +++++++++++++++++++++++ + src/req.hpp | 84 ++++++++++ + src/session.cpp | 49 +++--- + src/session.hpp | 6 +- + src/socket_base.cpp | 460 ++++++++++++++------------------------------------- + src/socket_base.hpp | 77 ++++----- + src/sub.cpp | 88 +++++++++- + src/sub.hpp | 38 ++++- + src/yarray.hpp | 110 ++++++++++++ + src/yarray_item.hpp | 62 +++++++ 24 files changed, 1460 insertions(+), 472 deletions(-) commit 7668b246fc3cf4a2a3b3ee9b1283ad8a4b12ac4f @@ -25629,13 +33358,13 @@ ZMQ_POLL option forces fd_signaler to be used in app_thread - src/app_thread.cpp | 18 +++++++++++++++--- - src/app_thread.hpp | 5 ++--- - src/fd_signaler.cpp | 39 ++++++++++++++++++++++++--------------- - src/fd_signaler.hpp | 3 --- - src/i_signaler.hpp | 4 ++-- - src/ypollset.cpp | 4 ++++ - src/ypollset.hpp | 2 +- + src/app_thread.cpp | 18 +++++++++++++++--- + src/app_thread.hpp | 5 ++--- + src/fd_signaler.cpp | 39 ++++++++++++++++++++++++--------------- + src/fd_signaler.hpp | 3 --- + src/i_signaler.hpp | 4 ++-- + src/ypollset.cpp | 4 ++++ + src/ypollset.hpp | 2 +- 7 files changed, 48 insertions(+), 27 deletions(-) commit 495a2228cd08a29946f9e9ce2e0721e789203e35 @@ -25644,7 +33373,7 @@ MSVC warnings removed - src/fd_signaler.cpp | 11 ++++------- + src/fd_signaler.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) commit f99b8fc921bc0e6aa55276d8c55e43c9d7f4375a @@ -25653,13 +33382,13 @@ receiving side of signaler virtualised - src/app_thread.cpp | 4 ++-- - src/fd_signaler.cpp | 55 ++++++++++++++++++++++++++++++++++++++++------------- - src/fd_signaler.hpp | 12 +++--------- - src/i_signaler.hpp | 11 +++++++++++ - src/io_thread.cpp | 4 ++-- - src/ypollset.cpp | 8 ++++---- - src/ypollset.hpp | 18 ++++++------------ + src/app_thread.cpp | 4 ++-- + src/fd_signaler.cpp | 55 +++++++++++++++++++++++++++++++++++++++------------ + src/fd_signaler.hpp | 12 +++-------- + src/i_signaler.hpp | 11 +++++++++++ + src/io_thread.cpp | 4 ++-- + src/ypollset.cpp | 8 ++++---- + src/ypollset.hpp | 18 ++++++----------- 7 files changed, 70 insertions(+), 42 deletions(-) commit 50a8b9ea0c4a819073b46449dee8fc839b837ae5 @@ -25668,32 +33397,32 @@ 'flags' parameter added to zmq_init - bindings/c/zmq.h | 6 +++++- - bindings/cpp/zmq.hpp | 4 ++-- - bindings/java/Context.cpp | 4 ++-- - bindings/java/org/zmq/Context.java | 8 +++++--- - bindings/python/pyzmq.cpp | 13 ++++++++----- - bindings/ruby/rbzmq.cpp | 11 +++++++---- - perf/c/local_lat.c | 2 +- - perf/c/local_thr.c | 2 +- - perf/c/remote_lat.c | 2 +- - perf/c/remote_thr.c | 2 +- - perf/java/local_lat.java | 2 +- - perf/java/local_thr.java | 2 +- - perf/java/remote_lat.java | 2 +- - perf/java/remote_thr.java | 2 +- - perf/ruby/local_lat.rb | 2 +- - perf/ruby/local_thr.rb | 2 +- - perf/ruby/remote_lat.rb | 2 +- - perf/ruby/remote_thr.rb | 2 +- - src/app_thread.cpp | 3 ++- - src/app_thread.hpp | 3 ++- - src/dispatcher.cpp | 8 +++++--- - src/dispatcher.hpp | 2 +- - src/fd_signaler.cpp | 6 ++++++ - src/io_thread.cpp | 3 ++- - src/io_thread.hpp | 3 ++- - src/zmq.cpp | 8 ++++---- + bindings/c/zmq.h | 6 +++++- + bindings/cpp/zmq.hpp | 4 ++-- + bindings/java/Context.cpp | 4 ++-- + bindings/java/org/zmq/Context.java | 8 +++++--- + bindings/python/pyzmq.cpp | 13 ++++++++----- + bindings/ruby/rbzmq.cpp | 11 +++++++---- + perf/c/local_lat.c | 2 +- + perf/c/local_thr.c | 2 +- + perf/c/remote_lat.c | 2 +- + perf/c/remote_thr.c | 2 +- + perf/java/local_lat.java | 2 +- + perf/java/local_thr.java | 2 +- + perf/java/remote_lat.java | 2 +- + perf/java/remote_thr.java | 2 +- + perf/ruby/local_lat.rb | 2 +- + perf/ruby/local_thr.rb | 2 +- + perf/ruby/remote_lat.rb | 2 +- + perf/ruby/remote_thr.rb | 2 +- + src/app_thread.cpp | 3 ++- + src/app_thread.hpp | 3 ++- + src/dispatcher.cpp | 8 +++++--- + src/dispatcher.hpp | 2 +- + src/fd_signaler.cpp | 6 ++++++ + src/io_thread.cpp | 3 ++- + src/io_thread.hpp | 3 ++- + src/zmq.cpp | 8 ++++---- 26 files changed, 65 insertions(+), 41 deletions(-) commit edecf75b611cf0e6b1c2658846cff013434edad4 @@ -25702,7 +33431,7 @@ python binding checks ctx argument type - bindings/python/pyzmq.cpp | 22 ++++++++++++---------- + bindings/python/pyzmq.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) commit 8cdf75327d847c464415ab32554d155febcf7c5e @@ -25711,7 +33440,7 @@ ChangeLog updated - ChangeLog | 336 ++++++++++++++++++++++++++++++++------------------------------ + ChangeLog | 336 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 175 insertions(+), 161 deletions(-) commit dffbdbb60c5d5caf01d13063a3d1babab0411338 @@ -25720,7 +33449,7 @@ fixed compiler warning cast from uint64 to bool in socket_base.cpp - src/socket_base.cpp | 11 ++++++++--- + src/socket_base.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) commit 1bd6d5e0f6a6013b2d43abb2a82f0027a92fcc96 @@ -25729,7 +33458,7 @@ fixed missing xmlParser in dist package - Makefile.am | 4 +++- + Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) commit 2be152967c90834bf02ab84e39980281d3f05002 @@ -25738,7 +33467,7 @@ java binding Makefile.am cleanup - bindings/java/Makefile.am | 3 +-- + bindings/java/Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit cff6eb43766ddbbc894237c1ffffc824ca3c79b6 @@ -25747,43 +33476,43 @@ msvc directory moved into builds dir - bindings/java/Socket.cpp | 2 +- - builds/msvc/c_local_lat/c_local_lat.vcproj | 176 +++++++ - builds/msvc/c_local_thr/c_local_thr.vcproj | 176 +++++++ - builds/msvc/c_remote_lat/c_remote_lat.vcproj | 176 +++++++ - builds/msvc/c_remote_thr/c_remote_thr.vcproj | 176 +++++++ - builds/msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 +++++++ - builds/msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 +++++++ - builds/msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 +++++++ - builds/msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 +++++++ - builds/msvc/j_local_lat/j_local_lat.vcproj | 78 ++++ - builds/msvc/j_local_thr/j_local_thr.vcproj | 78 ++++ - builds/msvc/j_remote_lat/j_remote_lat.vcproj | 78 ++++ - builds/msvc/j_remote_thr/j_remote_thr.vcproj | 78 ++++ - builds/msvc/java/java.vcproj | 244 ++++++++++ - builds/msvc/libzmq/libzmq.vcproj | 562 +++++++++++++++++++++++ - builds/msvc/msvc.sln | 154 +++++++ - builds/msvc/platform.hpp | 59 +++ - builds/msvc/python/python.vcproj | 176 +++++++ - builds/msvc/zmq_forwarder/zmq_forwarder.vcproj | 174 +++++++ - msvc/c_local_lat/c_local_lat.vcproj | 176 ------- - msvc/c_local_thr/c_local_thr.vcproj | 176 ------- - msvc/c_remote_lat/c_remote_lat.vcproj | 176 ------- - msvc/c_remote_thr/c_remote_thr.vcproj | 176 ------- - msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 ------- - msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 ------- - msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 ------- - msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 ------- - msvc/j_local_lat/j_local_lat.vcproj | 78 ---- - msvc/j_local_thr/j_local_thr.vcproj | 78 ---- - msvc/j_remote_lat/j_remote_lat.vcproj | 78 ---- - msvc/j_remote_thr/j_remote_thr.vcproj | 78 ---- - msvc/java/java.vcproj | 244 ---------- - msvc/libzmq/libzmq.vcproj | 538 ---------------------- - msvc/msvc.sln | 154 ------- - msvc/platform.hpp | 59 --- - msvc/python/python.vcproj | 176 ------- - msvc/zmq_forwarder/zmq_forwarder.vcproj | 174 ------- + bindings/java/Socket.cpp | 2 +- + builds/msvc/c_local_lat/c_local_lat.vcproj | 176 +++++++ + builds/msvc/c_local_thr/c_local_thr.vcproj | 176 +++++++ + builds/msvc/c_remote_lat/c_remote_lat.vcproj | 176 +++++++ + builds/msvc/c_remote_thr/c_remote_thr.vcproj | 176 +++++++ + builds/msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 +++++++ + builds/msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 +++++++ + builds/msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 +++++++ + builds/msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 +++++++ + builds/msvc/j_local_lat/j_local_lat.vcproj | 78 +++ + builds/msvc/j_local_thr/j_local_thr.vcproj | 78 +++ + builds/msvc/j_remote_lat/j_remote_lat.vcproj | 78 +++ + builds/msvc/j_remote_thr/j_remote_thr.vcproj | 78 +++ + builds/msvc/java/java.vcproj | 244 ++++++++++ + builds/msvc/libzmq/libzmq.vcproj | 562 ++++++++++++++++++++++ + builds/msvc/msvc.sln | 154 ++++++ + builds/msvc/platform.hpp | 59 +++ + builds/msvc/python/python.vcproj | 176 +++++++ + builds/msvc/zmq_forwarder/zmq_forwarder.vcproj | 174 +++++++ + msvc/c_local_lat/c_local_lat.vcproj | 176 ------- + msvc/c_local_thr/c_local_thr.vcproj | 176 ------- + msvc/c_remote_lat/c_remote_lat.vcproj | 176 ------- + msvc/c_remote_thr/c_remote_thr.vcproj | 176 ------- + msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 ------- + msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 ------- + msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 ------- + msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 ------- + msvc/j_local_lat/j_local_lat.vcproj | 78 --- + msvc/j_local_thr/j_local_thr.vcproj | 78 --- + msvc/j_remote_lat/j_remote_lat.vcproj | 78 --- + msvc/j_remote_thr/j_remote_thr.vcproj | 78 --- + msvc/java/java.vcproj | 244 ---------- + msvc/libzmq/libzmq.vcproj | 538 --------------------- + msvc/msvc.sln | 154 ------ + msvc/platform.hpp | 59 --- + msvc/python/python.vcproj | 176 ------- + msvc/zmq_forwarder/zmq_forwarder.vcproj | 174 ------- 37 files changed, 3090 insertions(+), 3066 deletions(-) commit 3ebe9932f9c208966f8cb97d631d26df0367c151 @@ -25799,15 +33528,15 @@ ruby directory moved into bindings dir - Makefile.am | 9 +- - bindings/Makefile.am | 8 +- - bindings/ruby/Makefile.am | 11 ++ - bindings/ruby/extconf.rb | 24 ++++ - bindings/ruby/rbzmq.cpp | 277 ++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - ruby/Makefile.am | 11 -- - ruby/extconf.rb | 24 ---- - ruby/rbzmq.cpp | 277 ---------------------------------------------- + Makefile.am | 9 +- + bindings/Makefile.am | 8 +- + bindings/ruby/Makefile.am | 11 ++ + bindings/ruby/extconf.rb | 24 ++++ + bindings/ruby/rbzmq.cpp | 277 +++++++++++++++++++++++++++++++++++++++++++++ + configure.in | 2 +- + ruby/Makefile.am | 11 -- + ruby/extconf.rb | 24 ---- + ruby/rbzmq.cpp | 277 --------------------------------------------- 9 files changed, 322 insertions(+), 321 deletions(-) commit c63387ca3657848c0eaa8014a863148c1e6525ff @@ -25816,15 +33545,15 @@ python directory moved into bindings dir - Makefile.am | 8 +- - bindings/Makefile.am | 11 + - bindings/python/Makefile.am | 7 + - bindings/python/pyzmq.cpp | 528 ++++++++++++++++++++++++++++++++++++++++++++ - bindings/python/setup.py.in | 14 ++ - configure.in | 3 +- - python/Makefile.am | 7 - - python/pyzmq.cpp | 528 -------------------------------------------- - python/setup.py.in | 14 -- + Makefile.am | 8 +- + bindings/Makefile.am | 11 + + bindings/python/Makefile.am | 7 + + bindings/python/pyzmq.cpp | 528 +++++++++++++++++++++++++++++++++++++++++++ + bindings/python/setup.py.in | 14 ++ + configure.in | 3 +- + python/Makefile.am | 7 - + python/pyzmq.cpp | 528 ------------------------------------------- + python/setup.py.in | 14 -- 9 files changed, 564 insertions(+), 556 deletions(-) commit 1b2a426656134b85ff4c75cb0cccbc53f2b83447 @@ -25833,30 +33562,30 @@ c and cpp directories moved into bindings directory - bindings/c/zmq.h | 216 ++++++++++++++++++++++++ - bindings/cpp/zmq.hpp | 283 ++++++++++++++++++++++++++++++++ - bindings/java/Makefile.am | 2 +- - c/zmq.h | 216 ------------------------ - cpp/zmq.hpp | 283 -------------------------------- - devices/zmq_forwarder/Makefile.am | 2 +- - devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- - perf/c/Makefile.am | 2 +- - perf/cpp/Makefile.am | 2 +- - perf/java/Makefile.am | 2 +- - src/Makefile.am | 4 +- - src/app_thread.cpp | 2 +- - src/dispatcher.cpp | 2 +- - src/i_inout.hpp | 2 +- - src/io_thread.cpp | 2 +- - src/msg_content.hpp | 2 +- - src/pipe.cpp | 2 +- - src/pipe.hpp | 2 +- - src/pub.cpp | 2 +- - src/socket_base.cpp | 2 +- - src/sub.cpp | 2 +- - src/zmq.cpp | 2 +- - src/zmq_decoder.hpp | 2 +- - src/zmq_encoder.hpp | 2 +- + bindings/c/zmq.h | 216 +++++++++++++++++++++++ + bindings/cpp/zmq.hpp | 283 +++++++++++++++++++++++++++++++ + bindings/java/Makefile.am | 2 +- + c/zmq.h | 216 ----------------------- + cpp/zmq.hpp | 283 ------------------------------- + devices/zmq_forwarder/Makefile.am | 2 +- + devices/zmq_forwarder/zmq_forwarder.cpp | 2 +- + perf/c/Makefile.am | 2 +- + perf/cpp/Makefile.am | 2 +- + perf/java/Makefile.am | 2 +- + src/Makefile.am | 4 +- + src/app_thread.cpp | 2 +- + src/dispatcher.cpp | 2 +- + src/i_inout.hpp | 2 +- + src/io_thread.cpp | 2 +- + src/msg_content.hpp | 2 +- + src/pipe.cpp | 2 +- + src/pipe.hpp | 2 +- + src/pub.cpp | 2 +- + src/socket_base.cpp | 2 +- + src/sub.cpp | 2 +- + src/zmq.cpp | 2 +- + src/zmq_decoder.hpp | 2 +- + src/zmq_encoder.hpp | 2 +- 24 files changed, 520 insertions(+), 520 deletions(-) commit 6bfb9e6aaf0adad441d693a679c30ef30aeb5c14 @@ -25865,9 +33594,9 @@ java directory moved into bindings directory II - Makefile.am | 8 ++------ - bindings/java/Makefile.am | 2 +- - configure.in | 4 ++-- + Makefile.am | 8 ++------ + bindings/java/Makefile.am | 2 +- + configure.in | 4 ++-- 3 files changed, 5 insertions(+), 9 deletions(-) commit 3de435a07d460e7eb2423a75e71a409b0f1143e2 @@ -25876,16 +33605,16 @@ java directory moved into bindings directory - bindings/java/Context.cpp | 96 +++++++++++++ - bindings/java/Makefile.am | 58 ++++++++ - bindings/java/Socket.cpp | 272 +++++++++++++++++++++++++++++++++++++ - bindings/java/org/zmq/Context.java | 50 +++++++ - bindings/java/org/zmq/Socket.java | 112 +++++++++++++++ - java/Context.cpp | 96 ------------- - java/Makefile.am | 58 -------- - java/Socket.cpp | 272 ------------------------------------- - java/org/zmq/Context.java | 50 ------- - java/org/zmq/Socket.java | 112 --------------- + bindings/java/Context.cpp | 96 +++++++++++++ + bindings/java/Makefile.am | 58 ++++++++ + bindings/java/Socket.cpp | 272 ++++++++++++++++++++++++++++++++++++ + bindings/java/org/zmq/Context.java | 50 +++++++ + bindings/java/org/zmq/Socket.java | 112 +++++++++++++++ + java/Context.cpp | 96 ------------- + java/Makefile.am | 58 -------- + java/Socket.cpp | 272 ------------------------------------ + java/org/zmq/Context.java | 50 ------- + java/org/zmq/Socket.java | 112 --------------- 10 files changed, 588 insertions(+), 588 deletions(-) commit d16b3bc0c93452a4be7d06525793ac5190e38031 @@ -25901,9 +33630,9 @@ ZMQII-1: fix for devpoll, kqueue & poll - src/devpoll.cpp | 3 ++- - src/kqueue.cpp | 3 ++- - src/poll.cpp | 4 ++-- + src/devpoll.cpp | 3 ++- + src/kqueue.cpp | 3 ++- + src/poll.cpp | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) commit 10dd8c53460a28849aacf7d2e24b63d7fae11ae0 @@ -25919,13 +33648,13 @@ added udp:// transport prefix for PGM UDP encapsulation - src/pgm_receiver.cpp | 4 ++-- - src/pgm_receiver.hpp | 2 +- - src/pgm_sender.cpp | 10 ++++------ - src/pgm_sender.hpp | 2 +- - src/pgm_socket.cpp | 33 +++++++-------------------------- - src/pgm_socket.hpp | 2 +- - src/socket_base.cpp | 13 +++++++++---- + src/pgm_receiver.cpp | 4 ++-- + src/pgm_receiver.hpp | 2 +- + src/pgm_sender.cpp | 10 ++++------ + src/pgm_sender.hpp | 2 +- + src/pgm_socket.cpp | 33 +++++++-------------------------- + src/pgm_socket.hpp | 2 +- + src/socket_base.cpp | 13 +++++++++---- 7 files changed, 25 insertions(+), 41 deletions(-) commit fc7715b4636be7a0d49f27234359ddfddce23f5b @@ -25941,7 +33670,7 @@ ZMQII-4: Failure in dev/poll poller - src/zmq_connecter.cpp | 2 ++ + src/zmq_connecter.cpp | 2 ++ 1 file changed, 2 insertions(+) commit c6665f46be7eb701866441087c35cdb1a08fc641 @@ -25950,7 +33679,7 @@ set rc to 0 in its declaration (pyzmq.cpp) - python/pyzmq.cpp | 2 +- + python/pyzmq.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3b2c3cae095abf9b61cd72cf19f053071a8c614a @@ -25959,8 +33688,8 @@ setsockopt cleanup in rbzmq - perf/ruby/local_thr.rb | 2 +- - ruby/rbzmq.cpp | 106 ++++++++++++++++++++----------------------------- + perf/ruby/local_thr.rb | 2 +- + ruby/rbzmq.cpp | 106 +++++++++++++++++++----------------------------- 2 files changed, 43 insertions(+), 65 deletions(-) commit 3534732c0614a764731fbea2431247068fa63330 @@ -25976,7 +33705,7 @@ setsockopt cleanup in pyzmq.cpp - python/pyzmq.cpp | 31 +++++++++++++++++++++++-------- + python/pyzmq.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) commit a71d00288008b7ed1dc91b6ad3d5fdf25a5e683e @@ -25992,9 +33721,9 @@ ZMQII-8: Failure during orphan pipe deallocation - src/dispatcher.cpp | 4 ++-- - src/session.cpp | 6 +++++- - src/zmq_connecter_init.cpp | 6 +++++- + src/dispatcher.cpp | 4 ++-- + src/session.cpp | 6 +++++- + src/zmq_connecter_init.cpp | 6 +++++- 3 files changed, 12 insertions(+), 4 deletions(-) commit 7a5db6041f4f11ed502fa7446da900509dedb00f @@ -26003,22 +33732,22 @@ added newly added socket options to all language bindings, P2P model changed to PUB/SUB for throughput tests - c/zmq.h | 2 +- - java/Socket.cpp | 1 + - java/org/zmq/Socket.java | 1 + - perf/c/local_thr.c | 8 +++++- - perf/c/remote_thr.c | 5 +++- - perf/cpp/local_thr.cpp | 8 +++++- - perf/cpp/remote_thr.cpp | 6 ++++- - perf/java/local_thr.java | 68 ++++++++++++++++++++++++++--------------------- - perf/java/remote_thr.java | 60 ++++++++++++++++++++++------------------- - perf/python/local_thr.py | 8 +++++- - perf/python/remote_thr.py | 6 ++++- - perf/ruby/local_thr.rb | 7 ++++- - perf/ruby/remote_thr.rb | 6 ++++- - python/pyzmq.cpp | 18 ++++++++++++- - ruby/rbzmq.cpp | 5 ++++ - src/socket_base.cpp | 11 ++++++-- + c/zmq.h | 2 +- + java/Socket.cpp | 1 + + java/org/zmq/Socket.java | 1 + + perf/c/local_thr.c | 8 +++++- + perf/c/remote_thr.c | 5 +++- + perf/cpp/local_thr.cpp | 8 +++++- + perf/cpp/remote_thr.cpp | 6 +++- + perf/java/local_thr.java | 68 ++++++++++++++++++++++++--------------------- + perf/java/remote_thr.java | 60 ++++++++++++++++++++------------------- + perf/python/local_thr.py | 8 +++++- + perf/python/remote_thr.py | 6 +++- + perf/ruby/local_thr.rb | 7 ++++- + perf/ruby/remote_thr.rb | 6 +++- + python/pyzmq.cpp | 18 +++++++++++- + ruby/rbzmq.cpp | 5 ++++ + src/socket_base.cpp | 11 ++++++-- 16 files changed, 149 insertions(+), 71 deletions(-) commit 9c522dccaf0b2c8074bd96fbfb4c968f45748ba4 @@ -26027,17 +33756,17 @@ reconnect added to zmq_connecter - perf/c/remote_lat.c | 10 ++++++---- - perf/cpp/remote_lat.cpp | 5 ++++- - src/session.cpp | 9 ++++++--- - src/session.hpp | 5 ++++- - src/socket_base.cpp | 4 ++-- - src/zmq_connecter.cpp | 22 +++++++++++++++++----- - src/zmq_connecter.hpp | 5 ++++- - src/zmq_connecter_init.cpp | 22 ++++++++++++++++++++-- - src/zmq_engine.cpp | 1 + - src/zmq_engine.hpp | 1 + - src/zmq_listener_init.cpp | 2 +- + perf/c/remote_lat.c | 10 ++++++---- + perf/cpp/remote_lat.cpp | 5 ++++- + src/session.cpp | 9 ++++++--- + src/session.hpp | 5 ++++- + src/socket_base.cpp | 4 ++-- + src/zmq_connecter.cpp | 22 +++++++++++++++++----- + src/zmq_connecter.hpp | 5 ++++- + src/zmq_connecter_init.cpp | 22 ++++++++++++++++++++-- + src/zmq_engine.cpp | 1 + + src/zmq_engine.hpp | 1 + + src/zmq_listener_init.cpp | 2 +- 11 files changed, 66 insertions(+), 20 deletions(-) commit 6e03cb2f3eb083e1de8e7161d3ab21b52c87eece @@ -26053,10 +33782,10 @@ removed reset method from zmq_decoder_t - src/pgm_receiver.cpp | 25 +++++++++++++++---------- - src/pgm_receiver.hpp | 2 +- - src/zmq_decoder.cpp | 10 ---------- - src/zmq_decoder.hpp | 2 -- + src/pgm_receiver.cpp | 25 +++++++++++++++---------- + src/pgm_receiver.hpp | 2 +- + src/zmq_decoder.cpp | 10 ---------- + src/zmq_decoder.hpp | 2 -- 4 files changed, 16 insertions(+), 23 deletions(-) commit 969522bbf55467b6f6e8113be28451d087060843 @@ -26065,17 +33794,17 @@ added OpenPGM receiver - ZMQ_SUB - c/zmq.h | 1 + - src/Makefile.am | 2 + - src/options.cpp | 3 +- - src/options.hpp | 7 +- - src/pgm_receiver.cpp | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/pgm_receiver.hpp | 98 +++++++++++++++++++++++++ - src/pgm_sender.cpp | 7 +- - src/pgm_sender.hpp | 2 +- - src/pgm_socket.cpp | 17 +++-- - src/socket_base.cpp | 75 +++++++++++++++++-- - src/sub.cpp | 6 ++ + c/zmq.h | 1 + + src/Makefile.am | 2 + + src/options.cpp | 3 +- + src/options.hpp | 7 +- + src/pgm_receiver.cpp | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++ + src/pgm_receiver.hpp | 98 ++++++++++++++++++++++++ + src/pgm_sender.cpp | 7 +- + src/pgm_sender.hpp | 2 +- + src/pgm_socket.cpp | 17 +++-- + src/socket_base.cpp | 75 +++++++++++++++++-- + src/sub.cpp | 6 ++ 11 files changed, 395 insertions(+), 25 deletions(-) commit bce2e60bbb3b7f799a532d9b8f2e171c570b9fea @@ -26084,7 +33813,7 @@ more errors from send & recv handled decently on windows - src/tcp_socket.cpp | 12 +++++++++++- + src/tcp_socket.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) commit 0381a78c0484012e760d61051f325c71136df17e @@ -26093,8 +33822,8 @@ added reset method into zmq_decoder_t class - src/zmq_decoder.cpp | 10 ++++++++++ - src/zmq_decoder.hpp | 2 ++ + src/zmq_decoder.cpp | 10 ++++++++++ + src/zmq_decoder.hpp | 2 ++ 2 files changed, 12 insertions(+) commit 79d4a6debf2f4a6970c1137f15426ba0c3535ac0 @@ -26110,7 +33839,7 @@ fixed pub_t class creating ZMQ_SUB socket_base_t - src/pub.cpp | 2 +- + src/pub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 98b8e9b54dd8c67006422106b478a3a6eab07869 @@ -26126,9 +33855,9 @@ forwarder renamed to zmq_forwarder (MSVC build) - msvc/forwarder/forwarder.vcproj | 174 -------------------------------- - msvc/msvc.sln | 10 +- - msvc/zmq_forwarder/zmq_forwarder.vcproj | 174 ++++++++++++++++++++++++++++++++ + msvc/forwarder/forwarder.vcproj | 174 ------------------------------- + msvc/msvc.sln | 10 +- + msvc/zmq_forwarder/zmq_forwarder.vcproj | 174 +++++++++++++++++++++++++++++++ 3 files changed, 179 insertions(+), 179 deletions(-) commit 3a3bcd337fb8000aef6c8f5ca3dd1b10475d7ab0 @@ -26137,7 +33866,7 @@ pgm_sender code beautiication - src/pgm_sender.hpp | 11 ++--------- + src/pgm_sender.hpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) commit f44b215a60f50e8730a50522d7b9f2d5b4381d19 @@ -26146,7 +33875,7 @@ added out_event call into pgm_sender_t revive - src/pgm_sender.cpp | 23 +---------------------- + src/pgm_sender.cpp | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) commit 712c7bd8954a801526e87e652840f7087f9af706 @@ -26162,12 +33891,12 @@ forwarder renamed to zmq_forwarder - configure.in | 2 +- - devices/Makefile.am | 4 +- - devices/forwarder/Makefile.am | 9 --- - devices/forwarder/forwarder.cpp | 122 -------------------------------- - devices/zmq_forwarder/Makefile.am | 9 +++ - devices/zmq_forwarder/zmq_forwarder.cpp | 122 ++++++++++++++++++++++++++++++++ + configure.in | 2 +- + devices/Makefile.am | 4 +- + devices/forwarder/Makefile.am | 9 --- + devices/forwarder/forwarder.cpp | 122 ------------------------------- + devices/zmq_forwarder/Makefile.am | 9 +++ + devices/zmq_forwarder/zmq_forwarder.cpp | 122 +++++++++++++++++++++++++++++++ 6 files changed, 134 insertions(+), 134 deletions(-) commit 364281343ce0fd03b25bc6b1b451ee7ba8db436b @@ -26183,7 +33912,7 @@ deleted useles iostream include from socket_base.cpp - src/socket_base.cpp | 6 ++---- + src/socket_base.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) commit f7ad4a203ad184d97002111f4ffb8bfe6a8f7c01 @@ -26192,11 +33921,11 @@ forwarder device compilable on windows - foreign/xmlParser/xmlParser.cpp | 12 ++- - msvc/forwarder/forwarder.vcproj | 174 ++++++++++++++++++++++++++++++++++++++++ - msvc/msvc.sln | 9 +++ - python/pyzmq.cpp | 3 - - ruby/rbzmq.cpp | 3 +- + foreign/xmlParser/xmlParser.cpp | 12 ++- + msvc/forwarder/forwarder.vcproj | 174 +++++++++++++++++++++++++++++++++++++++ + msvc/msvc.sln | 9 ++ + python/pyzmq.cpp | 3 - + ruby/rbzmq.cpp | 3 +- 5 files changed, 196 insertions(+), 5 deletions(-) commit 6cfd175e31eec44d215bbc237f2f1d94bfeac06d @@ -26205,11 +33934,11 @@ forwarder device added - Makefile.am | 4 +- - configure.in | 39 +++++++++---- - devices/Makefile.am | 6 ++ - devices/forwarder/Makefile.am | 9 +++ - devices/forwarder/forwarder.cpp | 122 ++++++++++++++++++++++++++++++++++++++++ + Makefile.am | 4 +- + configure.in | 39 +++++++++---- + devices/Makefile.am | 6 ++ + devices/forwarder/Makefile.am | 9 +++ + devices/forwarder/forwarder.cpp | 122 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 168 insertions(+), 12 deletions(-) commit e2900ce0a1b11ec212aeaf42bbefb26a54697c25 @@ -26228,8 +33957,8 @@ ZMQII-10: Make connections interrupted during the init phase be closed silently - src/zmq_decoder.cpp | 13 +++++++++++-- - src/zmq_listener_init.cpp | 7 +++++-- + src/zmq_decoder.cpp | 13 +++++++++++-- + src/zmq_listener_init.cpp | 7 +++++-- 2 files changed, 16 insertions(+), 4 deletions(-) commit 37cacc5700eaaaddbe2df6e3affeca4a335b023a @@ -26238,10 +33967,10 @@ ZMQII-1: Win32 - failure on shutdown - java/Socket.cpp | 2 ++ - msvc/libzmq/libzmq.vcproj | 4 ++++ - src/select.cpp | 4 ++-- - src/socket_base.cpp | 2 +- + java/Socket.cpp | 2 ++ + msvc/libzmq/libzmq.vcproj | 4 ++++ + src/select.cpp | 4 ++-- + src/socket_base.cpp | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) commit c806aabb2d3e6b1ba9e3f61319f23d45c7f9a007 @@ -26250,12 +33979,12 @@ java binding sets socket options using setsockopt function - c/zmq.h | 19 ++++---- - java/Socket.cpp | 114 +++++++++++++++++++---------------------------- - java/org/zmq/Socket.java | 58 +++++++----------------- - src/options.cpp | 5 +-- - src/options.hpp | 1 - - src/socket_base.cpp | 16 ++----- + c/zmq.h | 19 ++++---- + java/Socket.cpp | 114 +++++++++++++++++++--------------------------- + java/org/zmq/Socket.java | 58 ++++++----------------- + src/options.cpp | 5 +- + src/options.hpp | 1 - + src/socket_base.cpp | 16 ++----- 6 files changed, 77 insertions(+), 136 deletions(-) commit 36707529a7d82b164b59d42fe0d5d8a35c3dd279 @@ -26264,7 +33993,7 @@ minor merge problem corrected - src/pub.cpp | 2 +- + src/pub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 89b1f2782ca6a1db9c68b7d642b5a41cc4d56414 @@ -26280,13 +34009,13 @@ separate class for PUB-style socket added - c/zmq.h | 6 +++--- - src/Makefile.am | 2 ++ - src/app_thread.cpp | 5 ++++- - src/pub.cpp | 39 +++++++++++++++++++++++++++++++++++++++ - src/pub.hpp | 41 +++++++++++++++++++++++++++++++++++++++++ - src/sub.cpp | 12 ++++++++++++ - src/sub.hpp | 2 ++ + c/zmq.h | 6 +++--- + src/Makefile.am | 2 ++ + src/app_thread.cpp | 5 ++++- + src/pub.cpp | 39 +++++++++++++++++++++++++++++++++++++++ + src/pub.hpp | 41 +++++++++++++++++++++++++++++++++++++++++ + src/sub.cpp | 12 ++++++++++++ + src/sub.hpp | 2 ++ 7 files changed, 103 insertions(+), 4 deletions(-) commit 1a4d6f91194c52795808baa07dcd61a20ff599be @@ -26295,20 +34024,20 @@ added OpenPGM sender - ZMQ_PUB - Makefile.am | 4 +- - c/zmq.h | 2 + - src/Makefile.am | 6 +- - src/app_thread.cpp | 2 +- - src/config.hpp | 4 +- - src/options.cpp | 4 +- - src/options.hpp | 6 + - src/pgm_sender.cpp | 224 ++++++++++++++++ - src/pgm_sender.hpp | 109 ++++++++ - src/pgm_socket.cpp | 754 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/pgm_socket.hpp | 153 +++++++++++ - src/socket_base.cpp | 105 +++++++- - src/socket_base.hpp | 5 +- - src/sub.cpp | 2 +- + Makefile.am | 4 +- + c/zmq.h | 2 + + src/Makefile.am | 6 +- + src/app_thread.cpp | 2 +- + src/config.hpp | 4 +- + src/options.cpp | 4 +- + src/options.hpp | 6 + + src/pgm_sender.cpp | 224 +++++++++++++++ + src/pgm_sender.hpp | 109 ++++++++ + src/pgm_socket.cpp | 754 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/pgm_socket.hpp | 153 +++++++++++ + src/socket_base.cpp | 105 ++++++- + src/socket_base.hpp | 5 +- + src/sub.cpp | 2 +- 14 files changed, 1360 insertions(+), 20 deletions(-) commit e940878b3f8ff332df534c4df463cfdf085cc787 @@ -26317,9 +34046,9 @@ build on win32 fixed - msvc/libzmq/libzmq.vcproj | 8 ++++++++ - src/socket_base.cpp | 2 +- - src/tcp_connecter.cpp | 2 +- + msvc/libzmq/libzmq.vcproj | 8 ++++++++ + src/socket_base.cpp | 2 +- + src/tcp_connecter.cpp | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) commit 7be7962f9802b48e66663416097eb76edfa83e1e @@ -26328,8 +34057,8 @@ prefix-style message filtering added - src/sub.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++-------------- - src/sub.hpp | 10 ++++++++-- + src/sub.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++-------------- + src/sub.hpp | 10 ++++++++-- 2 files changed, 55 insertions(+), 16 deletions(-) commit 42ad2aa02d3b14eaa3c36c3f1a5a5789546ba411 @@ -26338,7 +34067,7 @@ ZMQII-7: Pipe detach fails on shutdown - src/socket_base.cpp | 1 + + src/socket_base.cpp | 1 + 1 file changed, 1 insertion(+) commit 29c5930d0b9a4a1df3b90819bdfbfff6a66fedd0 @@ -26347,7 +34076,7 @@ asserts for invalid indexes in pipe reader & writer added - src/pipe.cpp | 2 ++ + src/pipe.cpp | 2 ++ 1 file changed, 2 insertions(+) commit e0d1294c4bae51a2bc83a09225e89dddc9b6dcf4 @@ -26363,10 +34092,10 @@ ZMQII-5: Only one consumer in a process gets the message - src/session.cpp | 23 ++++++++++++++--------- - src/zmq_connecter_init.cpp | 4 +++- - src/zmq_engine.cpp | 2 ++ - src/zmq_listener_init.cpp | 4 +++- + src/session.cpp | 23 ++++++++++++++--------- + src/zmq_connecter_init.cpp | 4 +++- + src/zmq_engine.cpp | 2 ++ + src/zmq_listener_init.cpp | 4 +++- 4 files changed, 22 insertions(+), 11 deletions(-) commit a91b44977201e4b3891c70da0472a332f60a39fc @@ -26377,13 +34106,13 @@ This reverts commit 88695aaee607e6f4db1f4fd052e2596653fb18b2. - c/zmq.h | 2 -- - perf/cpp/remote_thr.cpp | 13 +-------- - src/Makefile.am | 6 +--- - src/config.hpp | 4 +-- - src/options.cpp | 4 +-- - src/options.hpp | 6 ---- - src/socket_base.cpp | 74 ++++++++----------------------------------------- + c/zmq.h | 2 -- + perf/cpp/remote_thr.cpp | 13 +-------- + src/Makefile.am | 6 +--- + src/config.hpp | 4 +-- + src/options.cpp | 4 +-- + src/options.hpp | 6 ---- + src/socket_base.cpp | 74 ++++++++--------------------------------------- 7 files changed, 16 insertions(+), 93 deletions(-) commit 88695aaee607e6f4db1f4fd052e2596653fb18b2 @@ -26392,13 +34121,13 @@ link libzmq with glib when congifured --with-pgm - c/zmq.h | 2 ++ - perf/cpp/remote_thr.cpp | 13 ++++++++- - src/Makefile.am | 6 +++- - src/config.hpp | 4 ++- - src/options.cpp | 4 ++- - src/options.hpp | 6 ++++ - src/socket_base.cpp | 74 +++++++++++++++++++++++++++++++++++++++++-------- + c/zmq.h | 2 ++ + perf/cpp/remote_thr.cpp | 13 ++++++++- + src/Makefile.am | 6 +++- + src/config.hpp | 4 ++- + src/options.cpp | 4 ++- + src/options.hpp | 6 ++++ + src/socket_base.cpp | 74 +++++++++++++++++++++++++++++++++++++++-------- 7 files changed, 93 insertions(+), 16 deletions(-) commit f824b8a067c60b32260c56020742d6428ed3bb98 @@ -26407,7 +34136,7 @@ classify error from async connect as network related or 0MQ bugs - src/tcp_connecter.cpp | 10 ++++++++++ + src/tcp_connecter.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) commit f674c9269e04546da22e45ef6fff9303441680ea @@ -26416,9 +34145,9 @@ ZMQII-2: SIGSEGV in zmq_connecter_init_t::read - src/zmq_decoder.cpp | 2 +- - src/zmq_encoder.cpp | 2 +- - src/zmq_engine.cpp | 2 ++ + src/zmq_decoder.cpp | 2 +- + src/zmq_encoder.cpp | 2 +- + src/zmq_engine.cpp | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) commit 93e70ee583489034c9f3b92fb87b374707afd5d5 @@ -26427,11 +34156,11 @@ throughput tests use P2P sockets consistently - perf/cpp/remote_thr.cpp | 2 +- - perf/java/local_thr.java | 2 +- - perf/java/remote_thr.java | 2 +- - perf/ruby/local_thr.rb | 2 +- - perf/ruby/remote_thr.rb | 2 +- + perf/cpp/remote_thr.cpp | 2 +- + perf/java/local_thr.java | 2 +- + perf/java/remote_thr.java | 2 +- + perf/ruby/local_thr.rb | 2 +- + perf/ruby/remote_thr.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) commit 95944551be93665fe4dcadbe00168da553b7d82f @@ -26447,13 +34176,13 @@ ZMQII-3: cheap and nasty implementation of message filtering - c/zmq.h | 2 ++ - src/Makefile.am | 2 ++ - src/app_thread.cpp | 18 ++++++++++-- - src/socket_base.cpp | 5 ++++ - src/socket_base.hpp | 2 +- - src/sub.cpp | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/sub.hpp | 51 +++++++++++++++++++++++++++++++++ + c/zmq.h | 2 ++ + src/Makefile.am | 2 ++ + src/app_thread.cpp | 18 +++++++++-- + src/socket_base.cpp | 5 ++++ + src/socket_base.hpp | 2 +- + src/sub.cpp | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/sub.hpp | 51 ++++++++++++++++++++++++++++++++ 7 files changed, 159 insertions(+), 3 deletions(-) commit 5acef9fc96280df934176b02de724eb904e4bba3 @@ -26462,11 +34191,11 @@ added --with-pgm option, libpgm-1.2.14 build within 0mq build system - Makefile.am | 3 + - configure.in | 119 ++++++++++++++++++++++++++++++++-- - foreign/openpgm/libpgm-1.2.14.tar.bz2 | Bin 0 -> 280029 bytes - src/Makefile.am | 64 +++++++++++++++++- - src/platform.hpp.in | 3 + + Makefile.am | 3 + + configure.in | 119 +++++++++++++++++++++++++++++++-- + foreign/openpgm/libpgm-1.2.14.tar.bz2 | Bin 0 -> 280029 bytes + src/Makefile.am | 64 +++++++++++++++++- + src/platform.hpp.in | 3 + 5 files changed, 183 insertions(+), 6 deletions(-) commit d81d3412520c9fed36f39462840c7d35815f4a87 @@ -26482,7 +34211,7 @@ building zmq.jar on win32 fixed - msvc/java/java.vcproj | 8 ++++---- + msvc/java/java.vcproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 4cc923b0252a0f1f0ee52508b7a3108e8e3c0950 @@ -26491,7 +34220,7 @@ Stop configure, when could not link with libuuid - configure.in | 2 +- + configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 65b8b2d2c78867ee2671f995f5f7c805abd00df2 @@ -26507,8 +34236,8 @@ higher precision time measurement in python perf tests - perf/python/local_thr.py | 8 ++++---- - perf/python/remote_lat.py | 11 ++++++----- + perf/python/local_thr.py | 8 ++++---- + perf/python/remote_lat.py | 11 ++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) commit d743d97e365b1d430b6c63de2782392a5f8f5305 @@ -26517,10 +34246,10 @@ Updated AUTHORS, ChangeLog, README and added COPYING.LESSER files - AUTHORS | 38 ++++++++++ - COPYING.LESSER | 166 +++++++++++++++++++++++++++++++++++++++++ - ChangeLog | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - README | 4 + + AUTHORS | 38 ++++++++++ + COPYING.LESSER | 166 ++++++++++++++++++++++++++++++++++++++++ + ChangeLog | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + README | 4 + 4 files changed, 439 insertions(+) commit 4d07d7cabe1a865812cf5d95a84557880e3c3096 @@ -26529,8 +34258,8 @@ fix of async connect on win32 - src/tcp_connecter.cpp | 4 +++- - src/zmq_connecter.cpp | 2 +- + src/tcp_connecter.cpp | 4 +++- + src/zmq_connecter.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) commit c99f39abc669084fd3a94675ee98e235448ad5a4 @@ -26546,7 +34275,7 @@ async connect bug fixed - src/zmq_connecter.cpp | 19 ++++++------------- + src/zmq_connecter.cpp | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) commit cb78991f8e20fa35d99fa209be659c0aed59de47 @@ -26562,11 +34291,11 @@ Sparc solaris port - configure.in | 1 + - src/devpoll.cpp | 6 ++++-- - src/object.hpp | 2 +- - src/tcp_socket.cpp | 3 ++- - src/zmq.cpp | 3 ++- + configure.in | 1 + + src/devpoll.cpp | 6 ++++-- + src/object.hpp | 2 +- + src/tcp_socket.cpp | 3 ++- + src/zmq.cpp | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) commit d3fb9f90af73a46e02b7e8780a8db95a31360d56 @@ -26575,7 +34304,7 @@ missing java MSVC project added - msvc/java/java.vcproj | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++ + msvc/java/java.vcproj | 244 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) commit dadfd243649fbde768a24c677fa952f90d00589d @@ -26591,9 +34320,9 @@ win build for python - msvc/msvc.sln | 8 +++ - msvc/python/python.vcproj | 176 ++++++++++++++++++++++++++++++++++++++++++++++ - python/pyzmq.cpp | 9 +++ + msvc/msvc.sln | 8 +++ + msvc/python/python.vcproj | 176 +++++++++++++++++++++++++++++++++++++++++++++ + python/pyzmq.cpp | 9 +++ 3 files changed, 193 insertions(+) commit 844b590b5e348d8513ed574f6548cc0be41574af @@ -26602,9 +34331,9 @@ added libzmq.pc.in file - configure.in | 2 +- - src/Makefile.am | 2 ++ - src/libzmq.pc.in | 10 ++++++++++ + configure.in | 2 +- + src/Makefile.am | 2 ++ + src/libzmq.pc.in | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) commit b3fc14522574ccad233bee02ea135d8a93fb2441 @@ -26620,16 +34349,16 @@ build system tuning - Makefile.am | 8 ++++++-- - configure.in | 37 +++++++++++++++++++++++++++++++++---- - java/Makefile.am | 6 +++--- - perf/Makefile.am | 25 +++++++++++++++++++++++-- - perf/java/Makefile.am | 5 +++++ - perf/python/Makefile.am | 6 +----- - perf/ruby/Makefile.am | 1 + - python/pyzmq.cpp | 2 +- - ruby/rbzmq.cpp | 3 ++- - src/Makefile.am | 2 +- + Makefile.am | 8 ++++++-- + configure.in | 37 +++++++++++++++++++++++++++++++++---- + java/Makefile.am | 6 +++--- + perf/Makefile.am | 25 +++++++++++++++++++++++-- + perf/java/Makefile.am | 5 +++++ + perf/python/Makefile.am | 6 +----- + perf/ruby/Makefile.am | 1 + + python/pyzmq.cpp | 2 +- + ruby/rbzmq.cpp | 3 ++- + src/Makefile.am | 2 +- 10 files changed, 76 insertions(+), 19 deletions(-) commit 3069b6bd54486346f7bfcce58d6a5e34d129965c @@ -26638,16 +34367,16 @@ win port of java binding + java perf tests - java/Context.cpp | 7 ++ - java/Message.cpp | 138 ---------------------------------- - java/Socket.cpp | 7 ++ - java/org/zmq/Socket.java | 2 +- - msvc/j_local_lat/j_local_lat.vcproj | 78 +++++++++++++++++++ - msvc/j_local_thr/j_local_thr.vcproj | 78 +++++++++++++++++++ - msvc/j_remote_lat/j_remote_lat.vcproj | 78 +++++++++++++++++++ - msvc/j_remote_thr/j_remote_thr.vcproj | 78 +++++++++++++++++++ - msvc/msvc.sln | 45 +++++++++++ - perf/c/local_thr.c | 3 +- + java/Context.cpp | 7 ++ + java/Message.cpp | 138 --------------------------------- + java/Socket.cpp | 7 ++ + java/org/zmq/Socket.java | 2 +- + msvc/j_local_lat/j_local_lat.vcproj | 78 +++++++++++++++++++ + msvc/j_local_thr/j_local_thr.vcproj | 78 +++++++++++++++++++ + msvc/j_remote_lat/j_remote_lat.vcproj | 78 +++++++++++++++++++ + msvc/j_remote_thr/j_remote_thr.vcproj | 78 +++++++++++++++++++ + msvc/msvc.sln | 45 +++++++++++ + perf/c/local_thr.c | 3 +- 10 files changed, 374 insertions(+), 140 deletions(-) commit ec6822a477b89ac77afc90425bf36c4829dbef3d @@ -26656,31 +34385,31 @@ win port for c and cpp perf tests - c/zmq.h | 8 +- - cpp/zmq.hpp | 7 ++ - msvc/c_local_lat/c_local_lat.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/c_local_thr/c_local_thr.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/c_remote_lat/c_remote_lat.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/c_remote_thr/c_remote_thr.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 ++++++++++++++++++++++++++++++ - msvc/libzmq/libzmq.vcproj | 10 +- - msvc/msvc.sln | 72 ++++++++++++ - perf/c/local_lat.c | 3 +- - perf/c/local_thr.c | 24 ++-- - perf/c/remote_lat.c | 19 +--- - perf/c/remote_thr.c | 3 +- - perf/cpp/local_lat.cpp | 3 +- - perf/cpp/local_thr.cpp | 20 +--- - perf/cpp/remote_lat.cpp | 16 +-- - perf/cpp/remote_thr.cpp | 3 +- - src/fd_signaler.cpp | 2 +- - src/tcp_connecter.cpp | 18 ++- - src/tcp_listener.cpp | 89 ++++++++++++++- - src/tcp_socket.cpp | 5 + - src/zmq.cpp | 67 +++++++++++- + c/zmq.h | 8 +- + cpp/zmq.hpp | 7 ++ + msvc/c_local_lat/c_local_lat.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/c_local_thr/c_local_thr.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/c_remote_lat/c_remote_lat.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/c_remote_thr/c_remote_thr.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/cpp_local_lat/cpp_local_lat.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/cpp_local_thr/cpp_local_thr.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/cpp_remote_lat/cpp_remote_lat.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/cpp_remote_thr/cpp_remote_thr.vcproj | 176 +++++++++++++++++++++++++++++ + msvc/libzmq/libzmq.vcproj | 10 +- + msvc/msvc.sln | 72 ++++++++++++ + perf/c/local_lat.c | 3 +- + perf/c/local_thr.c | 24 ++-- + perf/c/remote_lat.c | 19 +--- + perf/c/remote_thr.c | 3 +- + perf/cpp/local_lat.cpp | 3 +- + perf/cpp/local_thr.cpp | 20 +--- + perf/cpp/remote_lat.cpp | 16 +-- + perf/cpp/remote_thr.cpp | 3 +- + src/fd_signaler.cpp | 2 +- + src/tcp_connecter.cpp | 18 ++- + src/tcp_listener.cpp | 89 ++++++++++++++- + src/tcp_socket.cpp | 5 + + src/zmq.cpp | 67 ++++++++++- 25 files changed, 1702 insertions(+), 75 deletions(-) commit b71c3005e68d02f800ff09bcacece79d167bff75 @@ -26689,27 +34418,27 @@ include directory split into c and cpp dirs, added --with-c and --with-cpp configure options - Makefile.am | 2 - - autogen.sh | 8 +- - c/zmq.h | 206 ++++++++++++++++++++++++++++++++++++++ - configure.in | 45 ++++++--- - cpp/zmq.hpp | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++ - include/zmq.h | 206 -------------------------------------- - include/zmq.hpp | 276 --------------------------------------------------- - perf/c/Makefile.am | 4 +- - perf/cpp/Makefile.am | 4 +- - src/Makefile.am | 15 ++- - src/app_thread.cpp | 2 +- - src/dispatcher.cpp | 2 +- - src/i_inout.hpp | 2 +- - src/io_thread.cpp | 2 +- - src/msg_content.hpp | 2 +- - src/pipe.cpp | 2 +- - src/pipe.hpp | 2 +- - src/socket_base.cpp | 2 +- - src/zmq.cpp | 2 +- - src/zmq_decoder.hpp | 2 +- - src/zmq_encoder.hpp | 2 +- + Makefile.am | 2 - + autogen.sh | 8 +- + c/zmq.h | 206 +++++++++++++++++++++++++++++++++++++ + configure.in | 45 +++++--- + cpp/zmq.hpp | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++ + include/zmq.h | 206 ------------------------------------- + include/zmq.hpp | 276 -------------------------------------------------- + perf/c/Makefile.am | 4 +- + perf/cpp/Makefile.am | 4 +- + src/Makefile.am | 15 ++- + src/app_thread.cpp | 2 +- + src/dispatcher.cpp | 2 +- + src/i_inout.hpp | 2 +- + src/io_thread.cpp | 2 +- + src/msg_content.hpp | 2 +- + src/pipe.cpp | 2 +- + src/pipe.hpp | 2 +- + src/socket_base.cpp | 2 +- + src/zmq.cpp | 2 +- + src/zmq_decoder.hpp | 2 +- + src/zmq_encoder.hpp | 2 +- 21 files changed, 547 insertions(+), 517 deletions(-) commit f895426c1885729f4a4a20b1eb543a92915aed85 @@ -26718,20 +34447,20 @@ initial changes for win port - include/zmq.h | 5 +- - msvc/libzmq/libzmq.vcproj | 520 ++++++++++++++++++++++++++++++++++++++++++++++ - msvc/msvc.sln | 20 ++ - msvc/platform.hpp | 59 ++++++ - src/app_thread.cpp | 2 + - src/fd_signaler.cpp | 1 + - src/options.hpp | 2 + - src/pipe.cpp | 4 +- - src/tcp_connecter.cpp | 75 ++++++- - src/tcp_listener.cpp | 1 - - src/tcp_socket.cpp | 74 ++++++- - src/uuid.cpp | 13 +- - src/uuid.hpp | 11 +- - src/zmq_connecter.cpp | 2 +- + include/zmq.h | 5 +- + msvc/libzmq/libzmq.vcproj | 520 +++++++++++++++++++++++++++++++++++++++++++++ + msvc/msvc.sln | 20 ++ + msvc/platform.hpp | 59 +++++ + src/app_thread.cpp | 2 + + src/fd_signaler.cpp | 1 + + src/options.hpp | 2 + + src/pipe.cpp | 4 +- + src/tcp_connecter.cpp | 75 ++++++- + src/tcp_listener.cpp | 1 - + src/tcp_socket.cpp | 74 ++++++- + src/uuid.cpp | 13 +- + src/uuid.hpp | 11 +- + src/zmq_connecter.cpp | 2 +- 14 files changed, 764 insertions(+), 25 deletions(-) commit 87ccbb9fae0f9234f82f9a9ec6a215f5e73209d3 @@ -26754,13 +34483,13 @@ Ruby binding functional - perf/ruby/local_lat.rb | 66 ++----- - perf/ruby/local_thr.rb | 90 +++------- - perf/ruby/remote_lat.rb | 64 +++---- - perf/ruby/remote_thr.rb | 48 ++--- - ruby/Makefile.am | 2 +- - ruby/rbzmq.cpp | 292 ++++++++++++++++++++++++++++++ - ruby/zmq.cpp | 460 ------------------------------------------------ + perf/ruby/local_lat.rb | 66 ++----- + perf/ruby/local_thr.rb | 90 +++------- + perf/ruby/remote_lat.rb | 64 +++---- + perf/ruby/remote_thr.rb | 48 ++--- + ruby/Makefile.am | 2 +- + ruby/rbzmq.cpp | 292 ++++++++++++++++++++++++++++++ + ruby/zmq.cpp | 460 ----------------------------------------------- 7 files changed, 382 insertions(+), 640 deletions(-) commit 67253f3186488db93dee23bd9194419f58f0b1d3 @@ -26769,18 +34498,18 @@ Java perf tests added - java/Context.cpp | 15 ++--- - java/Makefile.am | 22 ++------ - java/Socket.cpp | 140 ++++++++++++++++++++++++---------------------- - java/org/zmq/Context.java | 3 + - java/org/zmq/Message.java | 66 ---------------------- - java/org/zmq/Socket.java | 42 +++++++------- - perf/cpp/local_thr.cpp | 2 +- - perf/cpp/remote_lat.cpp | 6 +- - perf/java/local_lat.java | 55 ++++++++++++++++++ - perf/java/local_thr.java | 65 +++++++++++++++++++++ - perf/java/remote_lat.java | 60 ++++++++++++++++++++ - perf/java/remote_thr.java | 53 ++++++++++++++++++ + java/Context.cpp | 15 ++--- + java/Makefile.am | 22 ++----- + java/Socket.cpp | 140 +++++++++++++++++++++++---------------------- + java/org/zmq/Context.java | 3 + + java/org/zmq/Message.java | 66 --------------------- + java/org/zmq/Socket.java | 42 +++++++------- + perf/cpp/local_thr.cpp | 2 +- + perf/cpp/remote_lat.cpp | 6 +- + perf/java/local_lat.java | 55 ++++++++++++++++++ + perf/java/local_thr.java | 65 +++++++++++++++++++++ + perf/java/remote_lat.java | 60 +++++++++++++++++++ + perf/java/remote_thr.java | 53 +++++++++++++++++ 12 files changed, 343 insertions(+), 186 deletions(-) commit 63b56d7fb38624c32111f9188d54b6fefb10a0e5 @@ -26789,9 +34518,9 @@ python perf tests are included into distribution package - configure.in | 3 ++- - perf/Makefile.am | 4 ++-- - perf/python/Makefile.am | 5 +++++ + configure.in | 3 ++- + perf/Makefile.am | 4 ++-- + perf/python/Makefile.am | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) commit 4307baf7bcc71ca91da0175e79cdfbf6cc1ad770 @@ -26800,25 +34529,25 @@ python binding functional - perf/c/local_lat.c | 11 +++++++---- - perf/c/local_thr.c | 10 ++++++---- - perf/c/remote_lat.c | 11 +++++++---- - perf/c/remote_thr.c | 11 +++++++---- - perf/cpp/local_lat.cpp | 8 ++++---- - perf/cpp/local_thr.cpp | 8 ++++---- - perf/cpp/remote_lat.cpp | 8 ++++---- - perf/cpp/remote_thr.cpp | 8 ++++---- - perf/python/local_lat.py | 6 +++--- - perf/python/remote_lat.py | 4 ++-- - perf/python/remote_thr.py | 2 +- - src/app_thread.cpp | 4 +--- - src/dispatcher.cpp | 36 +++++++++++++++++++++++++++++++++++- - src/dispatcher.hpp | 25 ++++++++++++++++++++++--- - src/object.cpp | 5 +++++ - src/object.hpp | 1 + - src/session.cpp | 7 ++++++- - src/socket_base.cpp | 12 +++++++++++- - src/zmq.cpp | 3 +-- + perf/c/local_lat.c | 11 +++++++---- + perf/c/local_thr.c | 10 ++++++---- + perf/c/remote_lat.c | 11 +++++++---- + perf/c/remote_thr.c | 11 +++++++---- + perf/cpp/local_lat.cpp | 8 ++++---- + perf/cpp/local_thr.cpp | 8 ++++---- + perf/cpp/remote_lat.cpp | 8 ++++---- + perf/cpp/remote_thr.cpp | 8 ++++---- + perf/python/local_lat.py | 6 +++--- + perf/python/remote_lat.py | 4 ++-- + perf/python/remote_thr.py | 2 +- + src/app_thread.cpp | 4 +--- + src/dispatcher.cpp | 36 +++++++++++++++++++++++++++++++++++- + src/dispatcher.hpp | 25 ++++++++++++++++++++++--- + src/object.cpp | 5 +++++ + src/object.hpp | 1 + + src/session.cpp | 7 ++++++- + src/socket_base.cpp | 12 +++++++++++- + src/zmq.cpp | 3 +-- 19 files changed, 131 insertions(+), 49 deletions(-) commit 450b31c3b263ee6ceea27517a2a969d0c74bcd7e @@ -26827,7 +34556,7 @@ bug in python binding fixed - python/pyzmq.cpp | 25 ++++++++----------------- + python/pyzmq.cpp | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) commit 103cbee6a509e55ff5def82eb5ec3ef7feb319a3 @@ -26836,11 +34565,11 @@ couple of bugs fixed - src/Makefile.am | 6 +++++- - src/tcp_socket.cpp | 2 +- - src/zmq_connecter_init.cpp | 1 - - src/zmq_engine.cpp | 7 ++----- - src/zmq_listener_init.cpp | 3 ++- + src/Makefile.am | 6 +++++- + src/tcp_socket.cpp | 2 +- + src/zmq_connecter_init.cpp | 1 - + src/zmq_engine.cpp | 7 ++----- + src/zmq_listener_init.cpp | 3 ++- 5 files changed, 10 insertions(+), 9 deletions(-) commit 4914e5c9d192ac6763e5da6fa28ea503ee769bf0 @@ -26849,9 +34578,9 @@ O(1) socket removal - src/app_thread.cpp | 12 ++++++------ - src/socket_base.cpp | 14 +++++++++++++- - src/socket_base.hpp | 7 +++++++ + src/app_thread.cpp | 12 ++++++------ + src/socket_base.cpp | 14 +++++++++++++- + src/socket_base.hpp | 7 +++++++ 3 files changed, 26 insertions(+), 7 deletions(-) commit f92de9b2a9ad73fd7cd966e65b5a06b725e779fc @@ -26860,13 +34589,13 @@ bug during terminal shutdown fixed - perf/c/local_lat.c | 13 +++++++++---- - perf/c/local_thr.c | 5 ++++- - perf/c/remote_lat.c | 15 ++++++++++----- - perf/c/remote_thr.c | 3 +++ - perf/cpp/local_thr.cpp | 2 +- - perf/cpp/remote_lat.cpp | 2 +- - src/session.cpp | 18 +++++++++++++----- + perf/c/local_lat.c | 13 +++++++++---- + perf/c/local_thr.c | 5 ++++- + perf/c/remote_lat.c | 15 ++++++++++----- + perf/c/remote_thr.c | 3 +++ + perf/cpp/local_thr.cpp | 2 +- + perf/cpp/remote_lat.cpp | 2 +- + src/session.cpp | 18 +++++++++++++----- 7 files changed, 41 insertions(+), 17 deletions(-) commit 702fdbb5dd6a83e7f656e8d1190e695ebb636765 @@ -26875,7 +34604,7 @@ messages that may have been received in the init phase are flushed immediately after engine is plugged in - src/zmq_engine.cpp | 3 +++ + src/zmq_engine.cpp | 3 +++ 1 file changed, 3 insertions(+) commit 75a5a8732cd5be1bb3bff608e352bf4ac624ffd4 @@ -26884,9 +34613,9 @@ --disable-shared & C perf tests: a better way - configure.in | 1 + - perf/c/Makefile.am | 8 ++++---- - src/platform.hpp.in | 3 +++ + configure.in | 1 + + perf/c/Makefile.am | 8 ++++---- + src/platform.hpp.in | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) commit 947b46319314dfab0e545282e9ccfc708d6f57e3 @@ -26895,7 +34624,7 @@ building C perf tests with --disable-shared fixed - perf/c/Makefile.am | 8 ++++---- + perf/c/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) commit 5e08a89d1c0edf44e15f262dd0f27a1c03bcd699 @@ -26911,19 +34640,19 @@ python extension & perf tests - include/zmq.h | 6 +- - perf/c/local_thr.c | 6 +- - perf/cpp/local_thr.cpp | 5 +- - perf/python/local_lat.py | 42 +-- - perf/python/local_thr.py | 44 +-- - perf/python/remote_lat.py | 43 +-- - perf/python/remote_thr.py | 17 +- - python/pyzmq.cpp | 924 +++++++++++++++++----------------------------- - src/i_endpoint.hpp | 2 + - src/session.cpp | 29 +- - src/session.hpp | 13 +- - src/socket_base.cpp | 30 +- - src/socket_base.hpp | 2 + + include/zmq.h | 6 +- + perf/c/local_thr.c | 6 +- + perf/cpp/local_thr.cpp | 5 +- + perf/python/local_lat.py | 42 +-- + perf/python/local_thr.py | 44 +-- + perf/python/remote_lat.py | 43 +-- + perf/python/remote_thr.py | 17 +- + python/pyzmq.cpp | 924 ++++++++++++++++----------------------------- + src/i_endpoint.hpp | 2 + + src/session.cpp | 29 +- + src/session.hpp | 13 +- + src/socket_base.cpp | 30 +- + src/socket_base.hpp | 2 + 13 files changed, 452 insertions(+), 711 deletions(-) commit 1f06d99a0f563fdc32e9c00392f9875ba3009593 @@ -26932,15 +34661,15 @@ Add Java binding - Makefile.am | 8 +- - configure.in | 54 ++++++++- - java/Context.cpp | 92 ++++++++++++++++ - java/Makefile.am | 72 ++++++++++++ - java/Message.cpp | 138 +++++++++++++++++++++++ - java/Socket.cpp | 276 ++++++++++++++++++++++++++++++++++++++++++++++ - java/org/zmq/Context.java | 47 ++++++++ - java/org/zmq/Message.java | 66 +++++++++++ - java/org/zmq/Socket.java | 141 +++++++++++++++++++++++ + Makefile.am | 8 +- + configure.in | 54 ++++++++- + java/Context.cpp | 92 +++++++++++++++ + java/Makefile.am | 72 ++++++++++++ + java/Message.cpp | 138 +++++++++++++++++++++++ + java/Socket.cpp | 276 +++++++++++++++++++++++++++++++++++++++++++++ + java/org/zmq/Context.java | 47 ++++++++ + java/org/zmq/Message.java | 66 +++++++++++ + java/org/zmq/Socket.java | 141 +++++++++++++++++++++++ 9 files changed, 891 insertions(+), 3 deletions(-) commit 0aacee389fdb553ef9925d0135eefcb501a67726 @@ -26952,8 +34681,8 @@ Fix simple_semaphore to follow POSIX threads convention for reporting errors. - src/err.hpp | 9 +++++---- - src/simple_semaphore.hpp | 12 ++++++------ + src/err.hpp | 9 +++++---- + src/simple_semaphore.hpp | 12 ++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) commit 72fdf47d16c8d3ecd9da657b4649978e414d775c @@ -26962,10 +34691,10 @@ python perf tests added - perf/python/local_lat.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++ - perf/python/local_thr.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++ - perf/python/remote_lat.py | 59 ++++++++++++++++++++++++++++++++++++++++ - perf/python/remote_thr.py | 50 ++++++++++++++++++++++++++++++++++ + perf/python/local_lat.py | 67 ++++++++++++++++++++++++++++++++++++++++++++ + perf/python/local_thr.py | 68 +++++++++++++++++++++++++++++++++++++++++++++ + perf/python/remote_lat.py | 59 +++++++++++++++++++++++++++++++++++++++ + perf/python/remote_thr.py | 50 +++++++++++++++++++++++++++++++++ 4 files changed, 244 insertions(+) commit b6d345f4a6402cf2e831a8b9d113f036b394a0bc @@ -26974,10 +34703,10 @@ Ruby perf tests added - perf/ruby/local_lat.rb | 75 +++++++++++++++++++++++++++++++++++++++++ - perf/ruby/local_thr.rb | 90 +++++++++++++++++++++++++++++++++++++++++++++++++ - perf/ruby/remote_lat.rb | 61 +++++++++++++++++++++++++++++++++ - perf/ruby/remote_thr.rb | 55 ++++++++++++++++++++++++++++++ + perf/ruby/local_lat.rb | 75 +++++++++++++++++++++++++++++++++++++++ + perf/ruby/local_thr.rb | 90 +++++++++++++++++++++++++++++++++++++++++++++++ + perf/ruby/remote_lat.rb | 61 ++++++++++++++++++++++++++++++++ + perf/ruby/remote_thr.rb | 55 +++++++++++++++++++++++++++++ 4 files changed, 281 insertions(+) commit 314deb61851a0ddc37228d24e9f4eb106461370a @@ -26986,20 +34715,20 @@ build system for perf/C and perf/C++ - Makefile.am | 4 ++-- - configure.in | 3 ++- - include/zmq.h | 24 ++++++++++++------------ - perf/Makefile.am | 2 ++ - perf/c/Makefile.am | 20 ++++++++++++++++++++ - perf/c/local_lat.c | 2 +- - perf/c/local_thr.c | 19 ++++++++++--------- - perf/c/remote_lat.c | 7 +++---- - perf/c/remote_thr.c | 4 ++-- - perf/cpp/Makefile.am | 20 ++++++++++++++++++++ - perf/cpp/local_lat.cpp | 3 ++- - perf/cpp/local_thr.cpp | 10 ++++++---- - perf/cpp/remote_lat.cpp | 3 ++- - perf/cpp/remote_thr.cpp | 3 ++- + Makefile.am | 4 ++-- + configure.in | 3 ++- + include/zmq.h | 24 ++++++++++++------------ + perf/Makefile.am | 2 ++ + perf/c/Makefile.am | 20 ++++++++++++++++++++ + perf/c/local_lat.c | 2 +- + perf/c/local_thr.c | 19 ++++++++++--------- + perf/c/remote_lat.c | 7 +++---- + perf/c/remote_thr.c | 4 ++-- + perf/cpp/Makefile.am | 20 ++++++++++++++++++++ + perf/cpp/local_lat.cpp | 3 ++- + perf/cpp/local_thr.cpp | 10 ++++++---- + perf/cpp/remote_lat.cpp | 3 ++- + perf/cpp/remote_thr.cpp | 3 ++- 14 files changed, 86 insertions(+), 38 deletions(-) commit 6c36673949b2256158e8914119d218dce311c585 @@ -27008,10 +34737,10 @@ C perf tests added - perf/c/local_lat.c | 70 +++++++++++++++++++++++++++++++++++++++++ - perf/c/local_thr.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/c/remote_lat.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/c/remote_thr.c | 67 +++++++++++++++++++++++++++++++++++++++ + perf/c/local_lat.c | 70 +++++++++++++++++++++++++++++++++++++++ + perf/c/local_thr.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++ + perf/c/remote_lat.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ + perf/c/remote_thr.c | 67 +++++++++++++++++++++++++++++++++++++ 4 files changed, 318 insertions(+) commit 4617fd9e9c50a9fa3a8cbf3b25e6061e3a8f10c8 @@ -27020,11 +34749,11 @@ c++ perf tests added - .gitignore | 12 ++++++++- - perf/cpp/local_lat.cpp | 52 +++++++++++++++++++++++++++++++++++ - perf/cpp/local_thr.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ - perf/cpp/remote_lat.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++ - perf/cpp/remote_thr.cpp | 50 ++++++++++++++++++++++++++++++++++ + .gitignore | 12 +++++++- + perf/cpp/local_lat.cpp | 52 ++++++++++++++++++++++++++++++++++ + perf/cpp/local_thr.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++ + perf/cpp/remote_lat.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++ + perf/cpp/remote_thr.cpp | 50 ++++++++++++++++++++++++++++++++ 5 files changed, 254 insertions(+), 1 deletion(-) commit 176879e5bbce6115ff5741f2426f689bda312109 @@ -27033,24 +34762,24 @@ engine virtualised; chatroom example removed - .gitignore | 5 ++++ - Makefile.am | 5 ++-- - configure.in | 3 +- - examples/Makefile.am | 2 -- - examples/chat/Makefile.am | 15 ---------- - examples/chat/chatroom.cpp | 74 ---------------------------------------------- - examples/chat/display.cpp | 55 ---------------------------------- - examples/chat/prompt.cpp | 61 -------------------------------------- - src/Makefile.am | 1 + - src/command.hpp | 2 +- - src/i_engine.hpp | 43 +++++++++++++++++++++++++++ - src/object.cpp | 5 ++-- - src/object.hpp | 4 +-- - src/owned.cpp | 2 +- - src/owned.hpp | 2 +- - src/session.cpp | 4 +-- - src/session.hpp | 4 +-- - src/zmq_engine.hpp | 9 +++--- + .gitignore | 5 +++ + Makefile.am | 5 ++- + configure.in | 3 +- + examples/Makefile.am | 2 -- + examples/chat/Makefile.am | 15 --------- + examples/chat/chatroom.cpp | 74 -------------------------------------------- + examples/chat/display.cpp | 55 -------------------------------- + examples/chat/prompt.cpp | 61 ------------------------------------ + src/Makefile.am | 1 + + src/command.hpp | 2 +- + src/i_engine.hpp | 43 +++++++++++++++++++++++++ + src/object.cpp | 5 ++- + src/object.hpp | 4 +-- + src/owned.cpp | 2 +- + src/owned.hpp | 2 +- + src/session.cpp | 4 +-- + src/session.hpp | 4 +-- + src/zmq_engine.hpp | 9 +++--- 18 files changed, 67 insertions(+), 229 deletions(-) commit 1d650934e477be32db9a3c64de077deed0416689 @@ -27059,12 +34788,12 @@ Ruby bidning added - Makefile.am | 8 +- - configure.in | 57 ++++++- - ruby/Makefile.am | 11 ++ - ruby/extconf.rb | 24 +++ - ruby/zmq.cpp | 460 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/platform.hpp.in | 3 + + Makefile.am | 8 +- + configure.in | 57 ++++++- + ruby/Makefile.am | 11 ++ + ruby/extconf.rb | 24 +++ + ruby/zmq.cpp | 460 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/platform.hpp.in | 3 + 6 files changed, 559 insertions(+), 4 deletions(-) commit 3666a49022f84b3d1888f630a78f3f8f28aadde1 @@ -27073,10 +34802,10 @@ bug in identifying current thread fixed - src/app_thread.cpp | 8 +++++--- - src/app_thread.hpp | 9 ++++++--- - src/thread.cpp | 20 ++++++++++++++++++++ - src/thread.hpp | 9 +++++++++ + src/app_thread.cpp | 8 +++++--- + src/app_thread.hpp | 9 ++++++--- + src/thread.cpp | 20 ++++++++++++++++++++ + src/thread.hpp | 9 +++++++++ 4 files changed, 40 insertions(+), 6 deletions(-) commit 6996ef6f1a0a50a754608df9444e425d0900b143 @@ -27085,11 +34814,11 @@ improved error handling - include/zmq.hpp | 127 ++++++++++++++++++++++----------------------------- - src/ip.cpp | 3 +- - src/tcp_listener.cpp | 9 ++-- - src/tcp_listener.hpp | 5 +- - src/zmq_listener.cpp | 4 -- + include/zmq.hpp | 127 +++++++++++++++++++++----------------------------- + src/ip.cpp | 3 +- + src/tcp_listener.cpp | 9 ++-- + src/tcp_listener.hpp | 5 +- + src/zmq_listener.cpp | 4 -- 5 files changed, 61 insertions(+), 87 deletions(-) commit cb09c6951e2c4405318b422a1f9213af3e4b6b8a @@ -27098,18 +34827,18 @@ pipe deallocation added - src/command.hpp | 11 ++++++++ - src/dispatcher.cpp | 20 +++++++++++++ - src/dispatcher.hpp | 18 ++++++++++++ - src/i_endpoint.hpp | 2 ++ - src/object.cpp | 44 +++++++++++++++++++++++++++++ - src/object.hpp | 8 ++++++ - src/pipe.cpp | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++-- - src/pipe.hpp | 30 +++++++++++++++++--- - src/session.cpp | 18 ++++++++++++ - src/session.hpp | 2 ++ - src/socket_base.cpp | 80 ++++++++++++++++++++++++++++++++++++++-------------- - src/socket_base.hpp | 13 +++------ + src/command.hpp | 11 +++++++ + src/dispatcher.cpp | 20 +++++++++++++ + src/dispatcher.hpp | 18 ++++++++++++ + src/i_endpoint.hpp | 2 ++ + src/object.cpp | 44 ++++++++++++++++++++++++++++ + src/object.hpp | 8 +++++ + src/pipe.cpp | 81 +++++++++++++++++++++++++++++++++++++++++++++++++-- + src/pipe.hpp | 30 ++++++++++++++++--- + src/session.cpp | 18 ++++++++++++ + src/session.hpp | 2 ++ + src/socket_base.cpp | 80 +++++++++++++++++++++++++++++++++++++------------- + src/socket_base.hpp | 13 +++------ 12 files changed, 290 insertions(+), 37 deletions(-) commit 2dd501651592baa7f9e49f52e1321ae2b9b4e126 @@ -27118,16 +34847,16 @@ multiple bugs fixed - src/i_inout.hpp | 8 ++++++++ - src/pipe.hpp | 3 ++- - src/session.cpp | 13 ++++++++++++- - src/session.hpp | 1 + - src/zmq_connecter_init.cpp | 6 ++++++ - src/zmq_connecter_init.hpp | 1 + - src/zmq_encoder.cpp | 1 - - src/zmq_engine.cpp | 5 ++++- - src/zmq_listener_init.cpp | 33 ++++++++++++++++++++++----------- - src/zmq_listener_init.hpp | 5 +++++ + src/i_inout.hpp | 8 ++++++++ + src/pipe.hpp | 3 ++- + src/session.cpp | 13 ++++++++++++- + src/session.hpp | 1 + + src/zmq_connecter_init.cpp | 6 ++++++ + src/zmq_connecter_init.hpp | 1 + + src/zmq_encoder.cpp | 1 - + src/zmq_engine.cpp | 5 ++++- + src/zmq_listener_init.cpp | 33 ++++++++++++++++++++++----------- + src/zmq_listener_init.hpp | 5 +++++ 10 files changed, 61 insertions(+), 15 deletions(-) commit 67194267f89d63391288600f127205a2b7a8a5ae @@ -27143,27 +34872,27 @@ pipes added - include/zmq.h | 2 +- - src/Makefile.am | 2 + - src/app_thread.cpp | 26 +++--- - src/app_thread.hpp | 4 +- - src/command.hpp | 11 ++- - src/config.hpp | 8 ++ - src/i_endpoint.hpp | 33 +++++++ - src/object.cpp | 30 +++++- - src/object.hpp | 9 +- - src/pipe.cpp | 112 +++++++++++++++++++++++ - src/pipe.hpp | 102 +++++++++++++++++++++ - src/session.cpp | 56 +++++++++++- - src/session.hpp | 24 ++++- - src/socket_base.cpp | 227 ++++++++++++++++++++++++++++++++++++++++++++-- - src/socket_base.hpp | 42 ++++++++- - src/ypipe.hpp | 22 ++--- - src/yqueue.hpp | 2 +- - src/zmq_encoder.cpp | 4 +- - src/zmq_engine.cpp | 7 +- - src/zmq_engine.hpp | 4 + - src/zmq_listener_init.cpp | 3 +- + include/zmq.h | 2 +- + src/Makefile.am | 2 + + src/app_thread.cpp | 26 +++--- + src/app_thread.hpp | 4 +- + src/command.hpp | 11 ++- + src/config.hpp | 8 ++ + src/i_endpoint.hpp | 33 +++++++ + src/object.cpp | 30 +++++- + src/object.hpp | 9 +- + src/pipe.cpp | 112 ++++++++++++++++++++++ + src/pipe.hpp | 102 ++++++++++++++++++++ + src/session.cpp | 56 ++++++++++- + src/session.hpp | 24 ++++- + src/socket_base.cpp | 227 +++++++++++++++++++++++++++++++++++++++++++-- + src/socket_base.hpp | 42 ++++++++- + src/ypipe.hpp | 22 ++--- + src/yqueue.hpp | 2 +- + src/zmq_encoder.cpp | 4 +- + src/zmq_engine.cpp | 7 +- + src/zmq_engine.hpp | 4 + + src/zmq_listener_init.cpp | 3 +- 21 files changed, 680 insertions(+), 50 deletions(-) commit 67c69f952c956fb151c654726b4fc67e122722ff @@ -27172,7 +34901,7 @@ make configure respect --with-python option - configure.in | 4 ++-- + configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit aacdb7a454686bfac93164d0e67e785658d48a3c @@ -27181,7 +34910,7 @@ python build fix - Makefile.am | 9 +++++++-- + Makefile.am | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) commit 77bc3790fa9e781ad26ec881175d22d807e16acf @@ -27190,11 +34919,11 @@ python extension added - Makefile.am | 4 +- - configure.in | 59 ++++- - python/Makefile.am | 7 + - python/pyzmq.cpp | 756 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - python/setup.py.in | 14 + + Makefile.am | 4 +- + configure.in | 59 +++- + python/Makefile.am | 7 + + python/pyzmq.cpp | 756 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + python/setup.py.in | 14 + 5 files changed, 837 insertions(+), 3 deletions(-) commit 6be4b0143793ab5ceebc5d9d6bbe5c2f1333a0d2 @@ -27203,33 +34932,33 @@ session management implemented - include/zmq.h | 28 ++++++------ - include/zmq.hpp | 11 +++-- - src/Makefile.am | 10 ++-- - src/i_inout.hpp | 4 +- - src/msg.hpp | 49 -------------------- - src/msg_content.hpp | 50 ++++++++++++++++++++ - src/object.cpp | 5 +- - src/object.hpp | 4 ++ - src/owned.cpp | 10 +++- - src/owned.hpp | 4 ++ - src/pipe.hpp | 2 +- - src/session.cpp | 39 ++++++++++++---- - src/session.hpp | 15 ++++-- - src/socket_base.cpp | 77 +++++++++++++++++++++---------- - src/socket_base.hpp | 24 ++++++---- - src/zmq.cpp | 111 +++++++++++++++++++++++--------------------- - src/zmq_connecter.cpp | 11 +++-- - src/zmq_connecter.hpp | 10 ++-- - src/zmq_connecter_init.cpp | 94 +++++++++++++++++++++++++++++++++++++ - src/zmq_connecter_init.hpp | 75 ++++++++++++++++++++++++++++++ - src/zmq_decoder.hpp | 2 +- - src/zmq_encoder.hpp | 2 +- - src/zmq_init.cpp | 112 --------------------------------------------- - src/zmq_init.hpp | 82 --------------------------------- - src/zmq_listener.cpp | 5 +- - src/zmq_listener_init.cpp | 96 ++++++++++++++++++++++++++++++++++++++ - src/zmq_listener_init.hpp | 71 ++++++++++++++++++++++++++++ + include/zmq.h | 28 +++++------ + include/zmq.hpp | 11 +++-- + src/Makefile.am | 10 ++-- + src/i_inout.hpp | 4 +- + src/msg.hpp | 49 ------------------- + src/msg_content.hpp | 50 ++++++++++++++++++++ + src/object.cpp | 5 +- + src/object.hpp | 4 ++ + src/owned.cpp | 10 +++- + src/owned.hpp | 4 ++ + src/pipe.hpp | 2 +- + src/session.cpp | 39 +++++++++++---- + src/session.hpp | 15 ++++-- + src/socket_base.cpp | 77 ++++++++++++++++++++---------- + src/socket_base.hpp | 24 ++++++---- + src/zmq.cpp | 111 +++++++++++++++++++++++-------------------- + src/zmq_connecter.cpp | 11 +++-- + src/zmq_connecter.hpp | 10 ++-- + src/zmq_connecter_init.cpp | 94 +++++++++++++++++++++++++++++++++++++ + src/zmq_connecter_init.hpp | 75 +++++++++++++++++++++++++++++ + src/zmq_decoder.hpp | 2 +- + src/zmq_encoder.hpp | 2 +- + src/zmq_init.cpp | 112 -------------------------------------------- + src/zmq_init.hpp | 82 -------------------------------- + src/zmq_listener.cpp | 5 +- + src/zmq_listener_init.cpp | 96 +++++++++++++++++++++++++++++++++++++ + src/zmq_listener_init.hpp | 71 ++++++++++++++++++++++++++++ 27 files changed, 621 insertions(+), 382 deletions(-) commit a801b6d8b37557ccfb53030dca22f89a3f99b59c @@ -27238,22 +34967,22 @@ couple of bugs in shutdown mechanism fixed - src/command.hpp | 11 ++++++++--- - src/object.cpp | 43 ++++++++++++++++++++++++++++++++++------- - src/object.hpp | 19 +++++++++++------- - src/owned.cpp | 53 +++++++++++++++++++++++++-------------------------- - src/owned.hpp | 33 ++++++++++++++++++++++---------- - src/session.cpp | 5 ++++- - src/session.hpp | 2 +- - src/socket_base.cpp | 40 ++++++++++++++++++++++++++++++++++++-- - src/socket_base.hpp | 26 ++++++++++++++++++++++--- - src/zmq_connecter.cpp | 4 ++-- - src/zmq_connecter.hpp | 2 +- - src/zmq_engine.cpp | 3 +-- - src/zmq_init.cpp | 8 +++++--- - src/zmq_init.hpp | 2 +- - src/zmq_listener.cpp | 4 ++-- - src/zmq_listener.hpp | 2 +- + src/command.hpp | 11 +++++++--- + src/object.cpp | 43 ++++++++++++++++++++++++++++++++------- + src/object.hpp | 19 +++++++++++------- + src/owned.cpp | 53 ++++++++++++++++++++++++------------------------- + src/owned.hpp | 33 ++++++++++++++++++++---------- + src/session.cpp | 5 ++++- + src/session.hpp | 2 +- + src/socket_base.cpp | 40 +++++++++++++++++++++++++++++++++++-- + src/socket_base.hpp | 26 +++++++++++++++++++++--- + src/zmq_connecter.cpp | 4 ++-- + src/zmq_connecter.hpp | 2 +- + src/zmq_engine.cpp | 3 +-- + src/zmq_init.cpp | 8 +++++--- + src/zmq_init.hpp | 2 +- + src/zmq_listener.cpp | 4 ++-- + src/zmq_listener.hpp | 2 +- 16 files changed, 184 insertions(+), 73 deletions(-) commit 131f2e309668d1e64cfcb4aeb869665d8018bcfe @@ -27262,12 +34991,12 @@ subscribe API removed - examples/chat/display.cpp | 1 - - include/zmq.h | 3 --- - include/zmq.hpp | 6 ------ - src/socket_base.cpp | 5 ----- - src/socket_base.hpp | 1 - - src/zmq.cpp | 5 ----- + examples/chat/display.cpp | 1 - + include/zmq.h | 3 --- + include/zmq.hpp | 6 ------ + src/socket_base.cpp | 5 ----- + src/socket_base.hpp | 1 - + src/zmq.cpp | 5 ----- 6 files changed, 21 deletions(-) commit 059beca59d39d90a8ee0e1b07f840994962ea89e @@ -27276,32 +35005,32 @@ listener/connecter/init/session added - include/zmq.h | 2 +- - src/Makefile.am | 13 +++ - src/atomic.hpp | 310 -------------------------------------------------- - src/i_inout.hpp | 37 ++++++ - src/io_object.cpp | 47 +------- - src/io_object.hpp | 50 +++----- - src/options.cpp | 29 +++++ - src/options.hpp | 42 +++++++ - src/owned.cpp | 74 ++++++++++++ - src/owned.hpp | 82 +++++++++++++ - src/session.cpp | 58 ++++++++++ - src/session.hpp | 57 ++++++++++ - src/socket_base.cpp | 29 ++--- - src/socket_base.hpp | 8 +- - src/zmq_connecter.cpp | 36 +++--- - src/zmq_connecter.hpp | 17 ++- - src/zmq_decoder.cpp | 78 +++++++++++++ - src/zmq_decoder.hpp | 57 ++++++++++ - src/zmq_encoder.cpp | 76 +++++++++++++ - src/zmq_encoder.hpp | 55 +++++++++ - src/zmq_engine.cpp | 107 ++++++++++++++++- - src/zmq_engine.hpp | 33 +++++- - src/zmq_init.cpp | 110 ++++++++++++++++++ - src/zmq_init.hpp | 82 +++++++++++++ - src/zmq_listener.cpp | 25 ++-- - src/zmq_listener.hpp | 11 +- + include/zmq.h | 2 +- + src/Makefile.am | 13 +++ + src/atomic.hpp | 310 ------------------------------------------------- + src/i_inout.hpp | 37 ++++++ + src/io_object.cpp | 47 +------- + src/io_object.hpp | 50 +++----- + src/options.cpp | 29 +++++ + src/options.hpp | 42 +++++++ + src/owned.cpp | 74 ++++++++++++ + src/owned.hpp | 82 +++++++++++++ + src/session.cpp | 58 +++++++++ + src/session.hpp | 57 +++++++++ + src/socket_base.cpp | 29 ++--- + src/socket_base.hpp | 8 +- + src/zmq_connecter.cpp | 36 +++--- + src/zmq_connecter.hpp | 17 ++- + src/zmq_decoder.cpp | 78 +++++++++++++ + src/zmq_decoder.hpp | 57 +++++++++ + src/zmq_encoder.cpp | 76 ++++++++++++ + src/zmq_encoder.hpp | 55 +++++++++ + src/zmq_engine.cpp | 107 ++++++++++++++++- + src/zmq_engine.hpp | 33 +++++- + src/zmq_init.cpp | 110 ++++++++++++++++++ + src/zmq_init.hpp | 82 +++++++++++++ + src/zmq_listener.cpp | 25 ++-- + src/zmq_listener.hpp | 11 +- 26 files changed, 1070 insertions(+), 455 deletions(-) commit bda766ab401b6c565fe9c2d0bc80c11bbbe84488 @@ -27310,15 +35039,15 @@ redundant interface (i_api) removed - src/Makefile.am | 2 -- - src/app_thread.cpp | 5 ++--- - src/app_thread.hpp | 6 +++--- - src/dispatcher.cpp | 3 +-- - src/dispatcher.hpp | 2 +- - src/i_api.hpp | 43 ------------------------------------ - src/i_poll_events.hpp | 60 +++++++++++++++++++++++++-------------------------- - src/socket_base.hpp | 21 +++++++++--------- - src/zmq.cpp | 19 ++++++++-------- + src/Makefile.am | 2 -- + src/app_thread.cpp | 5 ++--- + src/app_thread.hpp | 6 ++--- + src/dispatcher.cpp | 3 +-- + src/dispatcher.hpp | 2 +- + src/i_api.hpp | 43 ----------------------------------- + src/i_poll_events.hpp | 60 ++++++++++++++++++++++++------------------------- + src/socket_base.hpp | 21 +++++++++-------- + src/zmq.cpp | 19 ++++++++-------- 9 files changed, 57 insertions(+), 104 deletions(-) commit 9f1f823b7b69ced56bdb0416feef71230cc7fd55 @@ -27327,16 +35056,16 @@ zmq_listener/zmq_connecter implemented - src/Makefile.am | 2 + - src/io_object.cpp | 13 +++--- - src/io_object.hpp | 18 +++++---- - src/socket_base.cpp | 12 +++++- - src/tcp_connecter.cpp | 24 ++++++----- - src/tcp_connecter.hpp | 9 ++++- - src/zmq_connecter.cpp | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++ - src/zmq_connecter.hpp | 70 ++++++++++++++++++++++++++++++++ - src/zmq_listener.cpp | 9 +++-- - src/zmq_listener.hpp | 5 +-- + src/Makefile.am | 2 + + src/io_object.cpp | 13 +++--- + src/io_object.hpp | 18 ++++---- + src/socket_base.cpp | 12 +++++- + src/tcp_connecter.cpp | 24 ++++++----- + src/tcp_connecter.hpp | 9 +++- + src/zmq_connecter.cpp | 110 +++++++++++++++++++++++++++++++++++++++++++++++++ + src/zmq_connecter.hpp | 70 +++++++++++++++++++++++++++++++ + src/zmq_listener.cpp | 9 ++-- + src/zmq_listener.hpp | 5 +-- 10 files changed, 239 insertions(+), 33 deletions(-) commit 3147ff8523d9736039c4582f5f62c323b23940d1 @@ -27345,9 +35074,9 @@ getsockopt implemented - include/zmq.h | 1 + - src/socket_base.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++++---- - src/socket_base.hpp | 10 ++++++++ + include/zmq.h | 1 + + src/socket_base.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++---- + src/socket_base.hpp | 10 ++++++++ 3 files changed, 75 insertions(+), 5 deletions(-) commit bde396f1561fb5e57e6e413a40d904586e186d42 @@ -27356,13 +35085,13 @@ fix to 3-thread synchronisation algorithm - src/io_object.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++- - src/io_object.hpp | 21 ++++++++++++++++++++- - src/socket_base.cpp | 6 +++++- - src/tcp_listener.cpp | 19 +++++++++++-------- - src/tcp_listener.hpp | 11 +++++++++-- - src/zmq_listener.cpp | 36 +++++++++++++++++++++++++++++++++++- - src/zmq_listener.hpp | 15 +++++++++++++++ + src/io_object.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++- + src/io_object.hpp | 21 ++++++++++++++++++++- + src/socket_base.cpp | 6 +++++- + src/tcp_listener.cpp | 19 +++++++++++-------- + src/tcp_listener.hpp | 11 +++++++++-- + src/zmq_listener.cpp | 36 +++++++++++++++++++++++++++++++++++- + src/zmq_listener.hpp | 15 +++++++++++++++ 7 files changed, 142 insertions(+), 14 deletions(-) commit 5b5b513330e96e3e08d0c2c60d03044091976420 @@ -27371,21 +35100,21 @@ socket options interface modeled as in BSD sockets - include/zmq.h | 28 ++++++++++++++-------------- - include/zmq.hpp | 14 ++++++++++---- - src/Makefile.am | 2 ++ - src/epoll.cpp | 4 +++- - src/i_api.hpp | 6 ++++-- - src/io_object.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++++- - src/io_object.hpp | 23 ++++++++++++++++++----- - src/io_thread.hpp | 2 +- - src/socket_base.cpp | 33 ++++++++++++++++++++------------- - src/socket_base.hpp | 9 +++++---- - src/zmq.cpp | 13 +++++++++---- - src/zmq_engine.cpp | 35 +++++++++++++++++++++++++++++++++++ - src/zmq_engine.hpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - src/zmq_listener.cpp | 9 +++++++-- - src/zmq_listener.hpp | 5 +++-- + include/zmq.h | 28 ++++++++++++++-------------- + include/zmq.hpp | 14 ++++++++++---- + src/Makefile.am | 2 ++ + src/epoll.cpp | 4 +++- + src/i_api.hpp | 6 ++++-- + src/io_object.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++++- + src/io_object.hpp | 23 ++++++++++++++++++----- + src/io_thread.hpp | 2 +- + src/socket_base.cpp | 33 ++++++++++++++++++++------------- + src/socket_base.hpp | 9 +++++---- + src/zmq.cpp | 13 +++++++++---- + src/zmq_engine.cpp | 35 +++++++++++++++++++++++++++++++++++ + src/zmq_engine.hpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + src/zmq_listener.cpp | 9 +++++++-- + src/zmq_listener.hpp | 5 +++-- 15 files changed, 222 insertions(+), 53 deletions(-) commit a8b410e66c3c75809c8e9c01dd3e35c579f02347 @@ -27394,30 +35123,30 @@ lockfree interaction patter for 3 theads implemented - include/zmq.hpp | 8 +-- - src/Makefile.am | 14 +++-- - src/app_thread.cpp | 37 +++++++++--- - src/app_thread.hpp | 13 +++-- - src/command.hpp | 59 ++++++++----------- - src/context.cpp | 153 ------------------------------------------------- - src/context.hpp | 122 --------------------------------------- - src/dispatcher.cpp | 149 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/dispatcher.hpp | 122 +++++++++++++++++++++++++++++++++++++++ - src/err.hpp | 6 ++ - src/i_api.hpp | 34 +++++------ - src/i_socket.hpp | 36 ------------ - src/io_object.cpp | 41 +++++++++++++ - src/io_object.hpp | 62 ++++++++++++++++++++ - src/io_thread.cpp | 8 +-- - src/io_thread.hpp | 2 +- - src/mutex.hpp | 30 +++++----- - src/object.cpp | 158 +++++++++++++++------------------------------------ - src/object.hpp | 42 +++++--------- - src/socket_base.cpp | 129 +++++++++++++++++++++++++++++++++++++++++ - src/socket_base.hpp | 72 +++++++++++++++++++++++ - src/zmq.cpp | 19 ++++--- - src/zmq_listener.cpp | 35 ++++++++++++ - src/zmq_listener.hpp | 46 +++++++++++++++ + include/zmq.hpp | 8 +-- + src/Makefile.am | 14 +++-- + src/app_thread.cpp | 37 +++++++++--- + src/app_thread.hpp | 13 +++-- + src/command.hpp | 59 ++++++++----------- + src/context.cpp | 153 ------------------------------------------------ + src/context.hpp | 122 -------------------------------------- + src/dispatcher.cpp | 149 +++++++++++++++++++++++++++++++++++++++++++++++ + src/dispatcher.hpp | 122 ++++++++++++++++++++++++++++++++++++++ + src/err.hpp | 6 ++ + src/i_api.hpp | 34 ++++++----- + src/i_socket.hpp | 36 ------------ + src/io_object.cpp | 41 +++++++++++++ + src/io_object.hpp | 62 ++++++++++++++++++++ + src/io_thread.cpp | 8 +-- + src/io_thread.hpp | 2 +- + src/mutex.hpp | 30 +++++----- + src/object.cpp | 158 +++++++++++++++----------------------------------- + src/object.hpp | 42 +++++--------- + src/socket_base.cpp | 129 +++++++++++++++++++++++++++++++++++++++++ + src/socket_base.hpp | 72 +++++++++++++++++++++++ + src/zmq.cpp | 19 +++--- + src/zmq_listener.cpp | 35 +++++++++++ + src/zmq_listener.hpp | 46 +++++++++++++++ 24 files changed, 849 insertions(+), 548 deletions(-) commit 0b5cc026fbe7ccc6de66907be29471562a2d344d @@ -27426,80 +35155,80 @@ clean up - session/socket/engine stuff removed - src/Makefile.am | 51 +-------- - src/app_thread.cpp | 106 ++---------------- - src/app_thread.hpp | 27 ++--- - src/connecter.cpp | 189 -------------------------------- - src/connecter.hpp | 99 ----------------- - src/context.cpp | 139 +++-------------------- - src/context.hpp | 52 +-------- - src/data_distributor.cpp | 155 -------------------------- - src/data_distributor.hpp | 70 ------------ - src/devpoll.cpp | 9 +- - src/devpoll.hpp | 3 +- - src/dummy_aggregator.cpp | 111 ------------------- - src/dummy_aggregator.hpp | 73 ------------- - src/dummy_distributor.cpp | 85 --------------- - src/dummy_distributor.hpp | 68 ------------ - src/epoll.cpp | 10 +- - src/epoll.hpp | 3 +- - src/fair_aggregator.cpp | 143 ------------------------ - src/fair_aggregator.hpp | 77 ------------- - src/i_api.hpp | 42 +++---- - src/i_demux.hpp | 57 ---------- - src/i_engine.hpp | 53 --------- - src/i_mux.hpp | 60 ---------- - src/i_poller.hpp | 7 +- - src/i_session.hpp | 37 ------- - src/i_socket.hpp | 36 ++++++ - src/i_thread.hpp | 38 ------- - src/io_object.cpp | 37 ------- - src/io_object.hpp | 51 --------- - src/io_thread.cpp | 31 ------ - src/io_thread.hpp | 27 +---- - src/kqueue.cpp | 9 +- - src/kqueue.hpp | 3 +- - src/listener.cpp | 170 ----------------------------- - src/listener.hpp | 110 ------------------- - src/load_balancer.cpp | 130 ---------------------- - src/load_balancer.hpp | 73 ------------- - src/object.cpp | 33 ------ - src/object.hpp | 8 -- - src/p2p.cpp | 29 ----- - src/p2p.hpp | 42 ------- - src/pipe.cpp | 47 -------- - src/pipe.hpp | 23 +--- - src/pipe_reader.cpp | 118 -------------------- - src/pipe_reader.hpp | 89 --------------- - src/pipe_writer.cpp | 120 -------------------- - src/pipe_writer.hpp | 88 --------------- - src/poll.cpp | 13 ++- - src/poll.hpp | 3 +- - src/pub.cpp | 38 ------- - src/pub.hpp | 45 -------- - src/rep.cpp | 29 ----- - src/rep.hpp | 42 ------- - src/req.cpp | 29 ----- - src/req.hpp | 42 ------- - src/safe_object.cpp | 76 ------------- - src/safe_object.hpp | 68 ------------ - src/select.cpp | 13 ++- - src/select.hpp | 2 +- - src/session.cpp | 273 ---------------------------------------------- - src/session.hpp | 107 ------------------ - src/session_stub.cpp | 110 ------------------- - src/session_stub.hpp | 83 -------------- - src/socket_base.cpp | 267 --------------------------------------------- - src/socket_base.hpp | 96 ---------------- - src/sub.cpp | 45 -------- - src/sub.hpp | 46 -------- - src/zmq.cpp | 2 +- - src/zmq_decoder.cpp | 79 -------------- - src/zmq_decoder.hpp | 57 ---------- - src/zmq_encoder.cpp | 75 ------------- - src/zmq_encoder.hpp | 54 --------- - src/zmq_tcp_engine.cpp | 185 ------------------------------- - src/zmq_tcp_engine.hpp | 92 ---------------- + src/Makefile.am | 51 +-------- + src/app_thread.cpp | 106 ++---------------- + src/app_thread.hpp | 27 ++--- + src/connecter.cpp | 189 ------------------------------- + src/connecter.hpp | 99 ---------------- + src/context.cpp | 139 +++-------------------- + src/context.hpp | 52 +-------- + src/data_distributor.cpp | 155 ------------------------- + src/data_distributor.hpp | 70 ------------ + src/devpoll.cpp | 9 +- + src/devpoll.hpp | 3 +- + src/dummy_aggregator.cpp | 111 ------------------ + src/dummy_aggregator.hpp | 73 ------------ + src/dummy_distributor.cpp | 85 -------------- + src/dummy_distributor.hpp | 68 ----------- + src/epoll.cpp | 10 +- + src/epoll.hpp | 3 +- + src/fair_aggregator.cpp | 143 ------------------------ + src/fair_aggregator.hpp | 77 ------------- + src/i_api.hpp | 42 +++---- + src/i_demux.hpp | 57 ---------- + src/i_engine.hpp | 53 --------- + src/i_mux.hpp | 60 ---------- + src/i_poller.hpp | 7 +- + src/i_session.hpp | 37 ------ + src/i_socket.hpp | 36 ++++++ + src/i_thread.hpp | 38 ------- + src/io_object.cpp | 37 ------ + src/io_object.hpp | 51 --------- + src/io_thread.cpp | 31 ----- + src/io_thread.hpp | 27 +---- + src/kqueue.cpp | 9 +- + src/kqueue.hpp | 3 +- + src/listener.cpp | 170 ---------------------------- + src/listener.hpp | 110 ------------------ + src/load_balancer.cpp | 130 --------------------- + src/load_balancer.hpp | 73 ------------ + src/object.cpp | 33 ------ + src/object.hpp | 8 -- + src/p2p.cpp | 29 ----- + src/p2p.hpp | 42 ------- + src/pipe.cpp | 47 -------- + src/pipe.hpp | 23 +--- + src/pipe_reader.cpp | 118 -------------------- + src/pipe_reader.hpp | 89 --------------- + src/pipe_writer.cpp | 120 -------------------- + src/pipe_writer.hpp | 88 --------------- + src/poll.cpp | 13 ++- + src/poll.hpp | 3 +- + src/pub.cpp | 38 ------- + src/pub.hpp | 45 -------- + src/rep.cpp | 29 ----- + src/rep.hpp | 42 ------- + src/req.cpp | 29 ----- + src/req.hpp | 42 ------- + src/safe_object.cpp | 76 ------------- + src/safe_object.hpp | 68 ----------- + src/select.cpp | 13 ++- + src/select.hpp | 2 +- + src/session.cpp | 273 --------------------------------------------- + src/session.hpp | 107 ------------------ + src/session_stub.cpp | 110 ------------------ + src/session_stub.hpp | 83 -------------- + src/socket_base.cpp | 267 -------------------------------------------- + src/socket_base.hpp | 96 ---------------- + src/sub.cpp | 45 -------- + src/sub.hpp | 46 -------- + src/zmq.cpp | 2 +- + src/zmq_decoder.cpp | 79 ------------- + src/zmq_decoder.hpp | 57 ---------- + src/zmq_encoder.cpp | 75 ------------- + src/zmq_encoder.hpp | 54 --------- + src/zmq_tcp_engine.cpp | 185 ------------------------------ + src/zmq_tcp_engine.hpp | 92 --------------- 74 files changed, 131 insertions(+), 4878 deletions(-) commit b8b4acef4c2ba1a169ce84c1fb4c70a5676ebba3 @@ -27508,24 +35237,24 @@ dispatcher renamed to context - src/Makefile.am | 4 +- - src/app_thread.cpp | 8 +- - src/app_thread.hpp | 4 +- - src/context.cpp | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/context.hpp | 170 +++++++++++++++++++++++++++++++++ - src/dispatcher.cpp | 266 ---------------------------------------------------- - src/dispatcher.hpp | 170 --------------------------------- - src/io_thread.cpp | 8 +- - src/io_thread.hpp | 2 +- - src/object.cpp | 26 ++--- - src/object.hpp | 6 +- - src/pipe.hpp | 8 +- - src/pipe_reader.cpp | 2 +- - src/pipe_reader.hpp | 6 +- - src/pipe_writer.hpp | 6 +- - src/safe_object.cpp | 6 +- - src/safe_object.hpp | 2 +- - src/zmq.cpp | 15 ++- + src/Makefile.am | 4 +- + src/app_thread.cpp | 8 +- + src/app_thread.hpp | 4 +- + src/context.cpp | 266 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/context.hpp | 170 ++++++++++++++++++++++++++++++++ + src/dispatcher.cpp | 266 --------------------------------------------------- + src/dispatcher.hpp | 170 -------------------------------- + src/io_thread.cpp | 8 +- + src/io_thread.hpp | 2 +- + src/object.cpp | 26 ++--- + src/object.hpp | 6 +- + src/pipe.hpp | 8 +- + src/pipe_reader.cpp | 2 +- + src/pipe_reader.hpp | 6 +- + src/pipe_writer.hpp | 6 +- + src/safe_object.cpp | 6 +- + src/safe_object.hpp | 2 +- + src/zmq.cpp | 15 ++- 18 files changed, 487 insertions(+), 488 deletions(-) commit 43fa72b7ee6b6d97b84a555ce8902cee855aeb72 @@ -27534,7 +35263,7 @@ C++ binding uses exceptions to signal failure - include/zmq.hpp | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++------- + include/zmq.hpp | 83 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 73 insertions(+), 10 deletions(-) commit cc3755a16f00026af882ed14d122cc8aa6d50e82 @@ -27543,129 +35272,129 @@ renamed from zs to zmq - .gitignore | 3 + - Makefile.am | 2 +- - configure.in | 38 ++++---- - examples/chat/Makefile.am | 6 +- - examples/chat/chatroom.cpp | 12 +-- - examples/chat/display.cpp | 10 +- - examples/chat/prompt.cpp | 8 +- - include/zmq.h | 207 ++++++++++++++++++++++++++++++++++++++++ - include/zmq.hpp | 231 +++++++++++++++++++++++++++++++++++++++++++++ - include/zs.h | 206 ---------------------------------------- - include/zs.hpp | 231 --------------------------------------------- - src/Makefile.am | 10 +- - src/app_thread.cpp | 70 +++++++------- - src/app_thread.hpp | 8 +- - src/atomic.hpp | 62 ++++++------ - src/atomic_bitmap.hpp | 82 ++++++++-------- - src/atomic_counter.hpp | 72 +++++++------- - src/atomic_ptr.hpp | 72 +++++++------- - src/command.hpp | 6 +- - src/config.hpp | 6 +- - src/connecter.cpp | 48 +++++----- - src/connecter.hpp | 12 +-- - src/data_distributor.cpp | 42 ++++----- - src/data_distributor.hpp | 10 +- - src/decoder.hpp | 6 +- - src/devpoll.cpp | 38 ++++---- - src/devpoll.hpp | 8 +- - src/dispatcher.cpp | 52 +++++----- - src/dispatcher.hpp | 8 +- - src/dummy_aggregator.cpp | 34 +++---- - src/dummy_aggregator.hpp | 8 +- - src/dummy_distributor.cpp | 28 +++--- - src/dummy_distributor.hpp | 8 +- - src/encoder.hpp | 6 +- - src/epoll.cpp | 36 +++---- - src/epoll.hpp | 8 +- - src/err.cpp | 8 +- - src/err.hpp | 16 ++-- - src/fair_aggregator.cpp | 30 +++--- - src/fair_aggregator.hpp | 8 +- - src/fd.hpp | 8 +- - src/fd_signaler.cpp | 54 +++++------ - src/fd_signaler.hpp | 8 +- - src/i_api.hpp | 14 +-- - src/i_demux.hpp | 11 ++- - src/i_engine.hpp | 8 +- - src/i_mux.hpp | 11 ++- - src/i_poll_events.hpp | 6 +- - src/i_poller.hpp | 6 +- - src/i_session.hpp | 10 +- - src/i_signaler.hpp | 6 +- - src/i_thread.hpp | 6 +- - src/io_object.cpp | 6 +- - src/io_object.hpp | 6 +- - src/io_thread.cpp | 72 +++++++------- - src/io_thread.hpp | 8 +- - src/ip.cpp | 36 +++---- - src/ip.hpp | 8 +- - src/kqueue.cpp | 40 ++++---- - src/kqueue.hpp | 8 +- - src/listener.cpp | 42 ++++----- - src/listener.hpp | 6 +- - src/load_balancer.cpp | 32 +++---- - src/load_balancer.hpp | 10 +- - src/msg.hpp | 16 ++-- - src/mutex.hpp | 10 +- - src/object.cpp | 88 ++++++++--------- - src/object.hpp | 6 +- - src/p2p.cpp | 4 +- - src/p2p.hpp | 6 +- - src/pipe.cpp | 14 +-- - src/pipe.hpp | 10 +- - src/pipe_reader.cpp | 26 ++--- - src/pipe_reader.hpp | 8 +- - src/pipe_writer.cpp | 30 +++--- - src/pipe_writer.hpp | 8 +- - src/platform.hpp.in | 26 ++--- - src/poll.cpp | 40 ++++---- - src/poll.hpp | 14 +-- - src/pub.cpp | 6 +- - src/pub.hpp | 8 +- - src/rep.cpp | 4 +- - src/rep.hpp | 6 +- - src/req.cpp | 4 +- - src/req.hpp | 6 +- - src/safe_object.cpp | 14 +-- - src/safe_object.hpp | 6 +- - src/select.cpp | 40 ++++---- - src/select.hpp | 10 +- - src/session.cpp | 46 ++++----- - src/session.hpp | 10 +- - src/session_stub.cpp | 30 +++--- - src/session_stub.hpp | 10 +- - src/simple_semaphore.hpp | 12 +-- - src/socket_base.cpp | 56 +++++------ - src/socket_base.hpp | 14 +-- - src/stdint.hpp | 6 +- - src/sub.cpp | 8 +- - src/sub.hpp | 8 +- - src/tcp_connecter.cpp | 20 ++-- - src/tcp_connecter.hpp | 6 +- - src/tcp_listener.cpp | 20 ++-- - src/tcp_listener.hpp | 6 +- - src/tcp_socket.cpp | 18 ++-- - src/tcp_socket.hpp | 6 +- - src/thread.cpp | 14 +-- - src/thread.hpp | 10 +- - src/uuid.cpp | 40 ++++---- - src/uuid.hpp | 18 ++-- - src/windows.hpp | 4 +- - src/wire.hpp | 6 +- - src/ypipe.hpp | 8 +- - src/ypollset.cpp | 10 +- - src/ypollset.hpp | 6 +- - src/yqueue.hpp | 10 +- - src/zmq.cpp | 223 +++++++++++++++++++++++++++++++++++++++++++ - src/zmq_decoder.cpp | 25 ++--- - src/zmq_decoder.hpp | 10 +- - src/zmq_encoder.cpp | 18 ++-- - src/zmq_encoder.hpp | 10 +- - src/zmq_tcp_engine.cpp | 44 ++++----- - src/zmq_tcp_engine.hpp | 6 +- - src/zs.cpp | 222 ------------------------------------------- + .gitignore | 3 + + Makefile.am | 2 +- + configure.in | 38 ++++---- + examples/chat/Makefile.am | 6 +- + examples/chat/chatroom.cpp | 12 +-- + examples/chat/display.cpp | 10 +- + examples/chat/prompt.cpp | 8 +- + include/zmq.h | 207 +++++++++++++++++++++++++++++++++++++++ + include/zmq.hpp | 231 ++++++++++++++++++++++++++++++++++++++++++++ + include/zs.h | 206 --------------------------------------- + include/zs.hpp | 231 -------------------------------------------- + src/Makefile.am | 10 +- + src/app_thread.cpp | 70 +++++++------- + src/app_thread.hpp | 8 +- + src/atomic.hpp | 62 ++++++------ + src/atomic_bitmap.hpp | 82 ++++++++-------- + src/atomic_counter.hpp | 72 +++++++------- + src/atomic_ptr.hpp | 72 +++++++------- + src/command.hpp | 6 +- + src/config.hpp | 6 +- + src/connecter.cpp | 48 ++++----- + src/connecter.hpp | 12 +-- + src/data_distributor.cpp | 42 ++++---- + src/data_distributor.hpp | 10 +- + src/decoder.hpp | 6 +- + src/devpoll.cpp | 38 ++++---- + src/devpoll.hpp | 8 +- + src/dispatcher.cpp | 52 +++++----- + src/dispatcher.hpp | 8 +- + src/dummy_aggregator.cpp | 34 +++---- + src/dummy_aggregator.hpp | 8 +- + src/dummy_distributor.cpp | 28 +++--- + src/dummy_distributor.hpp | 8 +- + src/encoder.hpp | 6 +- + src/epoll.cpp | 36 +++---- + src/epoll.hpp | 8 +- + src/err.cpp | 8 +- + src/err.hpp | 16 +-- + src/fair_aggregator.cpp | 30 +++--- + src/fair_aggregator.hpp | 8 +- + src/fd.hpp | 8 +- + src/fd_signaler.cpp | 54 +++++------ + src/fd_signaler.hpp | 8 +- + src/i_api.hpp | 14 +-- + src/i_demux.hpp | 11 ++- + src/i_engine.hpp | 8 +- + src/i_mux.hpp | 11 ++- + src/i_poll_events.hpp | 6 +- + src/i_poller.hpp | 6 +- + src/i_session.hpp | 10 +- + src/i_signaler.hpp | 6 +- + src/i_thread.hpp | 6 +- + src/io_object.cpp | 6 +- + src/io_object.hpp | 6 +- + src/io_thread.cpp | 72 +++++++------- + src/io_thread.hpp | 8 +- + src/ip.cpp | 36 +++---- + src/ip.hpp | 8 +- + src/kqueue.cpp | 40 ++++---- + src/kqueue.hpp | 8 +- + src/listener.cpp | 42 ++++---- + src/listener.hpp | 6 +- + src/load_balancer.cpp | 32 +++--- + src/load_balancer.hpp | 10 +- + src/msg.hpp | 16 +-- + src/mutex.hpp | 10 +- + src/object.cpp | 88 ++++++++--------- + src/object.hpp | 6 +- + src/p2p.cpp | 4 +- + src/p2p.hpp | 6 +- + src/pipe.cpp | 14 +-- + src/pipe.hpp | 10 +- + src/pipe_reader.cpp | 26 ++--- + src/pipe_reader.hpp | 8 +- + src/pipe_writer.cpp | 30 +++--- + src/pipe_writer.hpp | 8 +- + src/platform.hpp.in | 26 ++--- + src/poll.cpp | 40 ++++---- + src/poll.hpp | 14 +-- + src/pub.cpp | 6 +- + src/pub.hpp | 8 +- + src/rep.cpp | 4 +- + src/rep.hpp | 6 +- + src/req.cpp | 4 +- + src/req.hpp | 6 +- + src/safe_object.cpp | 14 +-- + src/safe_object.hpp | 6 +- + src/select.cpp | 40 ++++---- + src/select.hpp | 10 +- + src/session.cpp | 46 ++++----- + src/session.hpp | 10 +- + src/session_stub.cpp | 30 +++--- + src/session_stub.hpp | 10 +- + src/simple_semaphore.hpp | 12 +-- + src/socket_base.cpp | 56 +++++------ + src/socket_base.hpp | 14 +-- + src/stdint.hpp | 6 +- + src/sub.cpp | 8 +- + src/sub.hpp | 8 +- + src/tcp_connecter.cpp | 20 ++-- + src/tcp_connecter.hpp | 6 +- + src/tcp_listener.cpp | 20 ++-- + src/tcp_listener.hpp | 6 +- + src/tcp_socket.cpp | 18 ++-- + src/tcp_socket.hpp | 6 +- + src/thread.cpp | 14 +-- + src/thread.hpp | 10 +- + src/uuid.cpp | 40 ++++---- + src/uuid.hpp | 18 ++-- + src/windows.hpp | 4 +- + src/wire.hpp | 6 +- + src/ypipe.hpp | 8 +- + src/ypollset.cpp | 10 +- + src/ypollset.hpp | 6 +- + src/yqueue.hpp | 10 +- + src/zmq.cpp | 223 ++++++++++++++++++++++++++++++++++++++++++ + src/zmq_decoder.cpp | 25 ++--- + src/zmq_decoder.hpp | 10 +- + src/zmq_encoder.cpp | 18 ++-- + src/zmq_encoder.hpp | 10 +- + src/zmq_tcp_engine.cpp | 44 ++++----- + src/zmq_tcp_engine.hpp | 6 +- + src/zs.cpp | 222 ------------------------------------------ 123 files changed, 1778 insertions(+), 1770 deletions(-) commit 183b6887644ac05c951a3f9143248ed86e91052f @@ -27674,8 +35403,7 @@ git ignoring intermediary files - .gitignore | 0 - 1 file changed, 0 insertions(+), 0 deletions(-) + 0 files changed commit 4ed70a930202b103e7e80b8dc925e0aaa4622595 Author: Martin Sustrik @@ -27683,129 +35411,125 @@ initial commit - AUTHORS | 0 - ChangeLog | 0 - Makefile.am | 4 + - NEWS | 0 - README | 0 - autogen.sh | 29 +++++ - configure.in | 188 +++++++++++++++++++++++++++ - examples/Makefile.am | 2 + - examples/chat/Makefile.am | 15 +++ - examples/chat/chatroom.cpp | 74 +++++++++++ - examples/chat/display.cpp | 56 ++++++++ - examples/chat/prompt.cpp | 61 +++++++++ - include/zs.h | 206 ++++++++++++++++++++++++++++++ - include/zs.hpp | 231 +++++++++++++++++++++++++++++++++ - src/Makefile.am | 120 ++++++++++++++++++ - src/app_thread.cpp | 221 ++++++++++++++++++++++++++++++++ - src/app_thread.hpp | 95 ++++++++++++++ - src/atomic.hpp | 310 +++++++++++++++++++++++++++++++++++++++++++++ - src/atomic_bitmap.hpp | 286 +++++++++++++++++++++++++++++++++++++++++ - src/atomic_counter.hpp | 197 ++++++++++++++++++++++++++++ - src/atomic_ptr.hpp | 189 +++++++++++++++++++++++++++ - src/command.hpp | 98 ++++++++++++++ - src/config.hpp | 71 +++++++++++ - src/connecter.cpp | 189 +++++++++++++++++++++++++++ - src/connecter.hpp | 99 +++++++++++++++ - src/data_distributor.cpp | 155 +++++++++++++++++++++++ - src/data_distributor.hpp | 70 ++++++++++ - src/decoder.hpp | 101 +++++++++++++++ - src/devpoll.cpp | 224 ++++++++++++++++++++++++++++++++ - src/devpoll.hpp | 110 ++++++++++++++++ - src/dispatcher.cpp | 266 ++++++++++++++++++++++++++++++++++++++ - src/dispatcher.hpp | 170 +++++++++++++++++++++++++ - src/dummy_aggregator.cpp | 111 ++++++++++++++++ - src/dummy_aggregator.hpp | 73 +++++++++++ - src/dummy_distributor.cpp | 85 +++++++++++++ - src/dummy_distributor.hpp | 68 ++++++++++ - src/encoder.hpp | 108 ++++++++++++++++ - src/epoll.cpp | 214 +++++++++++++++++++++++++++++++ - src/epoll.hpp | 107 ++++++++++++++++ - src/err.cpp | 146 +++++++++++++++++++++ - src/err.hpp | 90 +++++++++++++ - src/fair_aggregator.cpp | 143 +++++++++++++++++++++ - src/fair_aggregator.hpp | 77 +++++++++++ - src/fd.hpp | 44 +++++++ - src/fd_signaler.cpp | 278 ++++++++++++++++++++++++++++++++++++++++ - src/fd_signaler.hpp | 92 ++++++++++++++ - src/i_api.hpp | 39 ++++++ - src/i_demux.hpp | 56 ++++++++ - src/i_engine.hpp | 53 ++++++++ - src/i_mux.hpp | 59 +++++++++ - src/i_poll_events.hpp | 45 +++++++ - src/i_poller.hpp | 89 +++++++++++++ - src/i_session.hpp | 37 ++++++ - src/i_signaler.hpp | 38 ++++++ - src/i_thread.hpp | 38 ++++++ - src/io_object.cpp | 37 ++++++ - src/io_object.hpp | 51 ++++++++ - src/io_thread.cpp | 177 ++++++++++++++++++++++++++ - src/io_thread.hpp | 99 +++++++++++++++ - src/ip.cpp | 310 +++++++++++++++++++++++++++++++++++++++++++++ - src/ip.hpp | 47 +++++++ - src/kqueue.cpp | 214 +++++++++++++++++++++++++++++++ - src/kqueue.hpp | 112 ++++++++++++++++ - src/listener.cpp | 170 +++++++++++++++++++++++++ - src/listener.hpp | 110 ++++++++++++++++ - src/load_balancer.cpp | 130 +++++++++++++++++++ - src/load_balancer.hpp | 73 +++++++++++ - src/msg.hpp | 49 +++++++ - src/mutex.hpp | 116 +++++++++++++++++ - src/object.cpp | 294 ++++++++++++++++++++++++++++++++++++++++++ - src/object.hpp | 105 +++++++++++++++ - src/p2p.cpp | 29 +++++ - src/p2p.hpp | 42 ++++++ - src/pipe.cpp | 47 +++++++ - src/pipe.hpp | 57 +++++++++ - src/pipe_reader.cpp | 118 +++++++++++++++++ - src/pipe_reader.hpp | 89 +++++++++++++ - src/pipe_writer.cpp | 120 ++++++++++++++++++ - src/pipe_writer.hpp | 88 +++++++++++++ - src/platform.hpp.in | 210 ++++++++++++++++++++++++++++++ - src/poll.cpp | 205 ++++++++++++++++++++++++++++++ - src/poll.hpp | 112 ++++++++++++++++ - src/pub.cpp | 38 ++++++ - src/pub.hpp | 45 +++++++ - src/rep.cpp | 29 +++++ - src/rep.hpp | 42 ++++++ - src/req.cpp | 29 +++++ - src/req.hpp | 42 ++++++ - src/safe_object.cpp | 76 +++++++++++ - src/safe_object.hpp | 68 ++++++++++ - src/select.cpp | 236 ++++++++++++++++++++++++++++++++++ - src/select.hpp | 122 ++++++++++++++++++ - src/session.cpp | 273 +++++++++++++++++++++++++++++++++++++++ - src/session.hpp | 107 ++++++++++++++++ - src/session_stub.cpp | 110 ++++++++++++++++ - src/session_stub.hpp | 83 ++++++++++++ - src/simple_semaphore.hpp | 188 +++++++++++++++++++++++++++ - src/socket_base.cpp | 267 ++++++++++++++++++++++++++++++++++++++ - src/socket_base.hpp | 96 ++++++++++++++ - src/stdint.hpp | 70 ++++++++++ - src/sub.cpp | 45 +++++++ - src/sub.hpp | 46 +++++++ - src/tcp_connecter.cpp | 138 ++++++++++++++++++++ - src/tcp_connecter.hpp | 65 ++++++++++ - src/tcp_listener.cpp | 165 ++++++++++++++++++++++++ - src/tcp_listener.hpp | 65 ++++++++++ - src/tcp_socket.cpp | 116 +++++++++++++++++ - src/tcp_socket.hpp | 70 ++++++++++ - src/thread.cpp | 88 +++++++++++++ - src/thread.hpp | 77 +++++++++++ - src/uuid.cpp | 136 ++++++++++++++++++++ - src/uuid.hpp | 82 ++++++++++++ - src/windows.hpp | 56 ++++++++ - src/wire.hpp | 98 ++++++++++++++ - src/ypipe.hpp | 209 ++++++++++++++++++++++++++++++ - src/ypollset.cpp | 56 ++++++++ - src/ypollset.hpp | 74 +++++++++++ - src/yqueue.hpp | 138 ++++++++++++++++++++ - src/zmq_decoder.cpp | 78 ++++++++++++ - src/zmq_decoder.hpp | 57 +++++++++ - src/zmq_encoder.cpp | 75 +++++++++++ - src/zmq_encoder.hpp | 54 ++++++++ - src/zmq_tcp_engine.cpp | 185 +++++++++++++++++++++++++++ - src/zmq_tcp_engine.hpp | 92 ++++++++++++++ - src/zs.cpp | 222 ++++++++++++++++++++++++++++++++ - 125 files changed, 13546 insertions(+) + Makefile.am | 4 + + autogen.sh | 29 +++++ + configure.in | 188 +++++++++++++++++++++++++++ + examples/Makefile.am | 2 + + examples/chat/Makefile.am | 15 +++ + examples/chat/chatroom.cpp | 74 +++++++++++ + examples/chat/display.cpp | 56 ++++++++ + examples/chat/prompt.cpp | 61 +++++++++ + include/zs.h | 206 +++++++++++++++++++++++++++++ + include/zs.hpp | 231 +++++++++++++++++++++++++++++++++ + src/Makefile.am | 120 +++++++++++++++++ + src/app_thread.cpp | 221 +++++++++++++++++++++++++++++++ + src/app_thread.hpp | 95 ++++++++++++++ + src/atomic.hpp | 310 ++++++++++++++++++++++++++++++++++++++++++++ + src/atomic_bitmap.hpp | 286 ++++++++++++++++++++++++++++++++++++++++ + src/atomic_counter.hpp | 197 ++++++++++++++++++++++++++++ + src/atomic_ptr.hpp | 189 +++++++++++++++++++++++++++ + src/command.hpp | 98 ++++++++++++++ + src/config.hpp | 71 ++++++++++ + src/connecter.cpp | 189 +++++++++++++++++++++++++++ + src/connecter.hpp | 99 ++++++++++++++ + src/data_distributor.cpp | 155 ++++++++++++++++++++++ + src/data_distributor.hpp | 70 ++++++++++ + src/decoder.hpp | 101 +++++++++++++++ + src/devpoll.cpp | 224 ++++++++++++++++++++++++++++++++ + src/devpoll.hpp | 110 ++++++++++++++++ + src/dispatcher.cpp | 266 +++++++++++++++++++++++++++++++++++++ + src/dispatcher.hpp | 170 ++++++++++++++++++++++++ + src/dummy_aggregator.cpp | 111 ++++++++++++++++ + src/dummy_aggregator.hpp | 73 +++++++++++ + src/dummy_distributor.cpp | 85 ++++++++++++ + src/dummy_distributor.hpp | 68 ++++++++++ + src/encoder.hpp | 108 +++++++++++++++ + src/epoll.cpp | 214 ++++++++++++++++++++++++++++++ + src/epoll.hpp | 107 +++++++++++++++ + src/err.cpp | 146 +++++++++++++++++++++ + src/err.hpp | 90 +++++++++++++ + src/fair_aggregator.cpp | 143 ++++++++++++++++++++ + src/fair_aggregator.hpp | 77 +++++++++++ + src/fd.hpp | 44 +++++++ + src/fd_signaler.cpp | 278 +++++++++++++++++++++++++++++++++++++++ + src/fd_signaler.hpp | 92 +++++++++++++ + src/i_api.hpp | 39 ++++++ + src/i_demux.hpp | 56 ++++++++ + src/i_engine.hpp | 53 ++++++++ + src/i_mux.hpp | 59 +++++++++ + src/i_poll_events.hpp | 45 +++++++ + src/i_poller.hpp | 89 +++++++++++++ + src/i_session.hpp | 37 ++++++ + src/i_signaler.hpp | 38 ++++++ + src/i_thread.hpp | 38 ++++++ + src/io_object.cpp | 37 ++++++ + src/io_object.hpp | 51 ++++++++ + src/io_thread.cpp | 177 +++++++++++++++++++++++++ + src/io_thread.hpp | 99 ++++++++++++++ + src/ip.cpp | 310 ++++++++++++++++++++++++++++++++++++++++++++ + src/ip.hpp | 47 +++++++ + src/kqueue.cpp | 214 ++++++++++++++++++++++++++++++ + src/kqueue.hpp | 112 ++++++++++++++++ + src/listener.cpp | 170 ++++++++++++++++++++++++ + src/listener.hpp | 110 ++++++++++++++++ + src/load_balancer.cpp | 130 +++++++++++++++++++ + src/load_balancer.hpp | 73 +++++++++++ + src/msg.hpp | 49 +++++++ + src/mutex.hpp | 116 +++++++++++++++++ + src/object.cpp | 294 +++++++++++++++++++++++++++++++++++++++++ + src/object.hpp | 105 +++++++++++++++ + src/p2p.cpp | 29 +++++ + src/p2p.hpp | 42 ++++++ + src/pipe.cpp | 47 +++++++ + src/pipe.hpp | 57 ++++++++ + src/pipe_reader.cpp | 118 +++++++++++++++++ + src/pipe_reader.hpp | 89 +++++++++++++ + src/pipe_writer.cpp | 120 +++++++++++++++++ + src/pipe_writer.hpp | 88 +++++++++++++ + src/platform.hpp.in | 210 ++++++++++++++++++++++++++++++ + src/poll.cpp | 205 +++++++++++++++++++++++++++++ + src/poll.hpp | 112 ++++++++++++++++ + src/pub.cpp | 38 ++++++ + src/pub.hpp | 45 +++++++ + src/rep.cpp | 29 +++++ + src/rep.hpp | 42 ++++++ + src/req.cpp | 29 +++++ + src/req.hpp | 42 ++++++ + src/safe_object.cpp | 76 +++++++++++ + src/safe_object.hpp | 68 ++++++++++ + src/select.cpp | 236 +++++++++++++++++++++++++++++++++ + src/select.hpp | 122 +++++++++++++++++ + src/session.cpp | 273 ++++++++++++++++++++++++++++++++++++++ + src/session.hpp | 107 +++++++++++++++ + src/session_stub.cpp | 110 ++++++++++++++++ + src/session_stub.hpp | 83 ++++++++++++ + src/simple_semaphore.hpp | 188 +++++++++++++++++++++++++++ + src/socket_base.cpp | 267 ++++++++++++++++++++++++++++++++++++++ + src/socket_base.hpp | 96 ++++++++++++++ + src/stdint.hpp | 70 ++++++++++ + src/sub.cpp | 45 +++++++ + src/sub.hpp | 46 +++++++ + src/tcp_connecter.cpp | 138 ++++++++++++++++++++ + src/tcp_connecter.hpp | 65 ++++++++++ + src/tcp_listener.cpp | 165 +++++++++++++++++++++++ + src/tcp_listener.hpp | 65 ++++++++++ + src/tcp_socket.cpp | 116 +++++++++++++++++ + src/tcp_socket.hpp | 70 ++++++++++ + src/thread.cpp | 88 +++++++++++++ + src/thread.hpp | 77 +++++++++++ + src/uuid.cpp | 136 +++++++++++++++++++ + src/uuid.hpp | 82 ++++++++++++ + src/windows.hpp | 56 ++++++++ + src/wire.hpp | 98 ++++++++++++++ + src/ypipe.hpp | 209 +++++++++++++++++++++++++++++ + src/ypollset.cpp | 56 ++++++++ + src/ypollset.hpp | 74 +++++++++++ + src/yqueue.hpp | 138 ++++++++++++++++++++ + src/zmq_decoder.cpp | 78 +++++++++++ + src/zmq_decoder.hpp | 57 ++++++++ + src/zmq_encoder.cpp | 75 +++++++++++ + src/zmq_encoder.hpp | 54 ++++++++ + src/zmq_tcp_engine.cpp | 185 ++++++++++++++++++++++++++ + src/zmq_tcp_engine.hpp | 92 +++++++++++++ + src/zs.cpp | 222 +++++++++++++++++++++++++++++++ + 121 files changed, 13546 insertions(+) diff -Nru zeromq3-3.2.4+dfsg/config/compile zeromq3-4.0.4/config/compile --- zeromq3-3.2.4+dfsg/config/compile 2013-09-20 09:18:59.000000000 +0000 +++ zeromq3-4.0.4/config/compile 2014-03-10 21:42:41.000000000 +0000 @@ -1,7 +1,7 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-03-05.13; # UTC +scriptversion=2012-01-04.17; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free # Software Foundation, Inc. @@ -79,48 +79,6 @@ esac } -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () @@ -151,34 +109,43 @@ ;; esac ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" + lib=${1#-l} + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + set x "$@" "$dir/$lib.dll.lib" + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + set x "$@" "$dir/$lib.lib" + break + fi + done + IFS=$save_IFS + + test "$found" != yes && set x "$@" "$lib.lib" shift ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; -L*) - func_cl_dashL "${1#-L}" + func_file_conv "${1#-L}" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" ;; -static) shared=false diff -Nru zeromq3-3.2.4+dfsg/config/config.sub zeromq3-4.0.4/config/config.sub --- zeromq3-3.2.4+dfsg/config/config.sub 2013-09-20 09:18:59.000000000 +0000 +++ zeromq3-4.0.4/config/config.sub 2014-03-10 21:42:41.000000000 +0000 @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. -timestamp='2012-04-18' +timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -225,12 +225,6 @@ -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; -lynx*) os=-lynxos ;; @@ -1543,9 +1537,6 @@ c4x-* | tic4x-*) os=-coff ;; - hexagon-*) - os=-elf - ;; tic54x-*) os=-coff ;; diff -Nru zeromq3-3.2.4+dfsg/config/depcomp zeromq3-4.0.4/config/depcomp --- zeromq3-3.2.4+dfsg/config/depcomp 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/config/depcomp 2014-03-10 21:42:42.000000000 +0000 @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2011-12-04.11; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# 2011 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) @@ -40,8 +40,8 @@ Environment variables: depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. @@ -57,12 +57,6 @@ ;; esac -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' - if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 @@ -108,12 +102,6 @@ depmode=msvc7 fi -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -168,14 +156,15 @@ ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. +## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | -## Some versions of gcc put a space before the ':'. On the theory + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. @@ -214,15 +203,18 @@ # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the + # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ + tr ' ' ' +' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + tr ' +' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ + tr ' ' ' +' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else @@ -234,17 +226,10 @@ rm -f "$tmpdepfile" ;; -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the + # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` @@ -274,11 +259,12 @@ test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. + # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. + # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -289,26 +275,23 @@ ;; icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h - # which is wrong. We want + # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': + # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. + "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : @@ -317,21 +300,15 @@ exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -367,7 +344,7 @@ done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. + # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// @@ -382,9 +359,9 @@ tru64) # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. + # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= @@ -430,7 +407,8 @@ done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi @@ -465,11 +443,11 @@ p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p +s/\(.*\)/ \1 \\/p s/.\(.*\) \\/\1:/ H $ { - s/.*/'"$tab"'/ + s/.*/ / G p }' >> "$depfile" @@ -500,7 +478,7 @@ shift fi - # Remove '-o $object'. + # Remove `-o $object'. IFS=" " for arg do @@ -520,14 +498,15 @@ done test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' + # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ + tr ' ' ' +' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" @@ -583,7 +562,8 @@ # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" @@ -603,7 +583,7 @@ shift fi - # Remove '-o $object'. + # Remove `-o $object'. IFS=" " for arg do @@ -672,8 +652,8 @@ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; diff -Nru zeromq3-3.2.4+dfsg/config/libtool.m4 zeromq3-4.0.4/config/libtool.m4 --- zeromq3-3.2.4+dfsg/config/libtool.m4 2013-09-20 09:18:53.000000000 +0000 +++ zeromq3-4.0.4/config/libtool.m4 2014-03-10 21:42:34.000000000 +0000 @@ -1324,14 +1324,7 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac + LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" @@ -1695,8 +1688,7 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -2520,6 +2512,17 @@ esac ;; +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -2636,7 +2639,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -3252,6 +3255,10 @@ fi ;; +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3290,7 +3297,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -4042,7 +4049,7 @@ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -4341,7 +4348,7 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -6234,6 +6241,9 @@ _LT_TAGVAR(ld_shlibs, $1)=yes ;; + gnu*) + ;; + haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -6395,7 +6405,7 @@ _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler diff -Nru zeromq3-3.2.4+dfsg/config/ltmain.sh zeromq3-4.0.4/config/ltmain.sh --- zeromq3-3.2.4+dfsg/config/ltmain.sh 2013-09-20 09:18:53.000000000 +0000 +++ zeromq3-4.0.4/config/ltmain.sh 2014-03-10 21:42:34.000000000 +0000 @@ -70,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.2ubuntu1 +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # @@ -80,7 +80,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.2ubuntu1" +VERSION="2.4.2 Debian-2.4.2-1ubuntu1" TIMESTAMP="" package_revision=1.3337 diff -Nru zeromq3-3.2.4+dfsg/configure zeromq3-4.0.4/configure --- zeromq3-3.2.4+dfsg/configure 2013-09-20 09:18:57.000000000 +0000 +++ zeromq3-4.0.4/configure 2014-03-10 21:42:38.000000000 +0000 @@ -1,11 +1,13 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for zeromq 3.2.4. +# Generated by GNU Autoconf 2.68 for zeromq 4.0.4. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -134,31 +136,6 @@ # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -192,8 +169,7 @@ else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" +test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -246,25 +222,21 @@ if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : @@ -367,14 +339,6 @@ } # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -496,10 +460,6 @@ chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -534,16 +494,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -555,8 +515,28 @@ as_mkdir_p=false fi -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -590,8 +570,8 @@ # Identity of this package. PACKAGE_NAME='zeromq' PACKAGE_TARNAME='zeromq' -PACKAGE_VERSION='3.2.4' -PACKAGE_STRING='zeromq 3.2.4' +PACKAGE_VERSION='4.0.4' +PACKAGE_STRING='zeromq 4.0.4' PACKAGE_BUGREPORT='zeromq-dev@lists.zeromq.org' PACKAGE_URL='' @@ -639,6 +619,8 @@ LIBZMQ_EXTRA_LDFLAGS LIBZMQ_EXTRA_CXXFLAGS LIBZMQ_EXTRA_CFLAGS +ON_LINUX_FALSE +ON_LINUX_TRUE ON_ANDROID_FALSE ON_ANDROID_TRUE ON_MINGW_FALSE @@ -797,6 +779,9 @@ enable_libtool_lock enable_debug with_gcov +with_libsodium +with_libsodium_include_dir +with_libsodium_lib_dir with_documentation with_poller enable_eventfd @@ -1278,6 +1263,8 @@ if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1363,7 +1350,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures zeromq 3.2.4 to adapt to many kinds of systems. +\`configure' configures zeromq 4.0.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1433,7 +1420,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of zeromq 3.2.4:";; + short | recursive ) echo "Configuration of zeromq 4.0.4:";; esac cat <<\_ACEOF @@ -1462,6 +1449,11 @@ --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gcov=yes/no With GCC Code Coverage reporting. + --with-libsodium Specify libsodium prefix + --with-libsodium-include-dir + Specify libsodium include prefix + --with-libsodium-lib-dir + Specify libsodium library prefix --without-documentation disable documentation build even if asciidoc and xmlto are present [default=no] --with-poller choose polling system manually. valid values are @@ -1561,10 +1553,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -zeromq configure 3.2.4 -generated by GNU Autoconf 2.69 +zeromq configure 4.0.4 +generated by GNU Autoconf 2.68 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1678,7 +1670,7 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - test -x conftest$ac_exeext + $as_test_x conftest$ac_exeext }; then : ac_retval=0 else @@ -1938,7 +1930,7 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - test -x conftest$ac_exeext + $as_test_x conftest$ac_exeext }; then : ac_retval=0 else @@ -2126,8 +2118,7 @@ main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; -test_array [0] = 0; -return test_array [0]; +test_array [0] = 0 ; return 0; @@ -2359,8 +2350,8 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by zeromq $as_me 3.2.4, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by zeromq $as_me 4.0.4, which was +generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2779,7 +2770,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2948,7 +2939,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2988,7 +2979,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3039,7 +3030,7 @@ test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -3092,7 +3083,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3178,7 +3169,7 @@ # Define the identity of the package. PACKAGE='zeromq' - VERSION='3.2.4' + VERSION='4.0.4' cat >>confdefs.h <<_ACEOF @@ -3354,9 +3345,10 @@ # ZeroMQ versions 2.1.x: 1:0:0 (ABI version 1) # ZeroMQ version 3.0: 2:0:0 (ABI version 2) # ZeroMQ version 3.1: 3:0:0 (ABI version 3) +# ZeroMQ version 4.0: 4:0:1 (ABI version 4) # # libzmq -version-info current:revision:age -LTVER="3:0:0" +LTVER="4:0:1" # Take a copy of original flags @@ -3387,7 +3379,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3427,7 +3419,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3480,7 +3472,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3521,7 +3513,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -3579,7 +3571,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3623,7 +3615,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4069,7 +4061,8 @@ /* end confdefs.h. */ #include #include -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -4491,7 +4484,7 @@ return 0; } _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : @@ -4550,7 +4543,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4594,7 +4587,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5055,7 +5048,7 @@ for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in @@ -5120,7 +5113,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5165,7 +5158,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_XMLTO="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5206,7 +5199,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ASCIIDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5392,7 +5385,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5432,7 +5425,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5484,7 +5477,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5524,7 +5517,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5576,7 +5569,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5616,7 +5609,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5790,7 +5783,7 @@ for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in @@ -5866,7 +5859,7 @@ for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -5932,7 +5925,7 @@ for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -5999,7 +5992,7 @@ for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in @@ -6255,7 +6248,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6299,7 +6292,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6488,8 +6481,7 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -6724,7 +6716,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6764,7 +6756,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6887,6 +6879,10 @@ fi ;; +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -6925,7 +6921,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -7063,7 +7059,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7103,7 +7099,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7204,7 +7200,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7248,7 +7244,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7373,7 +7369,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7413,7 +7409,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7472,7 +7468,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7512,7 +7508,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8020,14 +8016,7 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac + LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" @@ -8168,7 +8157,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8208,7 +8197,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8288,7 +8277,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8328,7 +8317,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8380,7 +8369,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8420,7 +8409,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8472,7 +8461,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8512,7 +8501,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8564,7 +8553,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8604,7 +8593,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8656,7 +8645,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8696,7 +8685,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -9835,7 +9824,7 @@ lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -12005,6 +11994,17 @@ esac ;; +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -12121,7 +12121,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -13944,6 +13944,9 @@ ld_shlibs_CXX=yes ;; + gnu*) + ;; + haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes @@ -14105,7 +14108,7 @@ inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -14965,7 +14968,7 @@ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -15837,6 +15840,17 @@ esac ;; +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -15953,7 +15967,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -16804,98 +16818,48 @@ fi } -# Checks for libraries. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +# Allow libsodium to be installed in a custom path: -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_create=yes -else - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + +# Check whether --with-libsodium was given. +if test "${with_libsodium+set}" = set; then : + withval=$with_libsodium; zmq_search_libsodium="yes" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPTHREAD 1 -_ACEOF - LIBS="-lpthread $LIBS" +if test "x$zmq_search_libsodium" = "xyes"; then + if test -r "${with_libsodium}/include/sodium.h"; then + CPPFLAGS="-I${with_libsodium}/include ${CPPFLAGS}" + LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}" + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 -$as_echo_n "checking for clock_gettime in -lrt... " >&6; } -if ${ac_cv_lib_rt_clock_gettime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (); -int -main () -{ -return clock_gettime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_rt_clock_gettime=yes -else - ac_cv_lib_rt_clock_gettime=no +# Check whether --with-libsodium-include-dir was given. +if test "${with_libsodium_include_dir+set}" = set; then : + withval=$with_libsodium_include_dir; zmq_search_libsodium_include="yes" fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + + +if test "x$zmq_search_libsodium_include" = "xyes"; then + if test -r "${with_libsodium_include_dir}/sodium.h"; then + CPPFLAGS="-I${with_libsodium_include_dir}/include ${CPPFLAGS}" + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 -$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } -if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBRT 1 -_ACEOF - LIBS="-lrt $LIBS" +# Check whether --with-libsodium_lib_dir was given. +if test "${with_libsodium_lib_dir+set}" = set; then : + withval=$with_libsodium_lib_dir; zmq_search_libsodium_lib="yes" fi +if test "x$zmq_search_libsodium_lib" = "xyes"; then + if test -r "${with_libsodium_lib_dir}/libsodium.{a|so|dylib}"; then + LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}" + fi +fi + # Set pedantic libzmq_pedantic="yes" @@ -16905,9 +16869,10 @@ # By default use DSO visibility libzmq_dso_visibility="yes" -# Whether we are on mingw or android or not. +# Platform specific checks libzmq_on_mingw32="no" libzmq_on_android="no" +libzmq_on_linux="no" # Set some default features required by 0MQ code. CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE $CPPFLAGS" @@ -16925,6 +16890,7 @@ $as_echo "#define ZMQ_HAVE_LINUX 1" >>confdefs.h + libzmq_on_linux="yes" case "${host_os}" in *android*) @@ -17060,6 +17026,9 @@ $as_echo "#define ZMQ_FORCE_MUTEXES 1" >>confdefs.h fi + # ssp library is required for libsodium on Solaris-like systems + LDFLAGS="-lssp $LDFLAGS" + CPPFLAGS="$CPPFLAGS -Wno-long-long" ;; *freebsd*) # Define on FreeBSD to enable all library features @@ -17666,6 +17635,146 @@ ;; esac +# Checks for libraries +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +$as_echo_n "checking for pthread_create in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_create=yes +else + ac_cv_lib_pthread_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } +if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRT 1 +_ACEOF + + LIBS="-lrt $LIBS" + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sodium_init in -lsodium" >&5 +$as_echo_n "checking for sodium_init in -lsodium... " >&6; } +if ${ac_cv_lib_sodium_sodium_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsodium $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sodium_init (); +int +main () +{ +return sodium_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_sodium_sodium_init=yes +else + ac_cv_lib_sodium_sodium_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sodium_sodium_init" >&5 +$as_echo "$ac_cv_lib_sodium_sodium_init" >&6; } +if test "x$ac_cv_lib_sodium_sodium_init" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSODIUM 1 +_ACEOF + + LIBS="-lsodium $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libsodium is needed for CURVE security" >&5 +$as_echo "$as_me: WARNING: libsodium is needed for CURVE security" >&2;} +fi + + # # Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec # @@ -17724,12 +17833,12 @@ # Remarks are not turned into errors even with -Werror on if ($GREP 'ignoring unknown' conftest.err || $GREP 'not supported' conftest.err) >/dev/null 2>&1; then - eval libzmq_cv_cxx_supports_flag__fvisibility_hidden="no" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-fvisibility=hidden" | $as_tr_sh`="no" else - eval libzmq_cv_cxx_supports_flag__fvisibility_hidden="yes" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-fvisibility=hidden" | $as_tr_sh`="yes" fi else - eval libzmq_cv_cxx_supports_flag__fvisibility_hidden="no" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-fvisibility=hidden" | $as_tr_sh`="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -17749,7 +17858,7 @@ ac_cxx_werror_flag=$libzmq_cv_cxx_werror_flag_save # Call the action as the flags are restored - if eval test x$libzmq_cv_cxx_supports_flag__fvisibility_hidden = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_cxx_supports_flag_-fvisibility=hidden" | $as_tr_sh` = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ; libzmq_cv_cxx_visibility_flag="-fvisibility=hidden" else @@ -17800,12 +17909,12 @@ # Remarks are not turned into errors even with -Werror on if ($GREP 'ignoring unknown' conftest.err || $GREP 'not supported' conftest.err) >/dev/null 2>&1; then - eval libzmq_cv_cxx_supports_flag__xldscope_hidden="no" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-xldscope=hidden" | $as_tr_sh`="no" else - eval libzmq_cv_cxx_supports_flag__xldscope_hidden="yes" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-xldscope=hidden" | $as_tr_sh`="yes" fi else - eval libzmq_cv_cxx_supports_flag__xldscope_hidden="no" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-xldscope=hidden" | $as_tr_sh`="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -17825,7 +17934,7 @@ ac_cxx_werror_flag=$libzmq_cv_cxx_werror_flag_save # Call the action as the flags are restored - if eval test x$libzmq_cv_cxx_supports_flag__xldscope_hidden = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_cxx_supports_flag_-xldscope=hidden" | $as_tr_sh` = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ; libzmq_cv_cxx_visibility_flag="-xldscope=hidden" else @@ -17906,12 +18015,12 @@ # Remarks are not turned into errors even with -Werror on if ($GREP 'ignoring unknown' conftest.err || $GREP 'not supported' conftest.err) >/dev/null 2>&1; then - eval libzmq_cv_cxx_supports_flag__mcpu_v9="no" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-mcpu=v9" | $as_tr_sh`="no" else - eval libzmq_cv_cxx_supports_flag__mcpu_v9="yes" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-mcpu=v9" | $as_tr_sh`="yes" fi else - eval libzmq_cv_cxx_supports_flag__mcpu_v9="no" + eval `$as_echo "libzmq_cv_cxx_supports_flag_-mcpu=v9" | $as_tr_sh`="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -17931,7 +18040,7 @@ ac_cxx_werror_flag=$libzmq_cv_cxx_werror_flag_save # Call the action as the flags are restored - if eval test x$libzmq_cv_cxx_supports_flag__mcpu_v9 = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_cxx_supports_flag_-mcpu=v9" | $as_tr_sh` = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ; else @@ -17942,12 +18051,12 @@ } case "xcxx" in xc) - if eval test x$libzmq_cv_cxx_supports_flag__mcpu_v9 = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_cxx_supports_flag_-mcpu=v9" | $as_tr_sh` = "xyes"; then : CFLAGS="-mcpu=v9 $CFLAGS"; fi ;; xcxx) - if eval test x$libzmq_cv_cxx_supports_flag__mcpu_v9 = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_cxx_supports_flag_-mcpu=v9" | $as_tr_sh` = "xyes"; then : CPPFLAGS="-mcpu=v9 $CPPFLAGS"; fi ;; @@ -17998,7 +18107,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_libzmq_have_asciidoc="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -18036,7 +18145,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_libzmq_have_xmlto="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -18547,60 +18656,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #ifndef bool - "error: bool is not defined" - #endif - #ifndef false - "error: false is not defined" - #endif - #if false - "error: false is not 0" - #endif - #ifndef true - "error: true is not defined" - #endif - #if true != 1 - "error: true is not 1" - #endif - #ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" - #endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - _Bool q = true; - _Bool *pq = &q; +#include +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; int main () { - bool e = &s; - *pq |= q; - *pq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq); + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); ; return 0; @@ -18615,7 +18724,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } - ac_fn_cxx_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +ac_fn_cxx_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF @@ -18625,7 +18734,6 @@ fi - if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h @@ -18643,11 +18751,11 @@ int main () { - +/* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ + /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset cs = { 0, 0 }; + const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; @@ -18664,9 +18772,8 @@ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; + { /* SCO 3.2v4 cc rejects this. */ + char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; @@ -18682,10 +18789,10 @@ iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; @@ -18914,7 +19021,7 @@ # PGM extension libzmq_pgm_ext="no" -pgm_basename="libpgm-5.1.118~dfsg" +pgm_basename="libpgm-5.2.122~dfsg" # Check whether --with-pgm was given. @@ -19025,12 +19132,12 @@ # Remarks are not turned into errors even with -Werror on if ($GREP 'ignoring unknown' conftest.err || $GREP 'not supported' conftest.err) >/dev/null 2>&1; then - eval libzmq_cv_c_supports_flag__fvisibility_hidden="no" + eval `$as_echo "libzmq_cv_c_supports_flag_-fvisibility=hidden" | $as_tr_sh`="no" else - eval libzmq_cv_c_supports_flag__fvisibility_hidden="yes" + eval `$as_echo "libzmq_cv_c_supports_flag_-fvisibility=hidden" | $as_tr_sh`="yes" fi else - eval libzmq_cv_c_supports_flag__fvisibility_hidden="no" + eval `$as_echo "libzmq_cv_c_supports_flag_-fvisibility=hidden" | $as_tr_sh`="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -19050,7 +19157,7 @@ ac_c_werror_flag=$libzmq_cv_c_werror_flag_save # Call the action as the flags are restored - if eval test x$libzmq_cv_c_supports_flag__fvisibility_hidden = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_c_supports_flag_-fvisibility=hidden" | $as_tr_sh` = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ; libzmq_cv_c_visibility_flag="-fvisibility=hidden" else @@ -19101,12 +19208,12 @@ # Remarks are not turned into errors even with -Werror on if ($GREP 'ignoring unknown' conftest.err || $GREP 'not supported' conftest.err) >/dev/null 2>&1; then - eval libzmq_cv_c_supports_flag__xldscope_hidden="no" + eval `$as_echo "libzmq_cv_c_supports_flag_-xldscope=hidden" | $as_tr_sh`="no" else - eval libzmq_cv_c_supports_flag__xldscope_hidden="yes" + eval `$as_echo "libzmq_cv_c_supports_flag_-xldscope=hidden" | $as_tr_sh`="yes" fi else - eval libzmq_cv_c_supports_flag__xldscope_hidden="no" + eval `$as_echo "libzmq_cv_c_supports_flag_-xldscope=hidden" | $as_tr_sh`="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -19126,7 +19233,7 @@ ac_c_werror_flag=$libzmq_cv_c_werror_flag_save # Call the action as the flags are restored - if eval test x$libzmq_cv_c_supports_flag__xldscope_hidden = "xyes"; then : + if eval test x$`$as_echo "libzmq_cv_c_supports_flag_-xldscope=hidden" | $as_tr_sh` = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ; libzmq_cv_c_visibility_flag="-xldscope=hidden" else @@ -19202,7 +19309,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -19245,7 +19352,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -19740,6 +19847,14 @@ ON_ANDROID_FALSE= fi + if test "x$libzmq_on_linux" = "xyes"; then + ON_LINUX_TRUE= + ON_LINUX_FALSE='#' +else + ON_LINUX_TRUE='#' + ON_LINUX_FALSE= +fi + # Checks for library functions. { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 @@ -19775,7 +19890,7 @@ _ACEOF -for ac_func in perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs +for ac_func in perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs fork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -20051,7 +20166,7 @@ -ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile perf/Makefile src/libzmq.pc builds/msvc/Makefile tests/Makefile foreign/openpgm/Makefile builds/redhat/zeromq.spec" +ac_config_files="$ac_config_files Makefile src/Makefile src/libzmq.pc doc/Makefile perf/Makefile tests/Makefile tools/Makefile builds/msvc/Makefile foreign/openpgm/Makefile builds/redhat/zeromq.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -20202,6 +20317,10 @@ as_fn_error $? "conditional \"ON_ANDROID\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ON_LINUX_TRUE}" && test -z "${ON_LINUX_FALSE}"; then + as_fn_error $? "conditional \"ON_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -20500,16 +20619,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -20569,16 +20688,28 @@ as_mkdir_p=false fi - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -20599,8 +20730,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by zeromq $as_me 3.2.4, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by zeromq $as_me 4.0.4, which was +generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -20665,11 +20796,11 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -zeromq config.status 3.2.4 -configured by $0, generated by GNU Autoconf 2.69, +zeromq config.status 4.0.4 +configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -20760,7 +20891,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' @@ -21176,11 +21307,12 @@ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libzmq.pc") CONFIG_FILES="$CONFIG_FILES src/libzmq.pc" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "perf/Makefile") CONFIG_FILES="$CONFIG_FILES perf/Makefile" ;; - "src/libzmq.pc") CONFIG_FILES="$CONFIG_FILES src/libzmq.pc" ;; - "builds/msvc/Makefile") CONFIG_FILES="$CONFIG_FILES builds/msvc/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "builds/msvc/Makefile") CONFIG_FILES="$CONFIG_FILES builds/msvc/Makefile" ;; "foreign/openpgm/Makefile") CONFIG_FILES="$CONFIG_FILES foreign/openpgm/Makefile" ;; "builds/redhat/zeromq.spec") CONFIG_FILES="$CONFIG_FILES builds/redhat/zeromq.spec" ;; @@ -22856,4 +22988,3 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi - diff -Nru zeromq3-3.2.4+dfsg/configure.ac zeromq3-4.0.4/configure.ac --- zeromq3-3.2.4+dfsg/configure.ac 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/configure.ac 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,487 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. +AC_PREREQ(2.61) +# +# The 0MQ version number is extracted from include/zmq.h using +# the version.sh script. Hence, it should be updated there. +# The version in git should reflect the *next* version planned. +# +AC_INIT([zeromq],[m4_esyscmd([./version.sh])],[zeromq-dev@lists.zeromq.org]) + +AC_CONFIG_AUX_DIR(config) +AC_CONFIG_MACRO_DIR(config) +AC_CONFIG_HEADERS([src/platform.hpp]) +AM_INIT_AUTOMAKE(tar-ustar dist-zip foreign) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +# This lets us use PACKAGE_VERSION in Makefiles +AC_SUBST(PACKAGE_VERSION) + +# Libtool -version-info (ABI version) +# +# Don't change this unless you know exactly what you're doing and have read and +# understand: +# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +# +# Changes: +# +# ZeroMQ versions prior to 2.1.0 use 0:0:0 (undefined) +# ZeroMQ versions 2.1.x: 1:0:0 (ABI version 1) +# ZeroMQ version 3.0: 2:0:0 (ABI version 2) +# ZeroMQ version 3.1: 3:0:0 (ABI version 3) +# ZeroMQ version 4.0: 4:0:1 (ABI version 4) +# +# libzmq -version-info current:revision:age +LTVER="4:0:1" +AC_SUBST(LTVER) + +# Take a copy of original flags +ZMQ_ORIG_CFLAGS="${CFLAGS:-none}" +ZMQ_ORIG_CPPFLAGS="${CPPFLAGS:-none}" +ZMQ_ORIG_CXXFLAGS="${CXXFLAGS:-none}" + +# Checks for programs. +AC_PROG_CC +AC_PROG_CC_C99 +AC_PROG_CXX +AM_PROG_CC_C_O +AC_PROG_SED +AC_PROG_AWK + +# Libtool configuration for different targets. See acinclude.m4 +AC_ARG_VAR([XMLTO], [Path to xmlto command]) +AC_PATH_PROG([XMLTO], [xmlto]) +AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) +AC_PATH_PROG([ASCIIDOC], [asciidoc]) +LIBZMQ_CONFIG_LIBTOOL +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +# Check whether to build a with debug symbols +LIBZMQ_CHECK_ENABLE_DEBUG + +# Check wheter to enable code coverage +LIBZMQ_WITH_GCOV + +# Allow libsodium to be installed in a custom path: + +AC_ARG_WITH([libsodium], + [AS_HELP_STRING([--with-libsodium], + [Specify libsodium prefix])], + [zmq_search_libsodium="yes"], + []) + +if test "x$zmq_search_libsodium" = "xyes"; then + if test -r "${with_libsodium}/include/sodium.h"; then + CPPFLAGS="-I${with_libsodium}/include ${CPPFLAGS}" + LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}" + fi +fi + +AC_ARG_WITH([libsodium-include-dir], + [AS_HELP_STRING([--with-libsodium-include-dir], + [Specify libsodium include prefix])], + [zmq_search_libsodium_include="yes"], + []) + +if test "x$zmq_search_libsodium_include" = "xyes"; then + if test -r "${with_libsodium_include_dir}/sodium.h"; then + CPPFLAGS="-I${with_libsodium_include_dir}/include ${CPPFLAGS}" + fi +fi + +AC_ARG_WITH([libsodium_lib_dir], + [AS_HELP_STRING([--with-libsodium-lib-dir], + [Specify libsodium library prefix])], + [zmq_search_libsodium_lib="yes"], + []) + +if test "x$zmq_search_libsodium_lib" = "xyes"; then + if test -r "${with_libsodium_lib_dir}/libsodium.{a|so|dylib}"; then + LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}" + fi +fi + +# Set pedantic +libzmq_pedantic="yes" + +# By default compiling with -Werror except OSX. +libzmq_werror="yes" + +# By default use DSO visibility +libzmq_dso_visibility="yes" + +# Platform specific checks +libzmq_on_mingw32="no" +libzmq_on_android="no" +libzmq_on_linux="no" + +# Set some default features required by 0MQ code. +CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE $CPPFLAGS" + +# For host type checks +AC_CANONICAL_HOST + +# OS-specific tests +case "${host_os}" in + *linux*) + # Define on Linux to enable all library features. Define if using a gnu compiler + if test "x$GXX" = "xyes"; then + CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" + fi + AC_DEFINE(ZMQ_HAVE_LINUX, 1, [Have Linux OS]) + libzmq_on_linux="yes" + + case "${host_os}" in + *android*) + AC_DEFINE(ZMQ_HAVE_ANDROID, 1, [Have Android OS]) + libzmq_on_android="yes" + ;; + esac + ;; + *solaris*) + # Define on Solaris to enable all library features + CPPFLAGS="-D_PTHREADS $CPPFLAGS" + AC_DEFINE(ZMQ_HAVE_SOLARIS, 1, [Have Solaris OS]) + AC_CHECK_LIB(socket, socket) + AC_CHECK_LIB(nsl, gethostbyname) + AC_MSG_CHECKING([whether atomic operations can be used]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[#include ]], + [[uint32_t value; + atomic_cas_32 (&value, 0, 0); + return 0;]])], + [solaris_has_atomic=yes], + [solaris_has_atomic=no]) + AC_MSG_RESULT([$solaris_has_atomic]) + # Solaris 8 does not have atomic operations exported to user space. + if test "x$solaris_has_atomic" = "xno"; then + AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes]) + fi + # ssp library is required for libsodium on Solaris-like systems + LDFLAGS="-lssp $LDFLAGS" + CPPFLAGS="$CPPFLAGS -Wno-long-long" + ;; + *freebsd*) + # Define on FreeBSD to enable all library features + CPPFLAGS="-D__BSD_VISIBLE $CPPFLAGS" + AC_DEFINE(ZMQ_HAVE_FREEBSD, 1, [Have FreeBSD OS]) + ;; + *darwin*) + # Define on Darwin to enable all library features + CPPFLAGS="-D_DARWIN_C_SOURCE $CPPFLAGS" + libzmq_pedantic="no" + libzmq_werror="no" + AC_DEFINE(ZMQ_HAVE_OSX, 1, [Have DarwinOSX OS]) + AC_LANG_PUSH([C++]) + LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Wno-uninitialized]) + AC_LANG_POP([C++]) + ;; + *netbsd*) + # Define on NetBSD to enable all library features + CPPFLAGS="-D_NETBSD_SOURCE $CPPFLAGS" + AC_DEFINE(ZMQ_HAVE_NETBSD, 1, [Have NetBSD OS]) + # NetBSD 5.0 and newer provides atomic operations but we can + # only use these on systems where PR #42842 has been fixed so + # we must try and link a test program using C++. + libzmq_netbsd_has_atomic=no + AC_MSG_CHECKING([whether atomic operations can be used]) + AC_LANG_PUSH([C++]) + AC_LINK_IFELSE([AC_LANG_PROGRAM( + [[#include ]], + [[uint32_t value; + atomic_cas_32 (&value, 0, 0); + return 0;]])], + [libzmq_netbsd_has_atomic=yes], + [libzmq_netbsd_has_atomic=no]) + AC_LANG_POP([C++]) + AC_MSG_RESULT([$libzmq_netbsd_has_atomic]) + if test "x$libzmq_netbsd_has_atomic" = "xno"; then + AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes]) + fi + ;; + *openbsd*) + # Define on OpenBSD to enable all library features + CPPFLAGS="-D_BSD_SOURCE $CPPFLAGS" + AC_DEFINE(ZMQ_HAVE_OPENBSD, 1, [Have OpenBSD OS]) + ;; + *nto-qnx*) + libzmq_pedantic="no" + AC_DEFINE(ZMQ_HAVE_QNXNTO, 1, [Have QNX Neutrino OS]) + AC_CHECK_LIB(socket, socket) + ;; + *aix*) + AC_DEFINE(ZMQ_HAVE_AIX, 1, [Have AIX OS]) + ;; + *hpux*) + # Define on HP-UX to enable all library features + CPPFLAGS="-D_POSIX_C_SOURCE=200112L $CPPFLAGS" + AC_DEFINE(ZMQ_HAVE_HPUX, 1, [Have HPUX OS]) + LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Ae]) + AC_CHECK_FUNCS(gethrtime) + ;; + *mingw32*) + AC_DEFINE(ZMQ_HAVE_WINDOWS, 1, [Have Windows OS]) + AC_DEFINE(ZMQ_HAVE_MINGW32, 1, [Have MinGW32]) + AC_CHECK_HEADERS(windows.h) + AC_CHECK_LIB(ws2_32, main, , + [AC_MSG_ERROR([cannot link with ws2_32.dll.])]) + AC_CHECK_LIB(rpcrt4, main, , + [AC_MSG_ERROR([cannot link with rpcrt4.dll.])]) + AC_CHECK_LIB(iphlpapi, main, , + [AC_MSG_ERROR([cannot link with iphlpapi.dll.])]) + # mingw32 defines __int64_t as long long + AC_LANG_PUSH([C++]) + LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Wno-long-long]) + AC_LANG_POP([C++]) + libzmq_on_mingw32="yes" + libzmq_dso_visibility="no" + + if test "x$enable_static" = "xyes"; then + AC_MSG_ERROR([Building static libraries is not supported under MinGW32]) + fi + ;; + *cygwin*) + # Define on Cygwin to enable all library features + CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" + AC_DEFINE(ZMQ_HAVE_CYGWIN, 1, [Have Cygwin]) + if test "x$enable_static" = "xyes"; then + AC_MSG_ERROR([Building static libraries is not supported under Cygwin]) + fi + ;; + *) + AC_MSG_ERROR([unsupported system: ${host_os}.]) + ;; +esac + +# Checks for libraries +AC_CHECK_LIB([pthread], [pthread_create]) +AC_CHECK_LIB([rt], [clock_gettime]) +AC_CHECK_LIB([sodium], [sodium_init],,AC_MSG_WARN(libsodium is needed for CURVE security)) + +# +# Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec +# +if test "x$libzmq_dso_visibility" = "xyes"; then + AC_LANG_PUSH([C++]) + LIBZMQ_CHECK_LANG_VISIBILITY([LIBZMQ_EXTRA_CXXFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag ${LIBZMQ_EXTRA_CXXFLAGS}"]) + AC_LANG_POP([C++]) +fi + +# CPU-specific optimizations +case "${host_cpu}" in + *sparc*) + AC_LANG_PUSH([C++]) + LIBZMQ_CHECK_LANG_FLAG_PREPEND([-mcpu=v9]) + AC_LANG_POP([C++]) + ;; + *) + ;; +esac + +# Check whether to build docs / install man pages +LIBZMQ_CHECK_DOC_BUILD + +# Check polling system +LIBZMQ_CHECK_POLLER([CPPFLAGS="${CPPFLAGS} -D${libzmq_cv_poller_flag}"], + [AC_MSG_ERROR([Unable to continue without polling system])]) + +# Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(errno.h arpa/inet.h netinet/tcp.h netinet/in.h stddef.h \ +stdlib.h string.h sys/socket.h sys/time.h time.h unistd.h limits.h) + +# Check if we have ifaddrs.h header file. +AC_CHECK_HEADERS(ifaddrs.h, [AC_DEFINE(ZMQ_HAVE_IFADDRS, 1, [Have ifaddrs.h header.])]) + +# Check if we have sys/uio.h header file. +AC_CHECK_HEADERS(sys/uio.h, [AC_DEFINE(ZMQ_HAVE_UIO, 1, [Have uio.h header.])]) + +# Force not to use eventfd +AC_ARG_ENABLE([eventfd], [AS_HELP_STRING([--disable-eventfd], [disable eventfd [default=no]])], + [zmq_disable_eventfd=yes], [zmq_disable_eventfd=no]) + +if test "x$zmq_disable_eventfd" != "xyes"; then + # Check if we have eventfd.h header file. + AC_CHECK_HEADERS(sys/eventfd.h, + [AC_DEFINE(ZMQ_HAVE_EVENTFD, 1, [Have eventfd extension.])]) +fi + +# Use c++ in subsequent tests +AC_LANG_PUSH(C++) + +AC_HEADER_STDBOOL +AC_C_CONST +AC_C_INLINE +# Checks for typedefs, structures, and compiler characteristics. +if test "x$libzmq_cv_[]_AC_LANG_ABBREV[]_intel_compiler" = "xyes"; then + dnl 279: controlling expression is constant + dnl Fixes build with ICC 12.x + LIBZMQ_CHECK_WITH_FLAG([-wd279], [AC_TYPE_SIZE_T]) + LIBZMQ_CHECK_WITH_FLAG([-wd279], [AC_TYPE_SSIZE_T]) +else + AC_TYPE_SIZE_T + AC_TYPE_SSIZE_T +fi +AC_HEADER_TIME +AC_TYPE_UINT32_T +AC_C_VOLATILE + +# PGM extension +libzmq_pgm_ext="no" + +pgm_basename="libpgm-5.2.122~dfsg" + +AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm], + [build libzmq with PGM extension [default=no]])], + [with_pgm_ext=$withval], [with_pgm_ext=no]) + +# build using system pgm +AC_ARG_WITH([system-pgm], [AS_HELP_STRING([--with-system-pgm], + [build libzmq with PGM extension. Requires pkg-config [default=no]])], + [with_system_pgm_ext=yes], [with_system_pgm_ext=no]) + +if test "x$with_pgm_ext" != "xno" -a "x$with_system_pgm_ext" != "xno"; then + AC_MSG_ERROR([--with-pgm and --with-system-pgm cannot be specified together]) +fi + +if test "x$with_pgm_ext" != "xno"; then + + # This allows placing the tar.gz to foreign/openpgm + # and using ./configure --with-pgm=libpgm-x.y.z + if test "x$with_pgm_ext" != "xyes"; then + pgm_basename="$with_pgm_ext" + fi + + # Unpack libpgm + AC_MSG_NOTICE([Unpacking ${pgm_basename}.tar.gz]) + libzmq_pwd=`pwd` + cd foreign/openpgm + + if ! (gzip -dc "${pgm_basename}.tar.gz" || echo "failed") | ${am__untar}; then + AC_MSG_ERROR([cannot unpack the foreign/openpgm/${pgm_basename}.tar.gz file]) + fi + + cd "${libzmq_pwd}" + + if test -d foreign/openpgm/build-staging; then + rm -rf foreign/openpgm/build-staging + fi + + mv foreign/openpgm/${pgm_basename} foreign/openpgm/build-staging + pgm_srcdir=foreign/openpgm/build-staging/openpgm/pgm + + if ! test -d foreign/openpgm/build-staging/openpgm/pgm/config; then + mkdir foreign/openpgm/build-staging/openpgm/pgm/config + fi + + # DSO symbol visibility for openpgm + AC_LANG_PUSH([C]) + LIBZMQ_CHECK_LANG_VISIBILITY([ac_configure_args="CFLAGS='$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag' ${ac_configure_args}"]) + AC_LANG_POP([C]) + + pgm_subdir=build-staging/openpgm/pgm + AC_SUBST(pgm_subdir) + + AC_SUBST(pgm_srcdir) + AC_CONFIG_SUBDIRS([foreign/openpgm/build-staging/openpgm/pgm/]) + + # Success! + AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension]) + libzmq_pgm_ext="yes" +fi + +# Build with system openpgm +if test "x$with_system_pgm_ext" != "xno"; then + m4_ifdef([PKG_CHECK_MODULES], [ + have_pgm_system_library="no" + PKG_CHECK_MODULES([OpenPGM], [openpgm-5.2 >= 5.2], + [ have_pgm_system_library="yes" ], + [PKG_CHECK_MODULES([OpenPGM], [openpgm-5.1 >= 5.1], + [ have_pgm_system_library="yes" ]) + ] + ) + if test "x$have_pgm_system_library" = "xyes"; then + AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension]) + LIBZMQ_EXTRA_CXXFLAGS="$OpenPGM_CFLAGS $LIBZMQ_EXTRA_CXXFLAGS" + LIBS="$OpenPGM_LIBS $LIBS" + fi + ], + [AC_MSG_ERROR([--with-system-pgm requires a working pkg-config installation])]) +fi + +AC_SUBST(pgm_basename) + +# Set -Wall, -Werror and -pedantic +AC_LANG_PUSH([C++]) + +# Check how to enable -Wall +LIBZMQ_LANG_WALL([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_wall_flag $CPPFLAGS"]) + +if test "x$libzmq_werror" = "xyes" -a "x$libzmq_cv_[]_AC_LANG_ABBREV[]_sun_studio_compiler" != "xyes"; then + LIBZMQ_LANG_WERROR([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_werror_flag $CPPFLAGS"]) +fi + +if test "x$libzmq_pedantic" = "xyes"; then + LIBZMQ_LANG_STRICT([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_strict_flag $CPPFLAGS"]) +fi +AC_LANG_POP([C++]) + +AM_CONDITIONAL(BUILD_PGM, test "x$libzmq_pgm_ext" = "xyes") +AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes") +AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes") +AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes") + +# Checks for library functions. +AC_TYPE_SIGNAL +AC_CHECK_FUNCS(perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs fork) +AC_CHECK_HEADERS([alloca.h]) +LIBZMQ_CHECK_SOCK_CLOEXEC([AC_DEFINE( + [ZMQ_HAVE_SOCK_CLOEXEC], + [1], + [Whether SOCK_CLOEXEC is defined and functioning.]) + ]) + +# TCP keep-alives Checks. +LIBZMQ_CHECK_SO_KEEPALIVE([AC_DEFINE( + [ZMQ_HAVE_SO_KEEPALIVE], + [1], + [Whether SO_KEEPALIVE is supported.]) + ]) +LIBZMQ_CHECK_TCP_KEEPCNT([AC_DEFINE( + [ZMQ_HAVE_TCP_KEEPCNT], + [1], + [Whether TCP_KEEPCNT is supported.]) + ]) +LIBZMQ_CHECK_TCP_KEEPIDLE([AC_DEFINE( + [ZMQ_HAVE_TCP_KEEPIDLE], + [1], + [Whether TCP_KEEPIDLE is supported.]) + ]) +LIBZMQ_CHECK_TCP_KEEPINTVL([AC_DEFINE( + [ZMQ_HAVE_TCP_KEEPINTVL], + [1], + [Whether TCP_KEEPINTVL is supported.]) + ]) +LIBZMQ_CHECK_TCP_KEEPALIVE([AC_DEFINE( + [ZMQ_HAVE_TCP_KEEPALIVE], + [1], + [Whether TCP_KEEPALIVE is supported.]) + ]) + +# Subst LIBZMQ_EXTRA_CFLAGS & CXXFLAGS & LDFLAGS +AC_SUBST(LIBZMQ_EXTRA_CFLAGS) +AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS) +AC_SUBST(LIBZMQ_EXTRA_LDFLAGS) + +AC_CONFIG_FILES([Makefile \ + src/Makefile \ + src/libzmq.pc \ + doc/Makefile \ + perf/Makefile \ + tests/Makefile \ + tools/Makefile \ + builds/msvc/Makefile \ + foreign/openpgm/Makefile \ + builds/redhat/zeromq.spec]) +AC_OUTPUT diff -Nru zeromq3-3.2.4+dfsg/configure.in zeromq3-4.0.4/configure.in --- zeromq3-3.2.4+dfsg/configure.in 2013-09-17 05:32:55.000000000 +0000 +++ zeromq3-4.0.4/configure.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,436 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. -AC_PREREQ(2.61) -# -# The 0MQ version number is extracted from include/zmq.h using -# the version.sh script. Hence, it should be updated there. -# The version in git should reflect the *next* version planned. -# -AC_INIT([zeromq],[m4_esyscmd([./version.sh])],[zeromq-dev@lists.zeromq.org]) - -AC_CONFIG_AUX_DIR(config) -AC_CONFIG_MACRO_DIR(config) -AC_CONFIG_HEADERS([src/platform.hpp]) -AM_INIT_AUTOMAKE(tar-ustar dist-zip foreign) -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -# This lets us use PACKAGE_VERSION in Makefiles -AC_SUBST(PACKAGE_VERSION) - -# Libtool -version-info (ABI version) -# -# Don't change this unless you know exactly what you're doing and have read and -# understand: -# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -# -# Changes: -# -# ZeroMQ versions prior to 2.1.0 use 0:0:0 (undefined) -# ZeroMQ versions 2.1.x: 1:0:0 (ABI version 1) -# ZeroMQ version 3.0: 2:0:0 (ABI version 2) -# ZeroMQ version 3.1: 3:0:0 (ABI version 3) -# -# libzmq -version-info current:revision:age -LTVER="3:0:0" -AC_SUBST(LTVER) - -# Take a copy of original flags -ZMQ_ORIG_CFLAGS="${CFLAGS:-none}" -ZMQ_ORIG_CPPFLAGS="${CPPFLAGS:-none}" -ZMQ_ORIG_CXXFLAGS="${CXXFLAGS:-none}" - -# Checks for programs. -AC_PROG_CC -AC_PROG_CC_C99 -AC_PROG_CXX -AM_PROG_CC_C_O -AC_PROG_SED -AC_PROG_AWK - -# Libtool configuration for different targets. See acinclude.m4 -AC_ARG_VAR([XMLTO], [Path to xmlto command]) -AC_PATH_PROG([XMLTO], [xmlto]) -AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command]) -AC_PATH_PROG([ASCIIDOC], [asciidoc]) -LIBZMQ_CONFIG_LIBTOOL -AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL - -# Check whether to build a with debug symbols -LIBZMQ_CHECK_ENABLE_DEBUG - -# Check wheter to enable code coverage -LIBZMQ_WITH_GCOV - -# Checks for libraries. -AC_CHECK_LIB([pthread], [pthread_create]) -AC_CHECK_LIB([rt], [clock_gettime]) - -# Set pedantic -libzmq_pedantic="yes" - -# By default compiling with -Werror except OSX. -libzmq_werror="yes" - -# By default use DSO visibility -libzmq_dso_visibility="yes" - -# Whether we are on mingw or android or not. -libzmq_on_mingw32="no" -libzmq_on_android="no" - -# Set some default features required by 0MQ code. -CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE $CPPFLAGS" - -# For host type checks -AC_CANONICAL_HOST - -# OS-specific tests -case "${host_os}" in - *linux*) - # Define on Linux to enable all library features. Define if using a gnu compiler - if test "x$GXX" = "xyes"; then - CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" - fi - AC_DEFINE(ZMQ_HAVE_LINUX, 1, [Have Linux OS]) - - case "${host_os}" in - *android*) - AC_DEFINE(ZMQ_HAVE_ANDROID, 1, [Have Android OS]) - libzmq_on_android="yes" - ;; - esac - ;; - *solaris*) - # Define on Solaris to enable all library features - CPPFLAGS="-D_PTHREADS $CPPFLAGS" - AC_DEFINE(ZMQ_HAVE_SOLARIS, 1, [Have Solaris OS]) - AC_CHECK_LIB(socket, socket) - AC_CHECK_LIB(nsl, gethostbyname) - AC_MSG_CHECKING([whether atomic operations can be used]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#include ]], - [[uint32_t value; - atomic_cas_32 (&value, 0, 0); - return 0;]])], - [solaris_has_atomic=yes], - [solaris_has_atomic=no]) - AC_MSG_RESULT([$solaris_has_atomic]) - # Solaris 8 does not have atomic operations exported to user space. - if test "x$solaris_has_atomic" = "xno"; then - AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes]) - fi - ;; - *freebsd*) - # Define on FreeBSD to enable all library features - CPPFLAGS="-D__BSD_VISIBLE $CPPFLAGS" - AC_DEFINE(ZMQ_HAVE_FREEBSD, 1, [Have FreeBSD OS]) - ;; - *darwin*) - # Define on Darwin to enable all library features - CPPFLAGS="-D_DARWIN_C_SOURCE $CPPFLAGS" - libzmq_pedantic="no" - libzmq_werror="no" - AC_DEFINE(ZMQ_HAVE_OSX, 1, [Have DarwinOSX OS]) - AC_LANG_PUSH([C++]) - LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Wno-uninitialized]) - AC_LANG_POP([C++]) - ;; - *netbsd*) - # Define on NetBSD to enable all library features - CPPFLAGS="-D_NETBSD_SOURCE $CPPFLAGS" - AC_DEFINE(ZMQ_HAVE_NETBSD, 1, [Have NetBSD OS]) - # NetBSD 5.0 and newer provides atomic operations but we can - # only use these on systems where PR #42842 has been fixed so - # we must try and link a test program using C++. - libzmq_netbsd_has_atomic=no - AC_MSG_CHECKING([whether atomic operations can be used]) - AC_LANG_PUSH([C++]) - AC_LINK_IFELSE([AC_LANG_PROGRAM( - [[#include ]], - [[uint32_t value; - atomic_cas_32 (&value, 0, 0); - return 0;]])], - [libzmq_netbsd_has_atomic=yes], - [libzmq_netbsd_has_atomic=no]) - AC_LANG_POP([C++]) - AC_MSG_RESULT([$libzmq_netbsd_has_atomic]) - if test "x$libzmq_netbsd_has_atomic" = "xno"; then - AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes]) - fi - ;; - *openbsd*) - # Define on OpenBSD to enable all library features - CPPFLAGS="-D_BSD_SOURCE $CPPFLAGS" - AC_DEFINE(ZMQ_HAVE_OPENBSD, 1, [Have OpenBSD OS]) - ;; - *nto-qnx*) - libzmq_pedantic="no" - AC_DEFINE(ZMQ_HAVE_QNXNTO, 1, [Have QNX Neutrino OS]) - AC_CHECK_LIB(socket, socket) - ;; - *aix*) - AC_DEFINE(ZMQ_HAVE_AIX, 1, [Have AIX OS]) - ;; - *hpux*) - # Define on HP-UX to enable all library features - CPPFLAGS="-D_POSIX_C_SOURCE=200112L $CPPFLAGS" - AC_DEFINE(ZMQ_HAVE_HPUX, 1, [Have HPUX OS]) - LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Ae]) - AC_CHECK_FUNCS(gethrtime) - ;; - *mingw32*) - AC_DEFINE(ZMQ_HAVE_WINDOWS, 1, [Have Windows OS]) - AC_DEFINE(ZMQ_HAVE_MINGW32, 1, [Have MinGW32]) - AC_CHECK_HEADERS(windows.h) - AC_CHECK_LIB(ws2_32, main, , - [AC_MSG_ERROR([cannot link with ws2_32.dll.])]) - AC_CHECK_LIB(rpcrt4, main, , - [AC_MSG_ERROR([cannot link with rpcrt4.dll.])]) - AC_CHECK_LIB(iphlpapi, main, , - [AC_MSG_ERROR([cannot link with iphlpapi.dll.])]) - # mingw32 defines __int64_t as long long - AC_LANG_PUSH([C++]) - LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Wno-long-long]) - AC_LANG_POP([C++]) - libzmq_on_mingw32="yes" - libzmq_dso_visibility="no" - - if test "x$enable_static" = "xyes"; then - AC_MSG_ERROR([Building static libraries is not supported under MinGW32]) - fi - ;; - *cygwin*) - # Define on Cygwin to enable all library features - CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" - AC_DEFINE(ZMQ_HAVE_CYGWIN, 1, [Have Cygwin]) - if test "x$enable_static" = "xyes"; then - AC_MSG_ERROR([Building static libraries is not supported under Cygwin]) - fi - ;; - *) - AC_MSG_ERROR([unsupported system: ${host_os}.]) - ;; -esac - -# -# Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec -# -if test "x$libzmq_dso_visibility" = "xyes"; then - AC_LANG_PUSH([C++]) - LIBZMQ_CHECK_LANG_VISIBILITY([LIBZMQ_EXTRA_CXXFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag ${LIBZMQ_EXTRA_CXXFLAGS}"]) - AC_LANG_POP([C++]) -fi - -# CPU-specific optimizations -case "${host_cpu}" in - *sparc*) - AC_LANG_PUSH([C++]) - LIBZMQ_CHECK_LANG_FLAG_PREPEND([-mcpu=v9]) - AC_LANG_POP([C++]) - ;; - *) - ;; -esac - -# Check whether to build docs / install man pages -LIBZMQ_CHECK_DOC_BUILD - -# Check polling system -LIBZMQ_CHECK_POLLER([CPPFLAGS="${CPPFLAGS} -D${libzmq_cv_poller_flag}"], - [AC_MSG_ERROR([Unable to continue without polling system])]) - -# Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS(errno.h arpa/inet.h netinet/tcp.h netinet/in.h stddef.h \ -stdlib.h string.h sys/socket.h sys/time.h time.h unistd.h limits.h) - -# Check if we have ifaddrs.h header file. -AC_CHECK_HEADERS(ifaddrs.h, [AC_DEFINE(ZMQ_HAVE_IFADDRS, 1, [Have ifaddrs.h header.])]) - -# Check if we have sys/uio.h header file. -AC_CHECK_HEADERS(sys/uio.h, [AC_DEFINE(ZMQ_HAVE_UIO, 1, [Have uio.h header.])]) - -# Force not to use eventfd -AC_ARG_ENABLE([eventfd], [AS_HELP_STRING([--disable-eventfd], [disable eventfd [default=no]])], - [zmq_disable_eventfd=yes], [zmq_disable_eventfd=no]) - -if test "x$zmq_disable_eventfd" != "xyes"; then - # Check if we have eventfd.h header file. - AC_CHECK_HEADERS(sys/eventfd.h, - [AC_DEFINE(ZMQ_HAVE_EVENTFD, 1, [Have eventfd extension.])]) -fi - -# Use c++ in subsequent tests -AC_LANG_PUSH(C++) - -AC_HEADER_STDBOOL -AC_C_CONST -AC_C_INLINE -# Checks for typedefs, structures, and compiler characteristics. -if test "x$libzmq_cv_[]_AC_LANG_ABBREV[]_intel_compiler" = "xyes"; then - dnl 279: controlling expression is constant - dnl Fixes build with ICC 12.x - LIBZMQ_CHECK_WITH_FLAG([-wd279], [AC_TYPE_SIZE_T]) - LIBZMQ_CHECK_WITH_FLAG([-wd279], [AC_TYPE_SSIZE_T]) -else - AC_TYPE_SIZE_T - AC_TYPE_SSIZE_T -fi -AC_HEADER_TIME -AC_TYPE_UINT32_T -AC_C_VOLATILE - -# PGM extension -libzmq_pgm_ext="no" - -pgm_basename="libpgm-5.1.118~dfsg" - -AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm], - [build libzmq with PGM extension [default=no]])], - [with_pgm_ext=$withval], [with_pgm_ext=no]) - -# build using system pgm -AC_ARG_WITH([system-pgm], [AS_HELP_STRING([--with-system-pgm], - [build libzmq with PGM extension. Requires pkg-config [default=no]])], - [with_system_pgm_ext=yes], [with_system_pgm_ext=no]) - -if test "x$with_pgm_ext" != "xno" -a "x$with_system_pgm_ext" != "xno"; then - AC_MSG_ERROR([--with-pgm and --with-system-pgm cannot be specified together]) -fi - -if test "x$with_pgm_ext" != "xno"; then - - # This allows placing the tar.gz to foreign/openpgm - # and using ./configure --with-pgm=libpgm-x.y.z - if test "x$with_pgm_ext" != "xyes"; then - pgm_basename="$with_pgm_ext" - fi - - # Unpack libpgm - AC_MSG_NOTICE([Unpacking ${pgm_basename}.tar.gz]) - libzmq_pwd=`pwd` - cd foreign/openpgm - - if ! (gzip -dc "${pgm_basename}.tar.gz" || echo "failed") | ${am__untar}; then - AC_MSG_ERROR([cannot unpack the foreign/openpgm/${pgm_basename}.tar.gz file]) - fi - - cd "${libzmq_pwd}" - - if test -d foreign/openpgm/build-staging; then - rm -rf foreign/openpgm/build-staging - fi - - mv foreign/openpgm/${pgm_basename} foreign/openpgm/build-staging - pgm_srcdir=foreign/openpgm/build-staging/openpgm/pgm - - if ! test -d foreign/openpgm/build-staging/openpgm/pgm/config; then - mkdir foreign/openpgm/build-staging/openpgm/pgm/config - fi - - # DSO symbol visibility for openpgm - AC_LANG_PUSH([C]) - LIBZMQ_CHECK_LANG_VISIBILITY([ac_configure_args="CFLAGS='$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag' ${ac_configure_args}"]) - AC_LANG_POP([C]) - - pgm_subdir=build-staging/openpgm/pgm - AC_SUBST(pgm_subdir) - - AC_SUBST(pgm_srcdir) - AC_CONFIG_SUBDIRS([foreign/openpgm/build-staging/openpgm/pgm/]) - - # Success! - AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension]) - libzmq_pgm_ext="yes" -fi - -# Build with system openpgm -if test "x$with_system_pgm_ext" != "xno"; then - m4_ifdef([PKG_CHECK_MODULES], [ - have_pgm_system_library="no" - PKG_CHECK_MODULES([OpenPGM], [openpgm-5.2 >= 5.2], - [ have_pgm_system_library="yes" ], - [PKG_CHECK_MODULES([OpenPGM], [openpgm-5.1 >= 5.1], - [ have_pgm_system_library="yes" ]) - ] - ) - if test "x$have_pgm_system_library" = "xyes"; then - AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension]) - LIBZMQ_EXTRA_CXXFLAGS="$OpenPGM_CFLAGS $LIBZMQ_EXTRA_CXXFLAGS" - LIBS="$OpenPGM_LIBS $LIBS" - fi - ], - [AC_MSG_ERROR([--with-system-pgm requires a working pkg-config installation])]) -fi - -AC_SUBST(pgm_basename) - -# Set -Wall, -Werror and -pedantic -AC_LANG_PUSH([C++]) - -# Check how to enable -Wall -LIBZMQ_LANG_WALL([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_wall_flag $CPPFLAGS"]) - -if test "x$libzmq_werror" = "xyes" -a "x$libzmq_cv_[]_AC_LANG_ABBREV[]_sun_studio_compiler" != "xyes"; then - LIBZMQ_LANG_WERROR([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_werror_flag $CPPFLAGS"]) -fi - -if test "x$libzmq_pedantic" = "xyes"; then - LIBZMQ_LANG_STRICT([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_strict_flag $CPPFLAGS"]) -fi -AC_LANG_POP([C++]) - -AM_CONDITIONAL(BUILD_PGM, test "x$libzmq_pgm_ext" = "xyes") -AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes") -AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes") - -# Checks for library functions. -AC_TYPE_SIGNAL -AC_CHECK_FUNCS(perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs) -AC_CHECK_HEADERS([alloca.h]) -LIBZMQ_CHECK_SOCK_CLOEXEC([AC_DEFINE( - [ZMQ_HAVE_SOCK_CLOEXEC], - [1], - [Whether SOCK_CLOEXEC is defined and functioning.]) - ]) - -# TCP keep-alives Checks. -LIBZMQ_CHECK_SO_KEEPALIVE([AC_DEFINE( - [ZMQ_HAVE_SO_KEEPALIVE], - [1], - [Whether SO_KEEPALIVE is supported.]) - ]) -LIBZMQ_CHECK_TCP_KEEPCNT([AC_DEFINE( - [ZMQ_HAVE_TCP_KEEPCNT], - [1], - [Whether TCP_KEEPCNT is supported.]) - ]) -LIBZMQ_CHECK_TCP_KEEPIDLE([AC_DEFINE( - [ZMQ_HAVE_TCP_KEEPIDLE], - [1], - [Whether TCP_KEEPIDLE is supported.]) - ]) -LIBZMQ_CHECK_TCP_KEEPINTVL([AC_DEFINE( - [ZMQ_HAVE_TCP_KEEPINTVL], - [1], - [Whether TCP_KEEPINTVL is supported.]) - ]) -LIBZMQ_CHECK_TCP_KEEPALIVE([AC_DEFINE( - [ZMQ_HAVE_TCP_KEEPALIVE], - [1], - [Whether TCP_KEEPALIVE is supported.]) - ]) - -# Subst LIBZMQ_EXTRA_CFLAGS & CXXFLAGS & LDFLAGS -AC_SUBST(LIBZMQ_EXTRA_CFLAGS) -AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS) -AC_SUBST(LIBZMQ_EXTRA_LDFLAGS) - -AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile - perf/Makefile src/libzmq.pc \ - builds/msvc/Makefile tests/Makefile \ - foreign/openpgm/Makefile \ - builds/redhat/zeromq.spec]) -AC_OUTPUT - diff -Nru zeromq3-3.2.4+dfsg/COPYING.LESSER zeromq3-4.0.4/COPYING.LESSER --- zeromq3-3.2.4+dfsg/COPYING.LESSER 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/COPYING.LESSER 2013-11-13 17:57:50.000000000 +0000 @@ -177,3 +177,5 @@ derived from or based on this library. If you modify this library, you must extend this exception to your version of the library. +Note: this exception relieves you of any obligations under sections 4 and 5 +of this license, and section 6 of the GNU General Public License. diff -Nru zeromq3-3.2.4+dfsg/debian/changelog zeromq3-4.0.4/debian/changelog --- zeromq3-3.2.4+dfsg/debian/changelog 2013-09-23 02:43:27.000000000 +0000 +++ zeromq3-4.0.4/debian/changelog 2014-03-15 02:17:48.000000000 +0000 @@ -1,8 +1,42 @@ -zeromq3 (3.2.4+dfsg-1chl1~saucy1) saucy; urgency=low +zeromq3 (4.0.4-1chl1~saucy1) saucy; urgency=low - * Backport for saucy. + * New upstream release. - -- Chris Lea Sun, 22 Sep 2013 19:42:22 -0700 + -- Chris Lea Fri, 14 Mar 2014 19:17:11 -0700 + +zeromq3 (4.0.3+dfsg-1) experimental; urgency=medium + + * New upstream release (Closes: #736353) + * Drop 01_shutdown-race.patch (merged upstream) + * Update *.symbols file + * Don't install README anymore + * Update copyright file + + -- Alessandro Ghedini Wed, 05 Feb 2014 22:06:16 +0100 + +zeromq3 (3.2.4+dfsg-4) unstable; urgency=medium + + * Update Standards-Version to 3.9.5 (no changes needed) + * Add 03_fix-s390-rdtsc.patch to fix FTBFS on s390x (Closes: #734521) + * Re-enable tests on s390x + + -- Alessandro Ghedini Sun, 12 Jan 2014 13:21:34 +0100 + +zeromq3 (3.2.4+dfsg-3) unstable; urgency=medium + + * Do not export C++ symbols (Closes: #732654) + * Use dh-autoreconf instead of autotools-dev + + -- Alessandro Ghedini Fri, 20 Dec 2013 19:11:09 +0100 + +zeromq3 (3.2.4+dfsg-2) unstable; urgency=medium + + * Fix vcs-field-not-canonical + * Add symbols file + * Add 01_shutdown-race.patch to fix a race condition on shutdown + (Closes: #732576) + + -- Alessandro Ghedini Thu, 19 Dec 2013 13:42:12 +0100 zeromq3 (3.2.4+dfsg-1) unstable; urgency=low diff -Nru zeromq3-3.2.4+dfsg/debian/control zeromq3-4.0.4/debian/control --- zeromq3-3.2.4+dfsg/debian/control 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/control 2014-02-05 21:06:21.000000000 +0000 @@ -3,12 +3,12 @@ Priority: optional Maintainer: Alessandro Ghedini Build-Depends: debhelper (>= 9), - autotools-dev, + dh-autoreconf, libpgm-dev, pkg-config -Standards-Version: 3.9.4 -Vcs-Browser: http://git.debian.org/?p=collab-maint/zeromq3.git -Vcs-Git: git://git.debian.org/collab-maint/zeromq3.git +Standards-Version: 3.9.5 +Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/zeromq3.git +Vcs-Git: git://anonscm.debian.org/collab-maint/zeromq3.git Homepage: http://www.zeromq.org/ Package: libzmq3 diff -Nru zeromq3-3.2.4+dfsg/debian/copyright zeromq3-4.0.4/debian/copyright --- zeromq3-3.2.4+dfsg/debian/copyright 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/copyright 2014-02-05 21:06:21.000000000 +0000 @@ -2,12 +2,11 @@ Upstream-Name: ZeroMQ Source: http://zeromq.org Comment: The upstream tarball has been repacked in order to remove the bundled - tarball of OpenPGM (not in preferred form of modifcation) and the sources of - xmlParser (not used). + tarball of OpenPGM. Files: * Copyright: 2009-2011, 250bpm s.r.o - 2007-2011, iMatix Corporation + 2007-2013, iMatix Corporation 2007-2011, Other contributors as noted in the AUTHORS file License: LGPL-3.0+ @@ -33,7 +32,7 @@ src/fq.cpp include/zmq.h Copyright: 2009-2011, 250bpm s.r.o - 2007-2009, iMatix Corporation + 2007-2013, iMatix Corporation 2011, VMware, Inc 2007-2011, Other contributors as noted in the AUTHORS file License: LGPL-3.0+ @@ -42,7 +41,7 @@ src/pgm_sender.* src/pgm_socket.* Copyright: 2009-2011, 250bpm s.r.o - 2007-2009, iMatix Corporation + 2007-2013, iMatix Corporation 2010-2011, Miru Limited 2007-2011, Other contributors as noted in the AUTHORS file License: LGPL-3.0+ @@ -56,7 +55,7 @@ Files: debian/zmq.hpp Copyright: 2009-2011, 250bpm s.r.o. 2011, Botond Ballo - 2007-2009, iMatix Corporation + 2007-2013, iMatix Corporation License: MIT Comment: The C++ header was downloaded from https://github.com/zeromq/cppzmq diff -Nru zeromq3-3.2.4+dfsg/debian/libzmq3.docs zeromq3-4.0.4/debian/libzmq3.docs --- zeromq3-3.2.4+dfsg/debian/libzmq3.docs 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/libzmq3.docs 2014-02-05 21:06:21.000000000 +0000 @@ -1,3 +1,2 @@ AUTHORS NEWS -README diff -Nru zeromq3-3.2.4+dfsg/debian/libzmq3.symbols zeromq3-4.0.4/debian/libzmq3.symbols --- zeromq3-3.2.4+dfsg/debian/libzmq3.symbols 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/debian/libzmq3.symbols 2014-02-05 21:06:21.000000000 +0000 @@ -0,0 +1,52 @@ +libzmq.so.3 libzmq3 #MINVER# + zmq_bind@Base 3.2.3+dfsg + zmq_close@Base 3.2.3+dfsg + zmq_connect@Base 3.2.3+dfsg + zmq_ctx_destroy@Base 3.2.3+dfsg + zmq_ctx_get@Base 3.2.3+dfsg + zmq_ctx_new@Base 3.2.3+dfsg + zmq_ctx_set@Base 3.2.3+dfsg + zmq_ctx_shutdown@Base 4.0.1+dfsg + zmq_ctx_term@Base 4.0.1+dfsg + zmq_curve_keypair@Base 4.0.1+dfsg + zmq_device@Base 3.2.3+dfsg + zmq_disconnect@Base 3.2.3+dfsg + zmq_errno@Base 3.2.3+dfsg + zmq_getsockopt@Base 3.2.3+dfsg + zmq_init@Base 3.2.3+dfsg + zmq_msg_close@Base 3.2.3+dfsg + zmq_msg_copy@Base 3.2.3+dfsg + zmq_msg_data@Base 3.2.3+dfsg + zmq_msg_get@Base 3.2.3+dfsg + zmq_msg_init@Base 3.2.3+dfsg + zmq_msg_init_data@Base 3.2.3+dfsg + zmq_msg_init_size@Base 3.2.3+dfsg + zmq_msg_more@Base 3.2.3+dfsg + zmq_msg_move@Base 3.2.3+dfsg + zmq_msg_recv@Base 3.2.3+dfsg + zmq_msg_send@Base 3.2.3+dfsg + zmq_msg_set@Base 3.2.3+dfsg + zmq_msg_size@Base 3.2.3+dfsg + zmq_poll@Base 3.2.3+dfsg + zmq_proxy@Base 3.2.3+dfsg + zmq_recv@Base 3.2.3+dfsg + zmq_recviov@Base 3.2.3+dfsg + zmq_recvmsg@Base 3.2.3+dfsg + zmq_send@Base 3.2.3+dfsg + zmq_send_const@Base 4.0.1+dfsg + zmq_sendiov@Base 3.2.3+dfsg + zmq_sendmsg@Base 3.2.3+dfsg + zmq_setsockopt@Base 3.2.3+dfsg + zmq_sleep@Base 3.2.3+dfsg + zmq_socket@Base 3.2.3+dfsg + zmq_socket_monitor@Base 3.2.3+dfsg + zmq_stopwatch_start@Base 3.2.3+dfsg + zmq_stopwatch_stop@Base 3.2.3+dfsg + zmq_strerror@Base 3.2.3+dfsg + zmq_term@Base 3.2.3+dfsg + zmq_threadclose@Base 4.0.1+dfsg + zmq_threadstart@Base 4.0.1+dfsg + zmq_unbind@Base 3.2.3+dfsg + zmq_version@Base 3.2.3+dfsg + zmq_z85_decode@Base 4.0.1+dfsg + zmq_z85_encode@Base 4.0.1+dfsg diff -Nru zeromq3-3.2.4+dfsg/debian/patches/02_fix-exported-symbols.patch zeromq3-4.0.4/debian/patches/02_fix-exported-symbols.patch --- zeromq3-3.2.4+dfsg/debian/patches/02_fix-exported-symbols.patch 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/debian/patches/02_fix-exported-symbols.patch 2014-02-05 21:06:21.000000000 +0000 @@ -0,0 +1,25 @@ +Description: Only export zmq_* symbols +Origin: vendor +Bug-Debian: http://bugs.debian.org/732654 +Forwarded: https://github.com/zeromq/libzmq/pull/817 +Author: Alessandro Ghedini +Last-Update: 2013-12-20 + +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -154,7 +154,7 @@ + if ON_ANDROID + libzmq_la_LDFLAGS = -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ + else +-libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ ++libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl,--version-script=libzmq.vers + endif + endif + +--- /dev/null ++++ b/src/libzmq.vers +@@ -0,0 +1,4 @@ ++{ ++ global: zmq_*; ++ local: *; ++}; diff -Nru zeromq3-3.2.4+dfsg/debian/patches/03_fix-s390-rdtsc.patch zeromq3-4.0.4/debian/patches/03_fix-s390-rdtsc.patch --- zeromq3-3.2.4+dfsg/debian/patches/03_fix-s390-rdtsc.patch 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/debian/patches/03_fix-s390-rdtsc.patch 2014-02-05 21:06:21.000000000 +0000 @@ -0,0 +1,18 @@ +Description: Fix timestamp counter on s390(x) +Origin: vendor +Bug: https://github.com/zeromq/libzmq/issues/811 +Bug-Debian: http://bugs.debian.org/734521 +Forwarded: https://github.com/zeromq/libzmq/pull/818 +Author: Alessandro Ghedini +Last-Update: 2014-01-12 + +--- a/src/clock.cpp ++++ b/src/clock.cpp +@@ -139,7 +139,6 @@ + #elif defined(__s390__) + uint64_t tsc; + asm("\tstck\t%0\n" : "=Q" (tsc) : : "cc"); +- tsc >>= 12; /* convert to microseconds just to be consistent */ + return(tsc); + #else + return 0; diff -Nru zeromq3-3.2.4+dfsg/debian/patches/series zeromq3-4.0.4/debian/patches/series --- zeromq3-3.2.4+dfsg/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/debian/patches/series 2014-03-15 02:17:35.000000000 +0000 @@ -0,0 +1,2 @@ +#02_fix-exported-symbols.patch +#03_fix-s390-rdtsc.patch diff -Nru zeromq3-3.2.4+dfsg/debian/repack.local zeromq3-4.0.4/debian/repack.local --- zeromq3-3.2.4+dfsg/debian/repack.local 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/repack.local 2014-02-05 21:06:21.000000000 +0000 @@ -1,4 +1,3 @@ MANIFEST=0 SUFFIX=+dfsg rm foreign/openpgm/*.gz -rm -rf foreign/xmlParser diff -Nru zeromq3-3.2.4+dfsg/debian/repack.stub zeromq3-4.0.4/debian/repack.stub --- zeromq3-3.2.4+dfsg/debian/repack.stub 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/repack.stub 2014-02-05 21:06:21.000000000 +0000 @@ -14,7 +14,7 @@ mangle to debian/watch. then create a debian/repack.local. this is a shell script that is -sources under "set -e", so be careful to check returns codes. +sourced under "set -e", so be careful to check returns codes. =head1 FUNCTIONS @@ -62,6 +62,13 @@ =back +=head1 COPYRIGHT AND LICENSE + +Copyright 2009, Ryan Niebur + +This program is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. + =cut if [ -z "$REPACK_SH" ]; then @@ -75,7 +82,7 @@ if [ ! -f "$REPACK_SH" ]; then echo "Couldn't find a repack.sh. please put it in your PATH, put it at ../../scripts/repack.sh, or put it somewhere else and set the REPACK_SH variable" - echo "You can get it from http://svn.debian.org/viewsvn/pkg-perl/scripts/repack.sh" + echo "You can get it from http://anonscm.debian.org/gitweb/?p=pkg-perl/scripts.git;a=blob_plain;f=repack.sh;hb=HEAD" exit 1 fi diff -Nru zeromq3-3.2.4+dfsg/debian/rules zeromq3-4.0.4/debian/rules --- zeromq3-3.2.4+dfsg/debian/rules 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/rules 2014-02-05 21:06:21.000000000 +0000 @@ -4,16 +4,8 @@ DO_TEST = no endif -ifeq ($(DEB_BUILD_ARCH_CPU), s390) - DO_TEST = no -endif - -ifeq ($(DEB_BUILD_ARCH_CPU), s390x) - DO_TEST = no -endif - %: - dh $@ --with=autotools-dev + dh $@ --with=autoreconf override_dh_auto_configure: dh_auto_configure -- --with-system-pgm diff -Nru zeromq3-3.2.4+dfsg/debian/watch zeromq3-4.0.4/debian/watch --- zeromq3-3.2.4+dfsg/debian/watch 2013-09-20 11:56:21.000000000 +0000 +++ zeromq3-4.0.4/debian/watch 2014-02-05 21:06:21.000000000 +0000 @@ -1,4 +1,4 @@ version=3 options=dversionmangle=s/\+dfsg// \ -http://download.zeromq.org/zeromq-(3.*)\.tar\.gz \ +http://download.zeromq.org/zeromq-(4.*)\.tar\.gz \ debian sh debian/repack.stub diff -Nru zeromq3-3.2.4+dfsg/doc/Makefile.am zeromq3-4.0.4/doc/Makefile.am --- zeromq3-3.2.4+dfsg/doc/Makefile.am 2012-10-19 07:23:44.000000000 +0000 +++ zeromq3-4.0.4/doc/Makefile.am 2013-11-13 17:57:50.000000000 +0000 @@ -1,16 +1,18 @@ MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \ - zmq_ctx_new.3 zmq_ctx_destroy.3 zmq_ctx_get.3 zmq_ctx_set.3 \ + zmq_ctx_new.3 zmq_ctx_term.3 zmq_ctx_destroy.3 zmq_ctx_get.3 zmq_ctx_set.3 \ zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \ zmq_msg_move.3 zmq_msg_copy.3 zmq_msg_size.3 zmq_msg_data.3 zmq_msg_close.3 \ zmq_msg_send.3 zmq_msg_recv.3 \ - zmq_send.3 zmq_recv.3 \ + zmq_send.3 zmq_recv.3 zmq_send_const.3 \ zmq_msg_get.3 zmq_msg_set.3 zmq_msg_more.3 \ zmq_getsockopt.3 zmq_setsockopt.3 \ zmq_socket.3 zmq_socket_monitor.3 zmq_poll.3 \ zmq_errno.3 zmq_strerror.3 zmq_version.3 zmq_proxy.3 \ - zmq_sendmsg.3 zmq_recvmsg.3 zmq_init.3 zmq_term.3 + zmq_sendmsg.3 zmq_recvmsg.3 zmq_init.3 zmq_term.3 \ + zmq_z85_encode.3 zmq_z85_decode.3 zmq_curve_keypair.3 -MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7 +MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7 \ + zmq_null.7 zmq_plain.7 zmq_curve.7 MAN_DOC = $(MAN1) $(MAN3) $(MAN7) diff -Nru zeromq3-3.2.4+dfsg/doc/Makefile.in zeromq3-4.0.4/doc/Makefile.in --- zeromq3-3.2.4+dfsg/doc/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/doc/Makefile.in 2014-03-10 21:42:41.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -15,23 +15,6 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -60,7 +43,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -75,11 +58,6 @@ am__v_at_0 = @ SOURCES = DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -251,18 +229,21 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \ - zmq_ctx_new.3 zmq_ctx_destroy.3 zmq_ctx_get.3 zmq_ctx_set.3 \ + zmq_ctx_new.3 zmq_ctx_term.3 zmq_ctx_destroy.3 zmq_ctx_get.3 zmq_ctx_set.3 \ zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \ zmq_msg_move.3 zmq_msg_copy.3 zmq_msg_size.3 zmq_msg_data.3 zmq_msg_close.3 \ zmq_msg_send.3 zmq_msg_recv.3 \ - zmq_send.3 zmq_recv.3 \ + zmq_send.3 zmq_recv.3 zmq_send_const.3 \ zmq_msg_get.3 zmq_msg_set.3 zmq_msg_more.3 \ zmq_getsockopt.3 zmq_setsockopt.3 \ zmq_socket.3 zmq_socket_monitor.3 zmq_poll.3 \ zmq_errno.3 zmq_strerror.3 zmq_version.3 zmq_proxy.3 \ - zmq_sendmsg.3 zmq_recvmsg.3 zmq_init.3 zmq_term.3 + zmq_sendmsg.3 zmq_recvmsg.3 zmq_init.3 zmq_term.3 \ + zmq_z85_encode.3 zmq_z85_decode.3 zmq_curve_keypair.3 + +MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7 \ + zmq_null.7 zmq_plain.7 zmq_curve.7 -MAN7 = zmq.7 zmq_tcp.7 zmq_pgm.7 zmq_epgm.7 zmq_inproc.7 zmq_ipc.7 MAN_DOC = $(MAN1) $(MAN3) $(MAN7) MAN_TXT = $(MAN3:%.3=%.txt) $(MAN7:%.7=%.txt) MAN_HTML = $(MAN_TXT:%.txt=%.html) @@ -312,18 +293,11 @@ -rm -rf .libs _libs install-man3: $(dist_man_MANS) @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS)'; \ - test -n "$(man3dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.3[a-z]*$$/p'; \ - fi; \ + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list=''; test -n "$(man3dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ @@ -355,18 +329,11 @@ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) install-man7: $(dist_man_MANS) @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS)'; \ - test -n "$(man7dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.7[a-z]*$$/p'; \ - fi; \ + test -z "$(man7dir)" || $(MKDIR_P) "$(DESTDIR)$(man7dir)" + @list=''; test -n "$(man7dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.7[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ diff -Nru zeromq3-3.2.4+dfsg/doc/zmq.7 zeromq3-4.0.4/doc/zmq.7 --- zeromq3-3.2.4+dfsg/doc/zmq.7 2012-10-30 05:31:31.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq.7 2014-03-10 21:47:03.000000000 +0000 @@ -2,12 +2,12 @@ .\" Title: zmq .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 10/30/2012 +.\" Date: 03/10/2014 .\" Manual: 0MQ Manual -.\" Source: 0MQ 3.2.1 +.\" Source: 0MQ 4.0.1 .\" Language: English .\" -.TH "ZMQ" "7" "10/30/2012" "0MQ 3\&.2\&.1" "0MQ Manual" +.TH "ZMQ" "7" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,13 +59,7 @@ Destroy a 0MQ context .RS 4 -\fBzmq_ctx_destroy\fR(3) -.RE -.PP -Monitor a 0MQ context -.RS 4 - -\fBzmq_ctx_set_monitor\fR(3) +\fBzmq_ctx_term\fR(3) .RE .sp These deprecated functions let you create and destroy \fIcontexts\fR: @@ -192,7 +186,10 @@ \fBzmq_msg_recv\fR(3) \fBzmq_send\fR(3) \fBzmq_recv\fR(3) +\fBzmq_send_const\fR(3) .RE +.sp +Monitoring socket events: \fBzmq_socket_monitor\fR(3) .PP \fBInput/output multiplexing\fR. 0MQ provides a mechanism for applications to multiplex input/output events over a set containing both 0MQ sockets and standard sockets\&. This mechanism mirrors the standard \fIpoll()\fR @@ -230,6 +227,35 @@ .SS "Proxies" .sp 0MQ provides \fIproxies\fR to create fanout and fan\-in topologies\&. A proxy connects a \fIfrontend\fR socket to a \fIbackend\fR socket and switches all messages between the two sockets, opaquely\&. A proxy may optionally capture all traffic to a third socket\&. To start a proxy in an application thread, use \fBzmq_proxy\fR(3)\&. +.SS "Security" +.sp +A 0MQ socket can select a security mechanism\&. Both peers must use the same security mechanism\&. +.sp +The following security mechanisms are provided for IPC and TCP connections: +.PP +Null security +.RS 4 + +\fBzmq_null\fR(7) +.RE +.PP +Plain\-text authentication using username and password +.RS 4 + +\fBzmq_plain\fR(7) +.RE +.PP +Elliptic curve authentication and encryption +.RS 4 + +\fBzmq_curve\fR(7) +.RE +.sp +Generate a CURVE keypair in armored text format: \fBzmq_curve_keypair\fR(3) +.sp +Convert an armored key into a 32\-byte binary key: \fBzmq_z85_decode\fR(3) +.sp +Convert a 32\-byte binary CURVE key to an armored text string: \fBzmq_z85_encode\fR(3) .SH "ERROR HANDLING" .sp The 0MQ library functions handle errors using the standard conventions found on POSIX systems\&. Generally, this means that upon failure a 0MQ library function shall return either a NULL value (if returning a pointer) or a negative value (if returning an integer), and the actual error code shall be stored in the \fIerrno\fR variable\&. @@ -253,32 +279,17 @@ Language bindings (C++, Python, PHP, Ruby, Java and more) are provided by members of the 0MQ community and pointers can be found on the 0MQ website\&. .SH "AUTHORS" .sp -This 0MQ manual page was written by Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[1]\d\s+2>, Martin Lucina <\m[blue]\fBmartin@lucina\&.net\fR\m[]\&\s-2\u[2]\d\s+2>, and Pieter Hintjens <\m[blue]\fBph@imatix\&.com\fR\m[]\&\s-2\u[3]\d\s+2>\&. +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. .SH "RESOURCES" .sp Main web site: \m[blue]\fBhttp://www\&.zeromq\&.org/\fR\m[] .sp -Report bugs to the 0MQ development mailing list: <\m[blue]\fBzeromq\-dev@lists\&.zeromq\&.org\fR\m[]\&\s-2\u[4]\d\s+2> +Report bugs to the 0MQ development mailing list: <\m[blue]\fBzeromq\-dev@lists\&.zeromq\&.org\fR\m[]\&\s-2\u[1]\d\s+2> .SH "COPYING" .sp Free use of this software is granted under the terms of the GNU Lesser General Public License (LGPL)\&. For details see the files COPYING and COPYING\&.LESSER included with the 0MQ distribution\&. .SH "NOTES" .IP " 1." 4 -sustrik@250bpm.com -.RS 4 -\%mailto:sustrik@250bpm.com -.RE -.IP " 2." 4 -martin@lucina.net -.RS 4 -\%mailto:martin@lucina.net -.RE -.IP " 3." 4 -ph@imatix.com -.RS 4 -\%mailto:ph@imatix.com -.RE -.IP " 4." 4 zeromq-dev@lists.zeromq.org .RS 4 \%mailto:zeromq-dev@lists.zeromq.org diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_bind.3 zeromq3-4.0.4/doc/zmq_bind.3 --- zeromq3-3.2.4+dfsg/doc/zmq_bind.3 2012-10-30 05:30:22.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_bind.3 2014-03-10 21:45:44.000000000 +0000 @@ -2,12 +2,12 @@ .\" Title: zmq_bind .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 10/30/2012 +.\" Date: 03/10/2014 .\" Manual: 0MQ Manual -.\" Source: 0MQ 3.2.1 +.\" Source: 0MQ 4.0.1 .\" Language: English .\" -.TH "ZMQ_BIND" "3" "10/30/2012" "0MQ 3\&.2\&.1" "0MQ Manual" +.TH "ZMQ_BIND" "3" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -191,20 +191,4 @@ \fBzmq_connect\fR(3) \fBzmq_socket\fR(3) \fBzmq\fR(7) .SH "AUTHORS" .sp -This 0MQ manual page was written by Pieter Hintjens <\m[blue]\fBph@imatix\&.com\fR\m[]\&\s-2\u[1]\d\s+2>, Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[2]\d\s+2> and Martin Lucina <\m[blue]\fBmato@kotelna\&.sk\fR\m[]\&\s-2\u[3]\d\s+2>\&. -.SH "NOTES" -.IP " 1." 4 -ph@imatix.com -.RS 4 -\%mailto:ph@imatix.com -.RE -.IP " 2." 4 -sustrik@250bpm.com -.RS 4 -\%mailto:sustrik@250bpm.com -.RE -.IP " 3." 4 -mato@kotelna.sk -.RS 4 -\%mailto:mato@kotelna.sk -.RE +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_bind.html zeromq3-4.0.4/doc/zmq_bind.html --- zeromq3-3.2.4+dfsg/doc/zmq_bind.html 2013-09-20 09:58:29.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_bind.html 2014-03-10 21:47:15.000000000 +0000 @@ -3,7 +3,7 @@ - + zmq_bind(3) + + + + +
+
+

SYNOPSIS

+
+

int zmq_ctx_term (void *context);

+
+
+
+

DESCRIPTION

+
+

The zmq_ctx_term() function shall destroy the ØMQ context context.

+

Context termination is performed in the following steps:

+
    +
  1. +

    +Any blocking operations currently in progress on sockets open within + context shall return immediately with an error code of ETERM. With the + exception of zmq_close(), any further operations on sockets open within + context shall fail with an error code of ETERM. +

    +
  2. +
  3. +

    +After interrupting all blocking calls, zmq_ctx_term() shall block until the + following conditions are satisfied: +

    +
      +
    • +

      +All sockets open within context have been closed with zmq_close(). +

      +
    • +
    • +

      +For each socket within context, all messages sent by the application + with zmq_send() have either been physically transferred to a network + peer, or the socket’s linger period set with the ZMQ_LINGER socket + option has expired. +

      +
    • +
    +
  4. +
+

For further details regarding socket linger behavior refer to the ZMQ_LINGER +option in zmq_setsockopt(3).

+

This function replaces the deprecated function zmq_term(3).

+
+
+
+

RETURN VALUE

+
+

The zmq_ctx_term() function shall return zero if successful. Otherwise +it shall return -1 and set errno to one of the values defined below.

+
+
+
+

ERRORS

+
+
+
+EFAULT +
+
+

+The provided context was invalid. +

+
+
+EINTR +
+
+

+Termination was interrupted by a signal. It can be restarted if needed. +

+
+
+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_ctx_term.txt zeromq3-4.0.4/doc/zmq_ctx_term.txt --- zeromq3-3.2.4+dfsg/doc/zmq_ctx_term.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_ctx_term.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,67 @@ +zmq_ctx_term(3) +=============== + + +NAME +---- +zmq_ctx_term - destroy a 0MQ context + + +SYNOPSIS +-------- +*int zmq_ctx_term (void '*context');* + + +DESCRIPTION +----------- +The _zmq_ctx_term()_ function shall destroy the 0MQ context 'context'. + +Context termination is performed in the following steps: + +1. Any blocking operations currently in progress on sockets open within + 'context' shall return immediately with an error code of ETERM. With the + exception of _zmq_close()_, any further operations on sockets open within + 'context' shall fail with an error code of ETERM. + +2. After interrupting all blocking calls, _zmq_ctx_term()_ shall _block_ until the + following conditions are satisfied: + + * All sockets open within 'context' have been closed with _zmq_close()_. + + * For each socket within 'context', all messages sent by the application + with _zmq_send()_ have either been physically transferred to a network + peer, or the socket's linger period set with the _ZMQ_LINGER_ socket + option has expired. + +For further details regarding socket linger behavior refer to the _ZMQ_LINGER_ +option in linkzmq:zmq_setsockopt[3]. + +This function replaces the deprecated function linkzmq:zmq_term[3]. + + +RETURN VALUE +------------ +The _zmq_ctx_term()_ function shall return zero if successful. Otherwise +it shall return `-1` and set 'errno' to one of the values defined below. + + +ERRORS +------ +*EFAULT*:: +The provided 'context' was invalid. +*EINTR*:: +Termination was interrupted by a signal. It can be restarted if needed. + + +SEE ALSO +-------- +linkzmq:zmq[7] +linkzmq:zmq_init[3] +linkzmq:zmq_close[3] +linkzmq:zmq_setsockopt[3] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_curve.7 zeromq3-4.0.4/doc/zmq_curve.7 --- zeromq3-3.2.4+dfsg/doc/zmq_curve.7 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_curve.7 2014-03-10 21:47:15.000000000 +0000 @@ -0,0 +1,93 @@ +'\" t +.\" Title: zmq_curve +.\" Author: [see the "AUTHORS" section] +.\" Generator: DocBook XSL Stylesheets v1.76.1 +.\" Date: 03/10/2014 +.\" Manual: 0MQ Manual +.\" Source: 0MQ 4.0.1 +.\" Language: English +.\" +.TH "ZMQ_CURVE" "7" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +zmq_curve \- secure authentication and confidentiality +.SH "SYNOPSIS" +.sp +The CURVE mechanism defines a mechanism for secure authentication and confidentiality for communications between a client and a server\&. CURVE is intended for use on public networks\&. The CURVE mechanism is defined by this document: \m[blue]\fBhttp://rfc\&.zeromq\&.org/spec:25\fR\m[]\&. +.SH "CLIENT AND SERVER ROLES" +.sp +A socket using CURVE can be either client or server, at any moment, but not both\&. The role is independent of bind/connect direction\&. +.sp +A socket can change roles at any point by setting new options\&. The role affects all zmq_connect and zmq_bind calls that follow it\&. +.sp +To become a CURVE server, the application sets the ZMQ_CURVE_SERVER option on the socket, and then sets the ZMQ_CURVE_SECRETKEY option to provide the socket with its long\-term secret key\&. The application does not provide the socket with its long\-term public key, which is used only by clients\&. +.sp +To become a CURVE client, the application sets the ZMQ_CURVE_SERVERKEY option with the long\-term public key of the server it intends to connect to, or accept connections from, next\&. The application then sets the ZMQ_CURVE_PUBLICKEY and ZMQ_CURVE_SECRETKEY options with its client long\-term key pair\&. +.sp +If the server does authentication it will be based on the client\(cqs long term public key\&. +.SH "KEY ENCODING" +.sp +The standard representation for keys in source code is either 32 bytes of base 256 (binary) data, or 40 characters of base 85 data encoded using the Z85 algorithm defined by \m[blue]\fBhttp://rfc\&.zeromq\&.org/spec:32\fR\m[]\&. +.sp +The Z85 algorithm is designed to produce printable key strings for use in configuration files, the command line, and code\&. There is a reference implementation in C at \m[blue]\fBhttps://github\&.com/zeromq/rfc/tree/master/src\fR\m[]\&. +.SH "TEST KEY VALUES" +.sp +For test cases, the client shall use this long\-term key pair (specified as hexadecimal and in Z85): +.sp +.if n \{\ +.RS 4 +.\} +.nf +public: + BB88471D65E2659B30C55A5321CEBB5AAB2B70A398645C26DCA2B2FCB43FC518 + Yne@$w\-vo}U?@Lns47E1%kR\&.o@n%FcmmsL/@{H8]yf7 + +secret: + 8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7 + JTKVSB%%)wK0E\&.X)V>+}o?pNmC{O&4W4b!Ni{Lh6 +.fi +.if n \{\ +.RE +.\} +.SH "SEE ALSO" +.sp +\fBzmq_z85_encode\fR(3) \fBzmq_z85_decode\fR(3) \fBzmq_setsockopt\fR(3) \fBzmq_null\fR(7) \fBzmq_plain\fR(7) \fBzmq\fR(7) +.SH "AUTHORS" +.sp +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_curve.html zeromq3-4.0.4/doc/zmq_curve.html --- zeromq3-3.2.4+dfsg/doc/zmq_curve.html 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_curve.html 2014-03-10 21:47:42.000000000 +0000 @@ -0,0 +1,845 @@ + + + + + +zmq_curve(7) + + + + + +
+
+

SYNOPSIS

+
+

The CURVE mechanism defines a mechanism for secure authentication and +confidentiality for communications between a client and a server. CURVE +is intended for use on public networks. The CURVE mechanism is defined +by this document: http://rfc.zeromq.org/spec:25.

+
+
+
+

CLIENT AND SERVER ROLES

+
+

A socket using CURVE can be either client or server, at any moment, but +not both. The role is independent of bind/connect direction.

+

A socket can change roles at any point by setting new options. The role +affects all zmq_connect and zmq_bind calls that follow it.

+

To become a CURVE server, the application sets the ZMQ_CURVE_SERVER option +on the socket, and then sets the ZMQ_CURVE_SECRETKEY option to provide the +socket with its long-term secret key. The application does not provide the +socket with its long-term public key, which is used only by clients.

+

To become a CURVE client, the application sets the ZMQ_CURVE_SERVERKEY +option with the long-term public key of the server it intends to connect +to, or accept connections from, next. The application then sets the +ZMQ_CURVE_PUBLICKEY and ZMQ_CURVE_SECRETKEY options with its client +long-term key pair.

+

If the server does authentication it will be based on the client’s long +term public key.

+
+
+
+

KEY ENCODING

+
+

The standard representation for keys in source code is either 32 bytes of +base 256 (binary) data, or 40 characters of base 85 data encoded using the +Z85 algorithm defined by http://rfc.zeromq.org/spec:32.

+

The Z85 algorithm is designed to produce printable key strings for use in +configuration files, the command line, and code. There is a reference +implementation in C at https://github.com/zeromq/rfc/tree/master/src.

+
+
+
+

TEST KEY VALUES

+
+

For test cases, the client shall use this long-term key pair (specified +as hexadecimal and in Z85):

+
+
+
public:
+    BB88471D65E2659B30C55A5321CEBB5AAB2B70A398645C26DCA2B2FCB43FC518
+    Yne@$w-vo<fVvi]a<NY6T1ed:M$fCG*[IaLV{hID
+
+secret:
+    7BB864B489AFA3671FBE69101F94B38972F24816DFB01B51656B3FEC8DFD0888
+    D:)Q[IlAW!ahhC2ac:9*A}h:p?([4%wOTJ%JR%cs
+
+

And the server shall use this long-term key pair (specified as hexadecimal +and in Z85):

+
+
+
public:
+    54FCBA24E93249969316FB617C872BB0C1D1FF14800427C594CBFACF1BC2D652
+    rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7
+
+secret:
+    8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7
+    JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6
+
+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_curve_keypair.3 zeromq3-4.0.4/doc/zmq_curve_keypair.3 --- zeromq3-3.2.4+dfsg/doc/zmq_curve_keypair.3 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_curve_keypair.3 2014-03-10 21:47:01.000000000 +0000 @@ -0,0 +1,69 @@ +'\" t +.\" Title: zmq_curve_keypair +.\" Author: [see the "AUTHORS" section] +.\" Generator: DocBook XSL Stylesheets v1.76.1 +.\" Date: 03/10/2014 +.\" Manual: 0MQ Manual +.\" Source: 0MQ 4.0.1 +.\" Language: English +.\" +.TH "ZMQ_CURVE_KEYPAIR" "3" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +zmq_curve_keypair \- generate a new CURVE keypair +.SH "SYNOPSIS" +.sp +\fBint zmq_curve_keypair (char *z85_public_key, char *z85_secret_key);\fR +.SH "DESCRIPTION" +.sp +The \fIzmq_curve_keypair()\fR function shall return a newly generated random keypair consisting of a public key and a secret key\&. The caller provides two buffers, each at least 41 octets large, in which this method will store the keys\&. The keys are encoded using \fBzmq_z85_encode\fR(3)\&. +.SH "RETURN VALUE" +.sp +The \fIzmq_curve_keypair()\fR function shall return 0 if successful, else it shall return \-1 and set \fIerrno\fR to one of the values defined below\&. +.SH "ERRORS" +.PP +\fBENOTSUP\fR +.RS 4 +The libzmq library was not built with cryptographic support (libsodium)\&. +.RE +.SH "EXAMPLE" +.PP +\fBGenerating a new CURVE keypair\fR. +.sp +.if n \{\ +.RS 4 +.\} +.nf +char public_key [41]; +char secret_key [41]; +int rc = crypto_box_keypair (public_key, secret_key); +assert (rc == 0); +.fi +.if n \{\ +.RE +.\} +.sp +.SH "SEE ALSO" +.sp +\fBzmq_z85_decode\fR(3) \fBzmq_z85_encode\fR(3) \fBzmq_curve\fR(7) +.SH "AUTHORS" +.sp +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_curve_keypair.html zeromq3-4.0.4/doc/zmq_curve_keypair.html --- zeromq3-3.2.4+dfsg/doc/zmq_curve_keypair.html 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_curve_keypair.html 2014-03-10 21:47:38.000000000 +0000 @@ -0,0 +1,823 @@ + + + + + +zmq_curve_keypair(3) + + + + + +
+
+

SYNOPSIS

+
+

int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key);

+
+
+
+

DESCRIPTION

+
+

The zmq_curve_keypair() function shall return a newly generated random +keypair consisting of a public key and a secret key. The caller provides +two buffers, each at least 41 octets large, in which this method will +store the keys. The keys are encoded using zmq_z85_encode(3).

+
+
+
+

RETURN VALUE

+
+

The zmq_curve_keypair() function shall return 0 if successful, else it +shall return -1 and set errno to one of the values defined below.

+
+
+
+

ERRORS

+
+
+
+ENOTSUP +
+
+

+The libzmq library was not built with cryptographic support (libsodium). +

+
+
+
+
+
+

EXAMPLE

+
+
+
Generating a new CURVE keypair
+
+
char public_key [41];
+char secret_key [41];
+int rc = crypto_box_keypair (public_key, secret_key);
+assert (rc == 0);
+
+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_curve_keypair.txt zeromq3-4.0.4/doc/zmq_curve_keypair.txt --- zeromq3-3.2.4+dfsg/doc/zmq_curve_keypair.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_curve_keypair.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,56 @@ +zmq_curve_keypair(3) +==================== + + +NAME +---- +zmq_curve_keypair - generate a new CURVE keypair + + +SYNOPSIS +-------- +*int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key);* + + +DESCRIPTION +----------- +The _zmq_curve_keypair()_ function shall return a newly generated random +keypair consisting of a public key and a secret key. The caller provides +two buffers, each at least 41 octets large, in which this method will +store the keys. The keys are encoded using linkzmq:zmq_z85_encode[3]. + + +RETURN VALUE +------------ +The _zmq_curve_keypair()_ function shall return 0 if successful, else it +shall return `-1` and set 'errno' to one of the values defined below. + + +ERRORS +------ +*ENOTSUP*:: +The libzmq library was not built with cryptographic support (libsodium). + + +EXAMPLE +------- +.Generating a new CURVE keypair +---- +char public_key [41]; +char secret_key [41]; +int rc = crypto_box_keypair (public_key, secret_key); +assert (rc == 0); +---- + + +SEE ALSO +-------- +linkzmq:zmq_z85_decode[3] +linkzmq:zmq_z85_encode[3] +linkzmq:zmq_curve[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_curve.txt zeromq3-4.0.4/doc/zmq_curve.txt --- zeromq3-3.2.4+dfsg/doc/zmq_curve.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_curve.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,92 @@ +zmq_curve(7) +============ + + +NAME +---- +zmq_curve - secure authentication and confidentiality + + +SYNOPSIS +-------- +The CURVE mechanism defines a mechanism for secure authentication and +confidentiality for communications between a client and a server. CURVE +is intended for use on public networks. The CURVE mechanism is defined +by this document: . + + +CLIENT AND SERVER ROLES +----------------------- +A socket using CURVE can be either client or server, at any moment, but +not both. The role is independent of bind/connect direction. + +A socket can change roles at any point by setting new options. The role +affects all zmq_connect and zmq_bind calls that follow it. + +To become a CURVE server, the application sets the ZMQ_CURVE_SERVER option +on the socket, and then sets the ZMQ_CURVE_SECRETKEY option to provide the +socket with its long-term secret key. The application does not provide the +socket with its long-term public key, which is used only by clients. + +To become a CURVE client, the application sets the ZMQ_CURVE_SERVERKEY +option with the long-term public key of the server it intends to connect +to, or accept connections from, next. The application then sets the +ZMQ_CURVE_PUBLICKEY and ZMQ_CURVE_SECRETKEY options with its client +long-term key pair. + +If the server does authentication it will be based on the client's long +term public key. + +KEY ENCODING +------------ +The standard representation for keys in source code is either 32 bytes of +base 256 (binary) data, or 40 characters of base 85 data encoded using the +Z85 algorithm defined by http://rfc.zeromq.org/spec:32. + +The Z85 algorithm is designed to produce printable key strings for use in +configuration files, the command line, and code. There is a reference +implementation in C at https://github.com/zeromq/rfc/tree/master/src. + + +TEST KEY VALUES +--------------- +For test cases, the client shall use this long-term key pair (specified +as hexadecimal and in Z85): + +---- +public: + BB88471D65E2659B30C55A5321CEBB5AAB2B70A398645C26DCA2B2FCB43FC518 + Yne@$w-vo}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7 + +secret: + 8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7 + JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6 +---- + +SEE ALSO +-------- +linkzmq:zmq_z85_encode[3] +linkzmq:zmq_z85_decode[3] +linkzmq:zmq_setsockopt[3] +linkzmq:zmq_null[7] +linkzmq:zmq_plain[7] +linkzmq:zmq[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_disconnect.3 zeromq3-4.0.4/doc/zmq_disconnect.3 --- zeromq3-3.2.4+dfsg/doc/zmq_disconnect.3 2013-05-02 18:51:50.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_disconnect.3 2014-03-10 21:45:50.000000000 +0000 @@ -2,12 +2,12 @@ .\" Title: zmq_disconnect .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 05/02/2013 +.\" Date: 03/10/2014 .\" Manual: 0MQ Manual -.\" Source: 0MQ 3.2.4 +.\" Source: 0MQ 4.0.1 .\" Language: English .\" -.TH "ZMQ_DISCONNECT" "3" "05/02/2013" "0MQ 3\&.2\&.4" "0MQ Manual" +.TH "ZMQ_DISCONNECT" "3" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -94,20 +94,4 @@ \fBzmq_connect\fR(3) \fBzmq_socket\fR(3) \fBzmq\fR(7) .SH "AUTHORS" .sp -This 0MQ manual page was written by Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[1]\d\s+2>, Martin Lucina <\m[blue]\fBmato@kotelna\&.sk\fR\m[]\&\s-2\u[2]\d\s+2> and Ian Barber <\m[blue]\fBian\&.barber@gmail\&.com\fR\m[]\&\s-2\u[3]\d\s+2> -.SH "NOTES" -.IP " 1." 4 -sustrik@250bpm.com -.RS 4 -\%mailto:sustrik@250bpm.com -.RE -.IP " 2." 4 -mato@kotelna.sk -.RS 4 -\%mailto:mato@kotelna.sk -.RE -.IP " 3." 4 -ian.barber@gmail.com -.RS 4 -\%mailto:ian.barber@gmail.com -.RE +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_disconnect.html zeromq3-4.0.4/doc/zmq_disconnect.html --- zeromq3-3.2.4+dfsg/doc/zmq_disconnect.html 2013-09-20 09:58:30.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_disconnect.html 2014-03-10 21:47:17.000000000 +0000 @@ -3,7 +3,7 @@ - + zmq_disconnect(3) + + + + +
+
+

SYNOPSIS

+
+

The NULL mechanism is defined by the ZMTP 3.0 specification: +http://rfc.zeromq.org/spec:23. This is the default security mechanism +for ZeroMQ sockets.

+
+
+
+

SEE ALSO

+ +
+
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_null.txt zeromq3-4.0.4/doc/zmq_null.txt --- zeromq3-3.2.4+dfsg/doc/zmq_null.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_null.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,27 @@ +zmq_null(7) +=========== + + +NAME +---- +zmq_null - no security or confidentiality + + +SYNOPSIS +-------- +The NULL mechanism is defined by the ZMTP 3.0 specification: +. This is the default security mechanism +for ZeroMQ sockets. + + +SEE ALSO +-------- +linkzmq:zmq_plain[7] +linkzmq:zmq_curve[7] +linkzmq:zmq[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_pgm.7 zeromq3-4.0.4/doc/zmq_pgm.7 --- zeromq3-3.2.4+dfsg/doc/zmq_pgm.7 2012-10-30 05:31:35.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_pgm.7 2014-03-10 21:47:06.000000000 +0000 @@ -2,12 +2,12 @@ .\" Title: zmq_pgm .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 10/30/2012 +.\" Date: 03/10/2014 .\" Manual: 0MQ Manual -.\" Source: 0MQ 3.2.1 +.\" Source: 0MQ 4.0.1 .\" Language: English .\" -.TH "ZMQ_PGM" "7" "10/30/2012" "0MQ 3\&.2\&.1" "0MQ Manual" +.TH "ZMQ_PGM" "7" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -85,7 +85,7 @@ .sp -1 .IP \(bu 2.3 .\} -The primary IPv4 address assigned to the interface, in it\(cqs numeric representation\&. +The primary IPv4 address assigned to the interface, in its numeric representation\&. .RE .if n \{\ .sp @@ -104,7 +104,7 @@ .sp .5v .RE .sp -A \fImulticast address\fR is specified by an IPv4 multicast address in it\(cqs numeric representation\&. +A \fImulticast address\fR is specified by an IPv4 multicast address in its numeric representation\&. .SH "WIRE FORMAT" .sp Consecutive PGM datagrams are interpreted by 0MQ as a single continuous stream of data where 0MQ messages are not necessarily aligned with PGM datagram boundaries and a single 0MQ message may span several PGM datagrams\&. This stream of data consists of 0MQ messages encapsulated in \fIframes\fR as described in \fBzmq_tcp\fR(7)\&. @@ -197,20 +197,4 @@ \fBzmq_connect\fR(3) \fBzmq_setsockopt\fR(3) \fBzmq_tcp\fR(7) \fBzmq_ipc\fR(7) \fBzmq_inproc\fR(7) \fBzmq\fR(7) .SH "AUTHORS" .sp -This 0MQ manual page was written by Pieter Hintjens <\m[blue]\fBph@imatix\&.com\fR\m[]\&\s-2\u[1]\d\s+2>, Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[2]\d\s+2> and Martin Lucina <\m[blue]\fBmato@kotelna\&.sk\fR\m[]\&\s-2\u[3]\d\s+2>\&. -.SH "NOTES" -.IP " 1." 4 -ph@imatix.com -.RS 4 -\%mailto:ph@imatix.com -.RE -.IP " 2." 4 -sustrik@250bpm.com -.RS 4 -\%mailto:sustrik@250bpm.com -.RE -.IP " 3." 4 -mato@kotelna.sk -.RS 4 -\%mailto:mato@kotelna.sk -.RE +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_pgm.html zeromq3-4.0.4/doc/zmq_pgm.html --- zeromq3-3.2.4+dfsg/doc/zmq_pgm.html 2013-09-20 09:58:47.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_pgm.html 2014-03-10 21:47:40.000000000 +0000 @@ -3,7 +3,7 @@ - + zmq_pgm(7) + + + + +
+
+

SYNOPSIS

+
+

The PLAIN mechanism defines a simple username/password mechanism that +lets a server authenticate a client. PLAIN makes no attempt at security +or confidentiality. It is intended for use on internal networks where +security requirements are low. The PLAIN mechanism is defined by this +document: http://rfc.zeromq.org/spec:24.

+
+
+
+

USAGE

+
+

To use PLAIN, the server shall set the ZMQ_PLAIN_SERVER option, and the +client shall set the ZMQ_PLAIN_USERNAME and ZMQ_PLAIN_PASSWORD socket +options. Which peer binds, and which connects, is not relevant.

+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_plain.txt zeromq3-4.0.4/doc/zmq_plain.txt --- zeromq3-3.2.4+dfsg/doc/zmq_plain.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_plain.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,37 @@ +zmq_plain(7) +============ + + +NAME +---- +zmq_plain - clear-text authentication + + +SYNOPSIS +-------- +The PLAIN mechanism defines a simple username/password mechanism that +lets a server authenticate a client. PLAIN makes no attempt at security +or confidentiality. It is intended for use on internal networks where +security requirements are low. The PLAIN mechanism is defined by this +document: . + + +USAGE +----- +To use PLAIN, the server shall set the ZMQ_PLAIN_SERVER option, and the +client shall set the ZMQ_PLAIN_USERNAME and ZMQ_PLAIN_PASSWORD socket +options. Which peer binds, and which connects, is not relevant. + + +SEE ALSO +-------- +linkzmq:zmq_setsockopt[3] +linkzmq:zmq_null[7] +linkzmq:zmq_curve[7] +linkzmq:zmq[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_poll.3 zeromq3-4.0.4/doc/zmq_poll.3 --- zeromq3-3.2.4+dfsg/doc/zmq_poll.3 2012-10-30 05:31:15.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_poll.3 2014-03-10 21:46:42.000000000 +0000 @@ -2,12 +2,12 @@ .\" Title: zmq_poll .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.76.1 -.\" Date: 10/30/2012 +.\" Date: 03/10/2014 .\" Manual: 0MQ Manual -.\" Source: 0MQ 3.2.1 +.\" Source: 0MQ 4.0.1 .\" Language: English .\" -.TH "ZMQ_POLL" "3" "10/30/2012" "0MQ 3\&.2\&.1" "0MQ Manual" +.TH "ZMQ_POLL" "3" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -115,22 +115,6 @@ The \fIzmq_poll()\fR function may be implemented or emulated using operating system interfaces other than \fIpoll()\fR, and as such may be subject to the limits of those interfaces in ways not defined in this documentation\&. .sp .5v .RE -.if n \{\ -.sp -.\} -.RS 4 -.it 1 an-trap -.nr an-no-space-flag 1 -.nr an-break-flag 1 -.br -.ps +1 -\fBNote\fR -.ps -1 -.br -.sp -The \fIzmq_send()\fR function will clear all pending events on a socket\&. Thus, if you use \fIzmq_poll()\fR to monitor input on a socket, use it before output as well, and process all events after each \fIzmq_poll()\fR call\&. -.sp .5v -.RE .SH "RETURN VALUE" .sp Upon successful completion, the \fIzmq_poll()\fR function shall return the number of \fBzmq_pollitem_t\fR structures with events signaled in \fIrevents\fR or 0 if no events have been signaled\&. Upon failure, \fIzmq_poll()\fR shall return \-1 and set \fIerrno\fR to one of the values defined below\&. @@ -190,15 +174,4 @@ Your operating system documentation for the \fIpoll()\fR system call\&. .SH "AUTHORS" .sp -This 0MQ manual page was written by Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[1]\d\s+2> and Martin Lucina <\m[blue]\fBmato@kotelna\&.sk\fR\m[]\&\s-2\u[2]\d\s+2>\&. -.SH "NOTES" -.IP " 1." 4 -sustrik@250bpm.com -.RS 4 -\%mailto:sustrik@250bpm.com -.RE -.IP " 2." 4 -mato@kotelna.sk -.RS 4 -\%mailto:mato@kotelna.sk -.RE +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_poll.html zeromq3-4.0.4/doc/zmq_poll.html --- zeromq3-3.2.4+dfsg/doc/zmq_poll.html 2013-09-20 09:58:42.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_poll.html 2014-03-10 21:47:32.000000000 +0000 @@ -3,7 +3,7 @@ - + zmq_poll(3) + + + + +
+
+

SYNOPSIS

+
+

int zmq_send_const (void *socket, void *buf, size_t len, int flags);

+
+
+
+

DESCRIPTION

+
+

The zmq_send_const() function shall queue a message created from the buffer +referenced by the buf and len arguments. The message buffer is assumed +to be constant-memory and will therefore not be copied or deallocated +in any way. The flags argument is a combination of the flags defined below:

+
+
+ZMQ_DONTWAIT +
+
+

+For socket types (DEALER, PUSH) that block when there are no available peers +(or all peers have full high-water mark), specifies that the operation should +be performed in non-blocking mode. If the message cannot be queued on the +socket, the zmq_send_const() function shall fail with errno set to EAGAIN. +

+
+
+ZMQ_SNDMORE +
+
+

+Specifies that the message being sent is a multi-part message, and that further +message parts are to follow. Refer to the section regarding multi-part messages +below for a detailed description. +

+
+
+
+ + + +
+
Note
+
A successful invocation of zmq_send_const() does not indicate that the +message has been transmitted to the network, only that it has been queued on +the socket and ØMQ has assumed responsibility for the message.
+
+
+

Multi-part messages

+

A ØMQ message is composed of 1 or more message parts. ØMQ ensures atomic +delivery of messages: peers shall receive either all message parts of a +message or none at all. The total number of message parts is unlimited except +by available memory.

+

An application that sends multi-part messages must use the ZMQ_SNDMORE flag +when sending each message part except the final one.

+
+
+
+
+

RETURN VALUE

+
+

The zmq_send_const() function shall return number of bytes in the message +if successful. Otherwise it shall return -1 and set errno to one of the +values defined below.

+
+
+
+

ERRORS

+
+
+
+EAGAIN +
+
+

+Non-blocking mode was requested and the message cannot be sent at the moment. +

+
+
+ENOTSUP +
+
+

+The zmq_send_const() operation is not supported by this socket type. +

+
+
+EFSM +
+
+

+The zmq_send_const() operation cannot be performed on this socket at the moment +due to the socket not being in the appropriate state. This error may occur with +socket types that switch between several states, such as ZMQ_REP. See the +messaging patterns section of zmq_socket(3) for more information. +

+
+
+ETERM +
+
+

+The ØMQ context associated with the specified socket was terminated. +

+
+
+ENOTSOCK +
+
+

+The provided socket was invalid. +

+
+
+EINTR +
+
+

+The operation was interrupted by delivery of a signal before the message was +sent. +

+
+
+EHOSTUNREACH +
+
+

+The message cannot be routed. +

+
+
+
+
+
+

EXAMPLE

+
+
+
Sending a multi-part message
+
+
/* Send a multi-part message consisting of three parts to socket */
+rc = zmq_send_const (socket, "ABC", 3, ZMQ_SNDMORE);
+assert (rc == 3);
+rc = zmq_send_const (socket, "DEFGH", 5, ZMQ_SNDMORE);
+assert (rc == 5);
+/* Final part; no more parts to follow */
+rc = zmq_send_const (socket, "JK", 2, 0);
+assert (rc == 2);
+
+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_send_const.txt zeromq3-4.0.4/doc/zmq_send_const.txt --- zeromq3-3.2.4+dfsg/doc/zmq_send_const.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_send_const.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,103 @@ +zmq_send_const(3) +================= + + +NAME +---- +zmq_send_const - send a constant-memory message part on a socket + + +SYNOPSIS +-------- +*int zmq_send_const (void '*socket', void '*buf', size_t 'len', int 'flags');* + + +DESCRIPTION +----------- +The _zmq_send_const()_ function shall queue a message created from the buffer +referenced by the 'buf' and 'len' arguments. The message buffer is assumed +to be constant-memory and will therefore not be copied or deallocated +in any way. The 'flags' argument is a combination of the flags defined below: + +*ZMQ_DONTWAIT*:: +For socket types (DEALER, PUSH) that block when there are no available peers +(or all peers have full high-water mark), specifies that the operation should +be performed in non-blocking mode. If the message cannot be queued on the +'socket', the _zmq_send_const()_ function shall fail with 'errno' set to EAGAIN. + +*ZMQ_SNDMORE*:: +Specifies that the message being sent is a multi-part message, and that further +message parts are to follow. Refer to the section regarding multi-part messages +below for a detailed description. + +NOTE: A successful invocation of _zmq_send_const()_ does not indicate that the +message has been transmitted to the network, only that it has been queued on +the 'socket' and 0MQ has assumed responsibility for the message. + + +Multi-part messages +~~~~~~~~~~~~~~~~~~~ +A 0MQ message is composed of 1 or more message parts. 0MQ ensures atomic +delivery of messages: peers shall receive either all _message parts_ of a +message or none at all. The total number of message parts is unlimited except +by available memory. + +An application that sends multi-part messages must use the _ZMQ_SNDMORE_ flag +when sending each message part except the final one. + + +RETURN VALUE +------------ +The _zmq_send_const()_ function shall return number of bytes in the message +if successful. Otherwise it shall return `-1` and set 'errno' to one of the +values defined below. + + +ERRORS +------ +*EAGAIN*:: +Non-blocking mode was requested and the message cannot be sent at the moment. +*ENOTSUP*:: +The _zmq_send_const()_ operation is not supported by this socket type. +*EFSM*:: +The _zmq_send_const()_ operation cannot be performed on this socket at the moment +due to the socket not being in the appropriate state. This error may occur with +socket types that switch between several states, such as ZMQ_REP. See the +_messaging patterns_ section of linkzmq:zmq_socket[3] for more information. +*ETERM*:: +The 0MQ 'context' associated with the specified 'socket' was terminated. +*ENOTSOCK*:: +The provided 'socket' was invalid. +*EINTR*:: +The operation was interrupted by delivery of a signal before the message was +sent. +*EHOSTUNREACH*:: +The message cannot be routed. + + +EXAMPLE +------- +.Sending a multi-part message +---- +/* Send a multi-part message consisting of three parts to socket */ +rc = zmq_send_const (socket, "ABC", 3, ZMQ_SNDMORE); +assert (rc == 3); +rc = zmq_send_const (socket, "DEFGH", 5, ZMQ_SNDMORE); +assert (rc == 5); +/* Final part; no more parts to follow */ +rc = zmq_send_const (socket, "JK", 2, 0); +assert (rc == 2); +---- + +SEE ALSO +-------- +linkzmq:zmq_send[3] +linkzmq:zmq_recv[3] +linkzmq:zmq_socket[7] +linkzmq:zmq[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_send.html zeromq3-4.0.4/doc/zmq_send.html --- zeromq3-3.2.4+dfsg/doc/zmq_send.html 2013-09-20 09:58:36.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_send.html 2014-03-10 21:47:24.000000000 +0000 @@ -3,7 +3,7 @@ - + zmq_send(3) + + + + +
+
+

SYNOPSIS

+
+

uint8_t *zmq_z85_decode (uint8_t *dest, char *string);

+
+
+
+

DESCRIPTION

+
+

The zmq_z85_decode() function shall decode string into dest. +The length of string shall be divisible by 5. dest must be large +enough for the decoded value (0.8 x strlen (string)).

+

The encoding shall follow the ZMQ RFC 32 specification.

+
+
+
+

RETURN VALUE

+
+

The zmq_z85_decode() function shall return dest if successful, else it +shall return NULL.

+
+
+
+

EXAMPLE

+
+
+
Decoding a CURVE key
+
+
char decoded [] = "rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7";
+uint8_t public_key [32];
+zmq_z85_decode (public_key, decoded);
+
+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_z85_decode.txt zeromq3-4.0.4/doc/zmq_z85_decode.txt --- zeromq3-3.2.4+dfsg/doc/zmq_z85_decode.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_z85_decode.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,50 @@ +zmq_z85_decode(3) +================= + + +NAME +---- +zmq_z85_decode - decode a binary key from Z85 printable text + + +SYNOPSIS +-------- +*uint8_t *zmq_z85_decode (uint8_t *dest, char *string);* + + +DESCRIPTION +----------- +The _zmq_z85_decode()_ function shall decode 'string' into 'dest'. +The length of 'string' shall be divisible by 5. 'dest' must be large +enough for the decoded value (0.8 x strlen (string)). + +The encoding shall follow the ZMQ RFC 32 specification. + + +RETURN VALUE +------------ +The _zmq_z85_decode()_ function shall return 'dest' if successful, else it +shall return NULL. + + +EXAMPLE +------- +.Decoding a CURVE key +---- +char decoded [] = "rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7"; +uint8_t public_key [32]; +zmq_z85_decode (public_key, decoded); +---- + + +SEE ALSO +-------- +linkzmq:zmq_z85_decode[3] +linkzmq:zmq_curve_keypair[3] +linkzmq:zmq_curve[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_z85_encode.3 zeromq3-4.0.4/doc/zmq_z85_encode.3 --- zeromq3-3.2.4+dfsg/doc/zmq_z85_encode.3 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_z85_encode.3 2014-03-10 21:46:57.000000000 +0000 @@ -0,0 +1,69 @@ +'\" t +.\" Title: zmq_z85_encode +.\" Author: [see the "AUTHORS" section] +.\" Generator: DocBook XSL Stylesheets v1.76.1 +.\" Date: 03/10/2014 +.\" Manual: 0MQ Manual +.\" Source: 0MQ 4.0.1 +.\" Language: English +.\" +.TH "ZMQ_Z85_ENCODE" "3" "03/10/2014" "0MQ 4\&.0\&.1" "0MQ Manual" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +zmq_z85_encode \- encode a binary key as Z85 printable text +.SH "SYNOPSIS" +.sp +\fBchar *zmq_z85_encode (char *dest, uint8_t *data, size_t size);\fR +.SH "DESCRIPTION" +.sp +The \fIzmq_z85_encode()\fR function shall encode the binary block specified by \fIdata\fR and \fIsize\fR into a string in \fIdest\fR\&. The size of the binary block must be divisible by 4\&. The \fIdest\fR must have sufficient space for size * 1\&.25 plus 1 for a null terminator\&. A 32\-byte CURVE key is encoded as 40 ASCII characters plus a null terminator\&. +.sp +The encoding shall follow the ZMQ RFC 32 specification\&. +.SH "RETURN VALUE" +.sp +The \fIzmq_z85_encode()\fR function shall return \fIdest\fR if successful, else it shall return NULL\&. +.SH "EXAMPLE" +.PP +\fBEncoding a CURVE key\fR. +.sp +.if n \{\ +.RS 4 +.\} +.nf +#include +uint8_t public_key [32]; +uint8_t secret_key [32]; +int rc = crypto_box_keypair (public_key, secret_key); +assert (rc == 0); +char encoded [41]; +zmq_z85_encode (encoded, public_key, 32); +puts (encoded); +.fi +.if n \{\ +.RE +.\} +.sp +.SH "SEE ALSO" +.sp +\fBzmq_z85_decode\fR(3) \fBzmq_curve_keypair\fR(3) \fBzmq_curve\fR(7) +.SH "AUTHORS" +.sp +This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&. diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_z85_encode.html zeromq3-4.0.4/doc/zmq_z85_encode.html --- zeromq3-3.2.4+dfsg/doc/zmq_z85_encode.html 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_z85_encode.html 2014-03-10 21:47:37.000000000 +0000 @@ -0,0 +1,814 @@ + + + + + +zmq_z85_encode(3) + + + + + +
+
+

SYNOPSIS

+
+

char *zmq_z85_encode (char *dest, uint8_t *data, size_t size);

+
+
+
+

DESCRIPTION

+
+

The zmq_z85_encode() function shall encode the binary block specified +by data and size into a string in dest. The size of the binary block +must be divisible by 4. The dest must have sufficient space for size * 1.25 +plus 1 for a null terminator. A 32-byte CURVE key is encoded as 40 ASCII +characters plus a null terminator.

+

The encoding shall follow the ZMQ RFC 32 specification.

+
+
+
+

RETURN VALUE

+
+

The zmq_z85_encode() function shall return dest if successful, else it +shall return NULL.

+
+
+
+

EXAMPLE

+
+
+
Encoding a CURVE key
+
+
#include <sodium.h>
+uint8_t public_key [32];
+uint8_t secret_key [32];
+int rc = crypto_box_keypair (public_key, secret_key);
+assert (rc == 0);
+char encoded [41];
+zmq_z85_encode (encoded, public_key, 32);
+puts (encoded);
+
+
+
+ +
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + diff -Nru zeromq3-3.2.4+dfsg/doc/zmq_z85_encode.txt zeromq3-4.0.4/doc/zmq_z85_encode.txt --- zeromq3-3.2.4+dfsg/doc/zmq_z85_encode.txt 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/doc/zmq_z85_encode.txt 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,57 @@ +zmq_z85_encode(3) +================= + + +NAME +---- +zmq_z85_encode - encode a binary key as Z85 printable text + + +SYNOPSIS +-------- +*char *zmq_z85_encode (char *dest, uint8_t *data, size_t size);* + + +DESCRIPTION +----------- +The _zmq_z85_encode()_ function shall encode the binary block specified +by 'data' and 'size' into a string in 'dest'. The size of the binary block +must be divisible by 4. The 'dest' must have sufficient space for size * 1.25 +plus 1 for a null terminator. A 32-byte CURVE key is encoded as 40 ASCII +characters plus a null terminator. + +The encoding shall follow the ZMQ RFC 32 specification. + + +RETURN VALUE +------------ +The _zmq_z85_encode()_ function shall return 'dest' if successful, else it +shall return NULL. + + +EXAMPLE +------- +.Encoding a CURVE key +---- +#include +uint8_t public_key [32]; +uint8_t secret_key [32]; +int rc = crypto_box_keypair (public_key, secret_key); +assert (rc == 0); +char encoded [41]; +zmq_z85_encode (encoded, public_key, 32); +puts (encoded); +---- + + +SEE ALSO +-------- +linkzmq:zmq_z85_decode[3] +linkzmq:zmq_curve_keypair[3] +linkzmq:zmq_curve[7] + + +AUTHORS +------- +This page was written by the 0MQ community. To make a change please +read the 0MQ Contribution Policy at . Binary files /tmp/1qChIM9rsq/zeromq3-3.2.4+dfsg/foreign/openpgm/libpgm-5.2.122~dfsg.tar.gz and /tmp/89mqXNT3aq/zeromq3-4.0.4/foreign/openpgm/libpgm-5.2.122~dfsg.tar.gz differ diff -Nru zeromq3-3.2.4+dfsg/foreign/openpgm/Makefile.in zeromq3-4.0.4/foreign/openpgm/Makefile.in --- zeromq3-3.2.4+dfsg/foreign/openpgm/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/foreign/openpgm/Makefile.in 2014-03-10 21:42:41.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -15,23 +15,6 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -58,7 +41,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -80,11 +63,6 @@ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ @@ -464,10 +442,13 @@ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ diff -Nru zeromq3-3.2.4+dfsg/include/zmq.h zeromq3-4.0.4/include/zmq.h --- zeromq3-3.2.4+dfsg/include/zmq.h 2013-05-02 18:41:25.000000000 +0000 +++ zeromq3-4.0.4/include/zmq.h 2013-12-08 07:02:10.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,16 +15,34 @@ You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . + + ************************************************************************* + NOTE to contributors. This file comprises the principal public contract + for ZeroMQ API users (along with zmq_utils.h). Any change to this file + supplied in a stable release SHOULD not break existing applications. + In practice this means that the value of constants must not change, and + that old values may not be reused for new constants. + ************************************************************************* */ #ifndef __ZMQ_H_INCLUDED__ #define __ZMQ_H_INCLUDED__ +/* Version macros for compile-time API version detection */ +#define ZMQ_VERSION_MAJOR 4 +#define ZMQ_VERSION_MINOR 0 +#define ZMQ_VERSION_PATCH 4 + +#define ZMQ_MAKE_VERSION(major, minor, patch) \ + ((major) * 10000 + (minor) * 100 + (patch)) +#define ZMQ_VERSION \ + ZMQ_MAKE_VERSION(ZMQ_VERSION_MAJOR, ZMQ_VERSION_MINOR, ZMQ_VERSION_PATCH) + #ifdef __cplusplus extern "C" { #endif -#if !defined WINCE +#if !defined _WIN32_WCE #include #endif #include @@ -38,7 +53,9 @@ /* Handle DSO symbol visibility */ #if defined _WIN32 -# if defined DLL_EXPORT +# if defined ZMQ_STATIC +# define ZMQ_EXPORT +# elif defined DLL_EXPORT # define ZMQ_EXPORT __declspec(dllexport) # else # define ZMQ_EXPORT __declspec(dllimport) @@ -53,22 +70,23 @@ # endif #endif -/******************************************************************************/ -/* 0MQ versioning support. */ -/******************************************************************************/ - -/* Version macros for compile-time API version detection */ -#define ZMQ_VERSION_MAJOR 3 -#define ZMQ_VERSION_MINOR 2 -#define ZMQ_VERSION_PATCH 4 - -#define ZMQ_MAKE_VERSION(major, minor, patch) \ - ((major) * 10000 + (minor) * 100 + (patch)) -#define ZMQ_VERSION \ - ZMQ_MAKE_VERSION(ZMQ_VERSION_MAJOR, ZMQ_VERSION_MINOR, ZMQ_VERSION_PATCH) +/* Define integer types needed for event interface */ +#if defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_OPENVMS +# include +#elif defined _MSC_VER && _MSC_VER < 1600 +# ifndef int32_t +typedef __int32 int32_t; +# endif +# ifndef uint16_t +typedef unsigned __int16 uint16_t; +# endif +# ifndef uint8_t +typedef unsigned __int8 uint8_t; +# endif +#else +# include +#endif -/* Run-time API version detection */ -ZMQ_EXPORT void zmq_version (int *major, int *minor, int *patch); /******************************************************************************/ /* 0MQ errors. */ @@ -140,6 +158,9 @@ #define ETERM (ZMQ_HAUSNUMERO + 53) #define EMTHREAD (ZMQ_HAUSNUMERO + 54) +/* Run-time API version detection */ +ZMQ_EXPORT void zmq_version (int *major, int *minor, int *patch); + /* This function retrieves the errno as it is known to 0MQ library. The goal */ /* of this function is to make the code 100% portable, including where 0MQ */ /* compiled with certain CRT library (on Windows) is linked to an */ @@ -160,16 +181,18 @@ /* Default for new contexts */ #define ZMQ_IO_THREADS_DFLT 1 -#define ZMQ_MAX_SOCKETS_DFLT 1024 +#define ZMQ_MAX_SOCKETS_DFLT 1023 ZMQ_EXPORT void *zmq_ctx_new (void); -ZMQ_EXPORT int zmq_ctx_destroy (void *context); +ZMQ_EXPORT int zmq_ctx_term (void *context); +ZMQ_EXPORT int zmq_ctx_shutdown (void *ctx_); ZMQ_EXPORT int zmq_ctx_set (void *context, int option, int optval); ZMQ_EXPORT int zmq_ctx_get (void *context, int option); /* Old (legacy) API */ ZMQ_EXPORT void *zmq_init (int io_threads); ZMQ_EXPORT int zmq_term (void *context); +ZMQ_EXPORT int zmq_ctx_destroy (void *context); /******************************************************************************/ @@ -200,7 +223,7 @@ /* 0MQ socket definition. */ /******************************************************************************/ -/* Socket types. */ +/* Socket types. */ #define ZMQ_PAIR 0 #define ZMQ_PUB 1 #define ZMQ_SUB 2 @@ -212,6 +235,7 @@ #define ZMQ_PUSH 8 #define ZMQ_XPUB 9 #define ZMQ_XSUB 10 +#define ZMQ_STREAM 11 /* Deprecated aliases */ #define ZMQ_XREQ ZMQ_DEALER @@ -240,7 +264,6 @@ #define ZMQ_MULTICAST_HOPS 25 #define ZMQ_RCVTIMEO 27 #define ZMQ_SNDTIMEO 28 -#define ZMQ_IPV4ONLY 31 #define ZMQ_LAST_ENDPOINT 32 #define ZMQ_ROUTER_MANDATORY 33 #define ZMQ_TCP_KEEPALIVE 34 @@ -248,9 +271,23 @@ #define ZMQ_TCP_KEEPALIVE_IDLE 36 #define ZMQ_TCP_KEEPALIVE_INTVL 37 #define ZMQ_TCP_ACCEPT_FILTER 38 -#define ZMQ_DELAY_ATTACH_ON_CONNECT 39 +#define ZMQ_IMMEDIATE 39 #define ZMQ_XPUB_VERBOSE 40 - +#define ZMQ_ROUTER_RAW 41 +#define ZMQ_IPV6 42 +#define ZMQ_MECHANISM 43 +#define ZMQ_PLAIN_SERVER 44 +#define ZMQ_PLAIN_USERNAME 45 +#define ZMQ_PLAIN_PASSWORD 46 +#define ZMQ_CURVE_SERVER 47 +#define ZMQ_CURVE_PUBLICKEY 48 +#define ZMQ_CURVE_SECRETKEY 49 +#define ZMQ_CURVE_SERVERKEY 50 +#define ZMQ_PROBE_ROUTER 51 +#define ZMQ_REQ_CORRELATE 52 +#define ZMQ_REQ_RELAXED 53 +#define ZMQ_CONFLATE 54 +#define ZMQ_ZAP_DOMAIN 55 /* Message options */ #define ZMQ_MORE 1 @@ -259,10 +296,17 @@ #define ZMQ_DONTWAIT 1 #define ZMQ_SNDMORE 2 -/* Deprecated aliases */ -#define ZMQ_NOBLOCK ZMQ_DONTWAIT -#define ZMQ_FAIL_UNROUTABLE ZMQ_ROUTER_MANDATORY -#define ZMQ_ROUTER_BEHAVIOR ZMQ_ROUTER_MANDATORY +/* Security mechanisms */ +#define ZMQ_NULL 0 +#define ZMQ_PLAIN 1 +#define ZMQ_CURVE 2 + +/* Deprecated options and aliases */ +#define ZMQ_IPV4ONLY 31 +#define ZMQ_DELAY_ATTACH_ON_CONNECT ZMQ_IMMEDIATE +#define ZMQ_NOBLOCK ZMQ_DONTWAIT +#define ZMQ_FAIL_UNROUTABLE ZMQ_ROUTER_MANDATORY +#define ZMQ_ROUTER_BEHAVIOR ZMQ_ROUTER_MANDATORY /******************************************************************************/ /* 0MQ socket events and monitoring */ @@ -282,64 +326,25 @@ #define ZMQ_EVENT_CLOSED 128 #define ZMQ_EVENT_CLOSE_FAILED 256 #define ZMQ_EVENT_DISCONNECTED 512 +#define ZMQ_EVENT_MONITOR_STOPPED 1024 #define ZMQ_EVENT_ALL ( ZMQ_EVENT_CONNECTED | ZMQ_EVENT_CONNECT_DELAYED | \ ZMQ_EVENT_CONNECT_RETRIED | ZMQ_EVENT_LISTENING | \ ZMQ_EVENT_BIND_FAILED | ZMQ_EVENT_ACCEPTED | \ ZMQ_EVENT_ACCEPT_FAILED | ZMQ_EVENT_CLOSED | \ - ZMQ_EVENT_CLOSE_FAILED | ZMQ_EVENT_DISCONNECTED ) + ZMQ_EVENT_CLOSE_FAILED | ZMQ_EVENT_DISCONNECTED | \ + ZMQ_EVENT_MONITOR_STOPPED) -/* Socket event data (union member per event) */ +/* Socket event data */ typedef struct { - int event; - union { - struct { - char *addr; - int fd; - } connected; - struct { - char *addr; - int err; - } connect_delayed; - struct { - char *addr; - int interval; - } connect_retried; - struct { - char *addr; - int fd; - } listening; - struct { - char *addr; - int err; - } bind_failed; - struct { - char *addr; - int fd; - } accepted; - struct { - char *addr; - int err; - } accept_failed; - struct { - char *addr; - int fd; - } closed; - struct { - char *addr; - int err; - } close_failed; - struct { - char *addr; - int fd; - } disconnected; - } data; + uint16_t event; // id of the event as bitfield + int32_t value ; // value is either error code, fd or reconnect interval } zmq_event_t; ZMQ_EXPORT void *zmq_socket (void *, int type); ZMQ_EXPORT int zmq_close (void *s); ZMQ_EXPORT int zmq_setsockopt (void *s, int option, const void *optval, - size_t optvallen); + size_t optvallen); ZMQ_EXPORT int zmq_getsockopt (void *s, int option, void *optval, size_t *optvallen); ZMQ_EXPORT int zmq_bind (void *s, const char *addr); @@ -347,6 +352,7 @@ ZMQ_EXPORT int zmq_unbind (void *s, const char *addr); ZMQ_EXPORT int zmq_disconnect (void *s, const char *addr); ZMQ_EXPORT int zmq_send (void *s, const void *buf, size_t len, int flags); +ZMQ_EXPORT int zmq_send_const (void *s, const void *buf, size_t len, int flags); ZMQ_EXPORT int zmq_recv (void *s, void *buf, size_t len, int flags); ZMQ_EXPORT int zmq_socket_monitor (void *s, const char *addr, int events); @@ -379,12 +385,20 @@ short revents; } zmq_pollitem_t; +#define ZMQ_POLLITEMS_DFLT 16 + ZMQ_EXPORT int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout); /* Built-in message proxy (3-way) */ ZMQ_EXPORT int zmq_proxy (void *frontend, void *backend, void *capture); +/* Encode a binary key as printable text using ZMQ RFC 32 */ +ZMQ_EXPORT char *zmq_z85_encode (char *dest, uint8_t *data, size_t size); + +/* Encode a binary key from printable text per ZMQ RFC 32 */ +ZMQ_EXPORT uint8_t *zmq_z85_decode (uint8_t *dest, char *string); + /* Deprecated aliases */ #define ZMQ_STREAMER 1 #define ZMQ_FORWARDER 2 diff -Nru zeromq3-3.2.4+dfsg/include/zmq_utils.h zeromq3-4.0.4/include/zmq_utils.h --- zeromq3-3.2.4+dfsg/include/zmq_utils.h 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/include/zmq_utils.h 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -21,13 +20,33 @@ #ifndef __ZMQ_UTILS_H_INCLUDED__ #define __ZMQ_UTILS_H_INCLUDED__ +#include +#include +#include + +/* Define integer types needed for event interface */ +#if defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_OPENVMS +# include +#elif defined _MSC_VER && _MSC_VER < 1600 +# ifndef int32_t +typedef __int32 int32_t; +# endif +# ifndef uint16_t +typedef unsigned __int16 uint16_t; +# endif +#else +# include +#endif + #ifdef __cplusplus extern "C" { #endif /* Handle DSO symbol visibility */ #if defined _WIN32 -# if defined DLL_EXPORT +# if defined ZMQ_STATIC +# define ZMQ_EXPORT +# elif defined DLL_EXPORT # define ZMQ_EXPORT __declspec(dllexport) # else # define ZMQ_EXPORT __declspec(dllimport) @@ -42,6 +61,22 @@ # endif #endif +/* These functions are documented by man pages */ + +/* Encode data with Z85 encoding. Returns encoded data */ +ZMQ_EXPORT char *zmq_z85_encode (char *dest, uint8_t *data, size_t size); + +/* Decode data with Z85 encoding. Returns decoded data */ +ZMQ_EXPORT uint8_t *zmq_z85_decode (uint8_t *dest, char *string); + +/* Generate z85-encoded public and private keypair with libsodium. */ +/* Returns 0 on success. */ +ZMQ_EXPORT int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key); + +typedef void (zmq_thread_fn) (void*); + +/* These functions are not documented by man pages */ + /* Helper functions are used by perf tests so that they don't have to care */ /* about minutiae of time-related functions on different OS platforms. */ @@ -55,6 +90,12 @@ /* Sleeps for specified number of seconds. */ ZMQ_EXPORT void zmq_sleep (int seconds_); +/* Start a thread. Returns a handle to the thread. */ +ZMQ_EXPORT void *zmq_threadstart (zmq_thread_fn* func, void* arg); + +/* Wait for thread to complete then free up resources. */ +ZMQ_EXPORT void zmq_threadclose (void* thread); + #undef ZMQ_EXPORT #ifdef __cplusplus diff -Nru zeromq3-3.2.4+dfsg/Makefile.am zeromq3-4.0.4/Makefile.am --- zeromq3-3.2.4+dfsg/Makefile.am 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/Makefile.am 2013-11-13 17:57:50.000000000 +0000 @@ -1,12 +1,12 @@ ACLOCAL_AMFLAGS = -I config if BUILD_PGM -SUBDIRS = foreign/openpgm src doc perf tests +SUBDIRS = foreign/openpgm src doc perf tests tools else -SUBDIRS = src doc perf tests +SUBDIRS = src doc perf tests tools endif -DIST_SUBDIRS = foreign/openpgm src doc perf tests builds/msvc +DIST_SUBDIRS = foreign/openpgm src doc perf tests tools builds/msvc EXTRA_DIST = \ autogen.sh \ diff -Nru zeromq3-3.2.4+dfsg/Makefile.in zeromq3-4.0.4/Makefile.in --- zeromq3-3.2.4+dfsg/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/Makefile.in 2014-03-10 21:42:42.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -15,23 +15,6 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -51,7 +34,7 @@ build_triplet = @build@ host_triplet = @host@ subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in \ $(top_srcdir)/builds/redhat/zeromq.spec.in \ $(top_srcdir)/configure AUTHORS COPYING COPYING.LESSER INSTALL \ @@ -64,7 +47,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -88,11 +71,6 @@ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ @@ -278,9 +256,9 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I config -@BUILD_PGM_FALSE@SUBDIRS = src doc perf tests -@BUILD_PGM_TRUE@SUBDIRS = foreign/openpgm src doc perf tests -DIST_SUBDIRS = foreign/openpgm src doc perf tests builds/msvc +@BUILD_PGM_FALSE@SUBDIRS = src doc perf tests tools +@BUILD_PGM_TRUE@SUBDIRS = foreign/openpgm src doc perf tests tools +DIST_SUBDIRS = foreign/openpgm src doc perf tests tools builds/msvc EXTRA_DIST = \ autogen.sh \ version.sh \ @@ -511,10 +489,13 @@ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -604,7 +585,7 @@ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod u+w $(distdir) + chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) diff -Nru zeromq3-3.2.4+dfsg/NEWS zeromq3-4.0.4/NEWS --- zeromq3-3.2.4+dfsg/NEWS 2013-09-20 09:56:30.000000000 +0000 +++ zeromq3-4.0.4/NEWS 2014-03-10 21:20:14.000000000 +0000 @@ -1,3 +1,215 @@ +0MQ version 4.0.4 stable, released on 2014/03/10 +================================================ + +Bug Fixes +--------- + +* Fixed #909; out of tree build issue on Linux. + +* Fixed #888; hangs on terminate when inproc connected but never bound. + +* Fixed #868; assertion failure at ip.cpp:137 when using port scanner. + +* Fixed #818; fix timestamp counter on s390/s390x. + +* Fixed #817; only export zmq_* symbols. + +* Fixed #797; fixed setting TCP keepalive on Windows. + +* Fixed #775; compile error on Windows. + +* Fixed #763; when talking to a ZMTP v1 peer (libzmq 2.2), a socket would + send an extra identity frame at the start of the connection. + +* Fixed LIBZMQ-576 - Crash closing a socket after zmq_msg_send returns + EAGAIN (reverts LIBZMQ-497) + +* Fixed LIBZMQ-584; subscription filters getting lost on reconnection. + + +0MQ version 4.0.3 stable, released on 2013/11/24 +================================================ + +Bug Fixes +--------- + +* Fixed test_many_sockets case, which failed when process socket limit + was 1024. + + +0MQ version 4.0.2 stable, released on 2013/11/24 +================================================ + +Bug Fixes +--------- + +* Fixed LIBZMQ-583 - improved low-res timer for Windows +* Fixed LIBZMQ-578 - z85_decode was extremely slow +* Fixed LIBZMQ-577 - fault in man pages. +* Fixed LIBZMQ-574 - assertion failure when ran out of system file handles +* Fixed LIBZMQ-571 - test_stream failing in some cases +* Fixed LIBZMQ-569 - Socket server crashes with random client data and when + talking to 2.2 versions +* Fixed LIBZMQ-39 - Bad file descriptor during shutdown +* Pulled expected failing test_linger.cpp from release +* Reduced pause time in tests to allow "make check" to run faster + + +0MQ version 4.0.1 stable, released on 2013/10/08 +================================================ + +Changes +------- + +* Updated CURVE mechanism to track revised RFC 27 (INITIATE vouch). + + The INITIATE command vouch box is Box[C',S](C->S') instead of + Box[C'](C->S), to reduce the risk of client impersonation, as per + https://codesinchaos.wordpress.com/2012/09/09/curvecp-1/. + +* Fixed LIBZMQ-567, adding abstract namespaces for IPC sockets on Linux. + + Converts an initial strudel or "at sign" (@) in the Unix socket path to + a NULL character ('\0') indicating that the socket uses the abstract + namespace instead of the filesystem namespace. For instance, binding a + socket to 'ipc://@/tmp/tester' will not create a file associated with + the socket whereas binding to 'ipc:///tmp/tester' will create the file + /tmp/tester. See issue 567 for more information. + +* Added zmq_z85_encode and zmq_z85_decode to core libzmq API. + +* Added zmq_curve_keypair to core libzmq API. + +* Bumped library ABI version to 4:0:1. + +Bug fixes +--------- + +* Fixed some build/test errors on OS/X + Clang++. + +* Fixed LIBZMQ-565, typo in code. + +* Fixed LIBZMQ-566, dealer-to-router connections sometimes failing. + +* Fixed builds for AIX, MSVC 2008, OS/X with clang++, Solaris. + +* Improved CURVE handshake error handling. + + +0MQ version 4.0.0 (RC1), released on 2013/09/20 +=============================================== + +Major changes +------------- + +* New wire level protocol, ZMTP/3.0, see http://rfc.zeromq.org/spec:23. + Does not yet implement the SUBSCRIBE, CANCEL, PING, and PONG commands. + +* New security framework, from plain user+password to strong encryption, + see section below. See http://hintjens.com/blog:49 for a tutorial. + +* New ZMQ_STREAM socket type for working as a TCP client or server. See: + tests/test_stream.cpp. + +Improvements +------------ + +* You can now connect to an inproc:// endpoint that does not already + exist. This means inproc:// no longer needs careful set-up, but it may + break code that relied on the old behaviour. See: + tests/test_inproc_connect.cpp. + +* Libzmq now checks socket types at connection time, so that trying to + connect a 'wrong' socket type will fail. + +* New zmq_ctx_shutdown API method will shutdown a context and send ETERM + to blocking calls, without blocking. Use zmq_ctx_term to finalise the + process. + +* The regression test suite has been significantly extended and improved. + +* Contexts can now be terminated in forked child processes. See: + tests/test_fork.cpp. + +* zmq_disconnect now respects the linger setting on sockets. + +* New zmq_send_const API method to send constant data (without copying). + See: tests/test_inproc_connect.cpp. + +* Added CMake support for static libraries. + +* Added test cases for socket semantics as defined in RFCs 28, 29, 30, 31. + See: tests/test_spec_*.cpp. + +* New socket option, ZMQ_PROBE_ROUTER triggers an empty message on connect. + See: tests/test_probe_router.cpp. + +* New socket option, ZMQ_REQ_CORRELATE allows for correlation of replies + from a REP socket. See: tests/test_req_correlate.cpp. + +* New socket option, ZMQ_REQ_RELAXED, lets you disable the state machine + on a REQ socket, so you can send multiple requests without waiting for + replies, and without getting an EFSM error. See: + tests/test_req_relaxed.cpp. + +* New socket option, ZMQ_CONFLATE restricts the outgoing and incoming + socket buffers to a single message. See: tests/test_conflate.cpp. + +Deprecated Options +------------------ + +* ZMQ_IPV4ONLY deprecated and renamed to ZMQ_IPV6 so that options are + consistently "off" by default. + +* ZMQ_DELAY_ATTACH_ON_CONNECT deprecated, and renamed to ZMQ_IMMEDIATE. + See: tests/test_immediate.cpp. + +Security Framework +------------------ + +Based on new ZMTP wire level protocol that negotiates a security +"mechanism" between client and server before exchanging any other data. + +Security mechanisms are extensible. ZMTP defines three by default: + +* NULL - classic ZeroMQ, with no authentication. See + http://rfc.zeromq.org/spec:23. + +* PLAIN - plain-text username + password authentication. See + http://rfc.zeromq.org/spec:24. + +* CURVE - secure authentication and encryption based on elliptic curve + cryptography, using the Curve25519 algorithm from Daniel Bernstein and + based on CurveCP's security handshake. See http://rfc.zeromq.org/spec:25, + http://rfc.zeromq.org/spec:26, and http://curvecp.org. + +Authentication is done by pluggable "authenticators" that connect to libzmq +over an inproc endpoint, see http://rfc.zeromq.org/spec:27. + +Socket options to configure PLAIN security on client or server: + +* ZMQ_PLAIN_SERVER, ZMQ_PLAIN_USERNAME, ZMQ_PLAIN_PASSWORD. See + tests/test_security_plain. + +Socket options to configure CURVE security on client or server: + +* ZMQ_CURVE_SERVER, ZMQ_CURVE_PUBLICKEY, ZMQ_CURVE_SECRETKEY, + ZMQ_CURVE_SERVERKEY. See tests/test_security_curve.cpp. + +Socket options to configure "domain" for ZAP handler: + +* ZMQ_ZAP_DOMAIN, see tests/test_security_null.cpp. + +Support for encoding/decoding CURVE binary keys to ASCII: + +* zmq_z85_encode, zmq_z85_decode. + +Other issues addressed in this release +-------------------------------------- + +* LIBZMQ-525 Multipart upstreaming from XSUB to XPUB + + 0MQ version 3.2.4 stable, released on 2013/09/20 ================================================ diff -Nru zeromq3-3.2.4+dfsg/perf/inproc_lat.cpp zeromq3-4.0.4/perf/inproc_lat.cpp --- zeromq3-3.2.4+dfsg/perf/inproc_lat.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/perf/inproc_lat.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -26,7 +24,7 @@ #include #include -#include "../src/platform.hpp" +#include "platform.hpp" #if defined ZMQ_HAVE_WINDOWS #include diff -Nru zeromq3-3.2.4+dfsg/perf/inproc_thr.cpp zeromq3-4.0.4/perf/inproc_thr.cpp --- zeromq3-3.2.4+dfsg/perf/inproc_thr.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/perf/inproc_thr.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -26,7 +26,7 @@ #include #include -#include "../src/platform.hpp" +#include "platform.hpp" #if defined ZMQ_HAVE_WINDOWS #include diff -Nru zeromq3-3.2.4+dfsg/perf/local_lat.cpp zeromq3-4.0.4/perf/local_lat.cpp --- zeromq3-3.2.4+dfsg/perf/local_lat.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/perf/local_lat.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/perf/local_thr.cpp zeromq3-4.0.4/perf/local_thr.cpp --- zeromq3-3.2.4+dfsg/perf/local_thr.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/perf/local_thr.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/perf/Makefile.in zeromq3-4.0.4/perf/Makefile.in --- zeromq3-3.2.4+dfsg/perf/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/perf/Makefile.in 2014-03-10 21:42:41.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,23 +16,6 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -62,7 +45,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -123,11 +106,6 @@ DIST_SOURCES = $(inproc_lat_SOURCES) $(inproc_thr_SOURCES) \ $(local_lat_SOURCES) $(local_thr_SOURCES) \ $(remote_lat_SOURCES) $(remote_thr_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) diff -Nru zeromq3-3.2.4+dfsg/perf/remote_lat.cpp zeromq3-4.0.4/perf/remote_lat.cpp --- zeromq3-3.2.4+dfsg/perf/remote_lat.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/perf/remote_lat.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/perf/remote_thr.cpp zeromq3-4.0.4/perf/remote_thr.cpp --- zeromq3-3.2.4+dfsg/perf/remote_thr.cpp 2013-04-15 15:22:25.000000000 +0000 +++ zeromq3-4.0.4/perf/remote_thr.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -67,16 +65,11 @@ } for (i = 0; i != message_count; i++) { - rc = zmq_msg_init_size (&msg, message_size); if (rc != 0) { printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno)); return -1; } -#if defined ZMQ_MAKE_VALGRIND_HAPPY - memset (zmq_msg_data (&msg), 0, message_size); -#endif - rc = zmq_sendmsg (s, &msg, 0); if (rc < 0) { printf ("error in zmq_sendmsg: %s\n", zmq_strerror (errno)); diff -Nru zeromq3-3.2.4+dfsg/README zeromq3-4.0.4/README --- zeromq3-3.2.4+dfsg/README 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -Welcome -------- - -The 0MQ lightweight messaging kernel is a library which extends the -standard socket interfaces with features traditionally provided by -specialised messaging middleware products. 0MQ sockets provide an -abstraction of asynchronous message queues, multiple messaging patterns, -message filtering (subscriptions), seamless access to multiple transport -protocols and more. - - -Building and installation -------------------------- - -See the INSTALL file included with the distribution. - - -Resources ---------- - -Extensive documentation is provided with the distribution. Refer to -doc/zmq.html, or "man zmq" after you have installed 0MQ on your system. - -Website: http://www.zeromq.org/ - -Development mailing list: zeromq-dev@lists.zeromq.org -Announcements mailing list: zeromq-announce@lists.zeromq.org - -Git repository: http://github.com/zeromq/libzmq - -0MQ developers can also be found on the IRC channel #zeromq, on the -Freenode network (irc.freenode.net). - -Copying -------- - -Free use of this software is granted under the terms of the GNU Lesser General -Public License (LGPL). For details see the files `COPYING` and `COPYING.LESSER` -included with the 0MQ distribution. diff -Nru zeromq3-3.2.4+dfsg/src/address.cpp zeromq3-4.0.4/src/address.cpp --- zeromq3-3.2.4+dfsg/src/address.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/address.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2012 Spotify AB - Copyright (c) 2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -43,7 +42,8 @@ } } #if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS - else if (protocol == "ipc") { + else + if (protocol == "ipc") { if (resolved.ipc_addr) { delete resolved.ipc_addr; resolved.ipc_addr = 0; @@ -55,15 +55,14 @@ int zmq::address_t::to_string (std::string &addr_) const { if (protocol == "tcp") { - if (resolved.tcp_addr) { + if (resolved.tcp_addr) return resolved.tcp_addr->to_string(addr_); - } } #if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS - else if (protocol == "ipc") { - if (resolved.ipc_addr) { + else + if (protocol == "ipc") { + if (resolved.ipc_addr) return resolved.ipc_addr->to_string(addr_); - } } #endif diff -Nru zeromq3-3.2.4+dfsg/src/address.hpp zeromq3-4.0.4/src/address.hpp --- zeromq3-3.2.4+dfsg/src/address.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/address.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2012 Spotify AB - Copyright (c) 2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/array.hpp zeromq3-4.0.4/src/array.hpp --- zeromq3-3.2.4+dfsg/src/array.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/array.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/atomic_counter.hpp zeromq3-4.0.4/src/atomic_counter.hpp --- zeromq3-3.2.4+dfsg/src/atomic_counter.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/atomic_counter.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -35,6 +33,8 @@ #define ZMQ_ATOMIC_COUNTER_WINDOWS #elif (defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD) #define ZMQ_ATOMIC_COUNTER_ATOMIC_H +#elif defined __tile__ +#define ZMQ_ATOMIC_COUNTER_TILE #else #define ZMQ_ATOMIC_COUNTER_MUTEX #endif @@ -45,6 +45,8 @@ #include "windows.hpp" #elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H #include +#elif defined ZMQ_ATOMIC_COUNTER_TILE +#include #endif namespace zmq @@ -84,6 +86,8 @@ #elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H integer_t new_value = atomic_add_32_nv (&value, increment_); old_value = new_value - increment_; +#elif defined ZMQ_ATOMIC_COUNTER_TILE + old_value = arch_atomic_add (&value, increment_); #elif defined ZMQ_ATOMIC_COUNTER_X86 __asm__ volatile ( "lock; xadd %0, %1 \n\t" @@ -125,6 +129,10 @@ int32_t delta = - ((int32_t) decrement); integer_t nv = atomic_add_32_nv (&value, delta); return nv != 0; +#elif defined ZMQ_ATOMIC_COUNTER_TILE + int32_t delta = - ((int32_t) decrement); + integer_t nv = arch_atomic_add (&value, delta); + return nv != 0; #elif defined ZMQ_ATOMIC_COUNTER_X86 integer_t oldval = -decrement; volatile integer_t *val = &value; diff -Nru zeromq3-3.2.4+dfsg/src/atomic_ptr.hpp zeromq3-4.0.4/src/atomic_ptr.hpp --- zeromq3-3.2.4+dfsg/src/atomic_ptr.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/atomic_ptr.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -30,6 +28,8 @@ #define ZMQ_ATOMIC_PTR_X86 #elif defined __ARM_ARCH_7A__ && defined __GNUC__ #define ZMQ_ATOMIC_PTR_ARM +#elif defined __tile__ +#define ZMQ_ATOMIC_PTR_TILE #elif defined ZMQ_HAVE_WINDOWS #define ZMQ_ATOMIC_PTR_WINDOWS #elif (defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD) @@ -44,6 +44,8 @@ #include "windows.hpp" #elif defined ZMQ_ATOMIC_PTR_ATOMIC_H #include +#elif defined ZMQ_ATOMIC_PTR_TILE +#include #endif namespace zmq @@ -82,6 +84,8 @@ return (T*) InterlockedExchangePointer ((PVOID*) &ptr, val_); #elif defined ZMQ_ATOMIC_PTR_ATOMIC_H return (T*) atomic_swap_ptr (&ptr, val_); +#elif defined ZMQ_ATOMIC_PTR_TILE + return (T*) arch_atomic_exchange (&ptr, val_); #elif defined ZMQ_ATOMIC_PTR_X86 T *old; __asm__ volatile ( @@ -125,6 +129,8 @@ (volatile PVOID*) &ptr, val_, cmp_); #elif defined ZMQ_ATOMIC_PTR_ATOMIC_H return (T*) atomic_cas_ptr (&ptr, cmp_, val_); +#elif defined ZMQ_ATOMIC_PTR_TILE + return (T*) arch_atomic_val_compare_and_exchange (&ptr, cmp_, val_); #elif defined ZMQ_ATOMIC_PTR_X86 T *old; __asm__ volatile ( diff -Nru zeromq3-3.2.4+dfsg/src/blob.hpp zeromq3-4.0.4/src/blob.hpp --- zeromq3-3.2.4+dfsg/src/blob.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/blob.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -22,6 +21,7 @@ #define __ZMQ_BLOB_HPP_INCLUDED__ #include +#include // Borrowed from id3lib_strings.h: // They seem to be doing something for MSC, but since I only have gcc, I'll just do that diff -Nru zeromq3-3.2.4+dfsg/src/clock.cpp zeromq3-4.0.4/src/clock.cpp --- zeromq3-3.2.4+dfsg/src/clock.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/clock.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -23,11 +22,12 @@ #include "likely.hpp" #include "config.hpp" #include "err.hpp" +#include "mutex.hpp" #include #if defined _MSC_VER -#if defined WINCE +#if defined _WIN32_WCE #include #else #include @@ -42,9 +42,49 @@ #include #endif +#ifdef ZMQ_HAVE_WINDOWS +typedef ULONGLONG (*f_compatible_get_tick_count64)(); + +static zmq::mutex_t compatible_get_tick_count64_mutex; + +ULONGLONG compatible_get_tick_count64() +{ + compatible_get_tick_count64_mutex.lock(); + static DWORD s_wrap = 0; + static DWORD s_last_tick = 0; + const DWORD current_tick = ::GetTickCount(); + if (current_tick < s_last_tick) + ++s_wrap; + + s_last_tick = current_tick; + const ULONGLONG result = (static_cast(s_wrap) << 32) + static_cast(current_tick); + compatible_get_tick_count64_mutex.unlock(); + return result; +} + +f_compatible_get_tick_count64 init_compatible_get_tick_count64() +{ + f_compatible_get_tick_count64 func = NULL; + HMODULE module = ::LoadLibraryA("Kernel32.dll"); + if (module != NULL) + func = reinterpret_cast(::GetProcAddress(module, "GetTickCount64")); + + if (func == NULL) + func = compatible_get_tick_count64; + + return func; +} + +static f_compatible_get_tick_count64 my_get_tick_count64 = init_compatible_get_tick_count64(); +#endif + zmq::clock_t::clock_t () : last_tsc (rdtsc ()), +#ifdef ZMQ_HAVE_WINDOWS + last_time (static_cast((*my_get_tick_count64)())) +#else last_time (now_us () / 1000) +#endif { } @@ -66,7 +106,7 @@ // Convert the tick number into the number of seconds // since the system was started. - double ticks_div = (double) (ticksPerSecond.QuadPart / 1000000); + double ticks_div = ticksPerSecond.QuadPart / 1000000.0; return (uint64_t) (tick.QuadPart / ticks_div); #elif defined HAVE_CLOCK_GETTIME && defined CLOCK_MONOTONIC @@ -75,7 +115,7 @@ struct timespec tv; int rc = clock_gettime (CLOCK_MONOTONIC, &tv); // Fix case where system has clock_gettime but CLOCK_MONOTONIC is not supported. - // This should be a configuration check, but I looked into it and writing an + // This should be a configuration check, but I looked into it and writing an // AC_FUNC_CLOCK_MONOTONIC seems beyond my powers. if( rc != 0) { // Use POSIX gettimeofday function to get precise time. @@ -107,7 +147,17 @@ // If TSC is not supported, get precise time and chop off the microseconds. if (!tsc) + { +#ifdef ZMQ_HAVE_WINDOWS + // Under Windows, now_us is not so reliable since QueryPerformanceCounter + // does not guarantee that it will use a hardware that offers a monotonic timer. + // So, lets use GetTickCount when GetTickCount64 is not available with an workaround + // to its 32 bit limitation. + return static_cast((*my_get_tick_count64)()); +#else return now_us () / 1000; +#endif + } // If TSC haven't jumped back (in case of migration to a different // CPU core) and if not too much time elapsed since last measurement, @@ -116,7 +166,11 @@ return last_time; last_tsc = tsc; +#ifdef ZMQ_HAVE_WINDOWS + last_time = static_cast((*my_get_tick_count64)()); +#else last_time = now_us () / 1000; +#endif return last_time; } @@ -139,7 +193,6 @@ #elif defined(__s390__) uint64_t tsc; asm("\tstck\t%0\n" : "=Q" (tsc) : : "cc"); - tsc >>= 12; /* convert to microseconds just to be consistent */ return(tsc); #else return 0; diff -Nru zeromq3-3.2.4+dfsg/src/clock.hpp zeromq3-4.0.4/src/clock.hpp --- zeromq3-3.2.4+dfsg/src/clock.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/clock.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/command.hpp zeromq3-4.0.4/src/command.hpp --- zeromq3-3.2.4+dfsg/src/command.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/command.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -57,6 +55,7 @@ term_ack, reap, reaped, + inproc_connected, done } type; diff -Nru zeromq3-3.2.4+dfsg/src/config.hpp zeromq3-4.0.4/src/config.hpp --- zeromq3-3.2.4+dfsg/src/config.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/config.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/ctx.cpp zeromq3-4.0.4/src/ctx.cpp --- zeromq3-3.2.4+dfsg/src/ctx.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ctx.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -37,21 +35,36 @@ #include "err.hpp" #include "msg.hpp" +#define ZMQ_CTX_TAG_VALUE_GOOD 0xabadcafe +#define ZMQ_CTX_TAG_VALUE_BAD 0xdeadbeef + +int clipped_maxsocket(int max_requested) +{ + if (max_requested >= zmq::poller_t::max_fds () && zmq::poller_t::max_fds () != -1) + max_requested = zmq::poller_t::max_fds () - 1; // -1 because we need room for the repear mailbox. + + return max_requested; +} + zmq::ctx_t::ctx_t () : - tag (0xabadcafe), + tag (ZMQ_CTX_TAG_VALUE_GOOD), starting (true), terminating (false), reaper (NULL), slot_count (0), slots (NULL), - max_sockets (ZMQ_MAX_SOCKETS_DFLT), - io_thread_count (ZMQ_IO_THREADS_DFLT) + max_sockets (clipped_maxsocket (ZMQ_MAX_SOCKETS_DFLT)), + io_thread_count (ZMQ_IO_THREADS_DFLT), + ipv6 (false) { +#ifdef HAVE_FORK + pid = getpid(); +#endif } bool zmq::ctx_t::check_tag () { - return tag == 0xabadcafe; + return tag == ZMQ_CTX_TAG_VALUE_GOOD; } zmq::ctx_t::~ctx_t () @@ -69,29 +82,47 @@ delete io_threads [i]; // Deallocate the reaper thread object. - if (reaper) - delete reaper; + delete reaper; // Deallocate the array of mailboxes. No special work is // needed as mailboxes themselves were deallocated with their // corresponding io_thread/socket objects. - if (slots) - free (slots); + free (slots); // Remove the tag, so that the object is considered dead. - tag = 0xdeadbeef; + tag = ZMQ_CTX_TAG_VALUE_BAD; } int zmq::ctx_t::terminate () { + // Connect up any pending inproc connections, otherwise we will hang + pending_connections_t copy = pending_connections; + for (pending_connections_t::iterator p = copy.begin (); p != copy.end (); ++p) { + zmq::socket_base_t *s = create_socket (ZMQ_PAIR); + s->bind (p->first.c_str ()); + s->close (); + } + slot_sync.lock (); if (!starting) { +#ifdef HAVE_FORK + if (pid != getpid()) + { + // we are a forked child process. Close all file descriptors + // inherited from the parent. + for (sockets_t::size_type i = 0; i != sockets.size (); i++) + { + sockets[i]->get_mailbox()->forked(); + } + + term_mailbox.forked(); + } +#endif // Check whether termination was already underway, but interrupted and now // restarted. bool restarted = terminating; terminating = true; - slot_sync.unlock (); // First attempt to terminate the context. if (!restarted) { @@ -99,13 +130,12 @@ // First send stop command to sockets so that any blocking calls // can be interrupted. If there are no sockets we can ask reaper // thread to stop. - slot_sync.lock (); for (sockets_t::size_type i = 0; i != sockets.size (); i++) sockets [i]->stop (); if (sockets.empty ()) reaper->stop (); - slot_sync.unlock (); } + slot_sync.unlock(); // Wait till reaper thread closes all the sockets. command_t cmd; @@ -125,10 +155,29 @@ return 0; } +int zmq::ctx_t::shutdown () +{ + slot_sync.lock (); + if (!starting && !terminating) { + terminating = true; + + // Send stop command to sockets so that any blocking calls + // can be interrupted. If there are no sockets we can ask reaper + // thread to stop. + for (sockets_t::size_type i = 0; i != sockets.size (); i++) + sockets [i]->stop (); + if (sockets.empty ()) + reaper->stop (); + } + slot_sync.unlock (); + + return 0; +} + int zmq::ctx_t::set (int option_, int optval_) { int rc = 0; - if (option_ == ZMQ_MAX_SOCKETS && optval_ >= 1) { + if (option_ == ZMQ_MAX_SOCKETS && optval_ >= 1 && optval_ == clipped_maxsocket (optval_)) { opt_sync.lock (); max_sockets = optval_; opt_sync.unlock (); @@ -139,6 +188,12 @@ io_thread_count = optval_; opt_sync.unlock (); } + else + if (option_ == ZMQ_IPV6 && optval_ >= 0) { + opt_sync.lock (); + ipv6 = (optval_ != 0); + opt_sync.unlock (); + } else { errno = EINVAL; rc = -1; @@ -154,6 +209,9 @@ else if (option_ == ZMQ_IO_THREADS) rc = io_thread_count; + else + if (option_ == ZMQ_IPV6) + rc = ipv6; else { errno = EINVAL; rc = -1; @@ -168,7 +226,7 @@ starting = false; // Initialise the array of mailboxes. Additional three slots are for - // zmq_term thread and reaper thread. + // zmq_ctx_term thread and reaper thread. opt_sync.lock (); int mazmq = max_sockets; int ios = io_thread_count; @@ -177,7 +235,7 @@ slots = (mailbox_t**) malloc (sizeof (mailbox_t*) * slot_count); alloc_assert (slots); - // Initialise the infrastructure for zmq_term thread. + // Initialise the infrastructure for zmq_ctx_term thread. slots [term_tid] = &term_mailbox; // Create the reaper thread. @@ -203,7 +261,7 @@ } } - // Once zmq_term() was called, we can't create new sockets. + // Once zmq_ctx_term() was called, we can't create new sockets. if (terminating) { slot_sync.unlock (); errno = ETERM; @@ -250,7 +308,7 @@ // Remove the socket from the list of sockets. sockets.erase (socket_); - // If zmq_term() was already called and there are no more socket + // If zmq_ctx_term() was already called and there are no more socket // we can ask reaper thread to terminate. if (terminating && sockets.empty ()) reaper->stop (); @@ -346,6 +404,101 @@ return endpoint; } +void zmq::ctx_t::pend_connection (const char *addr_, pending_connection_t &pending_connection_) +{ + endpoints_sync.lock (); + + endpoints_t::iterator it = endpoints.find (addr_); + if (it == endpoints.end ()) + { + // Still no bind. + pending_connection_.endpoint.socket->inc_seqnum (); + pending_connections.insert (pending_connections_t::value_type (std::string (addr_), pending_connection_)); + } + else + { + // Bind has happened in the mean time, connect directly + connect_inproc_sockets(it->second.socket, it->second.options, pending_connection_, connect_side); + } + + endpoints_sync.unlock (); +} + +void zmq::ctx_t::connect_pending (const char *addr_, zmq::socket_base_t *bind_socket_) +{ + endpoints_sync.lock (); + + std::pair pending = pending_connections.equal_range(addr_); + + for (pending_connections_t::iterator p = pending.first; p != pending.second; ++p) + { + connect_inproc_sockets(bind_socket_, endpoints[addr_].options, p->second, bind_side); + } + + pending_connections.erase(pending.first, pending.second); + + endpoints_sync.unlock (); +} + +void zmq::ctx_t::connect_inproc_sockets(zmq::socket_base_t *bind_socket_, options_t& bind_options, pending_connection_t &pending_connection_, side side_) +{ + bind_socket_->inc_seqnum(); + pending_connection_.bind_pipe->set_tid(bind_socket_->get_tid()); + + if (side_ == bind_side) + { + command_t cmd; + cmd.type = command_t::bind; + cmd.args.bind.pipe = pending_connection_.bind_pipe; + bind_socket_->process_command(cmd); + bind_socket_->send_inproc_connected(pending_connection_.endpoint.socket); + } + else + { + pending_connection_.connect_pipe->send_bind(bind_socket_, pending_connection_.bind_pipe, false); + } + + int sndhwm = 0; + if (pending_connection_.endpoint.options.sndhwm != 0 && bind_options.rcvhwm != 0) + sndhwm = pending_connection_.endpoint.options.sndhwm + bind_options.rcvhwm; + int rcvhwm = 0; + if (pending_connection_.endpoint.options.rcvhwm != 0 && bind_options.sndhwm != 0) + rcvhwm = pending_connection_.endpoint.options.rcvhwm + bind_options.sndhwm; + + bool conflate = pending_connection_.endpoint.options.conflate && + (pending_connection_.endpoint.options.type == ZMQ_DEALER || + pending_connection_.endpoint.options.type == ZMQ_PULL || + pending_connection_.endpoint.options.type == ZMQ_PUSH || + pending_connection_.endpoint.options.type == ZMQ_PUB || + pending_connection_.endpoint.options.type == ZMQ_SUB); + + int hwms [2] = {conflate? -1 : sndhwm, conflate? -1 : rcvhwm}; + pending_connection_.connect_pipe->set_hwms(hwms [1], hwms [0]); + pending_connection_.bind_pipe->set_hwms(hwms [0], hwms [1]); + + if (bind_options.recv_identity) { + + msg_t id; + int rc = id.init_size (pending_connection_.endpoint.options.identity_size); + errno_assert (rc == 0); + memcpy (id.data (), pending_connection_.endpoint.options.identity, pending_connection_.endpoint.options.identity_size); + id.set_flags (msg_t::identity); + bool written = pending_connection_.connect_pipe->write (&id); + zmq_assert (written); + pending_connection_.connect_pipe->flush (); + } + if (pending_connection_.endpoint.options.recv_identity) { + msg_t id; + int rc = id.init_size (bind_options.identity_size); + errno_assert (rc == 0); + memcpy (id.data (), bind_options.identity, bind_options.identity_size); + id.set_flags (msg_t::identity); + bool written = pending_connection_.bind_pipe->write (&id); + zmq_assert (written); + pending_connection_.bind_pipe->flush (); + } +} + // The last used socket ID, or 0 if no socket was used so far. Note that this // is a global variable. Thus, even sockets created in different contexts have // unique IDs. diff -Nru zeromq3-3.2.4+dfsg/src/ctx.hpp zeromq3-4.0.4/src/ctx.hpp --- zeromq3-3.2.4+dfsg/src/ctx.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ctx.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -42,6 +40,7 @@ class io_thread_t; class socket_base_t; class reaper_t; + class pipe_t; // Information associated with inproc endpoint. Note that endpoint options // are registered as well so that the peer can access them without a need @@ -52,6 +51,13 @@ options_t options; }; + struct pending_connection_t + { + endpoint_t endpoint; + pipe_t* connect_pipe; + pipe_t* bind_pipe; + }; + // Context object encapsulates all the global state associated with // the library. @@ -71,6 +77,15 @@ // after the last one is closed. int terminate (); + // This function starts the terminate process by unblocking any blocking + // operations currently in progress and stopping any more socket activity + // (except zmq_close). + // This function is non-blocking. + // terminate must still be called afterwards. + // This function is optional, terminate will unblock any current + // operations as well. + int shutdown(); + // Set and get context properties. int set (int option_, int optval_); int get (int option_); @@ -94,6 +109,8 @@ int register_endpoint (const char *addr_, endpoint_t &endpoint_); void unregister_endpoints (zmq::socket_base_t *socket_); endpoint_t find_endpoint (const char *addr_); + void pend_connection (const char *addr_, pending_connection_t &pending_connection_); + void connect_pending (const char *addr_, zmq::socket_base_t *bind_socket_); enum { term_tid = 0, @@ -115,8 +132,8 @@ sockets_t sockets; // List of unused thread slots. - typedef std::vector emtpy_slots_t; - emtpy_slots_t empty_slots; + typedef std::vector empty_slots_t; + empty_slots_t empty_slots; // If true, zmq_init has been called but no socket has been created // yet. Launching of I/O threads is delayed. @@ -149,6 +166,10 @@ typedef std::map endpoints_t; endpoints_t endpoints; + // List of inproc connection endpoints pending a bind + typedef std::multimap pending_connections_t; + pending_connections_t pending_connections; + // Synchronisation of access to the list of inproc endpoints. mutex_t endpoints_sync; @@ -161,11 +182,21 @@ // Number of I/O threads to launch. int io_thread_count; + // Is IPv6 enabled on this context? + bool ipv6; + // Synchronisation of access to context options. mutex_t opt_sync; ctx_t (const ctx_t&); const ctx_t &operator = (const ctx_t&); + +#ifdef HAVE_FORK + // the process that created this context. Used to detect forking. + pid_t pid; +#endif + enum side { connect_side, bind_side }; + void connect_inproc_sockets(zmq::socket_base_t *bind_socket_, options_t& bind_options, pending_connection_t &pending_connection_, side side_); }; } diff -Nru zeromq3-3.2.4+dfsg/src/curve_client.cpp zeromq3-4.0.4/src/curve_client.cpp --- zeromq3-3.2.4+dfsg/src/curve_client.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/curve_client.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,410 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "platform.hpp" + +#ifdef HAVE_LIBSODIUM + +#include + +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include "msg.hpp" +#include "session_base.hpp" +#include "err.hpp" +#include "curve_client.hpp" +#include "wire.hpp" + +zmq::curve_client_t::curve_client_t (const options_t &options_) : + mechanism_t (options_), + state (send_hello) +{ + memcpy (public_key, options_.curve_public_key, crypto_box_PUBLICKEYBYTES); + memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES); + memcpy (server_key, options_.curve_server_key, crypto_box_PUBLICKEYBYTES); + + // Generate short-term key pair + const int rc = crypto_box_keypair (cn_public, cn_secret); + zmq_assert (rc == 0); +} + +zmq::curve_client_t::~curve_client_t () +{ +} + +int zmq::curve_client_t::next_handshake_command (msg_t *msg_) +{ + int rc = 0; + + switch (state) { + case send_hello: + rc = produce_hello (msg_); + if (rc == 0) + state = expect_welcome; + break; + case send_initiate: + rc = produce_initiate (msg_); + if (rc == 0) + state = expect_ready; + break; + default: + errno = EAGAIN; + rc = -1; + } + return rc; +} + +int zmq::curve_client_t::process_handshake_command (msg_t *msg_) +{ + int rc = 0; + + switch (state) { + case expect_welcome: + rc = process_welcome (msg_); + if (rc == 0) + state = send_initiate; + break; + case expect_ready: + rc = process_ready (msg_); + if (rc == 0) + state = connected; + break; + default: + errno = EPROTO; + rc = -1; + break; + } + if (rc == 0) { + rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + } + return rc; +} + +int zmq::curve_client_t::encode (msg_t *msg_) +{ + zmq_assert (state == connected); + + uint8_t flags = 0; + if (msg_->flags () & msg_t::more) + flags |= 0x01; + + uint8_t message_nonce [crypto_box_NONCEBYTES]; + memcpy (message_nonce, "CurveZMQMESSAGEC", 16); + memcpy (message_nonce + 16, &cn_nonce, 8); + + const size_t mlen = crypto_box_ZEROBYTES + 1 + msg_->size (); + + uint8_t *message_plaintext = static_cast (malloc (mlen)); + alloc_assert (message_plaintext); + + memset (message_plaintext, 0, crypto_box_ZEROBYTES); + message_plaintext [crypto_box_ZEROBYTES] = flags; + memcpy (message_plaintext + crypto_box_ZEROBYTES + 1, + msg_->data (), msg_->size ()); + + uint8_t *message_box = static_cast (malloc (mlen)); + alloc_assert (message_box); + + int rc = crypto_box_afternm (message_box, message_plaintext, + mlen, message_nonce, cn_precom); + zmq_assert (rc == 0); + + rc = msg_->close (); + zmq_assert (rc == 0); + + rc = msg_->init_size (16 + mlen - crypto_box_BOXZEROBYTES); + zmq_assert (rc == 0); + + uint8_t *message = static_cast (msg_->data ()); + + memcpy (message, "\x07MESSAGE", 8); + memcpy (message + 8, &cn_nonce, 8); + memcpy (message + 16, message_box + crypto_box_BOXZEROBYTES, + mlen - crypto_box_BOXZEROBYTES); + + free (message_plaintext); + free (message_box); + + cn_nonce++; + + return 0; +} + +int zmq::curve_client_t::decode (msg_t *msg_) +{ + zmq_assert (state == connected); + + if (msg_->size () < 33) { + errno = EPROTO; + return -1; + } + + const uint8_t *message = static_cast (msg_->data ()); + if (memcmp (message, "\x07MESSAGE", 8)) { + errno = EPROTO; + return -1; + } + + uint8_t message_nonce [crypto_box_NONCEBYTES]; + memcpy (message_nonce, "CurveZMQMESSAGES", 16); + memcpy (message_nonce + 16, message + 8, 8); + + const size_t clen = crypto_box_BOXZEROBYTES + (msg_->size () - 16); + + uint8_t *message_plaintext = static_cast (malloc (clen)); + alloc_assert (message_plaintext); + + uint8_t *message_box = static_cast (malloc (clen)); + alloc_assert (message_box); + + memset (message_box, 0, crypto_box_BOXZEROBYTES); + memcpy (message_box + crypto_box_BOXZEROBYTES, + message + 16, msg_->size () - 16); + + int rc = crypto_box_open_afternm (message_plaintext, message_box, + clen, message_nonce, cn_precom); + if (rc == 0) { + rc = msg_->close (); + zmq_assert (rc == 0); + + rc = msg_->init_size (clen - 1 - crypto_box_ZEROBYTES); + zmq_assert (rc == 0); + + const uint8_t flags = message_plaintext [crypto_box_ZEROBYTES]; + if (flags & 0x01) + msg_->set_flags (msg_t::more); + + memcpy (msg_->data (), + message_plaintext + crypto_box_ZEROBYTES + 1, + msg_->size ()); + } + else + errno = EPROTO; + + free (message_plaintext); + free (message_box); + + return rc; +} + +bool zmq::curve_client_t::is_handshake_complete () const +{ + return state == connected; +} + +int zmq::curve_client_t::produce_hello (msg_t *msg_) +{ + uint8_t hello_nonce [crypto_box_NONCEBYTES]; + uint8_t hello_plaintext [crypto_box_ZEROBYTES + 64]; + uint8_t hello_box [crypto_box_BOXZEROBYTES + 80]; + + // Prepare the full nonce + memcpy (hello_nonce, "CurveZMQHELLO---", 16); + memcpy (hello_nonce + 16, &cn_nonce, 8); + + // Create Box [64 * %x0](C'->S) + memset (hello_plaintext, 0, sizeof hello_plaintext); + + int rc = crypto_box (hello_box, hello_plaintext, + sizeof hello_plaintext, + hello_nonce, server_key, cn_secret); + zmq_assert (rc == 0); + + rc = msg_->init_size (200); + errno_assert (rc == 0); + uint8_t *hello = static_cast (msg_->data ()); + + memcpy (hello, "\x05HELLO", 6); + // CurveZMQ major and minor version numbers + memcpy (hello + 6, "\1\0", 2); + // Anti-amplification padding + memset (hello + 8, 0, 72); + // Client public connection key + memcpy (hello + 80, cn_public, crypto_box_PUBLICKEYBYTES); + // Short nonce, prefixed by "CurveZMQHELLO---" + memcpy (hello + 112, hello_nonce + 16, 8); + // Signature, Box [64 * %x0](C'->S) + memcpy (hello + 120, hello_box + crypto_box_BOXZEROBYTES, 80); + + cn_nonce++; + + return 0; +} + +int zmq::curve_client_t::process_welcome (msg_t *msg_) +{ + if (msg_->size () != 168) { + errno = EPROTO; + return -1; + } + + const uint8_t * welcome = static_cast (msg_->data ()); + if (memcmp (welcome, "\x07WELCOME", 8)) { + errno = EPROTO; + return -1; + } + + uint8_t welcome_nonce [crypto_box_NONCEBYTES]; + uint8_t welcome_plaintext [crypto_box_ZEROBYTES + 128]; + uint8_t welcome_box [crypto_box_BOXZEROBYTES + 144]; + + // Open Box [S' + cookie](C'->S) + memset (welcome_box, 0, crypto_box_BOXZEROBYTES); + memcpy (welcome_box + crypto_box_BOXZEROBYTES, welcome + 24, 144); + + memcpy (welcome_nonce, "WELCOME-", 8); + memcpy (welcome_nonce + 8, welcome + 8, 16); + + int rc = crypto_box_open (welcome_plaintext, welcome_box, + sizeof welcome_box, + welcome_nonce, server_key, cn_secret); + if (rc != 0) { + errno = EPROTO; + return -1; + } + + memcpy (cn_server, welcome_plaintext + crypto_box_ZEROBYTES, 32); + memcpy (cn_cookie, welcome_plaintext + crypto_box_ZEROBYTES + 32, 16 + 80); + + // Message independent precomputation + rc = crypto_box_beforenm (cn_precom, cn_server, cn_secret); + zmq_assert (rc == 0); + + return 0; +} + +int zmq::curve_client_t::produce_initiate (msg_t *msg_) +{ + uint8_t vouch_nonce [crypto_box_NONCEBYTES]; + uint8_t vouch_plaintext [crypto_box_ZEROBYTES + 64]; + uint8_t vouch_box [crypto_box_BOXZEROBYTES + 80]; + + // Create vouch = Box [C',S](C->S') + memset (vouch_plaintext, 0, crypto_box_ZEROBYTES); + memcpy (vouch_plaintext + crypto_box_ZEROBYTES, cn_public, 32); + memcpy (vouch_plaintext + crypto_box_ZEROBYTES + 32, server_key, 32); + + memcpy (vouch_nonce, "VOUCH---", 8); + randombytes (vouch_nonce + 8, 16); + + int rc = crypto_box (vouch_box, vouch_plaintext, + sizeof vouch_plaintext, + vouch_nonce, cn_server, secret_key); + zmq_assert (rc == 0); + + // Assume here that metadata is limited to 256 bytes + uint8_t initiate_nonce [crypto_box_NONCEBYTES]; + uint8_t initiate_plaintext [crypto_box_ZEROBYTES + 128 + 256]; + uint8_t initiate_box [crypto_box_BOXZEROBYTES + 144 + 256]; + + // Create Box [C + vouch + metadata](C'->S') + memset (initiate_plaintext, 0, crypto_box_ZEROBYTES); + memcpy (initiate_plaintext + crypto_box_ZEROBYTES, + public_key, 32); + memcpy (initiate_plaintext + crypto_box_ZEROBYTES + 32, + vouch_nonce + 8, 16); + memcpy (initiate_plaintext + crypto_box_ZEROBYTES + 48, + vouch_box + crypto_box_BOXZEROBYTES, 80); + + // Metadata starts after vouch + uint8_t *ptr = initiate_plaintext + crypto_box_ZEROBYTES + 128; + + // Add socket type property + const char *socket_type = socket_type_string (options.type); + ptr += add_property (ptr, "Socket-Type", socket_type, strlen (socket_type)); + + // Add identity property + if (options.type == ZMQ_REQ + || options.type == ZMQ_DEALER + || options.type == ZMQ_ROUTER) + ptr += add_property (ptr, "Identity", + options.identity, options.identity_size); + + const size_t mlen = ptr - initiate_plaintext; + + memcpy (initiate_nonce, "CurveZMQINITIATE", 16); + memcpy (initiate_nonce + 16, &cn_nonce, 8); + + rc = crypto_box (initiate_box, initiate_plaintext, + mlen, initiate_nonce, cn_server, cn_secret); + zmq_assert (rc == 0); + + rc = msg_->init_size (113 + mlen - crypto_box_BOXZEROBYTES); + errno_assert (rc == 0); + + uint8_t *initiate = static_cast (msg_->data ()); + + memcpy (initiate, "\x08INITIATE", 9); + // Cookie provided by the server in the WELCOME command + memcpy (initiate + 9, cn_cookie, 96); + // Short nonce, prefixed by "CurveZMQINITIATE" + memcpy (initiate + 105, &cn_nonce, 8); + // Box [C + vouch + metadata](C'->S') + memcpy (initiate + 113, initiate_box + crypto_box_BOXZEROBYTES, + mlen - crypto_box_BOXZEROBYTES); + cn_nonce++; + + return 0; +} + +int zmq::curve_client_t::process_ready (msg_t *msg_) +{ + if (msg_->size () < 30) { + errno = EPROTO; + return -1; + } + + const uint8_t *ready = static_cast (msg_->data ()); + if (memcmp (ready, "\x05READY", 6)) { + errno = EPROTO; + return -1; + } + + const size_t clen = (msg_->size () - 14) + crypto_box_BOXZEROBYTES; + + uint8_t ready_nonce [crypto_box_NONCEBYTES]; + uint8_t ready_plaintext [crypto_box_ZEROBYTES + 256]; + uint8_t ready_box [crypto_box_BOXZEROBYTES + 16 + 256]; + + memset (ready_box, 0, crypto_box_BOXZEROBYTES); + memcpy (ready_box + crypto_box_BOXZEROBYTES, + ready + 14, clen - crypto_box_BOXZEROBYTES); + + memcpy (ready_nonce, "CurveZMQREADY---", 16); + memcpy (ready_nonce + 16, ready + 6, 8); + + int rc = crypto_box_open_afternm (ready_plaintext, ready_box, + clen, ready_nonce, cn_precom); + + if (rc != 0) { + errno = EPROTO; + return -1; + } + + rc = parse_metadata (ready_plaintext + crypto_box_ZEROBYTES, + clen - crypto_box_ZEROBYTES); + return rc; +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/curve_client.hpp zeromq3-4.0.4/src/curve_client.hpp --- zeromq3-3.2.4+dfsg/src/curve_client.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/curve_client.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,109 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_CURVE_CLIENT_HPP_INCLUDED__ +#define __ZMQ_CURVE_CLIENT_HPP_INCLUDED__ + +#include "platform.hpp" + +#ifdef HAVE_LIBSODIUM +#include + +#if crypto_box_NONCEBYTES != 24 \ +|| crypto_box_PUBLICKEYBYTES != 32 \ +|| crypto_box_SECRETKEYBYTES != 32 \ +|| crypto_box_ZEROBYTES != 32 \ +|| crypto_box_BOXZEROBYTES != 16 +#error "libsodium not built properly" +#endif + +#include "mechanism.hpp" +#include "options.hpp" + +namespace zmq +{ + + class msg_t; + class session_base_t; + + class curve_client_t : public mechanism_t + { + public: + + curve_client_t (const options_t &options_); + virtual ~curve_client_t (); + + // mechanism implementation + virtual int next_handshake_command (msg_t *msg_); + virtual int process_handshake_command (msg_t *msg_); + virtual int encode (msg_t *msg_); + virtual int decode (msg_t *msg_); + virtual bool is_handshake_complete () const; + + private: + + enum state_t { + send_hello, + expect_welcome, + send_initiate, + expect_ready, + connected + }; + + // Current FSM state + state_t state; + + // Our public key (C) + uint8_t public_key [crypto_box_PUBLICKEYBYTES]; + + // Our secret key (c) + uint8_t secret_key [crypto_box_SECRETKEYBYTES]; + + // Our short-term public key (C') + uint8_t cn_public [crypto_box_PUBLICKEYBYTES]; + + // Our short-term secret key (c') + uint8_t cn_secret [crypto_box_SECRETKEYBYTES]; + + // Server's public key (S) + uint8_t server_key [crypto_box_PUBLICKEYBYTES]; + + // Server's short-term public key (S') + uint8_t cn_server [crypto_box_PUBLICKEYBYTES]; + + // Cookie received from server + uint8_t cn_cookie [16 + 80]; + + // Intermediary buffer used to seepd up boxing and unboxing. + uint8_t cn_precom [crypto_box_BEFORENMBYTES]; + + // Nonce + uint64_t cn_nonce; + + int produce_hello (msg_t *msg_); + int process_welcome (msg_t *msg_); + int produce_initiate (msg_t *msg_); + int process_ready (msg_t *msg_); + }; + +} + +#endif + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/curve_server.cpp zeromq3-4.0.4/src/curve_server.cpp --- zeromq3-3.2.4+dfsg/src/curve_server.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/curve_server.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,629 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "platform.hpp" + +#ifdef HAVE_LIBSODIUM +#include + +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include "msg.hpp" +#include "session_base.hpp" +#include "err.hpp" +#include "curve_server.hpp" +#include "wire.hpp" + +zmq::curve_server_t::curve_server_t (session_base_t *session_, + const std::string &peer_address_, + const options_t &options_) : + mechanism_t (options_), + session (session_), + peer_address (peer_address_), + state (expect_hello), + expecting_zap_reply (false), + cn_nonce (1) +{ + // Fetch our secret key from socket options + memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES); + + // Generate short-term key pair + const int rc = crypto_box_keypair (cn_public, cn_secret); + zmq_assert (rc == 0); +} + +zmq::curve_server_t::~curve_server_t () +{ +} + +int zmq::curve_server_t::next_handshake_command (msg_t *msg_) +{ + int rc = 0; + + switch (state) { + case send_welcome: + rc = produce_welcome (msg_); + if (rc == 0) + state = expect_initiate; + break; + case send_ready: + rc = produce_ready (msg_); + if (rc == 0) + state = connected; + break; + default: + errno = EAGAIN; + rc = -1; + break; + } + return rc; +} + +int zmq::curve_server_t::process_handshake_command (msg_t *msg_) +{ + int rc = 0; + + switch (state) { + case expect_hello: + rc = process_hello (msg_); + if (rc == 0) + state = send_welcome; + break; + case expect_initiate: + rc = process_initiate (msg_); + if (rc == 0) + state = expecting_zap_reply? expect_zap_reply: send_ready; + break; + default: + errno = EPROTO; + rc = -1; + break; + } + if (rc == 0) { + rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + } + return rc; +} + +int zmq::curve_server_t::encode (msg_t *msg_) +{ + zmq_assert (state == connected); + + const size_t mlen = crypto_box_ZEROBYTES + 1 + msg_->size (); + + uint8_t message_nonce [crypto_box_NONCEBYTES]; + memcpy (message_nonce, "CurveZMQMESSAGES", 16); + memcpy (message_nonce + 16, &cn_nonce, 8); + + uint8_t flags = 0; + if (msg_->flags () & msg_t::more) + flags |= 0x01; + + uint8_t *message_plaintext = static_cast (malloc (mlen)); + alloc_assert (message_plaintext); + + memset (message_plaintext, 0, crypto_box_ZEROBYTES); + message_plaintext [crypto_box_ZEROBYTES] = flags; + memcpy (message_plaintext + crypto_box_ZEROBYTES + 1, + msg_->data (), msg_->size ()); + + uint8_t *message_box = static_cast (malloc (mlen)); + alloc_assert (message_box); + + int rc = crypto_box_afternm (message_box, message_plaintext, + mlen, message_nonce, cn_precom); + zmq_assert (rc == 0); + + rc = msg_->close (); + zmq_assert (rc == 0); + + rc = msg_->init_size (16 + mlen - crypto_box_BOXZEROBYTES); + zmq_assert (rc == 0); + + uint8_t *message = static_cast (msg_->data ()); + + memcpy (message, "\x07MESSAGE", 8); + memcpy (message + 8, &cn_nonce, 8); + memcpy (message + 16, message_box + crypto_box_BOXZEROBYTES, + mlen - crypto_box_BOXZEROBYTES); + + free (message_plaintext); + free (message_box); + + cn_nonce++; + + return 0; +} + +int zmq::curve_server_t::decode (msg_t *msg_) +{ + zmq_assert (state == connected); + + if (msg_->size () < 33) { + errno = EPROTO; + return -1; + } + + const uint8_t *message = static_cast (msg_->data ()); + if (memcmp (message, "\x07MESSAGE", 8)) { + errno = EPROTO; + return -1; + } + + uint8_t message_nonce [crypto_box_NONCEBYTES]; + memcpy (message_nonce, "CurveZMQMESSAGEC", 16); + memcpy (message_nonce + 16, message + 8, 8); + + const size_t clen = crypto_box_BOXZEROBYTES + msg_->size () - 16; + + uint8_t *message_plaintext = static_cast (malloc (clen)); + alloc_assert (message_plaintext); + + uint8_t *message_box = static_cast (malloc (clen)); + alloc_assert (message_box); + + memset (message_box, 0, crypto_box_BOXZEROBYTES); + memcpy (message_box + crypto_box_BOXZEROBYTES, + message + 16, msg_->size () - 16); + + int rc = crypto_box_open_afternm (message_plaintext, message_box, + clen, message_nonce, cn_precom); + if (rc == 0) { + rc = msg_->close (); + zmq_assert (rc == 0); + + rc = msg_->init_size (clen - 1 - crypto_box_ZEROBYTES); + zmq_assert (rc == 0); + + const uint8_t flags = message_plaintext [crypto_box_ZEROBYTES]; + if (flags & 0x01) + msg_->set_flags (msg_t::more); + + memcpy (msg_->data (), + message_plaintext + crypto_box_ZEROBYTES + 1, + msg_->size ()); + } + else + errno = EPROTO; + + free (message_plaintext); + free (message_box); + + return rc; +} + +int zmq::curve_server_t::zap_msg_available () +{ + if (state != expect_zap_reply) { + errno = EFSM; + return -1; + } + const int rc = receive_and_process_zap_reply (); + if (rc == 0) + state = send_ready; + return rc; +} + +bool zmq::curve_server_t::is_handshake_complete () const +{ + return state == connected; +} + +int zmq::curve_server_t::process_hello (msg_t *msg_) +{ + if (msg_->size () != 200) { + errno = EPROTO; + return -1; + } + + const uint8_t * const hello = static_cast (msg_->data ()); + if (memcmp (hello, "\x05HELLO", 6)) { + errno = EPROTO; + return -1; + } + + const uint8_t major = hello [6]; + const uint8_t minor = hello [7]; + + if (major != 1 || minor != 0) { + errno = EPROTO; + return -1; + } + + // Save client's short-term public key (C') + memcpy (cn_client, hello + 80, 32); + + uint8_t hello_nonce [crypto_box_NONCEBYTES]; + uint8_t hello_plaintext [crypto_box_ZEROBYTES + 64]; + uint8_t hello_box [crypto_box_BOXZEROBYTES + 80]; + + memcpy (hello_nonce, "CurveZMQHELLO---", 16); + memcpy (hello_nonce + 16, hello + 112, 8); + + memset (hello_box, 0, crypto_box_BOXZEROBYTES); + memcpy (hello_box + crypto_box_BOXZEROBYTES, hello + 120, 80); + + // Open Box [64 * %x0](C'->S) + int rc = crypto_box_open (hello_plaintext, hello_box, + sizeof hello_box, + hello_nonce, cn_client, secret_key); + if (rc != 0) { + errno = EPROTO; + return -1; + } + + return rc; +} + +int zmq::curve_server_t::produce_welcome (msg_t *msg_) +{ + uint8_t cookie_nonce [crypto_secretbox_NONCEBYTES]; + uint8_t cookie_plaintext [crypto_secretbox_ZEROBYTES + 64]; + uint8_t cookie_ciphertext [crypto_secretbox_BOXZEROBYTES + 80]; + + // Create full nonce for encryption + // 8-byte prefix plus 16-byte random nonce + memcpy (cookie_nonce, "COOKIE--", 8); + randombytes (cookie_nonce + 8, 16); + + // Generate cookie = Box [C' + s'](t) + memset (cookie_plaintext, 0, crypto_secretbox_ZEROBYTES); + memcpy (cookie_plaintext + crypto_secretbox_ZEROBYTES, + cn_client, 32); + memcpy (cookie_plaintext + crypto_secretbox_ZEROBYTES + 32, + cn_secret, 32); + + // Generate fresh cookie key + randombytes (cookie_key, crypto_secretbox_KEYBYTES); + + // Encrypt using symmetric cookie key + int rc = crypto_secretbox (cookie_ciphertext, cookie_plaintext, + sizeof cookie_plaintext, + cookie_nonce, cookie_key); + zmq_assert (rc == 0); + + uint8_t welcome_nonce [crypto_box_NONCEBYTES]; + uint8_t welcome_plaintext [crypto_box_ZEROBYTES + 128]; + uint8_t welcome_ciphertext [crypto_box_BOXZEROBYTES + 144]; + + // Create full nonce for encryption + // 8-byte prefix plus 16-byte random nonce + memcpy (welcome_nonce, "WELCOME-", 8); + randombytes (welcome_nonce + 8, crypto_box_NONCEBYTES - 8); + + // Create 144-byte Box [S' + cookie](S->C') + memset (welcome_plaintext, 0, crypto_box_ZEROBYTES); + memcpy (welcome_plaintext + crypto_box_ZEROBYTES, cn_public, 32); + memcpy (welcome_plaintext + crypto_box_ZEROBYTES + 32, + cookie_nonce + 8, 16); + memcpy (welcome_plaintext + crypto_box_ZEROBYTES + 48, + cookie_ciphertext + crypto_secretbox_BOXZEROBYTES, 80); + + rc = crypto_box (welcome_ciphertext, welcome_plaintext, + sizeof welcome_plaintext, + welcome_nonce, cn_client, secret_key); + zmq_assert (rc == 0); + + rc = msg_->init_size (168); + errno_assert (rc == 0); + + uint8_t * const welcome = static_cast (msg_->data ()); + memcpy (welcome, "\x07WELCOME", 8); + memcpy (welcome + 8, welcome_nonce + 8, 16); + memcpy (welcome + 24, welcome_ciphertext + crypto_box_BOXZEROBYTES, 144); + + return 0; +} + +int zmq::curve_server_t::process_initiate (msg_t *msg_) +{ + if (msg_->size () < 257) { + errno = EPROTO; + return -1; + } + + const uint8_t *initiate = static_cast (msg_->data ()); + if (memcmp (initiate, "\x08INITIATE", 9)) { + errno = EPROTO; + return -1; + } + + uint8_t cookie_nonce [crypto_secretbox_NONCEBYTES]; + uint8_t cookie_plaintext [crypto_secretbox_ZEROBYTES + 64]; + uint8_t cookie_box [crypto_secretbox_BOXZEROBYTES + 80]; + + // Open Box [C' + s'](t) + memset (cookie_box, 0, crypto_secretbox_BOXZEROBYTES); + memcpy (cookie_box + crypto_secretbox_BOXZEROBYTES, initiate + 25, 80); + + memcpy (cookie_nonce, "COOKIE--", 8); + memcpy (cookie_nonce + 8, initiate + 9, 16); + + int rc = crypto_secretbox_open (cookie_plaintext, cookie_box, + sizeof cookie_box, + cookie_nonce, cookie_key); + if (rc != 0) { + errno = EPROTO; + return -1; + } + + // Check cookie plain text is as expected [C' + s'] + if (memcmp (cookie_plaintext + crypto_secretbox_ZEROBYTES, cn_client, 32) + || memcmp (cookie_plaintext + crypto_secretbox_ZEROBYTES + 32, cn_secret, 32)) { + errno = EPROTO; + return -1; + } + + const size_t clen = (msg_->size () - 113) + crypto_box_BOXZEROBYTES; + + uint8_t initiate_nonce [crypto_box_NONCEBYTES]; + uint8_t initiate_plaintext [crypto_box_ZEROBYTES + 128 + 256]; + uint8_t initiate_box [crypto_box_BOXZEROBYTES + 144 + 256]; + + // Open Box [C + vouch + metadata](C'->S') + memset (initiate_box, 0, crypto_box_BOXZEROBYTES); + memcpy (initiate_box + crypto_box_BOXZEROBYTES, + initiate + 113, clen - crypto_box_BOXZEROBYTES); + + memcpy (initiate_nonce, "CurveZMQINITIATE", 16); + memcpy (initiate_nonce + 16, initiate + 105, 8); + + rc = crypto_box_open (initiate_plaintext, initiate_box, + clen, initiate_nonce, cn_client, cn_secret); + if (rc != 0) { + errno = EPROTO; + return -1; + } + + const uint8_t *client_key = initiate_plaintext + crypto_box_ZEROBYTES; + + uint8_t vouch_nonce [crypto_box_NONCEBYTES]; + uint8_t vouch_plaintext [crypto_box_ZEROBYTES + 64]; + uint8_t vouch_box [crypto_box_BOXZEROBYTES + 80]; + + // Open Box Box [C',S](C->S') and check contents + memset (vouch_box, 0, crypto_box_BOXZEROBYTES); + memcpy (vouch_box + crypto_box_BOXZEROBYTES, + initiate_plaintext + crypto_box_ZEROBYTES + 48, 80); + + memcpy (vouch_nonce, "VOUCH---", 8); + memcpy (vouch_nonce + 8, + initiate_plaintext + crypto_box_ZEROBYTES + 32, 16); + + rc = crypto_box_open (vouch_plaintext, vouch_box, + sizeof vouch_box, + vouch_nonce, client_key, cn_secret); + if (rc != 0) { + errno = EPROTO; + return -1; + } + + // What we decrypted must be the client's short-term public key + if (memcmp (vouch_plaintext + crypto_box_ZEROBYTES, cn_client, 32)) { + errno = EPROTO; + return -1; + } + + // Precompute connection secret from client key + rc = crypto_box_beforenm (cn_precom, cn_client, cn_secret); + zmq_assert (rc == 0); + + // Use ZAP protocol (RFC 27) to authenticate the user. + rc = session->zap_connect (); + if (rc == 0) { + send_zap_request (client_key); + rc = receive_and_process_zap_reply (); + if (rc != 0) { + if (errno != EAGAIN) + return -1; + expecting_zap_reply = true; + } + } + + return parse_metadata (initiate_plaintext + crypto_box_ZEROBYTES + 128, + clen - crypto_box_ZEROBYTES - 128); +} + +int zmq::curve_server_t::produce_ready (msg_t *msg_) +{ + uint8_t ready_nonce [crypto_box_NONCEBYTES]; + uint8_t ready_plaintext [crypto_box_ZEROBYTES + 256]; + uint8_t ready_box [crypto_box_BOXZEROBYTES + 16 + 256]; + + // Create Box [metadata](S'->C') + memset (ready_plaintext, 0, crypto_box_ZEROBYTES); + uint8_t *ptr = ready_plaintext + crypto_box_ZEROBYTES; + + // Add socket type property + const char *socket_type = socket_type_string (options.type); + ptr += add_property (ptr, "Socket-Type", socket_type, strlen (socket_type)); + + // Add identity property + if (options.type == ZMQ_REQ + || options.type == ZMQ_DEALER + || options.type == ZMQ_ROUTER) + ptr += add_property (ptr, "Identity", + options.identity, options.identity_size); + + const size_t mlen = ptr - ready_plaintext; + + memcpy (ready_nonce, "CurveZMQREADY---", 16); + memcpy (ready_nonce + 16, &cn_nonce, 8); + + int rc = crypto_box_afternm (ready_box, ready_plaintext, + mlen, ready_nonce, cn_precom); + zmq_assert (rc == 0); + + rc = msg_->init_size (14 + mlen - crypto_box_BOXZEROBYTES); + errno_assert (rc == 0); + + uint8_t *ready = static_cast (msg_->data ()); + + memcpy (ready, "\x05READY", 6); + // Short nonce, prefixed by "CurveZMQREADY---" + memcpy (ready + 6, &cn_nonce, 8); + // Box [metadata](S'->C') + memcpy (ready + 14, ready_box + crypto_box_BOXZEROBYTES, + mlen - crypto_box_BOXZEROBYTES); + + cn_nonce++; + + return 0; +} + +void zmq::curve_server_t::send_zap_request (const uint8_t *key) +{ + int rc; + msg_t msg; + + // Address delimiter frame + rc = msg.init (); + errno_assert (rc == 0); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Version frame + rc = msg.init_size (3); + errno_assert (rc == 0); + memcpy (msg.data (), "1.0", 3); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Request ID frame + rc = msg.init_size (1); + errno_assert (rc == 0); + memcpy (msg.data (), "1", 1); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Domain frame + rc = msg.init_size (options.zap_domain.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), options.zap_domain.c_str (), options.zap_domain.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Address frame + rc = msg.init_size (peer_address.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), peer_address.c_str (), peer_address.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Identity frame + rc = msg.init_size (options.identity_size); + errno_assert (rc == 0); + memcpy (msg.data (), options.identity, options.identity_size); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Mechanism frame + rc = msg.init_size (5); + errno_assert (rc == 0); + memcpy (msg.data (), "CURVE", 5); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Credentials frame + rc = msg.init_size (crypto_box_PUBLICKEYBYTES); + errno_assert (rc == 0); + memcpy (msg.data (), key, crypto_box_PUBLICKEYBYTES); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); +} + +int zmq::curve_server_t::receive_and_process_zap_reply () +{ + int rc = 0; + msg_t msg [7]; // ZAP reply consists of 7 frames + + // Initialize all reply frames + for (int i = 0; i < 7; i++) { + rc = msg [i].init (); + errno_assert (rc == 0); + } + + for (int i = 0; i < 7; i++) { + rc = session->read_zap_msg (&msg [i]); + if (rc == -1) + break; + if ((msg [i].flags () & msg_t::more) == (i < 6? 0: msg_t::more)) { + errno = EPROTO; + rc = -1; + break; + } + } + + if (rc != 0) + goto error; + + // Address delimiter frame + if (msg [0].size () > 0) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Version frame + if (msg [1].size () != 3 || memcmp (msg [1].data (), "1.0", 3)) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Request id frame + if (msg [2].size () != 1 || memcmp (msg [2].data (), "1", 1)) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Status code frame + if (msg [3].size () != 3 || memcmp (msg [3].data (), "200", 3)) { + rc = -1; + errno = EACCES; + goto error; + } + + // Process metadata frame + rc = parse_metadata (static_cast (msg [6].data ()), + msg [6].size ()); + +error: + for (int i = 0; i < 7; i++) { + const int rc2 = msg [i].close (); + errno_assert (rc2 == 0); + } + + return rc; +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/curve_server.hpp zeromq3-4.0.4/src/curve_server.hpp --- zeromq3-3.2.4+dfsg/src/curve_server.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/curve_server.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,120 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_CURVE_SERVER_HPP_INCLUDED__ +#define __ZMQ_CURVE_SERVER_HPP_INCLUDED__ + +#include "platform.hpp" + +#ifdef HAVE_LIBSODIUM +#include + +#if crypto_box_NONCEBYTES != 24 \ +|| crypto_box_PUBLICKEYBYTES != 32 \ +|| crypto_box_SECRETKEYBYTES != 32 \ +|| crypto_box_ZEROBYTES != 32 \ +|| crypto_box_BOXZEROBYTES != 16 \ +|| crypto_secretbox_NONCEBYTES != 24 \ +|| crypto_secretbox_ZEROBYTES != 32 \ +|| crypto_secretbox_BOXZEROBYTES != 16 +#error "libsodium not built properly" +#endif + +#include "mechanism.hpp" +#include "options.hpp" + +namespace zmq +{ + + class msg_t; + class session_base_t; + + class curve_server_t : public mechanism_t + { + public: + + curve_server_t (session_base_t *session_, + const std::string &peer_address_, + const options_t &options_); + virtual ~curve_server_t (); + + // mechanism implementation + virtual int next_handshake_command (msg_t *msg_); + virtual int process_handshake_command (msg_t *msg_); + virtual int encode (msg_t *msg_); + virtual int decode (msg_t *msg_); + virtual int zap_msg_available (); + virtual bool is_handshake_complete () const; + + private: + + enum state_t { + expect_hello, + send_welcome, + expect_initiate, + expect_zap_reply, + send_ready, + connected + }; + + session_base_t * const session; + + const std::string peer_address; + + // Current FSM state + state_t state; + + // True iff we are awaiting reply from ZAP handler. + bool expecting_zap_reply; + + uint64_t cn_nonce; + + // Our secret key (s) + uint8_t secret_key [crypto_box_SECRETKEYBYTES]; + + // Our short-term public key (S') + uint8_t cn_public [crypto_box_PUBLICKEYBYTES]; + + // Our short-term secret key (s') + uint8_t cn_secret [crypto_box_SECRETKEYBYTES]; + + // Client's short-term public key (C') + uint8_t cn_client [crypto_box_PUBLICKEYBYTES]; + + // Key used to produce cookie + uint8_t cookie_key [crypto_secretbox_KEYBYTES]; + + // Intermediary buffer used to speed up boxing and unboxing. + uint8_t cn_precom [crypto_box_BEFORENMBYTES]; + + int process_hello (msg_t *msg_); + int produce_welcome (msg_t *msg_); + int process_initiate (msg_t *msg_); + int produce_ready (msg_t *msg_); + + void send_zap_request (const uint8_t *key); + int receive_and_process_zap_reply (); + }; + +} + +#endif + +#endif + diff -Nru zeromq3-3.2.4+dfsg/src/dbuffer.hpp zeromq3-4.0.4/src/dbuffer.hpp --- zeromq3-3.2.4+dfsg/src/dbuffer.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/dbuffer.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,134 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_DBUFFER_HPP_INCLUDED__ +#define __ZMQ_DBUFFER_HPP_INCLUDED__ + +#include +#include +#include + +#include "mutex.hpp" +#include "msg.hpp" + +namespace zmq +{ + + // dbuffer is a single-producer single-consumer double-buffer + // implementation. + // + // The producer writes to a back buffer and then tries to swap + // pointers between the back and front buffers. If it fails, + // due to the consumer reading from the front buffer, it just + // gives up, which is ok since writes are many and redundant. + // + // The reader simply reads from the front buffer. + // + // has_msg keeps track of whether there has been a not yet read + // value written, it is used by ypipe_conflate to mimic ypipe + // functionality regarding a reader being asleep + + template class dbuffer_t; + + template <> class dbuffer_t + { + public: + + inline dbuffer_t () + : back (&storage[0]) + , front (&storage[1]) + , has_msg (false) + { + back->init (); + front->init (); + } + + inline ~dbuffer_t() + { + back->close (); + front->close (); + } + + inline void write (const msg_t &value_) + { + msg_t& xvalue = const_cast(value_); + + zmq_assert (xvalue.check ()); + back->move (xvalue); // cannot just overwrite, might leak + + zmq_assert (back->check ()); + + if (sync.try_lock ()) + { + std::swap (back, front); + has_msg = true; + + sync.unlock (); + } + } + + inline bool read (msg_t *value_) + { + if (!value_) + return false; + + { + scoped_lock_t lock (sync); + if (!has_msg) + return false; + + zmq_assert (front->check ()); + + *value_ = *front; + front->init (); // avoid double free + + has_msg = false; + return true; + } + } + + + inline bool check_read () + { + scoped_lock_t lock (sync); + + return has_msg; + } + + inline bool probe (bool (*fn)(msg_t &)) + { + scoped_lock_t lock (sync); + return (*fn) (*front); + } + + + private: + msg_t storage[2]; + msg_t *back, *front; + + mutex_t sync; + bool has_msg; + + // Disable copying of dbuffer. + dbuffer_t (const dbuffer_t&); + const dbuffer_t &operator = (const dbuffer_t&); + }; +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/dealer.cpp zeromq3-4.0.4/src/dealer.cpp --- zeromq3-3.2.4+dfsg/src/dealer.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/dealer.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -25,78 +23,74 @@ zmq::dealer_t::dealer_t (class ctx_t *parent_, uint32_t tid_, int sid_) : socket_base_t (parent_, tid_, sid_), - prefetched (false) + probe_router (false) { options.type = ZMQ_DEALER; - - // TODO: Uncomment the following line when DEALER will become true DEALER - // rather than generic dealer socket. - // If the socket is closing we can drop all the outbound requests. There'll - // be noone to receive the replies anyway. - // options.delay_on_close = false; - - options.recv_identity = true; - - prefetched_msg.init (); } zmq::dealer_t::~dealer_t () { - prefetched_msg.close (); } -void zmq::dealer_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::dealer_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { - // icanhasall_ is unused - (void) icanhasall_; + // subscribe_to_all_ is unused + (void) subscribe_to_all_; zmq_assert (pipe_); + + if (probe_router) { + msg_t probe_msg_; + int rc = probe_msg_.init (); + errno_assert (rc == 0); + + rc = pipe_->write (&probe_msg_); + // zmq_assert (rc) is not applicable here, since it is not a bug. + pipe_->flush (); + + rc = probe_msg_.close (); + errno_assert (rc == 0); + } + fq.attach (pipe_); lb.attach (pipe_); } -int zmq::dealer_t::xsend (msg_t *msg_, int flags_) -{ - return lb.send (msg_, flags_); -} - -int zmq::dealer_t::xrecv (msg_t *msg_, int flags_) +int zmq::dealer_t::xsetsockopt (int option_, const void *optval_, + size_t optvallen_) { - // flags_ is unused - (void)flags_; + bool is_int = (optvallen_ == sizeof (int)); + int value = is_int? *((int *) optval_): 0; - // If there is a prefetched message, return it. - if (prefetched) { - int rc = msg_->move (prefetched_msg); - errno_assert (rc == 0); - prefetched = false; - return 0; - } + switch (option_) { + case ZMQ_PROBE_ROUTER: + if (is_int && value >= 0) { + probe_router = (value != 0); + return 0; + } + break; - // DEALER socket doesn't use identities. We can safely drop it and - while (true) { - int rc = fq.recv (msg_); - if (rc != 0) - return rc; - if (likely (!(msg_->flags () & msg_t::identity))) + default: break; } - return 0; + + errno = EINVAL; + return -1; +} + +int zmq::dealer_t::xsend (msg_t *msg_) +{ + return sendpipe (msg_, NULL); +} + +int zmq::dealer_t::xrecv (msg_t *msg_) +{ + return recvpipe (msg_, NULL); } bool zmq::dealer_t::xhas_in () { - // We may already have a message pre-fetched. - if (prefetched) - return true; - - // Try to read the next message to the pre-fetch buffer. - int rc = dealer_t::xrecv (&prefetched_msg, ZMQ_DONTWAIT); - if (rc != 0 && errno == EAGAIN) - return false; - errno_assert (rc == 0); - prefetched = true; - return true; + return fq.has_in (); } bool zmq::dealer_t::xhas_out () @@ -114,20 +108,18 @@ lb.activated (pipe_); } -void zmq::dealer_t::xterminated (pipe_t *pipe_) +void zmq::dealer_t::xpipe_terminated (pipe_t *pipe_) { - fq.terminated (pipe_); - lb.terminated (pipe_); + fq.pipe_terminated (pipe_); + lb.pipe_terminated (pipe_); } -zmq::dealer_session_t::dealer_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) +int zmq::dealer_t::sendpipe (msg_t *msg_, pipe_t **pipe_) { + return lb.sendpipe (msg_, pipe_); } -zmq::dealer_session_t::~dealer_session_t () +int zmq::dealer_t::recvpipe (msg_t *msg_, pipe_t **pipe_) { + return fq.recvpipe (msg_, pipe_); } - diff -Nru zeromq3-3.2.4+dfsg/src/dealer.hpp zeromq3-4.0.4/src/dealer.hpp --- zeromq3-3.2.4+dfsg/src/dealer.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/dealer.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -46,14 +45,19 @@ protected: // Overloads of functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_); - int xsend (zmq::msg_t *msg_, int flags_); - int xrecv (zmq::msg_t *msg_, int flags_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); + int xsetsockopt (int option_, const void *optval_, size_t optvallen_); + int xsend (zmq::msg_t *msg_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); bool xhas_out (); void xread_activated (zmq::pipe_t *pipe_); void xwrite_activated (zmq::pipe_t *pipe_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); + + // Send and recv - knowing which pipe was used. + int sendpipe (zmq::msg_t *msg_, zmq::pipe_t **pipe_); + int recvpipe (zmq::msg_t *msg_, zmq::pipe_t **pipe_); private: @@ -62,31 +66,13 @@ fq_t fq; lb_t lb; - // Have we prefetched a message. - bool prefetched; - - // Holds the prefetched message. - msg_t prefetched_msg; + // if true, send an empty message to every connected router peer + bool probe_router; dealer_t (const dealer_t&); const dealer_t &operator = (const dealer_t&); }; - class dealer_session_t : public session_base_t - { - public: - - dealer_session_t (zmq::io_thread_t *io_thread_, bool connect_, - zmq::socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~dealer_session_t (); - - private: - - dealer_session_t (const dealer_session_t&); - const dealer_session_t &operator = (const dealer_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/decoder.cpp zeromq3-4.0.4/src/decoder.cpp --- zeromq3-3.2.4+dfsg/src/decoder.cpp 2012-11-13 12:34:49.000000000 +0000 +++ zeromq3-4.0.4/src/decoder.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,166 +0,0 @@ -/* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#include -#include -#include - -#include "platform.hpp" -#if defined ZMQ_HAVE_WINDOWS -#include "windows.hpp" -#endif - -#include "decoder.hpp" -#include "i_msg_sink.hpp" -#include "likely.hpp" -#include "wire.hpp" -#include "err.hpp" - -zmq::decoder_t::decoder_t (size_t bufsize_, int64_t maxmsgsize_) : - decoder_base_t (bufsize_), - msg_sink (NULL), - maxmsgsize (maxmsgsize_) -{ - int rc = in_progress.init (); - errno_assert (rc == 0); - - // At the beginning, read one byte and go to one_byte_size_ready state. - next_step (tmpbuf, 1, &decoder_t::one_byte_size_ready); -} - -zmq::decoder_t::~decoder_t () -{ - int rc = in_progress.close (); - errno_assert (rc == 0); -} - -void zmq::decoder_t::set_msg_sink (i_msg_sink *msg_sink_) -{ - msg_sink = msg_sink_; -} - -bool zmq::decoder_t::one_byte_size_ready () -{ - // First byte of size is read. If it is 0xff read 8-byte size. - // Otherwise allocate the buffer for message data and read the - // message data into it. - if (*tmpbuf == 0xff) - next_step (tmpbuf, 8, &decoder_t::eight_byte_size_ready); - else { - - // There has to be at least one byte (the flags) in the message). - if (!*tmpbuf) { - decoding_error (); - return false; - } - - // in_progress is initialised at this point so in theory we should - // close it before calling zmq_msg_init_size, however, it's a 0-byte - // message and thus we can treat it as uninitialised... - int rc; - if (maxmsgsize >= 0 && (int64_t) (*tmpbuf - 1) > maxmsgsize) { - rc = -1; - errno = ENOMEM; - } - else - rc = in_progress.init_size (*tmpbuf - 1); - if (rc != 0 && errno == ENOMEM) { - rc = in_progress.init (); - errno_assert (rc == 0); - decoding_error (); - return false; - } - errno_assert (rc == 0); - - next_step (tmpbuf, 1, &decoder_t::flags_ready); - } - return true; -} - -bool zmq::decoder_t::eight_byte_size_ready () -{ - // 8-byte payload length is read. Allocate the buffer - // for message body and read the message data into it. - const uint64_t payload_length = get_uint64 (tmpbuf); - - // There has to be at least one byte (the flags) in the message). - if (payload_length == 0) { - decoding_error (); - return false; - } - - // Message size must not exceed the maximum allowed size. - if (maxmsgsize >= 0 && payload_length - 1 > (uint64_t) maxmsgsize) { - decoding_error (); - return false; - } - - // Message size must fit within range of size_t data type. - if (payload_length - 1 > std::numeric_limits ::max ()) { - decoding_error (); - return false; - } - - const size_t msg_size = static_cast (payload_length - 1); - - // in_progress is initialised at this point so in theory we should - // close it before calling init_size, however, it's a 0-byte - // message and thus we can treat it as uninitialised... - int rc = in_progress.init_size (msg_size); - if (rc != 0) { - errno_assert (errno == ENOMEM); - rc = in_progress.init (); - errno_assert (rc == 0); - decoding_error (); - return false; - } - - next_step (tmpbuf, 1, &decoder_t::flags_ready); - return true; -} - -bool zmq::decoder_t::flags_ready () -{ - // Store the flags from the wire into the message structure. - in_progress.set_flags (tmpbuf [0] & msg_t::more); - - next_step (in_progress.data (), in_progress.size (), - &decoder_t::message_ready); - - return true; -} - -bool zmq::decoder_t::message_ready () -{ - // Message is completely read. Push it further and start reading - // new message. (in_progress is a 0-byte message after this point.) - if (unlikely (!msg_sink)) - return false; - int rc = msg_sink->push_msg (&in_progress); - if (unlikely (rc != 0)) { - if (errno != EAGAIN) - decoding_error (); - return false; - } - - next_step (tmpbuf, 1, &decoder_t::one_byte_size_ready); - return true; -} diff -Nru zeromq3-3.2.4+dfsg/src/decoder.hpp zeromq3-4.0.4/src/decoder.hpp --- zeromq3-3.2.4+dfsg/src/decoder.hpp 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/src/decoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -34,7 +32,6 @@ namespace zmq { - // Helper base class for decoders that know the amount of data to read // in advance at any moment. Knowing the amount in advance is a property // of the protocol used. 0MQ framing protocol is based size-prefixed @@ -90,106 +87,66 @@ // Processes the data in the buffer previously allocated using // get_buffer function. size_ argument specifies nemuber of bytes - // actually filled into the buffer. Function returns number of - // bytes actually processed. - inline size_t process_buffer (unsigned char *data_, size_t size_) + // actually filled into the buffer. Function returns 1 when the + // whole message was decoded or 0 when more data is required. + // On error, -1 is returned and errno set accordingly. + // Number of bytes processed is returned in byts_used_. + inline int decode (const unsigned char *data_, size_t size_, + size_t &bytes_used_) { - // Check if we had an error in previous attempt. - if (unlikely (!(static_cast (this)->next))) - return (size_t) -1; + bytes_used_ = 0; // In case of zero-copy simply adjust the pointers, no copying // is required. Also, run the state machine in case all the data // were processed. if (data_ == read_pos) { + zmq_assert (size_ <= to_read); read_pos += size_; to_read -= size_; + bytes_used_ = size_; while (!to_read) { - if (!(static_cast (this)->*next) ()) { - if (unlikely (!(static_cast (this)->next))) - return (size_t) -1; - return size_; - } + const int rc = (static_cast (this)->*next) (); + if (rc != 0) + return rc; } - return size_; + return 0; } - size_t pos = 0; - while (true) { - - // Try to get more space in the message to fill in. - // If none is available, return. - while (!to_read) { - if (!(static_cast (this)->*next) ()) { - if (unlikely (!(static_cast (this)->next))) - return (size_t) -1; - return pos; - } - } - - // If there are no more data in the buffer, return. - if (pos == size_) - return pos; - + while (bytes_used_ < size_) { // Copy the data from buffer to the message. - size_t to_copy = std::min (to_read, size_ - pos); - memcpy (read_pos, data_ + pos, to_copy); + const size_t to_copy = std::min (to_read, size_ - bytes_used_); + memcpy (read_pos, data_ + bytes_used_, to_copy); read_pos += to_copy; - pos += to_copy; to_read -= to_copy; - } - } - - // Returns true if the decoder has been fed all required data - // but cannot proceed with the next decoding step. - // False is returned if the decoder has encountered an error. - bool stalled () - { - // Check whether there was decoding error. - if (unlikely (!(static_cast (this)->next))) - return false; - - while (!to_read) { - if (!(static_cast (this)->*next) ()) { - if (unlikely (!(static_cast (this)->next))) - return false; - return true; + bytes_used_ += to_copy; + // Try to get more space in the message to fill in. + // If none is available, return. + while (to_read == 0) { + const int rc = (static_cast (this)->*next) (); + if (rc != 0) + return rc; } } - return false; - } - - inline bool message_ready_size (size_t msg_sz) - { - zmq_assert (false); - return false; + return 0; } protected: // Prototype of state machine action. Action should return false if // it is unable to push the data to the system. - typedef bool (T::*step_t) (); + typedef int (T::*step_t) (); // This function should be called from derived class to read data // from the buffer and schedule next state machine action. - inline void next_step (void *read_pos_, size_t to_read_, - step_t next_) + inline void next_step (void *read_pos_, size_t to_read_, step_t next_) { read_pos = (unsigned char*) read_pos_; to_read = to_read_; next = next_; } - // This function should be called from the derived class to - // abort decoder state machine. - inline void decoding_error () - { - next = NULL; - } - private: // Next step. If set to NULL, it means that associated data stream @@ -210,36 +167,6 @@ decoder_base_t (const decoder_base_t&); const decoder_base_t &operator = (const decoder_base_t&); }; - - // Decoder for 0MQ framing protocol. Converts data batches into messages. - - class decoder_t : public decoder_base_t - { - public: - - decoder_t (size_t bufsize_, int64_t maxmsgsize_); - ~decoder_t (); - - // Set the receiver of decoded messages. - void set_msg_sink (i_msg_sink *msg_sink_); - - private: - - bool one_byte_size_ready (); - bool eight_byte_size_ready (); - bool flags_ready (); - bool message_ready (); - - i_msg_sink *msg_sink; - unsigned char tmpbuf [8]; - msg_t in_progress; - - int64_t maxmsgsize; - - decoder_t (const decoder_t&); - void operator = (const decoder_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/devpoll.cpp zeromq3-4.0.4/src/devpoll.cpp --- zeromq3-3.2.4+dfsg/src/devpoll.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/devpoll.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -135,6 +133,11 @@ stopping = true; } +int zmq::devpoll_t::max_fds () +{ + return -1; +} + void zmq::devpoll_t::loop () { while (!stopping) { diff -Nru zeromq3-3.2.4+dfsg/src/devpoll.hpp zeromq3-4.0.4/src/devpoll.hpp --- zeromq3-3.2.4+dfsg/src/devpoll.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/devpoll.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -58,6 +56,8 @@ void start (); void stop (); + static int max_fds (); + private: // Main worker thread routine. diff -Nru zeromq3-3.2.4+dfsg/src/dist.cpp zeromq3-4.0.4/src/dist.cpp --- zeromq3-3.2.4+dfsg/src/dist.cpp 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/src/dist.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -76,7 +74,7 @@ matching = 0; } -void zmq::dist_t::terminated (pipe_t *pipe_) +void zmq::dist_t::pipe_terminated (pipe_t *pipe_) { // Remove the pipe from the list; adjust number of matching, active and/or // eligible pipes accordingly. @@ -110,19 +108,19 @@ } } -int zmq::dist_t::send_to_all (msg_t *msg_, int flags_) +int zmq::dist_t::send_to_all (msg_t *msg_) { matching = active; - return send_to_matching (msg_, flags_); + return send_to_matching (msg_); } -int zmq::dist_t::send_to_matching (msg_t *msg_, int flags_) +int zmq::dist_t::send_to_matching (msg_t *msg_) { // Is this end of a multipart message? bool msg_more = msg_->flags () & msg_t::more ? true : false; // Push the message to matching pipes. - distribute (msg_, flags_); + distribute (msg_); // If mutlipart message is fully sent, activate all the eligible pipes. if (!msg_more) @@ -133,11 +131,8 @@ return 0; } -void zmq::dist_t::distribute (msg_t *msg_, int flags_) +void zmq::dist_t::distribute (msg_t *msg_) { - // flags_ is unused - (void)flags_; - // If there are no matching pipes available, simply drop the message. if (matching == 0) { int rc = msg_->close (); diff -Nru zeromq3-3.2.4+dfsg/src/dist.hpp zeromq3-4.0.4/src/dist.hpp --- zeromq3-3.2.4+dfsg/src/dist.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/dist.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -55,13 +54,13 @@ void unmatch (); // Removes the pipe from the distributor object. - void terminated (zmq::pipe_t *pipe_); + void pipe_terminated (zmq::pipe_t *pipe_); // Send the message to the matching outbound pipes. - int send_to_matching (zmq::msg_t *msg_, int flags_); + int send_to_matching (zmq::msg_t *msg_); // Send the message to all the outbound pipes. - int send_to_all (zmq::msg_t *msg_, int flags_); + int send_to_all (zmq::msg_t *msg_); bool has_out (); @@ -72,7 +71,7 @@ bool write (zmq::pipe_t *pipe_, zmq::msg_t *msg_); // Put the message to all active pipes. - void distribute (zmq::msg_t *msg_, int flags_); + void distribute (zmq::msg_t *msg_); // List of outbound pipes. typedef array_t pipes_t; diff -Nru zeromq3-3.2.4+dfsg/src/encoder.cpp zeromq3-4.0.4/src/encoder.cpp --- zeromq3-3.2.4+dfsg/src/encoder.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/encoder.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -/* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#include "encoder.hpp" -#include "i_msg_source.hpp" -#include "likely.hpp" -#include "wire.hpp" - -zmq::encoder_t::encoder_t (size_t bufsize_) : - encoder_base_t (bufsize_), - msg_source (NULL) -{ - int rc = in_progress.init (); - errno_assert (rc == 0); - - // Write 0 bytes to the batch and go to message_ready state. - next_step (NULL, 0, &encoder_t::message_ready, true); -} - -zmq::encoder_t::~encoder_t () -{ - int rc = in_progress.close (); - errno_assert (rc == 0); -} - -void zmq::encoder_t::set_msg_source (i_msg_source *msg_source_) -{ - msg_source = msg_source_; -} - -bool zmq::encoder_t::size_ready () -{ - // Write message body into the buffer. - next_step (in_progress.data (), in_progress.size (), - &encoder_t::message_ready, !(in_progress.flags () & msg_t::more)); - return true; -} - -bool zmq::encoder_t::message_ready () -{ - // Destroy content of the old message. - int rc = in_progress.close (); - errno_assert (rc == 0); - - // Read new message. If there is none, return false. - // Note that new state is set only if write is successful. That way - // unsuccessful write will cause retry on the next state machine - // invocation. - if (unlikely (!msg_source)) { - rc = in_progress.init (); - errno_assert (rc == 0); - return false; - } - rc = msg_source->pull_msg (&in_progress); - if (unlikely (rc != 0)) { - errno_assert (errno == EAGAIN); - rc = in_progress.init (); - errno_assert (rc == 0); - return false; - } - - // Get the message size. - size_t size = in_progress.size (); - - // Account for the 'flags' byte. - size++; - - // For messages less than 255 bytes long, write one byte of message size. - // For longer messages write 0xff escape character followed by 8-byte - // message size. In both cases 'flags' field follows. - if (size < 255) { - tmpbuf [0] = (unsigned char) size; - tmpbuf [1] = (in_progress.flags () & msg_t::more); - next_step (tmpbuf, 2, &encoder_t::size_ready, false); - } - else { - tmpbuf [0] = 0xff; - put_uint64 (tmpbuf + 1, size); - tmpbuf [9] = (in_progress.flags () & msg_t::more); - next_step (tmpbuf, 10, &encoder_t::size_ready, false); - } - return true; -} diff -Nru zeromq3-3.2.4+dfsg/src/encoder.hpp zeromq3-4.0.4/src/encoder.hpp --- zeromq3-3.2.4+dfsg/src/encoder.hpp 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/src/encoder.hpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -49,7 +47,8 @@ public: inline encoder_base_t (size_t bufsize_) : - bufsize (bufsize_) + bufsize (bufsize_), + in_progress (NULL) { buf = (unsigned char*) malloc (bufsize_); alloc_assert (buf); @@ -65,17 +64,13 @@ // The function returns a batch of binary data. The data // are filled to a supplied buffer. If no buffer is supplied (data_ // points to NULL) decoder object will provide buffer of its own. - // If offset is not NULL, it is filled by offset of the first message - // in the batch.If there's no beginning of a message in the batch, - // offset is set to -1. - inline void get_data (unsigned char **data_, size_t *size_, - int *offset_ = NULL) + inline size_t encode (unsigned char **data_, size_t size_) { unsigned char *buffer = !*data_ ? buf : *data_; - size_t buffersize = !*data_ ? bufsize : *size_; + size_t buffersize = !*data_ ? bufsize : size_; - if (offset_) - *offset_ = -1; + if (in_progress == NULL) + return 0; size_t pos = 0; while (pos < buffersize) { @@ -84,14 +79,15 @@ // If there are still no data, return what we already have // in the buffer. if (!to_write) { - // If we are to encode the beginning of a new message, - // adjust the message offset. - if (beginning) - if (offset_ && *offset_ == -1) - *offset_ = static_cast (pos); - - if (!(static_cast (this)->*next) ()) + if (new_msg_flag) { + int rc = in_progress->close (); + errno_assert (rc == 0); + rc = in_progress->init (); + errno_assert (rc == 0); + in_progress = NULL; break; + } + (static_cast (this)->*next) (); } // If there are no data in the buffer yet and we are able to @@ -106,10 +102,10 @@ // amounts of time. if (!pos && !*data_ && to_write >= buffersize) { *data_ = write_pos; - *size_ = to_write; + pos = to_write; write_pos = NULL; to_write = 0; - return; + return pos; } // Copy data to the buffer. If the buffer is full, return. @@ -121,29 +117,30 @@ } *data_ = buffer; - *size_ = pos; + return pos; } - inline bool has_data () + void load_msg (msg_t *msg_) { - return to_write > 0; + zmq_assert (in_progress == NULL); + in_progress = msg_; + (static_cast (this)->*next) (); } protected: // Prototype of state machine action. - typedef bool (T::*step_t) (); + typedef void (T::*step_t) (); // This function should be called from derived class to write the data - // to the buffer and schedule next state machine action. Set beginning - // to true when you are writing first byte of a message. + // to the buffer and schedule next state machine action. inline void next_step (void *write_pos_, size_t to_write_, - step_t next_, bool beginning_) + step_t next_, bool new_msg_flag_) { write_pos = (unsigned char*) write_pos_; to_write = to_write_; next = next_; - beginning = beginning_; + new_msg_flag = new_msg_flag_; } private: @@ -158,8 +155,7 @@ // is dead. step_t next; - // If true, first byte of the message is being written. - bool beginning; + bool new_msg_flag; // The buffer for encoded data. size_t bufsize; @@ -167,30 +163,11 @@ encoder_base_t (const encoder_base_t&); void operator = (const encoder_base_t&); - }; - - // Encoder for 0MQ framing protocol. Converts messages into data batches. - - class encoder_t : public encoder_base_t - { - public: - encoder_t (size_t bufsize_); - ~encoder_t (); - - void set_msg_source (i_msg_source *msg_source_); - - private: - - bool size_ready (); - bool message_ready (); + protected: - i_msg_source *msg_source; - msg_t in_progress; - unsigned char tmpbuf [10]; + msg_t *in_progress; - encoder_t (const encoder_t&); - const encoder_t &operator = (const encoder_t&); }; } diff -Nru zeromq3-3.2.4+dfsg/src/epoll.cpp zeromq3-4.0.4/src/epoll.cpp --- zeromq3-3.2.4+dfsg/src/epoll.cpp 2012-11-13 12:39:41.000000000 +0000 +++ zeromq3-4.0.4/src/epoll.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -128,6 +126,11 @@ stopping = true; } +int zmq::epoll_t::max_fds () +{ + return -1; +} + void zmq::epoll_t::loop () { epoll_event ev_buf [max_io_events]; diff -Nru zeromq3-3.2.4+dfsg/src/epoll.hpp zeromq3-4.0.4/src/epoll.hpp --- zeromq3-3.2.4+dfsg/src/epoll.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/epoll.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -60,6 +58,8 @@ void start (); void stop (); + static int max_fds (); + private: // Main worker thread routine. diff -Nru zeromq3-3.2.4+dfsg/src/err.cpp zeromq3-4.0.4/src/err.cpp --- zeromq3-3.2.4+dfsg/src/err.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/err.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -203,7 +201,7 @@ void zmq::win_error (char *buffer_, size_t buffer_size_) { DWORD errcode = GetLastError (); -#if defined WINCE +#if defined _WIN32_WCE DWORD rc = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)buffer_, buffer_size_ / sizeof(wchar_t), NULL ); diff -Nru zeromq3-3.2.4+dfsg/src/err.hpp zeromq3-4.0.4/src/err.hpp --- zeromq3-3.2.4+dfsg/src/err.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/err.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -26,7 +24,7 @@ #include "../include/zmq.h" #include -#if defined WINCE +#if defined _WIN32_WCE #include "..\builds\msvc\errno.hpp" #else #include @@ -44,6 +42,11 @@ #include #endif +// EPROTO is not used by OpenBSD and maybe other platforms. +#ifndef EPROTO +#define EPROTO 0 +#endif + namespace zmq { const char *errno_to_string (int errno_); diff -Nru zeromq3-3.2.4+dfsg/src/fd.hpp zeromq3-4.0.4/src/fd.hpp --- zeromq3-3.2.4+dfsg/src/fd.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/fd.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/fq.cpp zeromq3-4.0.4/src/fq.cpp --- zeromq3-3.2.4+dfsg/src/fq.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/fq.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -44,7 +41,7 @@ active++; } -void zmq::fq_t::terminated (pipe_t *pipe_) +void zmq::fq_t::pipe_terminated (pipe_t *pipe_) { const pipes_t::size_type index = pipes.index (pipe_); diff -Nru zeromq3-3.2.4+dfsg/src/fq.hpp zeromq3-4.0.4/src/fq.hpp --- zeromq3-3.2.4+dfsg/src/fq.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/fq.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -42,7 +40,7 @@ void attach (pipe_t *pipe_); void activated (pipe_t *pipe_); - void terminated (pipe_t *pipe_); + void pipe_terminated (pipe_t *pipe_); int recv (msg_t *msg_); int recvpipe (msg_t *msg_, pipe_t **pipe_); diff -Nru zeromq3-3.2.4+dfsg/src/i_decoder.hpp zeromq3-4.0.4/src/i_decoder.hpp --- zeromq3-3.2.4+dfsg/src/i_decoder.hpp 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/src/i_decoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -26,23 +25,25 @@ namespace zmq { - // Forward declaration - struct i_msg_sink; + class msg_t; // Interface to be implemented by message decoder. - struct i_decoder + class i_decoder { + public: virtual ~i_decoder () {} - virtual void set_msg_sink (i_msg_sink *msg_sink_) = 0; - virtual void get_buffer (unsigned char **data_, size_t *size_) = 0; - virtual size_t process_buffer (unsigned char *data_, size_t size_) = 0; - - virtual bool stalled () = 0; + // Decodes data pointed to by data_. + // When a message is decoded, 1 is returned. + // When the decoder needs more data, 0 is returnd. + // On error, -1 is returned and errno is set accordingly. + virtual int decode (const unsigned char *data_, size_t size_, + size_t &processed) = 0; + virtual msg_t *msg () = 0; }; } diff -Nru zeromq3-3.2.4+dfsg/src/i_encoder.hpp zeromq3-4.0.4/src/i_encoder.hpp --- zeromq3-3.2.4+dfsg/src/i_encoder.hpp 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/src/i_encoder.hpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -27,7 +26,7 @@ { // Forward declaration - struct i_msg_source; + class msg_t; // Interface to be implemented by message encoder. @@ -35,19 +34,15 @@ { virtual ~i_encoder () {} - // Set message producer. - virtual void set_msg_source (i_msg_source *msg_source_) = 0; - // The function returns a batch of binary data. The data // are filled to a supplied buffer. If no buffer is supplied (data_ // is NULL) encoder will provide buffer of its own. - // If offset is not NULL, it is filled by offset of the first message - // in the batch.If there's no beginning of a message in the batch, - // offset is set to -1. - virtual void get_data (unsigned char **data_, size_t *size_, - int *offset_ = NULL) = 0; + // Function returns 0 when a new message is required. + virtual size_t encode (unsigned char **data_, size_t size) = 0; + + // Load a new message into encoder. + virtual void load_msg (msg_t *msg_) = 0; - virtual bool has_data () = 0; }; } diff -Nru zeromq3-3.2.4+dfsg/src/i_engine.hpp zeromq3-4.0.4/src/i_engine.hpp --- zeromq3-3.2.4+dfsg/src/i_engine.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/i_engine.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -43,11 +41,13 @@ // This method is called by the session to signalise that more // messages can be written to the pipe. - virtual void activate_in () = 0; + virtual void restart_input () = 0; // This method is called by the session to signalise that there // are messages to send available. - virtual void activate_out () = 0; + virtual void restart_output () = 0; + + virtual void zap_msg_available () = 0; }; } diff -Nru zeromq3-3.2.4+dfsg/src/i_msg_sink.hpp zeromq3-4.0.4/src/i_msg_sink.hpp --- zeromq3-3.2.4+dfsg/src/i_msg_sink.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/i_msg_sink.hpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -/* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#ifndef __ZMQ_I_MSG_SINK_HPP_INCLUDED__ -#define __ZMQ_I_MSG_SINK_HPP_INCLUDED__ - -namespace zmq -{ - - // Forward declaration - class msg_t; - - // Interface to be implemented by message sink. - - struct i_msg_sink - { - virtual ~i_msg_sink () {} - - // Delivers a message. Returns 0 if successful; -1 otherwise. - // The function takes ownership of the passed message. - virtual int push_msg (msg_t *msg_) = 0; - }; - -} - -#endif diff -Nru zeromq3-3.2.4+dfsg/src/i_msg_source.hpp zeromq3-4.0.4/src/i_msg_source.hpp --- zeromq3-3.2.4+dfsg/src/i_msg_source.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/i_msg_source.hpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#ifndef __ZMQ_I_MSG_SOURCE_HPP_INCLUDED__ -#define __ZMQ_I_MSG_SOURCE_HPP_INCLUDED__ - -namespace zmq -{ - - // Forward declaration - class msg_t; - - // Interface to be implemented by message source. - - struct i_msg_source - { - virtual ~i_msg_source () {} - - // Fetch a message. Returns 0 if successful; -1 otherwise. - // The caller is responsible for freeing the message when no - // longer used. - virtual int pull_msg (msg_t *msg_) = 0; - }; - -} - -#endif diff -Nru zeromq3-3.2.4+dfsg/src/io_object.cpp zeromq3-4.0.4/src/io_object.cpp --- zeromq3-3.2.4+dfsg/src/io_object.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/io_object.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/io_object.hpp zeromq3-4.0.4/src/io_object.hpp --- zeromq3-3.2.4+dfsg/src/io_object.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/io_object.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/io_thread.cpp zeromq3-4.0.4/src/io_thread.cpp --- zeromq3-3.2.4+dfsg/src/io_thread.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/io_thread.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/io_thread.hpp zeromq3-4.0.4/src/io_thread.hpp --- zeromq3-3.2.4+dfsg/src/io_thread.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/io_thread.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/ipc_address.cpp zeromq3-4.0.4/src/ipc_address.cpp --- zeromq3-3.2.4+dfsg/src/ipc_address.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ipc_address.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -52,9 +51,20 @@ errno = ENAMETOOLONG; return -1; } +#if defined ZMQ_HAVE_LINUX + if (path_[0] == '@' && !path_[1]) { + errno = EINVAL; + return -1; + } +#endif address.sun_family = AF_UNIX; strcpy (address.sun_path, path_); +#if defined ZMQ_HAVE_LINUX + /* Abstract sockets on Linux start with '\0' */ + if (path_[0] == '@') + *address.sun_path = '\0'; +#endif return 0; } @@ -66,7 +76,15 @@ } std::stringstream s; +#if !defined ZMQ_HAVE_LINUX s << "ipc://" << address.sun_path; +#else + s << "ipc://"; + if (!address.sun_path[0] && address.sun_path[1]) + s << "@" << address.sun_path + 1; + else + s << address.sun_path; +#endif addr_ = s.str (); return 0; } @@ -78,6 +96,10 @@ socklen_t zmq::ipc_address_t::addrlen () const { +#if defined ZMQ_HAVE_LINUX + if (!address.sun_path[0] && address.sun_path[1]) + return (socklen_t) strlen(address.sun_path + 1) + sizeof (sa_family_t) + 1; +#endif return (socklen_t) sizeof (address); } diff -Nru zeromq3-3.2.4+dfsg/src/ipc_address.hpp zeromq3-4.0.4/src/ipc_address.hpp --- zeromq3-3.2.4+dfsg/src/ipc_address.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ipc_address.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/ipc_connecter.cpp zeromq3-4.0.4/src/ipc_connecter.cpp --- zeromq3-3.2.4+dfsg/src/ipc_connecter.cpp 2012-11-23 07:35:33.000000000 +0000 +++ zeromq3-4.0.4/src/ipc_connecter.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -113,7 +112,8 @@ return; } // Create the engine object for this connection. - stream_engine_t *engine = new (std::nothrow) stream_engine_t (fd, options, endpoint); + stream_engine_t *engine = new (std::nothrow) + stream_engine_t (fd, options, endpoint); alloc_assert (engine); // Attach the engine to the corresponding session object. diff -Nru zeromq3-3.2.4+dfsg/src/ipc_connecter.hpp zeromq3-4.0.4/src/ipc_connecter.hpp --- zeromq3-3.2.4+dfsg/src/ipc_connecter.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ipc_connecter.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/ipc_listener.cpp zeromq3-4.0.4/src/ipc_listener.cpp --- zeromq3-3.2.4+dfsg/src/ipc_listener.cpp 2012-11-23 07:35:52.000000000 +0000 +++ zeromq3-4.0.4/src/ipc_listener.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -81,7 +80,8 @@ } // Create the engine object for this connection. - stream_engine_t *engine = new (std::nothrow) stream_engine_t (fd, options, endpoint); + stream_engine_t *engine = new (std::nothrow) + stream_engine_t (fd, options, endpoint); alloc_assert (engine); // Choose I/O thread to run connecter in. Given that we are already @@ -119,19 +119,24 @@ int zmq::ipc_listener_t::set_address (const char *addr_) { - // Allow wildcard file - if (*addr_ == '*') { - addr_ = tempnam(NULL, NULL); + // Create addr on stack for auto-cleanup + std::string addr (addr_); + + // Allow wildcard file + if (addr[0] == '*') { + char *tmpstr = tempnam (NULL, NULL); + addr.assign (tmpstr); + free (tmpstr); } // Get rid of the file associated with the UNIX domain socket that // may have been left behind by the previous run of the application. - ::unlink (addr_); + ::unlink (addr.c_str()); filename.clear (); // Initialise the address structure. ipc_address_t address; - int rc = address.resolve (addr_); + int rc = address.resolve (addr.c_str()); if (rc != 0) return -1; @@ -147,10 +152,10 @@ if (rc != 0) goto error; - filename.assign(addr_); + filename.assign (addr.c_str()); has_file = true; - // Listen for incomming connections. + // Listen for incoming connections. rc = listen (s, options.backlog); if (rc != 0) goto error; diff -Nru zeromq3-3.2.4+dfsg/src/ipc_listener.hpp zeromq3-4.0.4/src/ipc_listener.hpp --- zeromq3-3.2.4+dfsg/src/ipc_listener.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ipc_listener.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/ip.cpp zeromq3-4.0.4/src/ip.cpp --- zeromq3-3.2.4+dfsg/src/ip.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ip.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -29,6 +27,7 @@ #include #include #include +#include #include #include #endif @@ -73,11 +72,11 @@ void zmq::unblock_socket (fd_t s_) { -#ifdef ZMQ_HAVE_WINDOWS +#if defined ZMQ_HAVE_WINDOWS u_long nonblock = 1; int rc = ioctlsocket (s_, FIONBIO, &nonblock); wsa_assert (rc != SOCKET_ERROR); -#elif ZMQ_HAVE_OPENVMS +#elif defined ZMQ_HAVE_OPENVMS int nonblock = 1; int rc = ioctl (s_, FIONBIO, &nonblock); errno_assert (rc != -1); @@ -92,6 +91,8 @@ void zmq::enable_ipv4_mapping (fd_t s_) { + (void) s_; + #ifdef IPV6_V6ONLY #ifdef ZMQ_HAVE_WINDOWS DWORD flag = 0; @@ -107,3 +108,42 @@ #endif #endif } + +bool zmq::get_peer_ip_address (fd_t sockfd_, std::string &ip_addr_) +{ + int rc; + struct sockaddr_storage ss; + +#if defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_WINDOWS + int addrlen = static_cast (sizeof ss); +#else + socklen_t addrlen = sizeof ss; +#endif + rc = getpeername (sockfd_, (struct sockaddr*) &ss, &addrlen); +#ifdef ZMQ_HAVE_WINDOWS + if (rc == SOCKET_ERROR) { + wsa_assert (WSAGetLastError () != WSANOTINITIALISED && + WSAGetLastError () != WSAEFAULT && + WSAGetLastError () != WSAEINPROGRESS && + WSAGetLastError () != WSAENOTSOCK); + return false; + } +#else + if (rc == -1) { + errno_assert (errno != EBADF && + errno != EFAULT && + errno != EINVAL && + errno != ENOTSOCK); + return false; + } +#endif + + char host [NI_MAXHOST]; + rc = getnameinfo ((struct sockaddr*) &ss, addrlen, host, sizeof host, + NULL, 0, NI_NUMERICHOST); + if (rc != 0) + return false; + + ip_addr_ = host; + return true; +} diff -Nru zeromq3-3.2.4+dfsg/src/ip.hpp zeromq3-4.0.4/src/ip.hpp --- zeromq3-3.2.4+dfsg/src/ip.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ip.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -22,6 +20,7 @@ #ifndef __ZMQ_IP_HPP_INCLUDED__ #define __ZMQ_IP_HPP_INCLUDED__ +#include #include "fd.hpp" namespace zmq @@ -36,6 +35,10 @@ // Enable IPv4-mapping of addresses in case it is disabled by default. void enable_ipv4_mapping (fd_t s_); + // Returns string representation of peer's address. + // Socket sockfd_ must be connected. Returns true iff successful. + bool get_peer_ip_address (fd_t sockfd_, std::string &ip_addr_); + } -#endif +#endif diff -Nru zeromq3-3.2.4+dfsg/src/i_poll_events.hpp zeromq3-4.0.4/src/i_poll_events.hpp --- zeromq3-3.2.4+dfsg/src/i_poll_events.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/i_poll_events.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/kqueue.cpp zeromq3-4.0.4/src/kqueue.cpp --- zeromq3-3.2.4+dfsg/src/kqueue.cpp 2012-11-13 12:39:41.000000000 +0000 +++ zeromq3-4.0.4/src/kqueue.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -50,6 +48,9 @@ // Create event queue kqueue_fd = kqueue (); errno_assert (kqueue_fd != -1); +#ifdef HAVE_FORK + pid = getpid(); +#endif } zmq::kqueue_t::~kqueue_t () @@ -151,6 +152,11 @@ stopping = true; } +int zmq::kqueue_t::max_fds () +{ + return -1; +} + void zmq::kqueue_t::loop () { while (!stopping) { @@ -163,6 +169,13 @@ timespec ts = {timeout / 1000, (timeout % 1000) * 1000000}; int n = kevent (kqueue_fd, NULL, 0, &ev_buf [0], max_io_events, timeout ? &ts: NULL); +#ifdef HAVE_FORK + if (unlikely(pid != getpid())) { + //printf("zmq::kqueue_t::loop aborting on forked child %d\n", (int)getpid()); + // simply exit the loop in a forked process. + return; + } +#endif if (n == -1) { errno_assert (errno == EINTR); continue; diff -Nru zeromq3-3.2.4+dfsg/src/kqueue.hpp zeromq3-4.0.4/src/kqueue.hpp --- zeromq3-3.2.4+dfsg/src/kqueue.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/kqueue.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -27,6 +25,7 @@ #if defined ZMQ_USE_KQUEUE #include +#include #include "fd.hpp" #include "thread.hpp" @@ -59,6 +58,8 @@ void start (); void stop (); + static int max_fds (); + private: // Main worker thread routine. @@ -96,6 +97,11 @@ kqueue_t (const kqueue_t&); const kqueue_t &operator = (const kqueue_t&); + +#ifdef HAVE_FORK + // the process that created this context. Used to detect forking. + pid_t pid; +#endif }; typedef kqueue_t poller_t; diff -Nru zeromq3-3.2.4+dfsg/src/lb.cpp zeromq3-4.0.4/src/lb.cpp --- zeromq3-3.2.4+dfsg/src/lb.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/lb.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -44,7 +41,7 @@ activated (pipe_); } -void zmq::lb_t::terminated (pipe_t *pipe_) +void zmq::lb_t::pipe_terminated (pipe_t *pipe_) { pipes_t::size_type index = pipes.index (pipe_); @@ -71,11 +68,13 @@ active++; } -int zmq::lb_t::send (msg_t *msg_, int flags_) +int zmq::lb_t::send (msg_t *msg_) { - // flags_ is unused - (void)flags_; + return sendpipe (msg_, NULL); +} +int zmq::lb_t::sendpipe (msg_t *msg_, pipe_t **pipe_) +{ // Drop the message if required. If we are at the end of the message // switch back to non-dropping mode. if (dropping) { @@ -92,7 +91,11 @@ while (active > 0) { if (pipes [current]->write (msg_)) + { + if (pipe_) + *pipe_ = pipes [current]; break; + } zmq_assert (!more); active--; @@ -108,8 +111,8 @@ return -1; } - // If it's final part of the message we can fluch it downstream and - // continue round-robinning (load balance). + // If it's final part of the message we can flush it downstream and + // continue round-robining (load balance). more = msg_->flags () & msg_t::more? true: false; if (!more) { pipes [current]->flush (); @@ -145,4 +148,3 @@ return false; } - diff -Nru zeromq3-3.2.4+dfsg/src/lb.hpp zeromq3-4.0.4/src/lb.hpp --- zeromq3-3.2.4+dfsg/src/lb.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/lb.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -40,9 +38,16 @@ void attach (pipe_t *pipe_); void activated (pipe_t *pipe_); - void terminated (pipe_t *pipe_); + void pipe_terminated (pipe_t *pipe_); + + int send (msg_t *msg_); + + // Sends a message and stores the pipe that was used in pipe_. + // It is possible for this function to return success but keep pipe_ + // unset if the rest of a multipart message to a terminated pipe is + // being dropped. For the first frame, this will never happen. + int sendpipe (msg_t *msg_, pipe_t **pipe_); - int send (msg_t *msg_, int flags_); bool has_out (); private: diff -Nru zeromq3-3.2.4+dfsg/src/libzmq.vers zeromq3-4.0.4/src/libzmq.vers --- zeromq3-3.2.4+dfsg/src/libzmq.vers 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/libzmq.vers 2014-03-10 21:20:14.000000000 +0000 @@ -0,0 +1,4 @@ +{ + global: zmq_*; + local: *; +}; diff -Nru zeromq3-3.2.4+dfsg/src/likely.hpp zeromq3-4.0.4/src/likely.hpp --- zeromq3-3.2.4+dfsg/src/likely.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/likely.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2009-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/mailbox.cpp zeromq3-4.0.4/src/mailbox.cpp --- zeromq3-3.2.4+dfsg/src/mailbox.cpp 2013-05-01 03:30:36.000000000 +0000 +++ zeromq3-4.0.4/src/mailbox.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -84,4 +82,3 @@ zmq_assert (ok); return 0; } - diff -Nru zeromq3-3.2.4+dfsg/src/mailbox.hpp zeromq3-4.0.4/src/mailbox.hpp --- zeromq3-3.2.4+dfsg/src/mailbox.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/mailbox.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -46,6 +44,13 @@ void send (const command_t &cmd_); int recv (command_t *cmd_, int timeout_); +#ifdef HAVE_FORK + // close the file descriptors in the signaller. This is used in a forked + // child process to close the file descriptors so that they do not interfere + // with the context in the parent process. + void forked() { signaler.forked(); } +#endif + private: // The pipe to store actual commands. diff -Nru zeromq3-3.2.4+dfsg/src/Makefile.am zeromq3-4.0.4/src/Makefile.am --- zeromq3-3.2.4+dfsg/src/Makefile.am 2012-10-16 00:49:44.000000000 +0000 +++ zeromq3-4.0.4/src/Makefile.am 2014-03-10 21:41:29.000000000 +0000 @@ -15,6 +15,8 @@ command.hpp \ config.hpp \ ctx.hpp \ + curve_client.hpp \ + curve_server.hpp \ decoder.hpp \ devpoll.hpp \ dist.hpp \ @@ -26,8 +28,6 @@ i_encoder.hpp \ i_decoder.hpp \ i_engine.hpp \ - i_msg_sink.hpp \ - i_msg_source.hpp \ i_poll_events.hpp \ io_object.hpp \ io_thread.hpp \ @@ -41,9 +41,11 @@ lb.hpp \ likely.hpp \ mailbox.hpp \ + mechanism.hpp \ msg.hpp \ mtrie.hpp \ mutex.hpp \ + null_mechanism.hpp \ object.hpp \ options.hpp \ own.hpp \ @@ -51,6 +53,7 @@ pgm_sender.hpp \ pgm_socket.hpp \ pipe.hpp \ + plain_mechanism.hpp \ platform.hpp \ poll.hpp \ poller.hpp \ @@ -69,6 +72,7 @@ signaler.hpp \ socket_base.hpp \ stdint.hpp \ + stream.hpp \ stream_engine.hpp \ sub.hpp \ tcp.hpp \ @@ -84,14 +88,15 @@ dealer.hpp \ xsub.hpp \ ypipe.hpp \ + ypipe_base.hpp \ yqueue.hpp \ address.cpp \ clock.cpp \ ctx.cpp \ - decoder.cpp \ + curve_client.cpp \ + curve_server.cpp \ devpoll.cpp \ dist.cpp \ - encoder.cpp \ epoll.cpp \ err.cpp \ fq.cpp \ @@ -104,8 +109,10 @@ kqueue.cpp \ lb.cpp \ mailbox.cpp \ + mechanism.cpp \ msg.cpp \ mtrie.cpp \ + null_mechanism.cpp \ object.cpp \ options.cpp \ own.cpp \ @@ -114,6 +121,7 @@ pgm_sender.cpp \ pgm_socket.cpp \ pipe.cpp \ + plain_mechanism.cpp \ poll.cpp \ poller_base.cpp \ pull.cpp \ @@ -128,6 +136,7 @@ session_base.cpp \ signaler.cpp \ socket_base.cpp \ + stream.cpp \ stream_engine.cpp \ sub.cpp \ tcp.cpp \ @@ -140,13 +149,23 @@ router.cpp \ dealer.cpp \ v1_decoder.cpp \ - v1_decoder.hpp \ v1_encoder.cpp \ + v1_decoder.hpp \ v1_encoder.hpp \ - v1_protocol.hpp \ + v2_decoder.cpp \ + v2_decoder.hpp \ + v2_encoder.cpp \ + v2_encoder.hpp \ + v2_protocol.hpp \ xsub.cpp \ zmq.cpp \ - zmq_utils.cpp + zmq_utils.cpp \ + raw_decoder.hpp \ + raw_decoder.cpp \ + raw_encoder.hpp \ + raw_encoder.cpp \ + ypipe_conflate.hpp \ + dbuffer.hpp if ON_MINGW libzmq_la_LDFLAGS = -no-undefined -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ @@ -154,9 +173,15 @@ if ON_ANDROID libzmq_la_LDFLAGS = -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ else -libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ +if ON_LINUX +libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl,--version-script=$(srcdir)/libzmq.vers +else +libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl endif endif +endif + +EXTRA_DIST = libzmq.vers libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@ diff -Nru zeromq3-3.2.4+dfsg/src/Makefile.in zeromq3-4.0.4/src/Makefile.in --- zeromq3-3.2.4+dfsg/src/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/src/Makefile.in 2014-03-10 21:42:41.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -18,23 +18,6 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -63,7 +46,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -103,28 +86,33 @@ @BUILD_PGM_TRUE@libzmq_la_DEPENDENCIES = \ @BUILD_PGM_TRUE@ $(top_srcdir)/@pgm_srcdir@/libpgm_noinst.la am_libzmq_la_OBJECTS = libzmq_la-address.lo libzmq_la-clock.lo \ - libzmq_la-ctx.lo libzmq_la-decoder.lo libzmq_la-devpoll.lo \ - libzmq_la-dist.lo libzmq_la-encoder.lo libzmq_la-epoll.lo \ - libzmq_la-err.lo libzmq_la-fq.lo libzmq_la-io_object.lo \ - libzmq_la-io_thread.lo libzmq_la-ip.lo \ - libzmq_la-ipc_address.lo libzmq_la-ipc_connecter.lo \ - libzmq_la-ipc_listener.lo libzmq_la-kqueue.lo libzmq_la-lb.lo \ - libzmq_la-mailbox.lo libzmq_la-msg.lo libzmq_la-mtrie.lo \ - libzmq_la-object.lo libzmq_la-options.lo libzmq_la-own.lo \ - libzmq_la-pair.lo libzmq_la-pgm_receiver.lo \ - libzmq_la-pgm_sender.lo libzmq_la-pgm_socket.lo \ - libzmq_la-pipe.lo libzmq_la-poll.lo libzmq_la-poller_base.lo \ - libzmq_la-pull.lo libzmq_la-push.lo libzmq_la-proxy.lo \ - libzmq_la-reaper.lo libzmq_la-pub.lo libzmq_la-random.lo \ - libzmq_la-rep.lo libzmq_la-req.lo libzmq_la-select.lo \ - libzmq_la-session_base.lo libzmq_la-signaler.lo \ - libzmq_la-socket_base.lo libzmq_la-stream_engine.lo \ + libzmq_la-ctx.lo libzmq_la-curve_client.lo \ + libzmq_la-curve_server.lo libzmq_la-devpoll.lo \ + libzmq_la-dist.lo libzmq_la-epoll.lo libzmq_la-err.lo \ + libzmq_la-fq.lo libzmq_la-io_object.lo libzmq_la-io_thread.lo \ + libzmq_la-ip.lo libzmq_la-ipc_address.lo \ + libzmq_la-ipc_connecter.lo libzmq_la-ipc_listener.lo \ + libzmq_la-kqueue.lo libzmq_la-lb.lo libzmq_la-mailbox.lo \ + libzmq_la-mechanism.lo libzmq_la-msg.lo libzmq_la-mtrie.lo \ + libzmq_la-null_mechanism.lo libzmq_la-object.lo \ + libzmq_la-options.lo libzmq_la-own.lo libzmq_la-pair.lo \ + libzmq_la-pgm_receiver.lo libzmq_la-pgm_sender.lo \ + libzmq_la-pgm_socket.lo libzmq_la-pipe.lo \ + libzmq_la-plain_mechanism.lo libzmq_la-poll.lo \ + libzmq_la-poller_base.lo libzmq_la-pull.lo libzmq_la-push.lo \ + libzmq_la-proxy.lo libzmq_la-reaper.lo libzmq_la-pub.lo \ + libzmq_la-random.lo libzmq_la-rep.lo libzmq_la-req.lo \ + libzmq_la-select.lo libzmq_la-session_base.lo \ + libzmq_la-signaler.lo libzmq_la-socket_base.lo \ + libzmq_la-stream.lo libzmq_la-stream_engine.lo \ libzmq_la-sub.lo libzmq_la-tcp.lo libzmq_la-tcp_address.lo \ libzmq_la-tcp_connecter.lo libzmq_la-tcp_listener.lo \ libzmq_la-thread.lo libzmq_la-trie.lo libzmq_la-xpub.lo \ libzmq_la-router.lo libzmq_la-dealer.lo \ libzmq_la-v1_decoder.lo libzmq_la-v1_encoder.lo \ - libzmq_la-xsub.lo libzmq_la-zmq.lo libzmq_la-zmq_utils.lo + libzmq_la-v2_decoder.lo libzmq_la-v2_encoder.lo \ + libzmq_la-xsub.lo libzmq_la-zmq.lo libzmq_la-zmq_utils.lo \ + libzmq_la-raw_decoder.lo libzmq_la-raw_encoder.lo libzmq_la_OBJECTS = $(am_libzmq_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -176,11 +164,6 @@ am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libzmq_la_SOURCES) DIST_SOURCES = $(libzmq_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac DATA = $(pkgconfig_DATA) HEADERS = $(include_HEADERS) ETAGS = etags @@ -337,6 +320,8 @@ command.hpp \ config.hpp \ ctx.hpp \ + curve_client.hpp \ + curve_server.hpp \ decoder.hpp \ devpoll.hpp \ dist.hpp \ @@ -348,8 +333,6 @@ i_encoder.hpp \ i_decoder.hpp \ i_engine.hpp \ - i_msg_sink.hpp \ - i_msg_source.hpp \ i_poll_events.hpp \ io_object.hpp \ io_thread.hpp \ @@ -363,9 +346,11 @@ lb.hpp \ likely.hpp \ mailbox.hpp \ + mechanism.hpp \ msg.hpp \ mtrie.hpp \ mutex.hpp \ + null_mechanism.hpp \ object.hpp \ options.hpp \ own.hpp \ @@ -373,6 +358,7 @@ pgm_sender.hpp \ pgm_socket.hpp \ pipe.hpp \ + plain_mechanism.hpp \ platform.hpp \ poll.hpp \ poller.hpp \ @@ -391,6 +377,7 @@ signaler.hpp \ socket_base.hpp \ stdint.hpp \ + stream.hpp \ stream_engine.hpp \ sub.hpp \ tcp.hpp \ @@ -406,14 +393,15 @@ dealer.hpp \ xsub.hpp \ ypipe.hpp \ + ypipe_base.hpp \ yqueue.hpp \ address.cpp \ clock.cpp \ ctx.cpp \ - decoder.cpp \ + curve_client.cpp \ + curve_server.cpp \ devpoll.cpp \ dist.cpp \ - encoder.cpp \ epoll.cpp \ err.cpp \ fq.cpp \ @@ -426,8 +414,10 @@ kqueue.cpp \ lb.cpp \ mailbox.cpp \ + mechanism.cpp \ msg.cpp \ mtrie.cpp \ + null_mechanism.cpp \ object.cpp \ options.cpp \ own.cpp \ @@ -436,6 +426,7 @@ pgm_sender.cpp \ pgm_socket.cpp \ pipe.cpp \ + plain_mechanism.cpp \ poll.cpp \ poller_base.cpp \ pull.cpp \ @@ -450,6 +441,7 @@ session_base.cpp \ signaler.cpp \ socket_base.cpp \ + stream.cpp \ stream_engine.cpp \ sub.cpp \ tcp.cpp \ @@ -462,17 +454,29 @@ router.cpp \ dealer.cpp \ v1_decoder.cpp \ - v1_decoder.hpp \ v1_encoder.cpp \ + v1_decoder.hpp \ v1_encoder.hpp \ - v1_protocol.hpp \ + v2_decoder.cpp \ + v2_decoder.hpp \ + v2_encoder.cpp \ + v2_encoder.hpp \ + v2_protocol.hpp \ xsub.cpp \ zmq.cpp \ - zmq_utils.cpp + zmq_utils.cpp \ + raw_decoder.hpp \ + raw_decoder.cpp \ + raw_encoder.hpp \ + raw_encoder.cpp \ + ypipe_conflate.hpp \ + dbuffer.hpp -@ON_ANDROID_FALSE@@ON_MINGW_FALSE@libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ +@ON_ANDROID_FALSE@@ON_LINUX_FALSE@@ON_MINGW_FALSE@libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl +@ON_ANDROID_FALSE@@ON_LINUX_TRUE@@ON_MINGW_FALSE@libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ -Wl,--version-script=$(srcdir)/libzmq.vers @ON_ANDROID_TRUE@@ON_MINGW_FALSE@libzmq_la_LDFLAGS = -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ @ON_MINGW_TRUE@libzmq_la_LDFLAGS = -no-undefined -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ +EXTRA_DIST = libzmq.vers libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@ @BUILD_PGM_TRUE@libzmq_la_CPPFLAGS = -I$(top_srcdir)/@pgm_srcdir@/include/ @BUILD_PGM_TRUE@libzmq_la_LIBADD = $(top_srcdir)/@pgm_srcdir@/libpgm_noinst.la @@ -530,6 +534,7 @@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -537,8 +542,6 @@ else :; fi; \ done; \ test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } @@ -572,11 +575,11 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-address.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-clock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-ctx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-curve_client.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-curve_server.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-dealer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-decoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-devpoll.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-dist.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-encoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-epoll.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-err.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-fq.Plo@am__quote@ @@ -589,8 +592,10 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-kqueue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-lb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-mailbox.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-mechanism.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-msg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-mtrie.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-null_mechanism.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-object.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-options.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-own.Plo@am__quote@ @@ -599,6 +604,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pgm_sender.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pgm_socket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pipe.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-plain_mechanism.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-poll.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-poller_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-proxy.Plo@am__quote@ @@ -606,6 +612,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pull.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-push.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-random.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-raw_decoder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-raw_encoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-reaper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-rep.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-req.Plo@am__quote@ @@ -614,6 +622,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-session_base.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-signaler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-socket_base.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-stream_engine.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-sub.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-tcp.Plo@am__quote@ @@ -624,6 +633,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-trie.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-v1_decoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-v1_encoder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-v2_decoder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-v2_encoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-xpub.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-xsub.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq.Plo@am__quote@ @@ -671,12 +682,19 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-ctx.lo `test -f 'ctx.cpp' || echo '$(srcdir)/'`ctx.cpp -libzmq_la-decoder.lo: decoder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-decoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-decoder.Tpo -c -o libzmq_la-decoder.lo `test -f 'decoder.cpp' || echo '$(srcdir)/'`decoder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-decoder.Tpo $(DEPDIR)/libzmq_la-decoder.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='decoder.cpp' object='libzmq_la-decoder.lo' libtool=yes @AMDEPBACKSLASH@ +libzmq_la-curve_client.lo: curve_client.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-curve_client.lo -MD -MP -MF $(DEPDIR)/libzmq_la-curve_client.Tpo -c -o libzmq_la-curve_client.lo `test -f 'curve_client.cpp' || echo '$(srcdir)/'`curve_client.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-curve_client.Tpo $(DEPDIR)/libzmq_la-curve_client.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='curve_client.cpp' object='libzmq_la-curve_client.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-curve_client.lo `test -f 'curve_client.cpp' || echo '$(srcdir)/'`curve_client.cpp + +libzmq_la-curve_server.lo: curve_server.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-curve_server.lo -MD -MP -MF $(DEPDIR)/libzmq_la-curve_server.Tpo -c -o libzmq_la-curve_server.lo `test -f 'curve_server.cpp' || echo '$(srcdir)/'`curve_server.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-curve_server.Tpo $(DEPDIR)/libzmq_la-curve_server.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='curve_server.cpp' object='libzmq_la-curve_server.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-decoder.lo `test -f 'decoder.cpp' || echo '$(srcdir)/'`decoder.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-curve_server.lo `test -f 'curve_server.cpp' || echo '$(srcdir)/'`curve_server.cpp libzmq_la-devpoll.lo: devpoll.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-devpoll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-devpoll.Tpo -c -o libzmq_la-devpoll.lo `test -f 'devpoll.cpp' || echo '$(srcdir)/'`devpoll.cpp @@ -692,13 +710,6 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-dist.lo `test -f 'dist.cpp' || echo '$(srcdir)/'`dist.cpp -libzmq_la-encoder.lo: encoder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-encoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-encoder.Tpo -c -o libzmq_la-encoder.lo `test -f 'encoder.cpp' || echo '$(srcdir)/'`encoder.cpp -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-encoder.Tpo $(DEPDIR)/libzmq_la-encoder.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='encoder.cpp' object='libzmq_la-encoder.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-encoder.lo `test -f 'encoder.cpp' || echo '$(srcdir)/'`encoder.cpp - libzmq_la-epoll.lo: epoll.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-epoll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-epoll.Tpo -c -o libzmq_la-epoll.lo `test -f 'epoll.cpp' || echo '$(srcdir)/'`epoll.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-epoll.Tpo $(DEPDIR)/libzmq_la-epoll.Plo @@ -783,6 +794,13 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-mailbox.lo `test -f 'mailbox.cpp' || echo '$(srcdir)/'`mailbox.cpp +libzmq_la-mechanism.lo: mechanism.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-mechanism.lo -MD -MP -MF $(DEPDIR)/libzmq_la-mechanism.Tpo -c -o libzmq_la-mechanism.lo `test -f 'mechanism.cpp' || echo '$(srcdir)/'`mechanism.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-mechanism.Tpo $(DEPDIR)/libzmq_la-mechanism.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='mechanism.cpp' object='libzmq_la-mechanism.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-mechanism.lo `test -f 'mechanism.cpp' || echo '$(srcdir)/'`mechanism.cpp + libzmq_la-msg.lo: msg.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-msg.lo -MD -MP -MF $(DEPDIR)/libzmq_la-msg.Tpo -c -o libzmq_la-msg.lo `test -f 'msg.cpp' || echo '$(srcdir)/'`msg.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-msg.Tpo $(DEPDIR)/libzmq_la-msg.Plo @@ -797,6 +815,13 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-mtrie.lo `test -f 'mtrie.cpp' || echo '$(srcdir)/'`mtrie.cpp +libzmq_la-null_mechanism.lo: null_mechanism.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-null_mechanism.lo -MD -MP -MF $(DEPDIR)/libzmq_la-null_mechanism.Tpo -c -o libzmq_la-null_mechanism.lo `test -f 'null_mechanism.cpp' || echo '$(srcdir)/'`null_mechanism.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-null_mechanism.Tpo $(DEPDIR)/libzmq_la-null_mechanism.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='null_mechanism.cpp' object='libzmq_la-null_mechanism.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-null_mechanism.lo `test -f 'null_mechanism.cpp' || echo '$(srcdir)/'`null_mechanism.cpp + libzmq_la-object.lo: object.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-object.lo -MD -MP -MF $(DEPDIR)/libzmq_la-object.Tpo -c -o libzmq_la-object.lo `test -f 'object.cpp' || echo '$(srcdir)/'`object.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-object.Tpo $(DEPDIR)/libzmq_la-object.Plo @@ -853,6 +878,13 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pipe.lo `test -f 'pipe.cpp' || echo '$(srcdir)/'`pipe.cpp +libzmq_la-plain_mechanism.lo: plain_mechanism.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-plain_mechanism.lo -MD -MP -MF $(DEPDIR)/libzmq_la-plain_mechanism.Tpo -c -o libzmq_la-plain_mechanism.lo `test -f 'plain_mechanism.cpp' || echo '$(srcdir)/'`plain_mechanism.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-plain_mechanism.Tpo $(DEPDIR)/libzmq_la-plain_mechanism.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='plain_mechanism.cpp' object='libzmq_la-plain_mechanism.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-plain_mechanism.lo `test -f 'plain_mechanism.cpp' || echo '$(srcdir)/'`plain_mechanism.cpp + libzmq_la-poll.lo: poll.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-poll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-poll.Tpo -c -o libzmq_la-poll.lo `test -f 'poll.cpp' || echo '$(srcdir)/'`poll.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-poll.Tpo $(DEPDIR)/libzmq_la-poll.Plo @@ -951,6 +983,13 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-socket_base.lo `test -f 'socket_base.cpp' || echo '$(srcdir)/'`socket_base.cpp +libzmq_la-stream.lo: stream.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-stream.lo -MD -MP -MF $(DEPDIR)/libzmq_la-stream.Tpo -c -o libzmq_la-stream.lo `test -f 'stream.cpp' || echo '$(srcdir)/'`stream.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-stream.Tpo $(DEPDIR)/libzmq_la-stream.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stream.cpp' object='libzmq_la-stream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-stream.lo `test -f 'stream.cpp' || echo '$(srcdir)/'`stream.cpp + libzmq_la-stream_engine.lo: stream_engine.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-stream_engine.lo -MD -MP -MF $(DEPDIR)/libzmq_la-stream_engine.Tpo -c -o libzmq_la-stream_engine.lo `test -f 'stream_engine.cpp' || echo '$(srcdir)/'`stream_engine.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-stream_engine.Tpo $(DEPDIR)/libzmq_la-stream_engine.Plo @@ -1042,6 +1081,20 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-v1_encoder.lo `test -f 'v1_encoder.cpp' || echo '$(srcdir)/'`v1_encoder.cpp +libzmq_la-v2_decoder.lo: v2_decoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-v2_decoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-v2_decoder.Tpo -c -o libzmq_la-v2_decoder.lo `test -f 'v2_decoder.cpp' || echo '$(srcdir)/'`v2_decoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-v2_decoder.Tpo $(DEPDIR)/libzmq_la-v2_decoder.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='v2_decoder.cpp' object='libzmq_la-v2_decoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-v2_decoder.lo `test -f 'v2_decoder.cpp' || echo '$(srcdir)/'`v2_decoder.cpp + +libzmq_la-v2_encoder.lo: v2_encoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-v2_encoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-v2_encoder.Tpo -c -o libzmq_la-v2_encoder.lo `test -f 'v2_encoder.cpp' || echo '$(srcdir)/'`v2_encoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-v2_encoder.Tpo $(DEPDIR)/libzmq_la-v2_encoder.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='v2_encoder.cpp' object='libzmq_la-v2_encoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-v2_encoder.lo `test -f 'v2_encoder.cpp' || echo '$(srcdir)/'`v2_encoder.cpp + libzmq_la-xsub.lo: xsub.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-xsub.lo -MD -MP -MF $(DEPDIR)/libzmq_la-xsub.Tpo -c -o libzmq_la-xsub.lo `test -f 'xsub.cpp' || echo '$(srcdir)/'`xsub.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-xsub.Tpo $(DEPDIR)/libzmq_la-xsub.Plo @@ -1063,6 +1116,20 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_utils.lo `test -f 'zmq_utils.cpp' || echo '$(srcdir)/'`zmq_utils.cpp +libzmq_la-raw_decoder.lo: raw_decoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-raw_decoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-raw_decoder.Tpo -c -o libzmq_la-raw_decoder.lo `test -f 'raw_decoder.cpp' || echo '$(srcdir)/'`raw_decoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-raw_decoder.Tpo $(DEPDIR)/libzmq_la-raw_decoder.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='raw_decoder.cpp' object='libzmq_la-raw_decoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-raw_decoder.lo `test -f 'raw_decoder.cpp' || echo '$(srcdir)/'`raw_decoder.cpp + +libzmq_la-raw_encoder.lo: raw_encoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-raw_encoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-raw_encoder.Tpo -c -o libzmq_la-raw_encoder.lo `test -f 'raw_encoder.cpp' || echo '$(srcdir)/'`raw_encoder.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libzmq_la-raw_encoder.Tpo $(DEPDIR)/libzmq_la-raw_encoder.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='raw_encoder.cpp' object='libzmq_la-raw_encoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzmq_la_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-raw_encoder.lo `test -f 'raw_encoder.cpp' || echo '$(srcdir)/'`raw_encoder.cpp + mostlyclean-libtool: -rm -f *.lo @@ -1070,11 +1137,8 @@ -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -1091,11 +1155,8 @@ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ diff -Nru zeromq3-3.2.4+dfsg/src/mechanism.cpp zeromq3-4.0.4/src/mechanism.cpp --- zeromq3-3.2.4+dfsg/src/mechanism.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/mechanism.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,163 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include + +#include "mechanism.hpp" +#include "options.hpp" +#include "msg.hpp" +#include "err.hpp" +#include "wire.hpp" + +zmq::mechanism_t::mechanism_t (const options_t &options_) : + options (options_) +{ +} + +zmq::mechanism_t::~mechanism_t () +{ +} + +void zmq::mechanism_t::set_peer_identity (const void *id_ptr, size_t id_size) +{ + identity = blob_t (static_cast (id_ptr), id_size); +} + +void zmq::mechanism_t::peer_identity (msg_t *msg_) +{ + const int rc = msg_->init_size (identity.size ()); + errno_assert (rc == 0); + memcpy (msg_->data (), identity.data (), identity.size ()); + msg_->set_flags (msg_t::identity); +} + +const char *zmq::mechanism_t::socket_type_string (int socket_type) const +{ + static const char *names [] = {"PAIR", "PUB", "SUB", "REQ", "REP", + "DEALER", "ROUTER", "PULL", "PUSH", + "XPUB", "XSUB", "STREAM"}; + zmq_assert (socket_type >= 0 && socket_type <= 10); + return names [socket_type]; +} + +size_t zmq::mechanism_t::add_property (unsigned char *ptr, const char *name, + const void *value, size_t value_len) const +{ + const size_t name_len = strlen (name); + zmq_assert (name_len <= 255); + *ptr++ = static_cast (name_len); + memcpy (ptr, name, name_len); + ptr += name_len; + zmq_assert (value_len <= 0x7FFFFFFF); + put_uint32 (ptr, static_cast (value_len)); + ptr += 4; + memcpy (ptr, value, value_len); + + return 1 + name_len + 4 + value_len; +} + +int zmq::mechanism_t::parse_metadata (const unsigned char *ptr_, + size_t length_) +{ + size_t bytes_left = length_; + + while (bytes_left > 1) { + const size_t name_length = static_cast (*ptr_); + ptr_ += 1; + bytes_left -= 1; + if (bytes_left < name_length) + break; + + const std::string name = std::string ((char *) ptr_, name_length); + ptr_ += name_length; + bytes_left -= name_length; + if (bytes_left < 4) + break; + + const size_t value_length = static_cast (get_uint32 (ptr_)); + ptr_ += 4; + bytes_left -= 4; + if (bytes_left < value_length) + break; + + const uint8_t *value = ptr_; + ptr_ += value_length; + bytes_left -= value_length; + + if (name == "Identity" && options.recv_identity) + set_peer_identity (value, value_length); + else + if (name == "Socket-Type") { + const std::string socket_type ((char *) value, value_length); + if (!check_socket_type (socket_type)) { + errno = EINVAL; + return -1; + } + } + else { + const int rc = property (name, value, value_length); + if (rc == -1) + return -1; + } + } + if (bytes_left > 0) { + errno = EPROTO; + return -1; + } + return 0; +} + +int zmq::mechanism_t::property (const std::string name_, + const void *value_, size_t length_) +{ + // Default implementation does not check + // property values and returns 0 to signal success. + return 0; +} + +bool zmq::mechanism_t::check_socket_type (const std::string type_) const +{ + switch (options.type) { + case ZMQ_REQ: + return type_ == "REP" || type_ == "ROUTER"; + case ZMQ_REP: + return type_ == "REQ" || type_ == "DEALER"; + case ZMQ_DEALER: + return type_ == "REP" || type_ == "DEALER" || type_ == "ROUTER"; + case ZMQ_ROUTER: + return type_ == "REQ" || type_ == "DEALER" || type_ == "ROUTER"; + case ZMQ_PUSH: + return type_ == "PULL"; + case ZMQ_PULL: + return type_ == "PUSH"; + case ZMQ_PUB: + return type_ == "SUB" || type_ == "XSUB"; + case ZMQ_SUB: + return type_ == "PUB" || type_ == "XPUB"; + case ZMQ_XPUB: + return type_ == "SUB" || type_ == "XSUB"; + case ZMQ_XSUB: + return type_ == "PUB" || type_ == "XPUB"; + case ZMQ_PAIR: + return type_ == "PAIR"; + default: + break; + } + return false; +} diff -Nru zeromq3-3.2.4+dfsg/src/mechanism.hpp zeromq3-4.0.4/src/mechanism.hpp --- zeromq3-3.2.4+dfsg/src/mechanism.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/mechanism.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,101 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_MECHANISM_HPP_INCLUDED__ +#define __ZMQ_MECHANISM_HPP_INCLUDED__ + +#include "stdint.hpp" +#include "options.hpp" +#include "blob.hpp" + +namespace zmq +{ + + // Abstract class representing security mechanism. + // Different mechanism extedns this class. + + class msg_t; + + class mechanism_t + { + public: + + mechanism_t (const options_t &options_); + + virtual ~mechanism_t (); + + // Prepare next handshake command that is to be sent to the peer. + virtual int next_handshake_command (msg_t *msg_) = 0; + + // Process the handshake command received from the peer. + virtual int process_handshake_command (msg_t *msg_) = 0; + + virtual int encode (msg_t *msg_) { return 0; } + + virtual int decode (msg_t *msg_) { return 0; } + + // Notifies mechanism about availability of ZAP message. + virtual int zap_msg_available () { return 0; } + + // True iff the handshake stage is complete? + virtual bool is_handshake_complete () const = 0; + + void set_peer_identity (const void *id_ptr, size_t id_size); + + void peer_identity (msg_t *msg_); + + protected: + + // Only used to identify the socket for the Socket-Type + // property in the wire protocol. + const char *socket_type_string (int socket_type) const; + + size_t add_property (unsigned char *ptr, const char *name, + const void *value, size_t value_len) const; + + // Parses a metadata. + // Metadata consists of a list of properties consisting of + // name and value as size-specified strings. + // Returns 0 on success and -1 on error, in which case errno is set. + int parse_metadata (const unsigned char *ptr_, size_t length); + + // This is called by parse_property method whenever it + // parses a new property. The function should return 0 + // on success and -1 on error, in which case it should + // set errno. Signaling error prevents parser from + // parsing remaining data. + // Derived classes are supposed to override this + // method to handle custom processing. + virtual int property (const std::string name_, + const void *value_, size_t length_); + + options_t options; + + private: + + blob_t identity; + + // Returns true iff socket associated with the mechanism + // is compatible with a given socket type 'type_'. + bool check_socket_type (const std::string type_) const; + }; + +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/msg.cpp zeromq3-4.0.4/src/msg.cpp --- zeromq3-3.2.4+dfsg/src/msg.cpp 2012-11-01 15:42:18.000000000 +0000 +++ zeromq3-4.0.4/src/msg.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -31,7 +29,7 @@ #include "err.hpp" // Check whether the sizes of public representation of the message (zmq_msg_t) -// and private represenation of the message (zmq::msg_t) match. +// and private representation of the message (zmq::msg_t) match. typedef char zmq_msg_size_check [2 * ((sizeof (zmq::msg_t) == sizeof (zmq_msg_t)) != 0) - 1]; @@ -60,7 +58,7 @@ u.lmsg.flags = 0; u.lmsg.content = (content_t*) malloc (sizeof (content_t) + size_); - if (!u.lmsg.content) { + if (unlikely (!u.lmsg.content)) { errno = ENOMEM; return -1; } @@ -77,19 +75,32 @@ int zmq::msg_t::init_data (void *data_, size_t size_, msg_free_fn *ffn_, void *hint_) { - u.lmsg.type = type_lmsg; - u.lmsg.flags = 0; - u.lmsg.content = (content_t*) malloc (sizeof (content_t)); - if (!u.lmsg.content) { - errno = ENOMEM; - return -1; + // If data is NULL and size is not 0, a segfault + // would occur once the data is accessed + assert (data_ != NULL || size_ == 0); + + // Initialize constant message if there's no need to deallocate + if(ffn_ == NULL) { + u.cmsg.type = type_cmsg; + u.cmsg.flags = 0; + u.cmsg.data = data_; + u.cmsg.size = size_; } + else { + u.lmsg.type = type_lmsg; + u.lmsg.flags = 0; + u.lmsg.content = (content_t*) malloc (sizeof (content_t)); + if (!u.lmsg.content) { + errno = ENOMEM; + return -1; + } - u.lmsg.content->data = data_; - u.lmsg.content->size = size_; - u.lmsg.content->ffn = ffn_; - u.lmsg.content->hint = hint_; - new (&u.lmsg.content->refcnt) zmq::atomic_counter_t (); + u.lmsg.content->data = data_; + u.lmsg.content->size = size_; + u.lmsg.content->ffn = ffn_; + u.lmsg.content->hint = hint_; + new (&u.lmsg.content->refcnt) zmq::atomic_counter_t (); + } return 0; } @@ -195,6 +206,8 @@ return u.vsm.data; case type_lmsg: return u.lmsg.content->data; + case type_cmsg: + return u.cmsg.data; default: zmq_assert (false); return NULL; @@ -211,6 +224,8 @@ return u.vsm.size; case type_lmsg: return u.lmsg.content->size; + case type_cmsg: + return u.cmsg.size; default: zmq_assert (false); return 0; @@ -247,6 +262,11 @@ return u.base.type == type_vsm; } +bool zmq::msg_t::is_cmsg () +{ + return u.base.type == type_cmsg; +} + void zmq::msg_t::add_refs (int refs_) { zmq_assert (refs_ >= 0); @@ -255,8 +275,8 @@ if (!refs_) return; - // VSMs and delimiters can be copied straight away. The only message type - // that needs special care are long messages. + // VSMs, CMSGS and delimiters can be copied straight away. The only + // message type that needs special care are long messages. if (u.base.type == type_lmsg) { if (u.lmsg.flags & msg_t::shared) u.lmsg.content->refcnt.add (refs_); diff -Nru zeromq3-3.2.4+dfsg/src/msg.hpp zeromq3-4.0.4/src/msg.hpp --- zeromq3-3.2.4+dfsg/src/msg.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/msg.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -47,10 +44,11 @@ { public: - // Mesage flags. + // Message flags. enum { - more = 1, + more = 1, // Followed by more parts + command = 2, // Command frame (see ZMTP spec) identity = 64, shared = 128 }; @@ -72,6 +70,7 @@ bool is_identity () const; bool is_delimiter (); bool is_vsm (); + bool is_cmsg (); // After calling this function you can copy the message in POD-style // refs_ times. No need to call copy. @@ -107,10 +106,15 @@ enum type_t { type_min = 101, + // VSM messages store the content in the message itself type_vsm = 101, + // LMSG messages store the content in malloc-ed memory type_lmsg = 102, + // Delimiter messages are used in envelopes type_delimiter = 103, - type_max = 103 + // CMSG messages point to constant data + type_cmsg = 104, + type_max = 104 }; // Note that fields shared between different message types are not @@ -136,6 +140,14 @@ unsigned char flags; } lmsg; struct { + void* data; + size_t size; + unsigned char unused + [max_vsm_size + 1 - sizeof (void*) - sizeof (size_t)]; + unsigned char type; + unsigned char flags; + } cmsg; + struct { unsigned char unused [max_vsm_size + 1]; unsigned char type; unsigned char flags; diff -Nru zeromq3-3.2.4+dfsg/src/mtrie.cpp zeromq3-4.0.4/src/mtrie.cpp --- zeromq3-3.2.4+dfsg/src/mtrie.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/mtrie.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011-2012 Spotify AB - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -53,10 +51,10 @@ delete next.node; next.node = 0; } - else if (count > 1) { + else + if (count > 1) { for (unsigned short i = 0; i != count; ++i) - if (next.table [i]) - delete next.table [i]; + delete next.table [i]; free (next.table); } } @@ -90,7 +88,8 @@ count = 1; next.node = NULL; } - else if (count == 1) { + else + if (count == 1) { unsigned char oldc = min; mtrie_t *oldp = next.node; count = (min < c ? c - min : min - c) + 1; @@ -102,8 +101,8 @@ min = std::min (min, c); next.table [oldc - min] = oldp; } - else if (min < c) { - + else + if (min < c) { // The new character is above the current character range. unsigned short old_count = count; count = c - min + 1; @@ -114,7 +113,6 @@ next.table [i] = NULL; } else { - // The new character is below the current character range. unsigned short old_count = count; count = (min + old_count) - c; @@ -244,7 +242,8 @@ count = 0; } // Compact the node table if possible - else if (live_nodes == 1) { + else + if (live_nodes == 1) { // If there's only one live node in the table we can // switch to using the more compact single-node // representation @@ -257,7 +256,8 @@ count = 1; min = new_min; } - else if (new_min > min || new_max < min + count - 1) { + else + if (new_min > min || new_max < min + count - 1) { zmq_assert (new_max - new_min + 1 > 1); mtrie_t **old_table = next.table; @@ -342,7 +342,8 @@ free (next.table); next.node = oldp; } - else if (c == min) { + else + if (c == min) { // We can compact the table "from the left" unsigned short i; for (i = 1; i < count; ++i) @@ -358,7 +359,8 @@ memmove (next.table, old_table + i, sizeof (mtrie_t*) * count); free (old_table); } - else if (c == min + count - 1) { + else + if (c == min + count - 1) { // We can compact the table "from the right" unsigned short i; for (i = 1; i < count; ++i) diff -Nru zeromq3-3.2.4+dfsg/src/mtrie.hpp zeromq3-4.0.4/src/mtrie.hpp --- zeromq3-3.2.4+dfsg/src/mtrie.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/mtrie.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011-2012 Spotify AB - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/mutex.hpp zeromq3-4.0.4/src/mutex.hpp --- zeromq3-3.2.4+dfsg/src/mutex.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/mutex.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -52,6 +50,11 @@ EnterCriticalSection (&cs); } + inline bool try_lock () + { + return (TryEnterCriticalSection (&cs)) ? true : false; + } + inline void unlock () { LeaveCriticalSection (&cs); @@ -96,6 +99,16 @@ posix_assert (rc); } + inline bool try_lock () + { + int rc = pthread_mutex_trylock (&mutex); + if (rc == EBUSY) + return false; + + posix_assert (rc); + return true; + } + inline void unlock () { int rc = pthread_mutex_unlock (&mutex); @@ -115,4 +128,30 @@ #endif + +namespace zmq +{ + struct scoped_lock_t + { + scoped_lock_t (mutex_t& mutex_) + : mutex (mutex_) + { + mutex.lock (); + } + + ~scoped_lock_t () + { + mutex.unlock (); + } + + private: + + mutex_t& mutex; + + // Disable copy construction and assignment. + scoped_lock_t (const scoped_lock_t&); + const scoped_lock_t &operator = (const scoped_lock_t&); + }; +} + #endif diff -Nru zeromq3-3.2.4+dfsg/src/null_mechanism.cpp zeromq3-4.0.4/src/null_mechanism.cpp --- zeromq3-3.2.4+dfsg/src/null_mechanism.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/null_mechanism.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,282 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "platform.hpp" +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include +#include +#include + +#include "err.hpp" +#include "msg.hpp" +#include "session_base.hpp" +#include "wire.hpp" +#include "null_mechanism.hpp" + +zmq::null_mechanism_t::null_mechanism_t (session_base_t *session_, + const std::string &peer_address_, + const options_t &options_) : + mechanism_t (options_), + session (session_), + peer_address (peer_address_), + ready_command_sent (false), + ready_command_received (false), + zap_connected (false), + zap_request_sent (false), + zap_reply_received (false) +{ + // NULL mechanism only uses ZAP if there's a domain defined + // This prevents ZAP requests on naive sockets + if (options.zap_domain.size () > 0 + && session->zap_connect () == 0) + zap_connected = true; +} + +zmq::null_mechanism_t::~null_mechanism_t () +{ +} + +int zmq::null_mechanism_t::next_handshake_command (msg_t *msg_) +{ + if (ready_command_sent) { + errno = EAGAIN; + return -1; + } + if (zap_connected && !zap_reply_received) { + if (zap_request_sent) { + errno = EAGAIN; + return -1; + } + send_zap_request (); + zap_request_sent = true; + const int rc = receive_and_process_zap_reply (); + if (rc != 0) + return -1; + zap_reply_received = true; + } + + unsigned char * const command_buffer = (unsigned char *) malloc (512); + alloc_assert (command_buffer); + + unsigned char *ptr = command_buffer; + + // Add mechanism string + memcpy (ptr, "\5READY", 6); + ptr += 6; + + // Add socket type property + const char *socket_type = socket_type_string (options.type); + ptr += add_property (ptr, "Socket-Type", socket_type, strlen (socket_type)); + + // Add identity property + if (options.type == ZMQ_REQ + || options.type == ZMQ_DEALER + || options.type == ZMQ_ROUTER) { + ptr += add_property (ptr, "Identity", + options.identity, options.identity_size); + } + + const size_t command_size = ptr - command_buffer; + const int rc = msg_->init_size (command_size); + errno_assert (rc == 0); + memcpy (msg_->data (), command_buffer, command_size); + free (command_buffer); + + ready_command_sent = true; + + return 0; +} + +int zmq::null_mechanism_t::process_handshake_command (msg_t *msg_) +{ + if (ready_command_received) { + errno = EPROTO; + return -1; + } + + const unsigned char *ptr = + static_cast (msg_->data ()); + size_t bytes_left = msg_->size (); + + if (bytes_left < 6 || memcmp (ptr, "\5READY", 6)) { + errno = EPROTO; + return -1; + } + + ptr += 6; + bytes_left -= 6; + + int rc = parse_metadata (ptr, bytes_left); + if (rc == 0) { + int rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + } + + ready_command_received = true; + + return rc; +} + +int zmq::null_mechanism_t::zap_msg_available () +{ + if (zap_reply_received) { + errno = EFSM; + return -1; + } + const int rc = receive_and_process_zap_reply (); + if (rc == 0) + zap_reply_received = true; + return rc; +} + +bool zmq::null_mechanism_t::is_handshake_complete () const +{ + return ready_command_received && ready_command_sent; +} + +void zmq::null_mechanism_t::send_zap_request () +{ + int rc; + msg_t msg; + + // Address delimiter frame + rc = msg.init (); + errno_assert (rc == 0); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Version frame + rc = msg.init_size (3); + errno_assert (rc == 0); + memcpy (msg.data (), "1.0", 3); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Request id frame + rc = msg.init_size (1); + errno_assert (rc == 0); + memcpy (msg.data (), "1", 1); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Domain frame + rc = msg.init_size (options.zap_domain.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), options.zap_domain.c_str (), options.zap_domain.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Address frame + rc = msg.init_size (peer_address.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), peer_address.c_str (), peer_address.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Identity frame + rc = msg.init_size (options.identity_size); + errno_assert (rc == 0); + memcpy (msg.data (), options.identity, options.identity_size); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Mechanism frame + rc = msg.init_size (4); + errno_assert (rc == 0); + memcpy (msg.data (), "NULL", 4); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); +} + +int zmq::null_mechanism_t::receive_and_process_zap_reply () +{ + int rc = 0; + msg_t msg [7]; // ZAP reply consists of 7 frames + + // Initialize all reply frames + for (int i = 0; i < 7; i++) { + rc = msg [i].init (); + errno_assert (rc == 0); + } + + for (int i = 0; i < 7; i++) { + rc = session->read_zap_msg (&msg [i]); + if (rc == -1) + break; + if ((msg [i].flags () & msg_t::more) == (i < 6? 0: msg_t::more)) { + errno = EPROTO; + rc = -1; + break; + } + } + + if (rc != 0) + goto error; + + // Address delimiter frame + if (msg [0].size () > 0) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Version frame + if (msg [1].size () != 3 || memcmp (msg [1].data (), "1.0", 3)) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Request id frame + if (msg [2].size () != 1 || memcmp (msg [2].data (), "1", 1)) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Status code frame + if (msg [3].size () != 3 || memcmp (msg [3].data (), "200", 3)) { + rc = -1; + errno = EACCES; + goto error; + } + + // Process metadata frame + rc = parse_metadata (static_cast (msg [6].data ()), + msg [6].size ()); + +error: + for (int i = 0; i < 7; i++) { + const int rc2 = msg [i].close (); + errno_assert (rc2 == 0); + } + + return rc; +} diff -Nru zeromq3-3.2.4+dfsg/src/null_mechanism.hpp zeromq3-4.0.4/src/null_mechanism.hpp --- zeromq3-3.2.4+dfsg/src/null_mechanism.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/null_mechanism.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,65 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_NULL_MECHANISM_HPP_INCLUDED__ +#define __ZMQ_NULL_MECHANISM_HPP_INCLUDED__ + +#include "mechanism.hpp" +#include "options.hpp" + +namespace zmq +{ + + class msg_t; + class session_base_t; + + class null_mechanism_t : public mechanism_t + { + public: + + null_mechanism_t (session_base_t *session_, + const std::string &peer_address, + const options_t &options_); + virtual ~null_mechanism_t (); + + // mechanism implementation + virtual int next_handshake_command (msg_t *msg_); + virtual int process_handshake_command (msg_t *msg_); + virtual int zap_msg_available (); + virtual bool is_handshake_complete () const; + + private: + + session_base_t * const session; + + const std::string peer_address; + + bool ready_command_sent; + bool ready_command_received; + bool zap_connected; + bool zap_request_sent; + bool zap_reply_received; + + void send_zap_request (); + int receive_and_process_zap_reply (); + }; + +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/object.cpp zeromq3-4.0.4/src/object.cpp --- zeromq3-3.2.4+dfsg/src/object.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/object.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -51,6 +49,11 @@ return tid; } +void zmq::object_t::set_tid(uint32_t id) +{ + tid = id; +} + zmq::ctx_t *zmq::object_t::get_ctx () { return ctx; @@ -124,6 +127,11 @@ process_reaped (); break; + case command_t::inproc_connected: + process_seqnum (); + break; + + case command_t::done: default: zmq_assert (false); } @@ -144,6 +152,16 @@ return ctx->find_endpoint (addr_); } +void zmq::object_t::pend_connection (const char *addr_, pending_connection_t &pending_connection_) +{ + ctx->pend_connection (addr_, pending_connection_); +} + +void zmq::object_t::connect_pending (const char *addr_, zmq::socket_base_t *bind_socket_) +{ + return ctx->connect_pending(addr_, bind_socket_); +} + void zmq::object_t::destroy_socket (socket_base_t *socket_) { ctx->destroy_socket (socket_); @@ -298,6 +316,14 @@ send_command (cmd); } +void zmq::object_t::send_inproc_connected (zmq::socket_base_t *socket_) +{ + command_t cmd; + cmd.destination = socket_; + cmd.type = command_t::inproc_connected; + send_command (cmd); +} + void zmq::object_t::send_done () { command_t cmd; diff -Nru zeromq3-3.2.4+dfsg/src/object.hpp zeromq3-4.0.4/src/object.hpp --- zeromq3-3.2.4+dfsg/src/object.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/object.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -29,6 +27,7 @@ struct i_engine; struct endpoint_t; + struct pending_connection_t; struct command_t; class ctx_t; class pipe_t; @@ -49,8 +48,11 @@ virtual ~object_t (); uint32_t get_tid (); + void set_tid(uint32_t id); ctx_t *get_ctx (); void process_command (zmq::command_t &cmd_); + void send_inproc_connected (zmq::socket_base_t *socket_); + void send_bind (zmq::own_t *destination_, zmq::pipe_t *pipe_, bool inc_seqnum_ = true); protected: @@ -59,6 +61,9 @@ int register_endpoint (const char *addr_, zmq::endpoint_t &endpoint_); void unregister_endpoints (zmq::socket_base_t *socket_); zmq::endpoint_t find_endpoint (const char *addr_); + void pend_connection (const char *addr_, pending_connection_t &pending_connection_); + void connect_pending (const char *addr_, zmq::socket_base_t *bind_socket_); + void destroy_socket (zmq::socket_base_t *socket_); // Logs an message. @@ -76,8 +81,6 @@ zmq::own_t *object_); void send_attach (zmq::session_base_t *destination_, zmq::i_engine *engine_, bool inc_seqnum_ = true); - void send_bind (zmq::own_t *destination_, zmq::pipe_t *pipe_, - bool inc_seqnum_ = true); void send_activate_read (zmq::pipe_t *destination_); void send_activate_write (zmq::pipe_t *destination_, uint64_t msgs_read_); diff -Nru zeromq3-3.2.4+dfsg/src/options.cpp zeromq3-4.0.4/src/options.cpp --- zeromq3-3.2.4+dfsg/src/options.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/options.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -24,6 +21,7 @@ #include "options.hpp" #include "err.hpp" +#include "../include/zmq_utils.h" zmq::options_t::options_t () : sndhwm (1000), @@ -43,293 +41,321 @@ maxmsgsize (-1), rcvtimeo (-1), sndtimeo (-1), - ipv4only (1), - delay_attach_on_connect (0), - delay_on_close (true), - delay_on_disconnect (true), + ipv6 (0), + immediate (0), filter (false), recv_identity (false), + raw_sock (false), tcp_keepalive (-1), tcp_keepalive_cnt (-1), tcp_keepalive_idle (-1), tcp_keepalive_intvl (-1), - socket_id (0) + mechanism (ZMQ_NULL), + as_server (0), + socket_id (0), + conflate (false) { } int zmq::options_t::setsockopt (int option_, const void *optval_, size_t optvallen_) { + bool is_int = (optvallen_ == sizeof (int)); + int value = is_int? *((int *) optval_): 0; + switch (option_) { + case ZMQ_SNDHWM: + if (is_int && value >= 0) { + sndhwm = value; + return 0; + } + break; - case ZMQ_SNDHWM: - if (optvallen_ != sizeof (int) || *((int*) optval_) < 0) { - errno = EINVAL; - return -1; - } - sndhwm = *((int*) optval_); - return 0; - - case ZMQ_RCVHWM: - if (optvallen_ != sizeof (int) || *((int*) optval_) < 0) { - errno = EINVAL; - return -1; - } - rcvhwm = *((int*) optval_); - return 0; - - case ZMQ_AFFINITY: - if (optvallen_ != sizeof (uint64_t)) { - errno = EINVAL; - return -1; - } - affinity = *((uint64_t*) optval_); - return 0; - - case ZMQ_IDENTITY: - - // Empty identity is invalid as well as identity longer than - // 255 bytes. Identity starting with binary zero is invalid - // as these are used for auto-generated identities. - if (optvallen_ < 1 || optvallen_ > 255 || - *((const unsigned char*) optval_) == 0) { - errno = EINVAL; - return -1; - } - identity_size = optvallen_; - memcpy (identity, optval_, identity_size); - return 0; - - case ZMQ_RATE: - if (optvallen_ != sizeof (int) || *((int*) optval_) <= 0) { - errno = EINVAL; - return -1; - } - rate = *((int*) optval_); - return 0; - - case ZMQ_RECOVERY_IVL: - if (optvallen_ != sizeof (int) || *((int*) optval_) < 0) { - errno = EINVAL; - return -1; - } - recovery_ivl = *((int*) optval_); - return 0; - - case ZMQ_SNDBUF: - if (optvallen_ != sizeof (int) || *((int*) optval_) < 0) { - errno = EINVAL; - return -1; - } - sndbuf = *((int*) optval_); - return 0; - - case ZMQ_RCVBUF: - if (optvallen_ != sizeof (int) || *((int*) optval_) < 0) { - errno = EINVAL; - return -1; - } - rcvbuf = *((int*) optval_); - return 0; - - case ZMQ_LINGER: - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - linger = *((int*) optval_); - return 0; - - case ZMQ_RECONNECT_IVL: - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - if (*((int*) optval_) < -1) { - errno = EINVAL; - return -1; - } - reconnect_ivl = *((int*) optval_); - return 0; - - case ZMQ_RECONNECT_IVL_MAX: - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - if (*((int*) optval_) < 0) { - errno = EINVAL; - return -1; - } - reconnect_ivl_max = *((int*) optval_); - return 0; - - case ZMQ_BACKLOG: - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - backlog = *((int*) optval_); - return 0; - - case ZMQ_MAXMSGSIZE: - if (optvallen_ != sizeof (int64_t)) { - errno = EINVAL; - return -1; - } - maxmsgsize = *((int64_t*) optval_); - return 0; - - case ZMQ_MULTICAST_HOPS: - if (optvallen_ != sizeof (int) || *((int*) optval_) <= 0) { - errno = EINVAL; - return -1; - } - multicast_hops = *((int*) optval_); - return 0; - - case ZMQ_RCVTIMEO: - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - rcvtimeo = *((int*) optval_); - return 0; - - case ZMQ_SNDTIMEO: - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - sndtimeo = *((int*) optval_); - return 0; - - case ZMQ_IPV4ONLY: - { - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - int val = *((int*) optval_); - if (val != 0 && val != 1) { - errno = EINVAL; - return -1; - } - ipv4only = val; - return 0; - } - - - - case ZMQ_TCP_KEEPALIVE: - { - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - int val = *((int*) optval_); - if (val != -1 && val != 0 && val != 1) { - errno = EINVAL; - return -1; - } -#if defined ZMQ_HAVE_SO_KEEPALIVE - tcp_keepalive = val; -#endif - return 0; - } - - case ZMQ_DELAY_ATTACH_ON_CONNECT: - { - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - int val = *((int*) optval_); - if (val != 0 && val != 1) { - errno = EINVAL; - return -1; - } - delay_attach_on_connect = val; + case ZMQ_RCVHWM: + if (is_int && value >= 0) { + rcvhwm = value; + return 0; + } + break; + + case ZMQ_AFFINITY: + if (optvallen_ == sizeof (uint64_t)) { + affinity = *((uint64_t*) optval_); + return 0; + } + break; + + case ZMQ_IDENTITY: + // Empty identity is invalid as well as identity longer than + // 255 bytes. Identity starting with binary zero is invalid + // as these are used for auto-generated identities. + if (optvallen_ > 0 && optvallen_ < 256 + && *((const unsigned char *) optval_) != 0) { + identity_size = optvallen_; + memcpy (identity, optval_, identity_size); + return 0; + } + break; + + case ZMQ_RATE: + if (is_int && value > 0) { + rate = value; + return 0; + } + break; + + case ZMQ_RECOVERY_IVL: + if (is_int && value >= 0) { + recovery_ivl = value; + return 0; + } + break; + + case ZMQ_SNDBUF: + if (is_int && value >= 0) { + sndbuf = value; + return 0; + } + break; + + case ZMQ_RCVBUF: + if (is_int && value >= 0) { + rcvbuf = value; + return 0; + } + break; + + case ZMQ_LINGER: + if (is_int && value >= -1) { + linger = value; + return 0; + } + break; + + case ZMQ_RECONNECT_IVL: + if (is_int && value >= -1) { + reconnect_ivl = value; + return 0; + } + break; + + case ZMQ_RECONNECT_IVL_MAX: + if (is_int && value >= 0) { + reconnect_ivl_max = value; + return 0; + } + break; + + case ZMQ_BACKLOG: + if (is_int && value >= 0) { + backlog = value; + return 0; + } + break; + + case ZMQ_MAXMSGSIZE: + if (optvallen_ == sizeof (int64_t)) { + maxmsgsize = *((int64_t *) optval_); + return 0; + } + break; + + case ZMQ_MULTICAST_HOPS: + if (is_int && value > 0) { + multicast_hops = value; + return 0; + } + break; + + case ZMQ_RCVTIMEO: + if (is_int && value >= -1) { + rcvtimeo = value; + return 0; + } + break; + + case ZMQ_SNDTIMEO: + if (is_int && value >= -1) { + sndtimeo = value; + return 0; + } + break; + + /* Deprecated in favor of ZMQ_IPV6 */ + case ZMQ_IPV4ONLY: + if (is_int && (value == 0 || value == 1)) { + ipv6 = (value == 0); return 0; } + break; - case ZMQ_TCP_KEEPALIVE_CNT: - { - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - int val = *((int*) optval_); - if (val <= 0 && val != -1) { - errno = EINVAL; - return -1; - } -#if defined ZMQ_HAVE_SO_KEEPALIVE && defined ZMQ_HAVE_TCP_KEEPCNT - tcp_keepalive_cnt = val; -#endif - return 0; - } - - case ZMQ_TCP_KEEPALIVE_IDLE: - { - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - int val = *((int*) optval_); - if (val <= 0 && val != -1) { - errno = EINVAL; - return -1; - } - -#if defined ZMQ_HAVE_SO_KEEPALIVE && (defined ZMQ_HAVE_TCP_KEEPIDLE || defined ZMQ_HAVE_TCP_KEEPALIVE) - tcp_keepalive_idle = val; -#endif - return 0; - } - - case ZMQ_TCP_KEEPALIVE_INTVL: - { - if (optvallen_ != sizeof (int)) { - errno = EINVAL; - return -1; - } - int val = *((int*) optval_); - if (val <= 0 && val != -1) { - errno = EINVAL; - return -1; - } -#if defined ZMQ_HAVE_SO_KEEPALIVE && defined ZMQ_HAVE_TCP_KEEPINTVL - tcp_keepalive_intvl = val; -#endif - return 0; - } + /* To replace the somewhat surprising IPV4ONLY */ + case ZMQ_IPV6: + if (is_int && (value == 0 || value == 1)) { + ipv6 = (value != 0); + return 0; + } + break; - case ZMQ_TCP_ACCEPT_FILTER: - { + case ZMQ_TCP_KEEPALIVE: + if (is_int && (value >= -1 || value <= 1)) { + tcp_keepalive = value; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE_CNT: + if (is_int && (value == -1 || value >= 0)) { + tcp_keepalive_cnt = value; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE_IDLE: + if (is_int && (value == -1 || value >= 0)) { + tcp_keepalive_idle = value; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE_INTVL: + if (is_int && (value == -1 || value >= 0)) { + tcp_keepalive_intvl = value; + return 0; + } + break; + + case ZMQ_IMMEDIATE: + if (is_int && (value == 0 || value == 1)) { + immediate = value; + return 0; + } + break; + + case ZMQ_TCP_ACCEPT_FILTER: if (optvallen_ == 0 && optval_ == NULL) { tcp_accept_filters.clear (); return 0; } else - if (optvallen_ < 1 || optvallen_ > 255 || optval_ == NULL || *((const char*) optval_) == 0) { - errno = EINVAL; - return -1; - } - else { - std::string filter_str ((const char*) optval_, optvallen_); - - tcp_address_mask_t filter; - int rc = filter.resolve (filter_str.c_str (), ipv4only ? true : false); - if (rc != 0) { - errno = EINVAL; - return -1; + if (optvallen_ > 0 && optvallen_ < 256 && optval_ != NULL && *((const char*) optval_) != 0) { + std::string filter_str ((const char *) optval_, optvallen_); + tcp_address_mask_t mask; + int rc = mask.resolve (filter_str.c_str (), ipv6); + if (rc == 0) { + tcp_accept_filters.push_back (mask); + return 0; } - tcp_accept_filters.push_back(filter); + } + break; + + case ZMQ_PLAIN_SERVER: + if (is_int && (value == 0 || value == 1)) { + as_server = value; + mechanism = value? ZMQ_PLAIN: ZMQ_NULL; + return 0; + } + break; + + case ZMQ_PLAIN_USERNAME: + if (optvallen_ == 0 && optval_ == NULL) { + mechanism = ZMQ_NULL; + return 0; + } + else + if (optvallen_ > 0 && optvallen_ < 256 && optval_ != NULL) { + plain_username.assign ((const char *) optval_, optvallen_); + as_server = 0; + mechanism = ZMQ_PLAIN; + return 0; + } + break; + case ZMQ_PLAIN_PASSWORD: + if (optvallen_ == 0 && optval_ == NULL) { + mechanism = ZMQ_NULL; return 0; } - } + else + if (optvallen_ > 0 && optvallen_ < 256 && optval_ != NULL) { + plain_password.assign ((const char *) optval_, optvallen_); + as_server = 0; + mechanism = ZMQ_PLAIN; + return 0; + } + break; + + case ZMQ_ZAP_DOMAIN: + if (optvallen_ < 256) { + zap_domain.assign ((const char *) optval_, optvallen_); + return 0; + } + break; + + // If libsodium isn't installed, these options provoke EINVAL +# ifdef HAVE_LIBSODIUM + case ZMQ_CURVE_SERVER: + if (is_int && (value == 0 || value == 1)) { + as_server = value; + mechanism = value? ZMQ_CURVE: ZMQ_NULL; + return 0; + } + break; + + case ZMQ_CURVE_PUBLICKEY: + if (optvallen_ == CURVE_KEYSIZE) { + memcpy (curve_public_key, optval_, CURVE_KEYSIZE); + mechanism = ZMQ_CURVE; + return 0; + } + else + if (optvallen_ == CURVE_KEYSIZE_Z85) { + zmq_z85_decode (curve_public_key, (char *) optval_); + mechanism = ZMQ_CURVE; + return 0; + } + break; + + case ZMQ_CURVE_SECRETKEY: + if (optvallen_ == CURVE_KEYSIZE) { + memcpy (curve_secret_key, optval_, CURVE_KEYSIZE); + mechanism = ZMQ_CURVE; + return 0; + } + else + if (optvallen_ == CURVE_KEYSIZE_Z85) { + zmq_z85_decode (curve_secret_key, (char *) optval_); + mechanism = ZMQ_CURVE; + return 0; + } + break; + + case ZMQ_CURVE_SERVERKEY: + if (optvallen_ == CURVE_KEYSIZE) { + memcpy (curve_server_key, optval_, CURVE_KEYSIZE); + as_server = 0; + mechanism = ZMQ_CURVE; + return 0; + } + else + if (optvallen_ == CURVE_KEYSIZE_Z85) { + zmq_z85_decode (curve_server_key, (char *) optval_); + as_server = 0; + mechanism = ZMQ_CURVE; + return 0; + } + break; +# endif + + case ZMQ_CONFLATE: + if (is_int && (value == 0 || value == 1)) { + conflate = (value != 0); + return 0; + } + break; + + default: + break; } errno = EINVAL; return -1; @@ -337,226 +363,272 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) { + bool is_int = (*optvallen_ == sizeof (int)); + int *value = (int *) optval_; + switch (option_) { + case ZMQ_SNDHWM: + if (is_int) { + *value = sndhwm; + return 0; + } + break; - case ZMQ_SNDHWM: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = sndhwm; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_RCVHWM: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = rcvhwm; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_AFFINITY: - if (*optvallen_ < sizeof (uint64_t)) { - errno = EINVAL; - return -1; - } - *((uint64_t*) optval_) = affinity; - *optvallen_ = sizeof (uint64_t); - return 0; - - case ZMQ_IDENTITY: - if (*optvallen_ < identity_size) { - errno = EINVAL; - return -1; - } - memcpy (optval_, identity, identity_size); - *optvallen_ = identity_size; - return 0; - - case ZMQ_RATE: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = rate; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_RECOVERY_IVL: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = recovery_ivl; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_SNDBUF: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = sndbuf; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_RCVBUF: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = rcvbuf; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_TYPE: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = type; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_LINGER: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = linger; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_RECONNECT_IVL: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = reconnect_ivl; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_RECONNECT_IVL_MAX: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = reconnect_ivl_max; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_BACKLOG: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = backlog; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_MAXMSGSIZE: - if (*optvallen_ < sizeof (int64_t)) { - errno = EINVAL; - return -1; - } - *((int64_t*) optval_) = maxmsgsize; - *optvallen_ = sizeof (int64_t); - return 0; - - case ZMQ_MULTICAST_HOPS: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = multicast_hops; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_RCVTIMEO: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = rcvtimeo; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_SNDTIMEO: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = sndtimeo; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_IPV4ONLY: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = ipv4only; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_DELAY_ATTACH_ON_CONNECT: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = delay_attach_on_connect; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_TCP_KEEPALIVE: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = tcp_keepalive; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_TCP_KEEPALIVE_CNT: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = tcp_keepalive_cnt; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_TCP_KEEPALIVE_IDLE: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = tcp_keepalive_idle; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_TCP_KEEPALIVE_INTVL: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = tcp_keepalive_intvl; - *optvallen_ = sizeof (int); - return 0; - - case ZMQ_LAST_ENDPOINT: - // don't allow string which cannot contain the entire message - if (*optvallen_ < last_endpoint.size() + 1) { - errno = EINVAL; - return -1; - } - memcpy (optval_, last_endpoint.c_str(), last_endpoint.size()+1); - *optvallen_ = last_endpoint.size()+1; - return 0; - } + case ZMQ_RCVHWM: + if (is_int) { + *value = rcvhwm; + return 0; + } + break; + + case ZMQ_AFFINITY: + if (*optvallen_ == sizeof (uint64_t)) { + *((uint64_t *) optval_) = affinity; + return 0; + } + break; + + case ZMQ_IDENTITY: + if (*optvallen_ >= identity_size) { + memcpy (optval_, identity, identity_size); + *optvallen_ = identity_size; + return 0; + } + break; + + case ZMQ_RATE: + if (is_int) { + *value = rate; + return 0; + } + break; + + case ZMQ_RECOVERY_IVL: + if (is_int) { + *value = recovery_ivl; + return 0; + } + break; + + case ZMQ_SNDBUF: + if (is_int) { + *value = sndbuf; + return 0; + } + break; + + case ZMQ_RCVBUF: + if (is_int) { + *value = rcvbuf; + return 0; + } + break; + + case ZMQ_TYPE: + if (is_int) { + *value = type; + return 0; + } + break; + + case ZMQ_LINGER: + if (is_int) { + *value = linger; + return 0; + } + break; + + case ZMQ_RECONNECT_IVL: + if (is_int) { + *value = reconnect_ivl; + return 0; + } + break; + + case ZMQ_RECONNECT_IVL_MAX: + if (is_int) { + *value = reconnect_ivl_max; + return 0; + } + break; + + case ZMQ_BACKLOG: + if (is_int) { + *value = backlog; + return 0; + } + break; + + case ZMQ_MAXMSGSIZE: + if (*optvallen_ == sizeof (int64_t)) { + *((int64_t *) optval_) = maxmsgsize; + *optvallen_ = sizeof (int64_t); + return 0; + } + break; + + case ZMQ_MULTICAST_HOPS: + if (is_int) { + *value = multicast_hops; + return 0; + } + break; + + case ZMQ_RCVTIMEO: + if (is_int) { + *value = rcvtimeo; + return 0; + } + break; + + case ZMQ_SNDTIMEO: + if (is_int) { + *value = sndtimeo; + return 0; + } + break; + + case ZMQ_IPV4ONLY: + if (is_int) { + *value = 1 - ipv6; + return 0; + } + break; + + case ZMQ_IPV6: + if (is_int) { + *value = ipv6; + return 0; + } + break; + case ZMQ_IMMEDIATE: + if (is_int) { + *value = immediate; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE: + if (is_int) { + *value = tcp_keepalive; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE_CNT: + if (is_int) { + *value = tcp_keepalive_cnt; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE_IDLE: + if (is_int) { + *value = tcp_keepalive_idle; + return 0; + } + break; + + case ZMQ_TCP_KEEPALIVE_INTVL: + if (is_int) { + *value = tcp_keepalive_intvl; + return 0; + } + break; + + case ZMQ_MECHANISM: + if (is_int) { + *value = mechanism; + return 0; + } + break; + + case ZMQ_PLAIN_SERVER: + if (is_int) { + *value = as_server && mechanism == ZMQ_PLAIN; + return 0; + } + break; + + case ZMQ_PLAIN_USERNAME: + if (*optvallen_ >= plain_username.size () + 1) { + memcpy (optval_, plain_username.c_str (), plain_username.size () + 1); + *optvallen_ = plain_username.size () + 1; + return 0; + } + break; + + case ZMQ_PLAIN_PASSWORD: + if (*optvallen_ >= plain_password.size () + 1) { + memcpy (optval_, plain_password.c_str (), plain_password.size () + 1); + *optvallen_ = plain_password.size () + 1; + return 0; + } + break; + + case ZMQ_ZAP_DOMAIN: + if (*optvallen_ >= zap_domain.size () + 1) { + memcpy (optval_, zap_domain.c_str (), zap_domain.size () + 1); + *optvallen_ = zap_domain.size () + 1; + return 0; + } + break; + + // If libsodium isn't installed, these options provoke EINVAL +# ifdef HAVE_LIBSODIUM + case ZMQ_CURVE_SERVER: + if (is_int) { + *value = as_server && mechanism == ZMQ_CURVE; + return 0; + } + break; + + case ZMQ_CURVE_PUBLICKEY: + if (*optvallen_ == CURVE_KEYSIZE) { + memcpy (optval_, curve_public_key, CURVE_KEYSIZE); + return 0; + } + else + if (*optvallen_ == CURVE_KEYSIZE_Z85 + 1) { + zmq_z85_encode ((char *) optval_, curve_public_key, CURVE_KEYSIZE); + return 0; + } + break; + + case ZMQ_CURVE_SECRETKEY: + if (*optvallen_ == CURVE_KEYSIZE) { + memcpy (optval_, curve_secret_key, CURVE_KEYSIZE); + return 0; + } + else + if (*optvallen_ == CURVE_KEYSIZE_Z85 + 1) { + zmq_z85_encode ((char *) optval_, curve_secret_key, CURVE_KEYSIZE); + return 0; + } + break; + + case ZMQ_CURVE_SERVERKEY: + if (*optvallen_ == CURVE_KEYSIZE) { + memcpy (optval_, curve_server_key, CURVE_KEYSIZE); + return 0; + } + else + if (*optvallen_ == CURVE_KEYSIZE_Z85 + 1) { + zmq_z85_encode ((char *) optval_, curve_server_key, CURVE_KEYSIZE); + return 0; + } + break; +# endif + + case ZMQ_CONFLATE: + if (is_int) { + *value = conflate; + return 0; + } + break; + + } errno = EINVAL; return -1; } diff -Nru zeromq3-3.2.4+dfsg/src/options.hpp zeromq3-4.0.4/src/options.hpp --- zeromq3-3.2.4+dfsg/src/options.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/options.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -31,9 +28,13 @@ #include "tcp_address.hpp" #include "../include/zmq.h" +// Normal base 256 key is 32 bytes +#define CURVE_KEYSIZE 32 +// Key encoded using Z85 is 40 bytes +#define CURVE_KEYSIZE_Z85 40 + namespace zmq { - struct options_t { options_t (); @@ -52,10 +53,7 @@ unsigned char identity_size; unsigned char identity [256]; - // Last socket endpoint resolved URI - std::string last_endpoint; - - // Maximum tranfer rate [kb/s]. Default 100kb/s. + // Maximum transfer rate [kb/s]. Default 100kb/s. int rate; // Reliability time interval [ms]. Default 10 seconds. @@ -92,22 +90,12 @@ int rcvtimeo; int sndtimeo; - // If 1, indicates the use of IPv4 sockets only, it will not be - // possible to communicate with IPv6-only hosts. If 0, the socket can - // connect to and accept connections from both IPv4 and IPv6 hosts. - int ipv4only; - + // If true, IPv6 is enabled (as well as IPv4) + bool ipv6; + // If 1, connecting pipes are not attached immediately, meaning a send() // on a socket with only connecting pipes would block - int delay_attach_on_connect; - - // If true, session reads all the pending messages from the pipe and - // sends them to the network when socket is closed. - bool delay_on_close; - - // If true, socket reads all the messages from the pipe and delivers - // them to the user when the peer terminates. - bool delay_on_disconnect; + int immediate; // If 1, (X)SUB socket should filter the messages. If 0, it should not. bool filter; @@ -115,6 +103,9 @@ // If true, the identity message is forwarded to the socket. bool recv_identity; + // if true, router socket accepts non-zmq tcp connections + bool raw_sock; + // TCP keep-alive settings. // Defaults to -1 = do not change socket options int tcp_keepalive; @@ -126,10 +117,33 @@ typedef std::vector tcp_accept_filters_t; tcp_accept_filters_t tcp_accept_filters; + // Security mechanism for all connections on this socket + int mechanism; + + // If peer is acting as server for PLAIN or CURVE mechanisms + int as_server; + + // ZAP authentication domain + std::string zap_domain; + + // Security credentials for PLAIN mechanism + std::string plain_username; + std::string plain_password; + + // Security credentials for CURVE mechanism + uint8_t curve_public_key [CURVE_KEYSIZE]; + uint8_t curve_secret_key [CURVE_KEYSIZE]; + uint8_t curve_server_key [CURVE_KEYSIZE]; + // ID of the socket. int socket_id; - }; + // If true, socket conflates outgoing/incoming messages. + // Applicable to dealer, push/pull, pub/sub socket types. + // Cannot receive multi-part messages. + // Ignores hwm + bool conflate; + }; } #endif diff -Nru zeromq3-3.2.4+dfsg/src/own.cpp zeromq3-4.0.4/src/own.cpp --- zeromq3-3.2.4+dfsg/src/own.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/own.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/own.hpp zeromq3-4.0.4/src/own.hpp --- zeromq3-3.2.4+dfsg/src/own.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/own.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/pair.cpp zeromq3-4.0.4/src/pair.cpp --- zeromq3-3.2.4+dfsg/src/pair.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pair.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -36,10 +34,10 @@ zmq_assert (!pipe); } -void zmq::pair_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::pair_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { - // icanhasall_ is unused - (void)icanhasall_; + // subscribe_to_all_ is unused + (void)subscribe_to_all_; zmq_assert (pipe_ != NULL); @@ -51,7 +49,7 @@ pipe_->terminate (false); } -void zmq::pair_t::xterminated (pipe_t *pipe_) +void zmq::pair_t::xpipe_terminated (pipe_t *pipe_) { if (pipe_ == pipe) pipe = NULL; @@ -69,14 +67,14 @@ // There's nothing to do here. } -int zmq::pair_t::xsend (msg_t *msg_, int flags_) +int zmq::pair_t::xsend (msg_t *msg_) { if (!pipe || !pipe->write (msg_)) { errno = EAGAIN; return -1; } - if (!(flags_ & ZMQ_SNDMORE)) + if (!(msg_->flags () & msg_t::more)) pipe->flush (); // Detach the original message from the data buffer. @@ -86,11 +84,8 @@ return 0; } -int zmq::pair_t::xrecv (msg_t *msg_, int flags_) +int zmq::pair_t::xrecv (msg_t *msg_) { - // flags_ is unused - (void)flags_; - // Deallocate old content of the message. int rc = msg_->close (); errno_assert (rc == 0); @@ -122,15 +117,3 @@ return pipe->check_write (); } - -zmq::pair_session_t::pair_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::pair_session_t::~pair_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/pair.hpp zeromq3-4.0.4/src/pair.hpp --- zeromq3-3.2.4+dfsg/src/pair.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pair.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -42,14 +40,14 @@ ~pair_t (); // Overloads of functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_); - int xsend (zmq::msg_t *msg_, int flags_); - int xrecv (zmq::msg_t *msg_, int flags_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); + int xsend (zmq::msg_t *msg_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); bool xhas_out (); void xread_activated (zmq::pipe_t *pipe_); void xwrite_activated (zmq::pipe_t *pipe_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); private: @@ -59,21 +57,6 @@ const pair_t &operator = (const pair_t&); }; - class pair_session_t : public session_base_t - { - public: - - pair_session_t (zmq::io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~pair_session_t (); - - private: - - pair_session_t (const pair_session_t&); - const pair_session_t &operator = (const pair_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/pgm_receiver.cpp zeromq3-4.0.4/src/pgm_receiver.cpp --- zeromq3-3.2.4+dfsg/src/pgm_receiver.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pgm_receiver.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2010-2011 Miru Limited - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -32,6 +29,7 @@ #include "pgm_receiver.hpp" #include "session_base.hpp" +#include "v1_decoder.hpp" #include "stdint.hpp" #include "wire.hpp" #include "err.hpp" @@ -43,8 +41,8 @@ pgm_socket (true, options_), options (options_), session (NULL), - mru_decoder (NULL), - pending_bytes (0) + active_tsi (NULL), + insize (0) { } @@ -85,9 +83,7 @@ delete it->second.decoder; } peers.clear (); - - mru_decoder = NULL; - pending_bytes = 0; + active_tsi = NULL; if (has_rx_timer) { cancel_timer (rx_timer_id); @@ -106,56 +102,54 @@ delete this; } -void zmq::pgm_receiver_t::activate_out () +void zmq::pgm_receiver_t::restart_output () { drop_subscriptions (); } -void zmq::pgm_receiver_t::activate_in () +void zmq::pgm_receiver_t::restart_input () { - // It is possible that the most recently used decoder - // processed the whole buffer but failed to write - // the last message into the pipe. - if (pending_bytes == 0) { - if (mru_decoder != NULL) { - mru_decoder->process_buffer (NULL, 0); - session->flush (); - } - - // Resume polling. - set_pollin (pipe_handle); - set_pollin (socket_handle); + zmq_assert (session != NULL); + zmq_assert (active_tsi != NULL); - return; + const peers_t::iterator it = peers.find (*active_tsi); + zmq_assert (it != peers.end ()); + zmq_assert (it->second.joined); + + // Push the pending message into the session. + int rc = session->push_msg (it->second.decoder->msg ()); + errno_assert (rc == 0); + + if (insize > 0) { + rc = process_input (it->second.decoder); + if (rc == -1) { + // HWM reached; we will try later. + if (errno == EAGAIN) { + session->flush (); + return; + } + // Data error. Delete message decoder, mark the + // peer as not joined and drop remaining data. + it->second.joined = false; + delete it->second.decoder; + it->second.decoder = NULL; + insize = 0; + } } - zmq_assert (mru_decoder != NULL); - zmq_assert (pending_ptr != NULL); - - // Ask the decoder to process remaining data. - size_t n = mru_decoder->process_buffer (pending_ptr, pending_bytes); - pending_bytes -= n; - session->flush (); - - if (pending_bytes > 0) - return; - // Resume polling. set_pollin (pipe_handle); set_pollin (socket_handle); + active_tsi = NULL; in_event (); } void zmq::pgm_receiver_t::in_event () { // Read data from the underlying pgm_socket. - unsigned char *data = NULL; const pgm_tsi_t *tsi = NULL; - if (pending_bytes > 0) - return; - if (has_rx_timer) { cancel_timer (rx_timer_id); has_rx_timer = false; @@ -169,7 +163,7 @@ // Note the workaround made not to break strict-aliasing rules. void *tmp = NULL; ssize_t received = pgm_socket.receive (&tmp, &tsi); - data = (unsigned char*) tmp; + inpos = (unsigned char*) tmp; // No data to process. This may happen if the packet received is // neither ODATA nor ODATA. @@ -189,8 +183,6 @@ if (received == -1) { if (it != peers.end ()) { it->second.joined = false; - if (it->second.decoder == mru_decoder) - mru_decoder = NULL; if (it->second.decoder != NULL) { delete it->second.decoder; it->second.decoder = NULL; @@ -205,11 +197,13 @@ it = peers.insert (peers_t::value_type (*tsi, peer_info)).first; } + insize = static_cast (received); + // Read the offset of the fist message in the current packet. - zmq_assert ((size_t) received >= sizeof (uint16_t)); - uint16_t offset = get_uint16 (data); - data += sizeof (uint16_t); - received -= sizeof (uint16_t); + zmq_assert (insize >= sizeof (uint16_t)); + uint16_t offset = get_uint16 (inpos); + inpos += sizeof (uint16_t); + insize -= sizeof (uint16_t); // Join the stream if needed. if (!it->second.joined) { @@ -219,42 +213,38 @@ if (offset == 0xffff) continue; - zmq_assert (offset <= received); + zmq_assert (offset <= insize); zmq_assert (it->second.decoder == NULL); // We have to move data to the begining of the first message. - data += offset; - received -= offset; + inpos += offset; + insize -= offset; // Mark the stream as joined. it->second.joined = true; // Create and connect decoder for the peer. - it->second.decoder = new (std::nothrow) decoder_t (0, - options.maxmsgsize); + it->second.decoder = new (std::nothrow) + v1_decoder_t (0, options.maxmsgsize); alloc_assert (it->second.decoder); - it->second.decoder->set_msg_sink (session); } - mru_decoder = it->second.decoder; + int rc = process_input (it->second.decoder); + if (rc == -1) { + if (errno == EAGAIN) { + active_tsi = tsi; + + // Stop polling. + reset_pollin (pipe_handle); + reset_pollin (socket_handle); - // Push all the data to the decoder. - ssize_t processed = it->second.decoder->process_buffer (data, received); - if (processed < received) { - // Save some state so we can resume the decoding process later. - pending_bytes = received - processed; - pending_ptr = data + processed; - // Stop polling. - reset_pollin (pipe_handle); - reset_pollin (socket_handle); - - // Reset outstanding timer. - if (has_rx_timer) { - cancel_timer (rx_timer_id); - has_rx_timer = false; + break; } - break; + it->second.joined = false; + delete it->second.decoder; + it->second.decoder = NULL; + insize = 0; } } @@ -262,6 +252,29 @@ session->flush (); } +int zmq::pgm_receiver_t::process_input (v1_decoder_t *decoder) +{ + zmq_assert (session != NULL); + + while (insize > 0) { + size_t n = 0; + int rc = decoder->decode (inpos, insize, n); + if (rc == -1) + return -1; + inpos += n; + insize -= n; + if (rc == 0) + break; + rc = session->push_msg (decoder->msg ()); + if (rc == -1) { + errno_assert (errno == EAGAIN); + return -1; + } + } + return 0; +} + + void zmq::pgm_receiver_t::timer_event (int token) { zmq_assert (token == rx_timer_id); diff -Nru zeromq3-3.2.4+dfsg/src/pgm_receiver.hpp zeromq3-4.0.4/src/pgm_receiver.hpp --- zeromq3-3.2.4+dfsg/src/pgm_receiver.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pgm_receiver.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2010-2011 Miru Limited - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -37,7 +34,7 @@ #include "io_object.hpp" #include "i_engine.hpp" #include "options.hpp" -#include "decoder.hpp" +#include "v1_decoder.hpp" #include "pgm_socket.hpp" namespace zmq @@ -60,8 +57,9 @@ void plug (zmq::io_thread_t *io_thread_, zmq::session_base_t *session_); void terminate (); - void activate_in (); - void activate_out (); + void restart_input (); + void restart_output (); + void zap_msg_available () {} // i_poll_events interface implementation. void in_event (); @@ -72,6 +70,10 @@ // Unplug the engine from the session. void unplug (); + // Decode received data (inpos, insize) and forward decoded + // messages to the session. + int process_input (v1_decoder_t *decoder); + // PGM is not able to move subscriptions upstream. Thus, drop all // the pending subscriptions. void drop_subscriptions (); @@ -88,7 +90,7 @@ struct peer_info_t { bool joined; - decoder_t *decoder; + v1_decoder_t *decoder; }; struct tsi_comp @@ -115,14 +117,13 @@ // Associated session. zmq::session_base_t *session; - // Most recently used decoder. - decoder_t *mru_decoder; + const pgm_tsi_t *active_tsi; // Number of bytes not consumed by the decoder due to pipe overflow. - size_t pending_bytes; + size_t insize; // Pointer to data still waiting to be processed by the decoder. - unsigned char *pending_ptr; + const unsigned char *inpos; // Poll handle associated with PGM socket. handle_t socket_handle; diff -Nru zeromq3-3.2.4+dfsg/src/pgm_sender.cpp zeromq3-4.0.4/src/pgm_sender.cpp --- zeromq3-3.2.4+dfsg/src/pgm_sender.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pgm_sender.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2010-2011 Miru Limited - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -42,13 +39,17 @@ io_object_t (parent_), has_tx_timer (false), has_rx_timer (false), + session (NULL), encoder (0), + more_flag (false), pgm_socket (false, options_), options (options_), out_buffer (NULL), out_buffer_size (0), write_size (0) { + int rc = msg.init (); + errno_assert (rc == 0); } int zmq::pgm_sender_t::init (bool udp_encapsulation_, const char *network_) @@ -72,7 +73,7 @@ fd_t rdata_notify_fd = retired_fd; fd_t pending_notify_fd = retired_fd; - encoder.set_msg_source (session_); + session = session_; // Fill fds from PGM transport and add them to the poller. pgm_socket.get_sender_fds (&downlink_socket_fd, &uplink_socket_fd, @@ -109,7 +110,7 @@ rm_fd (uplink_handle); rm_fd (rdata_notify_handle); rm_fd (pending_notify_handle); - encoder.set_msg_source (NULL); + session = NULL; } void zmq::pgm_sender_t::terminate () @@ -118,19 +119,22 @@ delete this; } -void zmq::pgm_sender_t::activate_out () +void zmq::pgm_sender_t::restart_output () { set_pollout (handle); out_event (); } -void zmq::pgm_sender_t::activate_in () +void zmq::pgm_sender_t::restart_input () { zmq_assert (false); } zmq::pgm_sender_t::~pgm_sender_t () { + int rc = msg.close (); + errno_assert (rc == 0); + if (out_buffer) { free (out_buffer); out_buffer = NULL; @@ -164,18 +168,31 @@ // the get data function we prevent it from returning its own buffer. unsigned char *bf = out_buffer + sizeof (uint16_t); size_t bfsz = out_buffer_size - sizeof (uint16_t); - int offset = -1; - encoder.get_data (&bf, &bfsz, &offset); + uint16_t offset = 0xffff; + + size_t bytes = encoder.encode (&bf, bfsz); + while (bytes < bfsz) { + if (!more_flag && offset == 0xffff) + offset = static_cast (bytes); + int rc = session->pull_msg (&msg); + if (rc == -1) + break; + more_flag = msg.flags () & msg_t::more; + encoder.load_msg (&msg); + bf = out_buffer + sizeof (uint16_t) + bytes; + bytes += encoder.encode (&bf, bfsz - bytes); + } // If there are no data to write stop polling for output. - if (!bfsz) { + if (bytes == 0) { reset_pollout (handle); return; } + write_size = sizeof (uint16_t) + bytes; + // Put offset information in the buffer. - write_size = bfsz + sizeof (uint16_t); - put_uint16 (out_buffer, offset == -1 ? 0xffff : (uint16_t) offset); + put_uint16 (out_buffer, offset); } if (has_tx_timer) { @@ -187,16 +204,17 @@ size_t nbytes = pgm_socket.send (out_buffer, write_size); // We can write either all data or 0 which means rate limit reached. - if (nbytes == write_size) { + if (nbytes == write_size) write_size = 0; - } else { + else { zmq_assert (nbytes == 0); if (errno == ENOMEM) { const long timeout = pgm_socket.get_tx_timeout (); add_timer (timeout, tx_timer_id); has_tx_timer = true; - } else + } + else errno_assert (errno == EBUSY); } } @@ -207,10 +225,13 @@ if (token == rx_timer_id) { has_rx_timer = false; in_event (); - } else if (token == tx_timer_id) { + } + else + if (token == tx_timer_id) { has_tx_timer = false; out_event (); - } else + } + else zmq_assert (false); } diff -Nru zeromq3-3.2.4+dfsg/src/pgm_sender.hpp zeromq3-4.0.4/src/pgm_sender.hpp --- zeromq3-3.2.4+dfsg/src/pgm_sender.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pgm_sender.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2010-2011 Miru Limited - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -36,7 +33,8 @@ #include "i_engine.hpp" #include "options.hpp" #include "pgm_socket.hpp" -#include "encoder.hpp" +#include "v1_encoder.hpp" +#include "msg.hpp" namespace zmq { @@ -58,8 +56,9 @@ void plug (zmq::io_thread_t *io_thread_, zmq::session_base_t *session_); void terminate (); - void activate_in (); - void activate_out (); + void restart_input (); + void restart_output (); + void zap_msg_available () {} // i_poll_events interface implementation. void in_event (); @@ -78,8 +77,15 @@ bool has_tx_timer; bool has_rx_timer; + session_base_t *session; + // Message encoder. - encoder_t encoder; + v1_encoder_t encoder; + + msg_t msg; + + // Keeps track of message boundaries. + bool more_flag; // PGM socket. pgm_socket_t pgm_socket; diff -Nru zeromq3-3.2.4+dfsg/src/pgm_socket.cpp zeromq3-4.0.4/src/pgm_socket.cpp --- zeromq3-3.2.4+dfsg/src/pgm_socket.cpp 2013-05-01 03:30:36.000000000 +0000 +++ zeromq3-4.0.4/src/pgm_socket.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2010-2011 Miru Limited - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -239,7 +236,8 @@ !pgm_setsockopt (sock, IPPROTO_PGM, PGM_NAK_NCF_RETRIES, &nak_ncf_retries, sizeof (nak_ncf_retries))) goto err_abort; - } else { + } + else { const int send_only = 1, max_rte = (int) ((options.rate * 1000) / 8), txw_max_tpdu = (int) pgm_max_tpdu, @@ -342,7 +340,7 @@ const int dscp = 0x2e << 2; if (AF_INET6 != sa_family) pgm_setsockopt (sock, IPPROTO_PGM, PGM_TOS, - &dscp, sizeof (dscp)); + &dscp, sizeof (dscp)); const int nonblocking = 1; if (!pgm_setsockopt (sock, IPPROTO_PGM, PGM_NOBLOCK, @@ -474,7 +472,8 @@ if (nbytes > 0) { zmq_assert (status == PGM_IO_STATUS_NORMAL); zmq_assert (nbytes == data_len_); - } else { + } + else { zmq_assert (status == PGM_IO_STATUS_RATE_LIMITED || status == PGM_IO_STATUS_WOULD_BLOCK); @@ -678,7 +677,8 @@ if (status == PGM_IO_STATUS_TIMER_PENDING) errno = EBUSY; - else if (status == PGM_IO_STATUS_RATE_LIMITED) + else + if (status == PGM_IO_STATUS_RATE_LIMITED) errno = ENOMEM; else errno = EAGAIN; diff -Nru zeromq3-3.2.4+dfsg/src/pgm_socket.hpp zeromq3-4.0.4/src/pgm_socket.hpp --- zeromq3-3.2.4+dfsg/src/pgm_socket.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pgm_socket.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2010-2011 Miru Limited - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/pipe.cpp zeromq3-4.0.4/src/pipe.cpp --- zeromq3-3.2.4+dfsg/src/pipe.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pipe.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -26,22 +23,37 @@ #include "pipe.hpp" #include "err.hpp" +#include "ypipe.hpp" +#include "ypipe_conflate.hpp" + int zmq::pipepair (class object_t *parents_ [2], class pipe_t* pipes_ [2], - int hwms_ [2], bool delays_ [2]) + int hwms_ [2], bool conflate_ [2]) { // Creates two pipe objects. These objects are connected by two ypipes, // each to pass messages in one direction. - pipe_t::upipe_t *upipe1 = new (std::nothrow) pipe_t::upipe_t (); + typedef ypipe_t upipe_normal_t; + typedef ypipe_conflate_t upipe_conflate_t; + + pipe_t::upipe_t *upipe1; + if(conflate_ [0]) + upipe1 = new (std::nothrow) upipe_conflate_t (); + else + upipe1 = new (std::nothrow) upipe_normal_t (); alloc_assert (upipe1); - pipe_t::upipe_t *upipe2 = new (std::nothrow) pipe_t::upipe_t (); + + pipe_t::upipe_t *upipe2; + if(conflate_ [1]) + upipe2 = new (std::nothrow) upipe_conflate_t (); + else + upipe2 = new (std::nothrow) upipe_normal_t (); alloc_assert (upipe2); pipes_ [0] = new (std::nothrow) pipe_t (parents_ [0], upipe1, upipe2, - hwms_ [1], hwms_ [0], delays_ [0]); + hwms_ [1], hwms_ [0], conflate_ [0]); alloc_assert (pipes_ [0]); pipes_ [1] = new (std::nothrow) pipe_t (parents_ [1], upipe2, upipe1, - hwms_ [0], hwms_ [1], delays_ [1]); + hwms_ [0], hwms_ [1], conflate_ [1]); alloc_assert (pipes_ [1]); pipes_ [0]->set_peer (pipes_ [1]); @@ -51,7 +63,7 @@ } zmq::pipe_t::pipe_t (object_t *parent_, upipe_t *inpipe_, upipe_t *outpipe_, - int inhwm_, int outhwm_, bool delay_) : + int inhwm_, int outhwm_, bool conflate_) : object_t (parent_), inpipe (inpipe_), outpipe (outpipe_), @@ -65,7 +77,8 @@ peer (NULL), sink (NULL), state (active), - delay (delay_) + delay (true), + conflate (conflate_) { } @@ -99,7 +112,9 @@ bool zmq::pipe_t::check_read () { - if (unlikely (!in_active || (state != active && state != pending))) + if (unlikely (!in_active)) + return false; + if (unlikely (state != active && state != waiting_for_delimiter)) return false; // Check if there's an item in the pipe. @@ -114,7 +129,7 @@ msg_t msg; bool ok = inpipe->read (&msg); zmq_assert (ok); - delimit (); + process_delimiter (); return false; } @@ -123,7 +138,9 @@ bool zmq::pipe_t::read (msg_t *msg_) { - if (unlikely (!in_active || (state != active && state != pending))) + if (unlikely (!in_active)) + return false; + if (unlikely (state != active && state != waiting_for_delimiter)) return false; if (!inpipe->read (msg_)) { @@ -133,7 +150,7 @@ // If delimiter was read, start termination process of the pipe. if (msg_->is_delimiter ()) { - delimit (); + process_delimiter (); return false; } @@ -179,18 +196,18 @@ // Remove incomplete message from the outbound pipe. msg_t msg; if (outpipe) { - while (outpipe->unwrite (&msg)) { - zmq_assert (msg.flags () & msg_t::more); - int rc = msg.close (); - errno_assert (rc == 0); - } + while (outpipe->unwrite (&msg)) { + zmq_assert (msg.flags () & msg_t::more); + int rc = msg.close (); + errno_assert (rc == 0); + } } } void zmq::pipe_t::flush () { // The peer does not exist anymore at this point. - if (state == terminating) + if (state == term_ack_sent) return; if (outpipe && !outpipe->flush ()) @@ -199,7 +216,7 @@ void zmq::pipe_t::process_activate_read () { - if (!in_active && (state == active || state == pending)) { + if (!in_active && (state == active || state == waiting_for_delimiter)) { in_active = true; sink->read_activated (this); } @@ -243,24 +260,24 @@ { // This is the simple case of peer-induced termination. If there are no // more pending messages to read, or if the pipe was configured to drop - // pending messages, we can move directly to the terminating state. - // Otherwise we'll hang up in pending state till all the pending messages - // are sent. + // pending messages, we can move directly to the term_ack_sent state. + // Otherwise we'll hang up in waiting_for_delimiter state till all + // pending messages are read. if (state == active) { if (!delay) { - state = terminating; + state = term_ack_sent; outpipe = NULL; send_pipe_term_ack (peer); } else - state = pending; + state = waiting_for_delimiter; return; } // Delimiter happened to arrive before the term command. Now we have the - // term command as well, so we can move straight to terminating state. - if (state == delimited) { - state = terminating; + // term command as well, so we can move straight to term_ack_sent state. + if (state == delimiter_received) { + state = term_ack_sent; outpipe = NULL; send_pipe_term_ack (peer); return; @@ -269,8 +286,8 @@ // This is the case where both ends of the pipe are closed in parallel. // We simply reply to the request by ack and continue waiting for our // own ack. - if (state == terminated) { - state = double_terminated; + if (state == term_req_sent1) { + state = term_req_sent2; outpipe = NULL; send_pipe_term_ack (peer); return; @@ -284,74 +301,88 @@ { // Notify the user that all the references to the pipe should be dropped. zmq_assert (sink); - sink->terminated (this); + sink->pipe_terminated (this); - // In terminating and double_terminated states there's nothing to do. - // Simply deallocate the pipe. In terminated state we have to ack the - // peer before deallocating this side of the pipe. All the other states - // are invalid. - if (state == terminated) { + // In term_ack_sent and term_req_sent2 states there's nothing to do. + // Simply deallocate the pipe. In term_req_sent1 state we have to ack + // the peer before deallocating this side of the pipe. + // All the other states are invalid. + if (state == term_req_sent1) { outpipe = NULL; send_pipe_term_ack (peer); } else - zmq_assert (state == terminating || state == double_terminated); + zmq_assert (state == term_ack_sent || state == term_req_sent2); // We'll deallocate the inbound pipe, the peer will deallocate the outbound // pipe (which is an inbound pipe from its point of view). // First, delete all the unread messages in the pipe. We have to do it by // hand because msg_t doesn't have automatic destructor. Then deallocate // the ypipe itself. - msg_t msg; - while (inpipe->read (&msg)) { - int rc = msg.close (); - errno_assert (rc == 0); + + if (!conflate) { + msg_t msg; + while (inpipe->read (&msg)) { + int rc = msg.close (); + errno_assert (rc == 0); + } } + delete inpipe; // Deallocate the pipe object delete this; } +void zmq::pipe_t::set_nodelay () +{ + this->delay = false; +} + void zmq::pipe_t::terminate (bool delay_) { // Overload the value specified at pipe creation. delay = delay_; // If terminate was already called, we can ignore the duplicit invocation. - if (state == terminated || state == double_terminated) + if (state == term_req_sent1 || state == term_req_sent2) return; // If the pipe is in the final phase of async termination, it's going to // closed anyway. No need to do anything special here. - else if (state == terminating) + else + if (state == term_ack_sent) return; // The simple sync termination case. Ask the peer to terminate and wait // for the ack. - else if (state == active) { + else + if (state == active) { send_pipe_term (peer); - state = terminated; + state = term_req_sent1; } // There are still pending messages available, but the user calls // 'terminate'. We can act as if all the pending messages were read. - else if (state == pending && !delay) { + else + if (state == waiting_for_delimiter && !delay) { outpipe = NULL; send_pipe_term_ack (peer); - state = terminating; + state = term_ack_sent; } // If there are pending messages still availabe, do nothing. - else if (state == pending) { + else + if (state == waiting_for_delimiter) { } // We've already got delimiter, but not term command yet. We can ignore // the delimiter and ack synchronously terminate as if we were in // active state. - else if (state == delimited) { + else + if (state == delimiter_received) { send_pipe_term (peer); - state = terminated; + state = term_req_sent1; } // There are no other states. @@ -363,15 +394,15 @@ if (outpipe) { - // Drop any unfinished outbound messages. - rollback (); + // Drop any unfinished outbound messages. + rollback (); - // Write the delimiter into the pipe. Note that watermarks are not - // checked; thus the delimiter can be written even when the pipe is full. - msg_t msg; - msg.init_delimiter (); - outpipe->write (msg, false); - flush (); + // Write the delimiter into the pipe. Note that watermarks are not + // checked; thus the delimiter can be written even when the pipe is full. + msg_t msg; + msg.init_delimiter (); + outpipe->write (msg, false); + flush (); } } @@ -408,22 +439,18 @@ return result; } -void zmq::pipe_t::delimit () +void zmq::pipe_t::process_delimiter () { - if (state == active) { - state = delimited; - return; - } + zmq_assert (state == active + || state == waiting_for_delimiter); - if (state == pending) { + if (state == active) + state = delimiter_received; + else { outpipe = NULL; send_pipe_term_ack (peer); - state = terminating; - return; + state = term_ack_sent; } - - // Delimiter in any other state is invalid. - zmq_assert (false); } void zmq::pipe_t::hiccup () @@ -437,7 +464,13 @@ inpipe = NULL; // Create new inpipe. - inpipe = new (std::nothrow) pipe_t::upipe_t (); + if (conflate) + inpipe = new (std::nothrow) + ypipe_conflate_t (); + else + inpipe = new (std::nothrow) + ypipe_t (); + alloc_assert (inpipe); in_active = true; @@ -445,3 +478,8 @@ send_hiccup (peer, (void*) inpipe); } +void zmq::pipe_t::set_hwms (int inhwm_, int outhwm_) +{ + lwm = compute_lwm (inhwm_); + hwm = outhwm_; +} diff -Nru zeromq3-3.2.4+dfsg/src/pipe.hpp zeromq3-4.0.4/src/pipe.hpp --- zeromq3-3.2.4+dfsg/src/pipe.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pipe.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -24,7 +21,7 @@ #define __ZMQ_PIPE_HPP_INCLUDED__ #include "msg.hpp" -#include "ypipe.hpp" +#include "ypipe_base.hpp" #include "config.hpp" #include "object.hpp" #include "stdint.hpp" @@ -43,8 +40,10 @@ // Delay specifies how the pipe behaves when the peer terminates. If true // pipe receives all the pending messages before terminating, otherwise it // terminates straight away. + // If conflate is true, only the most recently arrived message could be + // read (older messages are discarded) int pipepair (zmq::object_t *parents_ [2], zmq::pipe_t* pipes_ [2], - int hwms_ [2], bool delays_ [2]); + int hwms_ [2], bool conflate_ [2]); struct i_pipe_events { @@ -53,7 +52,7 @@ virtual void read_activated (zmq::pipe_t *pipe_) = 0; virtual void write_activated (zmq::pipe_t *pipe_) = 0; virtual void hiccuped (zmq::pipe_t *pipe_) = 0; - virtual void terminated (zmq::pipe_t *pipe_) = 0; + virtual void pipe_terminated (zmq::pipe_t *pipe_) = 0; }; // Note that pipe can be stored in three different arrays. @@ -67,9 +66,9 @@ public array_item_t <3> { // This allows pipepair to create pipe objects. - friend int pipepair (zmq::object_t *parents_ [2], - zmq::pipe_t* pipes_ [2], int hwms_ [2], bool delays_ [2]); - + friend int pipepair (zmq::object_t *parents_ [2], zmq::pipe_t* pipes_ [2], + int hwms_ [2], bool conflate_ [2]); + public: // Specifies the object to send events to. @@ -103,6 +102,9 @@ // all the messages on the fly. Causes 'hiccuped' event to be generated // in the peer. void hiccup (); + + // Ensure the pipe wont block on receiving pipe_term. + void set_nodelay (); // Ask pipe to terminate. The termination will happen asynchronously // and user will be notified about actual deallocation by 'terminated' @@ -110,10 +112,13 @@ // before actual shutdown. void terminate (bool delay_); + // set the high water marks. + void set_hwms (int inhwm_, int outhwm_); + private: // Type of the underlying lock-free pipe. - typedef ypipe_t upipe_t; + typedef ypipe_base_t upipe_t; // Command handlers. void process_activate_read (); @@ -123,12 +128,12 @@ void process_pipe_term_ack (); // Handler for delimiter read from the pipe. - void delimit (); + void process_delimiter (); // Constructor is private. Pipe can only be created using // pipepair function. pipe_t (object_t *parent_, upipe_t *inpipe_, upipe_t *outpipe_, - int inhwm_, int outhwm_, bool delay_); + int inhwm_, int outhwm_, bool conflate_); // Pipepair uses this function to let us know about // the peer pipe object. @@ -165,22 +170,24 @@ // Sink to send events to. i_pipe_events *sink; - // State of the pipe endpoint. Active is common state before any - // termination begins. Delimited means that delimiter was read from - // pipe before term command was received. Pending means that term - // command was already received from the peer but there are still - // pending messages to read. Terminating means that all pending - // messages were already read and all we are waiting for is ack from - // the peer. Terminated means that 'terminate' was explicitly called - // by the user. Double_terminated means that user called 'terminate' - // and then we've got term command from the peer as well. + // States of the pipe endpoint: + // active: common state before any termination begins, + // delimiter_received: delimiter was read from pipe before + // term command was received, + // waiting_fo_delimiter: term command was already received + // from the peer but there are still pending messages to read, + // term_ack_sent: all pending messages were already read and + // all we are waiting for is ack from the peer, + // term_req_sent1: 'terminate' was explicitly called by the user, + // term_req_sent2: user called 'terminate' and then we've got + // term command from the peer as well. enum { active, - delimited, - pending, - terminating, - terminated, - double_terminated + delimiter_received, + waiting_for_delimiter, + term_ack_sent, + term_req_sent1, + term_req_sent2 } state; // If true, we receive all the pending inbound messages before @@ -197,6 +204,8 @@ // Computes appropriate low watermark from the given high watermark. static int compute_lwm (int hwm_); + bool conflate; + // Disable copying. pipe_t (const pipe_t&); const pipe_t &operator = (const pipe_t&); diff -Nru zeromq3-3.2.4+dfsg/src/plain_mechanism.cpp zeromq3-4.0.4/src/plain_mechanism.cpp --- zeromq3-3.2.4+dfsg/src/plain_mechanism.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/plain_mechanism.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,482 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "platform.hpp" +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include +#include + +#include "msg.hpp" +#include "session_base.hpp" +#include "err.hpp" +#include "plain_mechanism.hpp" +#include "wire.hpp" + +zmq::plain_mechanism_t::plain_mechanism_t (session_base_t *session_, + const std::string &peer_address_, + const options_t &options_) : + mechanism_t (options_), + session (session_), + peer_address (peer_address_), + expecting_zap_reply (false), + state (options.as_server? waiting_for_hello: sending_hello) +{ +} + +zmq::plain_mechanism_t::~plain_mechanism_t () +{ +} + +int zmq::plain_mechanism_t::next_handshake_command (msg_t *msg_) +{ + int rc = 0; + + switch (state) { + case sending_hello: + rc = produce_hello (msg_); + if (rc == 0) + state = waiting_for_welcome; + break; + case sending_welcome: + rc = produce_welcome (msg_); + if (rc == 0) + state = waiting_for_initiate; + break; + case sending_initiate: + rc = produce_initiate (msg_); + if (rc == 0) + state = waiting_for_ready; + break; + case sending_ready: + rc = produce_ready (msg_); + if (rc == 0) + state = ready; + break; + default: + errno = EAGAIN; + rc = -1; + } + return rc; +} + +int zmq::plain_mechanism_t::process_handshake_command (msg_t *msg_) +{ + int rc = 0; + + switch (state) { + case waiting_for_hello: + rc = process_hello (msg_); + if (rc == 0) + state = expecting_zap_reply? waiting_for_zap_reply: sending_welcome; + break; + case waiting_for_welcome: + rc = process_welcome (msg_); + if (rc == 0) + state = sending_initiate; + break; + case waiting_for_initiate: + rc = process_initiate (msg_); + if (rc == 0) + state = sending_ready; + break; + case waiting_for_ready: + rc = process_ready (msg_); + if (rc == 0) + state = ready; + break; + default: + errno = EPROTO; + rc = -1; + break; + } + if (rc == 0) { + rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + } + return rc; +} + +bool zmq::plain_mechanism_t::is_handshake_complete () const +{ + return state == ready; +} + +int zmq::plain_mechanism_t::zap_msg_available () +{ + if (state != waiting_for_zap_reply) { + errno = EFSM; + return -1; + } + const int rc = receive_and_process_zap_reply (); + if (rc == 0) + state = sending_welcome; + return rc; +} + +int zmq::plain_mechanism_t::produce_hello (msg_t *msg_) const +{ + const std::string username = options.plain_username; + zmq_assert (username.length () < 256); + + const std::string password = options.plain_password; + zmq_assert (password.length () < 256); + + const size_t command_size = 6 + 1 + username.length () + + 1 + password.length (); + + const int rc = msg_->init_size (command_size); + errno_assert (rc == 0); + + unsigned char *ptr = static_cast (msg_->data ()); + memcpy (ptr, "\x05HELLO", 6); + ptr += 6; + + *ptr++ = static_cast (username.length ()); + memcpy (ptr, username.c_str (), username.length ()); + ptr += username.length (); + + *ptr++ = static_cast (password.length ()); + memcpy (ptr, password.c_str (), password.length ()); + ptr += password.length (); + + return 0; +} + + +int zmq::plain_mechanism_t::process_hello (msg_t *msg_) +{ + const unsigned char *ptr = static_cast (msg_->data ()); + size_t bytes_left = msg_->size (); + + if (bytes_left < 6 || memcmp (ptr, "\x05HELLO", 6)) { + errno = EPROTO; + return -1; + } + ptr += 6; + bytes_left -= 6; + + if (bytes_left < 1) { + errno = EPROTO; + return -1; + } + const size_t username_length = static_cast (*ptr++); + bytes_left -= 1; + + if (bytes_left < username_length) { + errno = EPROTO; + return -1; + } + const std::string username = std::string ((char *) ptr, username_length); + ptr += username_length; + bytes_left -= username_length; + + if (bytes_left < 1) { + errno = EPROTO; + return -1; + } + const size_t password_length = static_cast (*ptr++); + bytes_left -= 1; + + if (bytes_left < password_length) { + errno = EPROTO; + return -1; + } + const std::string password = std::string ((char *) ptr, password_length); + ptr += password_length; + bytes_left -= password_length; + + if (bytes_left > 0) { + errno = EPROTO; + return -1; + } + + // Use ZAP protocol (RFC 27) to authenticate the user. + int rc = session->zap_connect (); + if (rc == 0) { + send_zap_request (username, password); + rc = receive_and_process_zap_reply (); + if (rc != 0) { + if (errno != EAGAIN) + return -1; + expecting_zap_reply = true; + } + } + + return 0; +} + +int zmq::plain_mechanism_t::produce_welcome (msg_t *msg_) const +{ + const int rc = msg_->init_size (8); + errno_assert (rc == 0); + memcpy (msg_->data (), "\x07WELCOME", 8); + return 0; +} + +int zmq::plain_mechanism_t::process_welcome (msg_t *msg_) +{ + const unsigned char *ptr = static_cast (msg_->data ()); + size_t bytes_left = msg_->size (); + + if (bytes_left != 8 || memcmp (ptr, "\x07WELCOME", 8)) { + errno = EPROTO; + return -1; + } + return 0; +} + +int zmq::plain_mechanism_t::produce_initiate (msg_t *msg_) const +{ + unsigned char * const command_buffer = (unsigned char *) malloc (512); + alloc_assert (command_buffer); + + unsigned char *ptr = command_buffer; + + // Add mechanism string + memcpy (ptr, "\x08INITIATE", 9); + ptr += 9; + + // Add socket type property + const char *socket_type = socket_type_string (options.type); + ptr += add_property (ptr, "Socket-Type", socket_type, strlen (socket_type)); + + // Add identity property + if (options.type == ZMQ_REQ + || options.type == ZMQ_DEALER + || options.type == ZMQ_ROUTER) { + ptr += add_property (ptr, "Identity", + options.identity, options.identity_size); + } + + const size_t command_size = ptr - command_buffer; + const int rc = msg_->init_size (command_size); + errno_assert (rc == 0); + memcpy (msg_->data (), command_buffer, command_size); + free (command_buffer); + + return 0; +} + +int zmq::plain_mechanism_t::process_initiate (msg_t *msg_) +{ + const unsigned char *ptr = static_cast (msg_->data ()); + size_t bytes_left = msg_->size (); + + if (bytes_left < 9 || memcmp (ptr, "\x08INITIATE", 9)) { + errno = EPROTO; + return -1; + } + ptr += 9; + bytes_left -= 9; + return parse_metadata (ptr, bytes_left); +} + +int zmq::plain_mechanism_t::produce_ready (msg_t *msg_) const +{ + unsigned char * const command_buffer = (unsigned char *) malloc (512); + alloc_assert (command_buffer); + + unsigned char *ptr = command_buffer; + + // Add command name + memcpy (ptr, "\x05READY", 6); + ptr += 6; + + // Add socket type property + const char *socket_type = socket_type_string (options.type); + ptr += add_property (ptr, "Socket-Type", socket_type, strlen (socket_type)); + + // Add identity property + if (options.type == ZMQ_REQ + || options.type == ZMQ_DEALER + || options.type == ZMQ_ROUTER) { + ptr += add_property (ptr, "Identity", + options.identity, options.identity_size); + } + + const size_t command_size = ptr - command_buffer; + const int rc = msg_->init_size (command_size); + errno_assert (rc == 0); + memcpy (msg_->data (), command_buffer, command_size); + free (command_buffer); + + return 0; +} + +int zmq::plain_mechanism_t::process_ready (msg_t *msg_) +{ + const unsigned char *ptr = static_cast (msg_->data ()); + size_t bytes_left = msg_->size (); + + if (bytes_left < 6 || memcmp (ptr, "\x05READY", 6)) { + errno = EPROTO; + return -1; + } + ptr += 6; + bytes_left -= 6; + return parse_metadata (ptr, bytes_left); +} + +void zmq::plain_mechanism_t::send_zap_request (const std::string &username, + const std::string &password) +{ + int rc; + msg_t msg; + + // Address delimiter frame + rc = msg.init (); + errno_assert (rc == 0); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Version frame + rc = msg.init_size (3); + errno_assert (rc == 0); + memcpy (msg.data (), "1.0", 3); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Request id frame + rc = msg.init_size (1); + errno_assert (rc == 0); + memcpy (msg.data (), "1", 1); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Domain frame + rc = msg.init_size (options.zap_domain.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), options.zap_domain.c_str (), options.zap_domain.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Address frame + rc = msg.init_size (peer_address.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), peer_address.c_str (), peer_address.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Identity frame + rc = msg.init_size (options.identity_size); + errno_assert (rc == 0); + memcpy (msg.data (), options.identity, options.identity_size); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Mechanism frame + rc = msg.init_size (5); + errno_assert (rc == 0); + memcpy (msg.data (), "PLAIN", 5); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Username frame + rc = msg.init_size (username.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), username.c_str (), username.length ()); + msg.set_flags (msg_t::more); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); + + // Password frame + rc = msg.init_size (password.length ()); + errno_assert (rc == 0); + memcpy (msg.data (), password.c_str (), password.length ()); + rc = session->write_zap_msg (&msg); + errno_assert (rc == 0); +} + +int zmq::plain_mechanism_t::receive_and_process_zap_reply () +{ + int rc = 0; + msg_t msg [7]; // ZAP reply consists of 7 frames + + // Initialize all reply frames + for (int i = 0; i < 7; i++) { + rc = msg [i].init (); + errno_assert (rc == 0); + } + + for (int i = 0; i < 7; i++) { + rc = session->read_zap_msg (&msg [i]); + if (rc == -1) + break; + if ((msg [i].flags () & msg_t::more) == (i < 6? 0: msg_t::more)) { + errno = EPROTO; + rc = -1; + break; + } + } + + if (rc != 0) + goto error; + + // Address delimiter frame + if (msg [0].size () > 0) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Version frame + if (msg [1].size () != 3 || memcmp (msg [1].data (), "1.0", 3)) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Request id frame + if (msg [2].size () != 1 || memcmp (msg [2].data (), "1", 1)) { + rc = -1; + errno = EPROTO; + goto error; + } + + // Status code frame + if (msg [3].size () != 3 || memcmp (msg [3].data (), "200", 3)) { + rc = -1; + errno = EACCES; + goto error; + } + + // Process metadata frame + rc = parse_metadata (static_cast (msg [6].data ()), + msg [6].size ()); + +error: + for (int i = 0; i < 7; i++) { + const int rc2 = msg [i].close (); + errno_assert (rc2 == 0); + } + + return rc; +} diff -Nru zeromq3-3.2.4+dfsg/src/plain_mechanism.hpp zeromq3-4.0.4/src/plain_mechanism.hpp --- zeromq3-3.2.4+dfsg/src/plain_mechanism.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/plain_mechanism.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,88 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_PLAIN_MECHANISM_HPP_INCLUDED__ +#define __ZMQ_PLAIN_MECHANISM_HPP_INCLUDED__ + +#include "mechanism.hpp" +#include "options.hpp" + +namespace zmq +{ + + class msg_t; + class session_base_t; + + class plain_mechanism_t : public mechanism_t + { + public: + + plain_mechanism_t (session_base_t *session_, + const std::string &peer_address_, + const options_t &options_); + virtual ~plain_mechanism_t (); + + // mechanism implementation + virtual int next_handshake_command (msg_t *msg_); + virtual int process_handshake_command (msg_t *msg_); + virtual int zap_msg_available (); + virtual bool is_handshake_complete () const; + + private: + + enum state_t { + sending_hello, + waiting_for_hello, + sending_welcome, + waiting_for_welcome, + sending_initiate, + waiting_for_initiate, + sending_ready, + waiting_for_ready, + waiting_for_zap_reply, + ready + }; + + session_base_t * const session; + + const std::string peer_address; + + // True iff we are awaiting reply from ZAP reply. + bool expecting_zap_reply; + + state_t state; + + int produce_hello (msg_t *msg_) const; + int produce_welcome (msg_t *msg_) const; + int produce_initiate (msg_t *msg_) const; + int produce_ready (msg_t *msg_) const; + + int process_hello (msg_t *msg_); + int process_welcome (msg_t *msg); + int process_ready (msg_t *msg_); + int process_initiate (msg_t *msg_); + + void send_zap_request (const std::string &username, + const std::string &password); + int receive_and_process_zap_reply (); + }; + +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/platform.hpp.in zeromq3-4.0.4/src/platform.hpp.in --- zeromq3-3.2.4+dfsg/src/platform.hpp.in 2013-09-20 09:18:58.000000000 +0000 +++ zeromq3-4.0.4/src/platform.hpp.in 2014-03-10 21:42:39.000000000 +0000 @@ -1,4 +1,4 @@ -/* src/platform.hpp.in. Generated from configure.in by autoheader. */ +/* src/platform.hpp.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_ALLOCA_H @@ -15,6 +15,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + /* Define to 1 if you have the `freeifaddrs' function. */ #undef HAVE_FREEIFADDRS @@ -51,6 +54,9 @@ /* Define to 1 if you have the `socket' library (-lsocket). */ #undef HAVE_LIBSOCKET +/* Define to 1 if you have the `sodium' library (-lsodium). */ +#undef HAVE_LIBSODIUM + /* Define to 1 if you have the `ws2_32' library (-lws2_32). */ #undef HAVE_LIBWS2_32 diff -Nru zeromq3-3.2.4+dfsg/src/poll.cpp zeromq3-4.0.4/src/poll.cpp --- zeromq3-3.2.4+dfsg/src/poll.cpp 2012-11-13 12:39:41.000000000 +0000 +++ zeromq3-4.0.4/src/poll.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -116,6 +114,11 @@ stopping = true; } +int zmq::poll_t::max_fds () +{ + return -1; +} + void zmq::poll_t::loop () { while (!stopping) { diff -Nru zeromq3-3.2.4+dfsg/src/poller_base.cpp zeromq3-4.0.4/src/poller_base.cpp --- zeromq3-3.2.4+dfsg/src/poller_base.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/poller_base.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -41,7 +40,8 @@ { if (amount_ > 0) load.add (amount_); - else if (amount_ < 0) + else + if (amount_ < 0) load.sub (-amount_); } diff -Nru zeromq3-3.2.4+dfsg/src/poller_base.hpp zeromq3-4.0.4/src/poller_base.hpp --- zeromq3-3.2.4+dfsg/src/poller_base.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/poller_base.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/poller.hpp zeromq3-4.0.4/src/poller.hpp --- zeromq3-3.2.4+dfsg/src/poller.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/poller.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/poll.hpp zeromq3-4.0.4/src/poll.hpp --- zeromq3-3.2.4+dfsg/src/poll.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/poll.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -61,6 +59,8 @@ void start (); void stop (); + static int max_fds (); + private: // Main worker thread routine. diff -Nru zeromq3-3.2.4+dfsg/src/precompiled.cpp zeromq3-4.0.4/src/precompiled.cpp --- zeromq3-3.2.4+dfsg/src/precompiled.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/precompiled.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/precompiled.hpp zeromq3-4.0.4/src/precompiled.hpp --- zeromq3-3.2.4+dfsg/src/precompiled.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/precompiled.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/proxy.cpp zeromq3-4.0.4/src/proxy.cpp --- zeromq3-3.2.4+dfsg/src/proxy.cpp 2012-10-25 09:18:39.000000000 +0000 +++ zeromq3-4.0.4/src/proxy.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/proxy.hpp zeromq3-4.0.4/src/proxy.hpp --- zeromq3-3.2.4+dfsg/src/proxy.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/proxy.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/pub.cpp zeromq3-4.0.4/src/pub.cpp --- zeromq3-3.2.4+dfsg/src/pub.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pub.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -32,7 +30,7 @@ { } -int zmq::pub_t::xrecv (class msg_t *, int) +int zmq::pub_t::xrecv (class msg_t *) { // Messages cannot be received from PUB socket. errno = ENOTSUP; @@ -43,15 +41,3 @@ { return false; } - -zmq::pub_session_t::pub_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - xpub_session_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::pub_session_t::~pub_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/pub.hpp zeromq3-4.0.4/src/pub.hpp --- zeromq3-3.2.4+dfsg/src/pub.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pub.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -40,7 +38,7 @@ ~pub_t (); // Implementations of virtual functions from socket_base_t. - int xrecv (zmq::msg_t *msg_, int flags_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); private: @@ -49,21 +47,6 @@ const pub_t &operator = (const pub_t&); }; - class pub_session_t : public xpub_session_t - { - public: - - pub_session_t (zmq::io_thread_t *io_thread_, bool connect_, - zmq::socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~pub_session_t (); - - private: - - pub_session_t (const pub_session_t&); - const pub_session_t &operator = (const pub_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/pull.cpp zeromq3-4.0.4/src/pull.cpp --- zeromq3-3.2.4+dfsg/src/pull.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pull.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2010 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -34,10 +32,10 @@ { } -void zmq::pull_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::pull_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { - // icanhasall_ is unused - (void)icanhasall_; + // subscribe_to_all_ is unused + (void)subscribe_to_all_; zmq_assert (pipe_); fq.attach (pipe_); @@ -48,16 +46,13 @@ fq.activated (pipe_); } -void zmq::pull_t::xterminated (pipe_t *pipe_) +void zmq::pull_t::xpipe_terminated (pipe_t *pipe_) { - fq.terminated (pipe_); + fq.pipe_terminated (pipe_); } -int zmq::pull_t::xrecv (msg_t *msg_, int flags_) +int zmq::pull_t::xrecv (msg_t *msg_) { - // flags_ is unused - (void)flags_; - return fq.recv (msg_); } @@ -65,15 +60,3 @@ { return fq.has_in (); } - -zmq::pull_session_t::pull_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::pull_session_t::~pull_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/pull.hpp zeromq3-4.0.4/src/pull.hpp --- zeromq3-3.2.4+dfsg/src/pull.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/pull.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2010 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -45,11 +43,11 @@ protected: // Overloads of functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_); - int xrecv (zmq::msg_t *msg_, int flags_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); void xread_activated (zmq::pipe_t *pipe_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); private: @@ -61,21 +59,6 @@ }; - class pull_session_t : public session_base_t - { - public: - - pull_session_t (zmq::io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~pull_session_t (); - - private: - - pull_session_t (const pull_session_t&); - const pull_session_t &operator = (const pull_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/push.cpp zeromq3-4.0.4/src/push.cpp --- zeromq3-3.2.4+dfsg/src/push.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/push.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2010 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -34,10 +32,10 @@ { } -void zmq::push_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::push_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { - // icanhasall_ is unused - (void)icanhasall_; + // subscribe_to_all_ is unused + (void)subscribe_to_all_; zmq_assert (pipe_); lb.attach (pipe_); @@ -48,29 +46,17 @@ lb.activated (pipe_); } -void zmq::push_t::xterminated (pipe_t *pipe_) +void zmq::push_t::xpipe_terminated (pipe_t *pipe_) { - lb.terminated (pipe_); + lb.pipe_terminated (pipe_); } -int zmq::push_t::xsend (msg_t *msg_, int flags_) +int zmq::push_t::xsend (msg_t *msg_) { - return lb.send (msg_, flags_); + return lb.send (msg_); } bool zmq::push_t::xhas_out () { return lb.has_out (); } - -zmq::push_session_t::push_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::push_session_t::~push_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/push.hpp zeromq3-4.0.4/src/push.hpp --- zeromq3-3.2.4+dfsg/src/push.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/push.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2010 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -45,11 +43,11 @@ protected: // Overloads of functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_); - int xsend (zmq::msg_t *msg_, int flags_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); + int xsend (zmq::msg_t *msg_); bool xhas_out (); void xwrite_activated (zmq::pipe_t *pipe_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); private: @@ -60,21 +58,6 @@ const push_t &operator = (const push_t&); }; - class push_session_t : public session_base_t - { - public: - - push_session_t (zmq::io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~push_session_t (); - - private: - - push_session_t (const push_session_t&); - const push_session_t &operator = (const push_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/random.cpp zeromq3-4.0.4/src/random.cpp --- zeromq3-3.2.4+dfsg/src/random.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/random.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/random.hpp zeromq3-4.0.4/src/random.hpp --- zeromq3-3.2.4+dfsg/src/random.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/random.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/raw_decoder.cpp zeromq3-4.0.4/src/raw_decoder.cpp --- zeromq3-3.2.4+dfsg/src/raw_decoder.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/raw_decoder.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,63 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include +#include + +#include "platform.hpp" +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include "raw_decoder.hpp" +#include "err.hpp" + +zmq::raw_decoder_t::raw_decoder_t (size_t bufsize_) : + bufsize (bufsize_) +{ + int rc = in_progress.init (); + errno_assert (rc == 0); + + buffer = (unsigned char *) malloc (bufsize); + alloc_assert (buffer); +} + +zmq::raw_decoder_t::~raw_decoder_t () +{ + int rc = in_progress.close (); + errno_assert (rc == 0); + + free (buffer); +} + +void zmq::raw_decoder_t::get_buffer (unsigned char **data_, size_t *size_) +{ + *data_ = buffer; + *size_ = bufsize; +} + +int zmq::raw_decoder_t::decode (const uint8_t *data_, size_t size_, + size_t &bytes_used_) +{ + int rc = in_progress.init_size (size_); + errno_assert (rc != -1); + memcpy (in_progress.data (), data_, size_); + bytes_used_ = size_; + return 1; +} diff -Nru zeromq3-3.2.4+dfsg/src/raw_decoder.hpp zeromq3-4.0.4/src/raw_decoder.hpp --- zeromq3-3.2.4+dfsg/src/raw_decoder.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/raw_decoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,66 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_RAW_DECODER_HPP_INCLUDED__ +#define __ZMQ_RAW_DECODER_HPP_INCLUDED__ + +#include "err.hpp" +#include "msg.hpp" +#include "i_decoder.hpp" +#include "stdint.hpp" + +namespace zmq +{ + + // Decoder for 0MQ v1 framing protocol. Converts data stream into messages. + + class raw_decoder_t : public i_decoder + { + public: + + raw_decoder_t (size_t bufsize_); + virtual ~raw_decoder_t (); + + // i_decoder interface. + + virtual void get_buffer (unsigned char **data_, size_t *size_); + + virtual int decode (const unsigned char *data_, size_t size_, + size_t &processed); + + virtual msg_t *msg () { return &in_progress; } + + + private: + + + msg_t in_progress; + + const int64_t bufsize; + + unsigned char *buffer; + + raw_decoder_t (const raw_decoder_t&); + void operator = (const raw_decoder_t&); + }; + +} + +#endif + diff -Nru zeromq3-3.2.4+dfsg/src/raw_encoder.cpp zeromq3-4.0.4/src/raw_encoder.cpp --- zeromq3-3.2.4+dfsg/src/raw_encoder.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/raw_encoder.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,40 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "encoder.hpp" +#include "raw_encoder.hpp" +#include "likely.hpp" +#include "wire.hpp" + +zmq::raw_encoder_t::raw_encoder_t (size_t bufsize_) : + encoder_base_t (bufsize_) +{ + // Write 0 bytes to the batch and go to message_ready state. + next_step (NULL, 0, &raw_encoder_t::raw_message_ready, true); +} + +zmq::raw_encoder_t::~raw_encoder_t () +{ +} + +void zmq::raw_encoder_t::raw_message_ready () +{ + next_step (in_progress->data (), in_progress->size (), + &raw_encoder_t::raw_message_ready, true); +} diff -Nru zeromq3-3.2.4+dfsg/src/raw_encoder.hpp zeromq3-4.0.4/src/raw_encoder.hpp --- zeromq3-3.2.4+dfsg/src/raw_encoder.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/raw_encoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,60 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_RAW_ENCODER_HPP_INCLUDED__ +#define __ZMQ_RAW_ENCODER_HPP_INCLUDED__ + +#if defined(_MSC_VER) +#ifndef NOMINMAX +#define NOMINMAX +#endif +#endif + +#include +#include +#include +#include + +#include "err.hpp" +#include "msg.hpp" +#include "i_encoder.hpp" + +namespace zmq +{ + + // Encoder for 0MQ framing protocol. Converts messages into data batches. + + class raw_encoder_t : public encoder_base_t + { + public: + + raw_encoder_t (size_t bufsize_); + ~raw_encoder_t (); + + private: + + void raw_message_ready (); + + raw_encoder_t (const raw_encoder_t&); + const raw_encoder_t &operator = (const raw_encoder_t&); + }; +} + +#endif + diff -Nru zeromq3-3.2.4+dfsg/src/reaper.cpp zeromq3-4.0.4/src/reaper.cpp --- zeromq3-3.2.4+dfsg/src/reaper.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/reaper.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -32,6 +31,10 @@ mailbox_handle = poller->add_fd (mailbox.get_fd (), this); poller->set_pollin (mailbox_handle); + +#ifdef HAVE_FORK + pid = getpid(); +#endif } zmq::reaper_t::~reaper_t () @@ -58,6 +61,13 @@ void zmq::reaper_t::in_event () { while (true) { +#ifdef HAVE_FORK + if (unlikely(pid != getpid())) + { + //printf("zmq::reaper_t::in_event return in child process %d\n", (int)getpid()); + return; + } +#endif // Get the next command. If there is none, exit. command_t cmd; diff -Nru zeromq3-3.2.4+dfsg/src/reaper.hpp zeromq3-4.0.4/src/reaper.hpp --- zeromq3-3.2.4+dfsg/src/reaper.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/reaper.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -73,6 +72,11 @@ reaper_t (const reaper_t&); const reaper_t &operator = (const reaper_t&); + +#ifdef HAVE_FORK + // the process that created this context. Used to detect forking. + pid_t pid; +#endif }; } diff -Nru zeromq3-3.2.4+dfsg/src/rep.cpp zeromq3-4.0.4/src/rep.cpp --- zeromq3-3.2.4+dfsg/src/rep.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/rep.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -35,7 +33,7 @@ { } -int zmq::rep_t::xsend (msg_t *msg_, int flags_) +int zmq::rep_t::xsend (msg_t *msg_) { // If we are in the middle of receiving a request, we cannot send reply. if (!sending_reply) { @@ -46,7 +44,7 @@ bool more = msg_->flags () & msg_t::more ? true : false; // Push message to the reply pipe. - int rc = router_t::xsend (msg_, flags_); + int rc = router_t::xsend (msg_); if (rc != 0) return rc; @@ -57,7 +55,7 @@ return 0; } -int zmq::rep_t::xrecv (msg_t *msg_, int flags_) +int zmq::rep_t::xrecv (msg_t *msg_) { // If we are in middle of sending a reply, we cannot receive next request. if (sending_reply) { @@ -69,7 +67,7 @@ // to the reply pipe. if (request_begins) { while (true) { - int rc = router_t::xrecv (msg_, flags_); + int rc = router_t::xrecv (msg_); if (rc != 0) return rc; @@ -78,7 +76,7 @@ bool bottom = (msg_->size () == 0); // Push it to the reply pipe. - rc = router_t::xsend (msg_, flags_); + rc = router_t::xsend (msg_); errno_assert (rc == 0); if (bottom) @@ -95,7 +93,7 @@ } // Get next message part to return to the user. - int rc = router_t::xrecv (msg_, flags_); + int rc = router_t::xrecv (msg_); if (rc != 0) return rc; @@ -123,15 +121,3 @@ return router_t::xhas_out (); } - -zmq::rep_session_t::rep_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - router_session_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::rep_session_t::~rep_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/rep.hpp zeromq3-4.0.4/src/rep.hpp --- zeromq3-3.2.4+dfsg/src/rep.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/rep.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -40,8 +38,8 @@ ~rep_t (); // Overloads of functions from socket_base_t. - int xsend (zmq::msg_t *msg_, int flags_); - int xrecv (zmq::msg_t *msg_, int flags_); + int xsend (zmq::msg_t *msg_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); bool xhas_out (); @@ -60,21 +58,6 @@ }; - class rep_session_t : public router_session_t - { - public: - - rep_session_t (zmq::io_thread_t *io_thread_, bool connect_, - zmq::socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~rep_session_t (); - - private: - - rep_session_t (const rep_session_t&); - const rep_session_t &operator = (const rep_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/req.cpp zeromq3-4.0.4/src/req.cpp --- zeromq3-3.2.4+dfsg/src/req.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/req.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -30,7 +27,11 @@ zmq::req_t::req_t (class ctx_t *parent_, uint32_t tid_, int sid_) : dealer_t (parent_, tid_, sid_), receiving_reply (false), - message_begins (true) + message_begins (true), + reply_pipe (NULL), + request_id_frames_enabled (false), + request_id (generate_random()), + strict (true) { options.type = ZMQ_REQ; } @@ -39,30 +40,70 @@ { } -int zmq::req_t::xsend (msg_t *msg_, int flags_) +int zmq::req_t::xsend (msg_t *msg_) { // If we've sent a request and we still haven't got the reply, - // we can't send another request. + // we can't send another request unless the strict option is disabled. if (receiving_reply) { - errno = EFSM; - return -1; + if (strict) { + errno = EFSM; + return -1; + } + + if (reply_pipe) + reply_pipe->terminate (false); + receiving_reply = false; + message_begins = true; } // First part of the request is the request identity. if (message_begins) { + reply_pipe = NULL; + + if (request_id_frames_enabled) { + request_id++; + + msg_t id; + int rc = id.init_data (&request_id, sizeof (request_id), NULL, NULL); + errno_assert (rc == 0); + id.set_flags (msg_t::more); + + rc = dealer_t::sendpipe (&id, &reply_pipe); + if (rc != 0) + return -1; + } + msg_t bottom; int rc = bottom.init (); errno_assert (rc == 0); bottom.set_flags (msg_t::more); - rc = dealer_t::xsend (&bottom, 0); + + rc = dealer_t::sendpipe (&bottom, &reply_pipe); if (rc != 0) return -1; + assert (reply_pipe); + message_begins = false; + + // Eat all currently avaliable messages before the request is fully + // sent. This is done to avoid: + // REQ sends request to A, A replies, B replies too. + // A's reply was first and matches, that is used. + // An hour later REQ sends a request to B. B's old reply is used. + msg_t drop; + while (true) { + rc = drop.init (); + errno_assert (rc == 0); + rc = dealer_t::xrecv (&drop); + if (rc != 0) + break; + drop.close (); + } } bool more = msg_->flags () & msg_t::more ? true : false; - int rc = dealer_t::xsend (msg_, flags_); + int rc = dealer_t::xsend (msg_); if (rc != 0) return rc; @@ -75,7 +116,7 @@ return 0; } -int zmq::req_t::xrecv (msg_t *msg_, int flags_) +int zmq::req_t::xrecv (msg_t *msg_) { // If request wasn't send, we can't wait for reply. if (!receiving_reply) { @@ -83,30 +124,45 @@ return -1; } - // First part of the reply should be the original request ID. - if (message_begins) { - int rc = dealer_t::xrecv (msg_, flags_); + // Skip messages until one with the right first frames is found. + while (message_begins) { + // If enabled, the first frame must have the correct request_id. + if (request_id_frames_enabled) { + int rc = recv_reply_pipe (msg_); + if (rc != 0) + return rc; + + if (unlikely (!(msg_->flags () & msg_t::more) || + msg_->size () != sizeof (request_id) || + *static_cast (msg_->data ()) != request_id)) { + // Skip the remaining frames and try the next message + while (msg_->flags () & msg_t::more) { + rc = recv_reply_pipe (msg_); + errno_assert (rc == 0); + } + continue; + } + } + + // The next frame must be 0. + // TODO: Failing this check should also close the connection with the peer! + int rc = recv_reply_pipe (msg_); if (rc != 0) return rc; - // TODO: This should also close the connection with the peer! if (unlikely (!(msg_->flags () & msg_t::more) || msg_->size () != 0)) { - while (true) { - int rc = dealer_t::xrecv (msg_, flags_); + // Skip the remaining frames and try the next message + while (msg_->flags () & msg_t::more) { + rc = recv_reply_pipe (msg_); errno_assert (rc == 0); - if (!(msg_->flags () & msg_t::more)) - break; } - msg_->close (); - msg_->init (); - errno = EAGAIN; - return -1; + continue; } message_begins = false; } - int rc = dealer_t::xrecv (msg_, flags_); + int rc = recv_reply_pipe (msg_); if (rc != 0) return rc; @@ -137,17 +193,61 @@ return dealer_t::xhas_out (); } +int zmq::req_t::xsetsockopt (int option_, const void *optval_, size_t optvallen_) +{ + bool is_int = (optvallen_ == sizeof (int)); + int value = is_int? *((int *) optval_): 0; + switch (option_) { + case ZMQ_REQ_CORRELATE: + if (is_int && value >= 0) { + request_id_frames_enabled = (value != 0); + return 0; + } + break; + + case ZMQ_REQ_RELAXED: + if (is_int && value >= 0) { + strict = (value == 0); + return 0; + } + break; + + default: + break; + } + + return dealer_t::xsetsockopt (option_, optval_, optvallen_); +} + +void zmq::req_t::xpipe_terminated (pipe_t *pipe_) +{ + if (reply_pipe == pipe_) + reply_pipe = NULL; + dealer_t::xpipe_terminated (pipe_); +} + +int zmq::req_t::recv_reply_pipe (msg_t *msg_) +{ + while (true) { + pipe_t *pipe = NULL; + int rc = dealer_t::recvpipe (msg_, &pipe); + if (rc != 0) + return rc; + if (!reply_pipe || pipe == reply_pipe) + return 0; + } +} + zmq::req_session_t::req_session_t (io_thread_t *io_thread_, bool connect_, socket_base_t *socket_, const options_t &options_, const address_t *addr_) : - dealer_session_t (io_thread_, connect_, socket_, options_, addr_), - state (identity) + session_base_t (io_thread_, connect_, socket_, options_, addr_), + state (bottom) { } zmq::req_session_t::~req_session_t () { - state = options.recv_identity ? identity : bottom; } int zmq::req_session_t::push_msg (msg_t *msg_) @@ -156,21 +256,15 @@ case bottom: if (msg_->flags () == msg_t::more && msg_->size () == 0) { state = body; - return dealer_session_t::push_msg (msg_); + return session_base_t::push_msg (msg_); } break; case body: if (msg_->flags () == msg_t::more) - return dealer_session_t::push_msg (msg_); - if (msg_->flags () == 0) { - state = bottom; - return dealer_session_t::push_msg (msg_); - } - break; - case identity: + return session_base_t::push_msg (msg_); if (msg_->flags () == 0) { state = bottom; - return dealer_session_t::push_msg (msg_); + return session_base_t::push_msg (msg_); } break; } @@ -181,5 +275,5 @@ void zmq::req_session_t::reset () { session_base_t::reset (); - state = identity; + state = bottom; } diff -Nru zeromq3-3.2.4+dfsg/src/req.hpp zeromq3-4.0.4/src/req.hpp --- zeromq3-3.2.4+dfsg/src/req.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/req.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -42,10 +39,18 @@ ~req_t (); // Overloads of functions from socket_base_t. - int xsend (zmq::msg_t *msg_, int flags_); - int xrecv (zmq::msg_t *msg_, int flags_); + int xsend (zmq::msg_t *msg_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); bool xhas_out (); + int xsetsockopt (int option_, const void *optval_, size_t optvallen_); + void xpipe_terminated (zmq::pipe_t *pipe_); + + protected: + + // Receive only from the pipe the request was sent to, discarding + // frames from other pipes. + int recv_reply_pipe (zmq::msg_t *msg_); private: @@ -57,11 +62,26 @@ // of the message must be empty message part (backtrace stack bottom). bool message_begins; + // The pipe the request was sent to and where the reply is expected. + zmq::pipe_t *reply_pipe; + + // Whether request id frames shall be sent and expected. + bool request_id_frames_enabled; + + // The current request id. It is incremented every time before a new + // request is sent. + uint32_t request_id; + + // If false, send() will reset its internal state and terminate the + // reply_pipe's connection instead of failing if a previous request is + // still pending. + bool strict; + req_t (const req_t&); const req_t &operator = (const req_t&); }; - class req_session_t : public dealer_session_t + class req_session_t : public session_base_t { public: @@ -77,7 +97,6 @@ private: enum { - identity, bottom, body } state; diff -Nru zeromq3-3.2.4+dfsg/src/router.cpp zeromq3-4.0.4/src/router.cpp --- zeromq3-3.2.4+dfsg/src/router.cpp 2012-10-19 06:10:25.000000000 +0000 +++ zeromq3-4.0.4/src/router.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -35,17 +32,14 @@ current_out (NULL), more_out (false), next_peer_id (generate_random ()), - mandatory(false) + mandatory (false), + // raw_sock functionality in ROUTER is deprecated + raw_sock (false), + probe_router (false) { options.type = ZMQ_ROUTER; - - // TODO: Uncomment the following line when ROUTER will become true ROUTER - // rather than generic router socket. - // If peer disconnect there's noone to send reply to anyway. We can drop - // all the outstanding requests from that peer. - // options.delay_on_disconnect = false; - options.recv_identity = true; + options.raw_sock = false; prefetched_id.init (); prefetched_msg.init (); @@ -59,13 +53,26 @@ prefetched_msg.close (); } -void zmq::router_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::router_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { - // icanhasall_ is unused - (void)icanhasall_; + // subscribe_to_all_ is unused + (void)subscribe_to_all_; zmq_assert (pipe_); + if (probe_router) { + msg_t probe_msg_; + int rc = probe_msg_.init (); + errno_assert (rc == 0); + + rc = pipe_->write (&probe_msg_); + // zmq_assert (rc) is not applicable here, since it is not a bug. + pipe_->flush (); + + rc = probe_msg_.close (); + errno_assert (rc == 0); + } + bool identity_ok = identify_peer (pipe_); if (identity_ok) fq.attach (pipe_); @@ -76,19 +83,44 @@ int zmq::router_t::xsetsockopt (int option_, const void *optval_, size_t optvallen_) { - if (option_ != ZMQ_ROUTER_MANDATORY) { - errno = EINVAL; - return -1; - } - if (optvallen_ != sizeof (int) || *static_cast (optval_) < 0) { - errno = EINVAL; - return -1; + bool is_int = (optvallen_ == sizeof (int)); + int value = is_int? *((int *) optval_): 0; + + switch (option_) { + case ZMQ_ROUTER_RAW: + if (is_int && value >= 0) { + raw_sock = (value != 0); + if (raw_sock) { + options.recv_identity = false; + options.raw_sock = true; + } + return 0; + } + break; + + case ZMQ_ROUTER_MANDATORY: + if (is_int && value >= 0) { + mandatory = (value != 0); + return 0; + } + break; + + case ZMQ_PROBE_ROUTER: + if (is_int && value >= 0) { + probe_router = (value != 0); + return 0; + } + break; + + default: + break; } - mandatory = *static_cast (optval_); - return 0; + errno = EINVAL; + return -1; } -void zmq::router_t::xterminated (pipe_t *pipe_) + +void zmq::router_t::xpipe_terminated (pipe_t *pipe_) { std::set ::iterator it = anonymous_pipes.find (pipe_); if (it != anonymous_pipes.end ()) @@ -97,7 +129,7 @@ outpipes_t::iterator it = outpipes.find (pipe_->get_identity ()); zmq_assert (it != outpipes.end ()); outpipes.erase (it); - fq.terminated (pipe_); + fq.pipe_terminated (pipe_); if (pipe_ == current_out) current_out = NULL; } @@ -129,11 +161,8 @@ it->second.active = true; } -int zmq::router_t::xsend (msg_t *msg_, int flags_) +int zmq::router_t::xsend (msg_t *msg_) { - // flags_ is unused - (void)flags_; - // If this is the first part of the message it's the ID of the // peer to send the message to. if (!more_out) { @@ -148,7 +177,7 @@ // Find the pipe associated with the identity stored in the prefix. // If there's no such pipe just silently ignore the message, unless - // report_unreachable is set. + // router_mandatory is set. blob_t identity ((unsigned char*) msg_->data (), msg_->size ()); outpipes_t::iterator it = outpipes.find (identity); @@ -157,9 +186,14 @@ if (!current_out->check_write ()) { it->second.active = false; current_out = NULL; + if (mandatory) { + more_out = false; + errno = EAGAIN; + return -1; + } } - } - else + } + else if (mandatory) { more_out = false; errno = EHOSTUNREACH; @@ -174,15 +208,34 @@ return 0; } + // Ignore the MORE flag for raw-sock or assert? + if (options.raw_sock) + msg_->reset_flags (msg_t::more); + // Check whether this is the last part of the message. more_out = msg_->flags () & msg_t::more ? true : false; // Push the message into the pipe. If there's no out pipe, just drop it. if (current_out) { + + // Close the remote connection if user has asked to do so + // by sending zero length message. + // Pending messages in the pipe will be dropped (on receiving term- ack) + if (raw_sock && msg_->size() == 0) { + current_out->terminate (false); + int rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + current_out = NULL; + return 0; + } + bool ok = current_out->write (msg_); if (unlikely (!ok)) current_out = NULL; - else if (!more_out) { + else + if (!more_out) { current_out->flush (); current_out = NULL; } @@ -199,11 +252,8 @@ return 0; } -int zmq::router_t::xrecv (msg_t *msg_, int flags_) +int zmq::router_t::xrecv (msg_t *msg_) { - // flags_ is unused - (void)flags_; - if (prefetched) { if (!identity_sent) { int rc = msg_->move (prefetched_id); @@ -225,7 +275,6 @@ // It's possible that we receive peer's identity. That happens // after reconnection. The current implementation assumes that // the peer always uses the same identity. - // TODO: handle the situation when the peer changes its identity. while (rc == 0 && msg_->is_identity ()) rc = fq.recvpipe (msg_, &pipe); @@ -318,28 +367,37 @@ { msg_t msg; blob_t identity; + bool ok; - msg.init (); - bool ok = pipe_->read (&msg); - if (!ok) - return false; - - if (msg.size () == 0) { - // Fall back on the auto-generation + if (options.raw_sock) { // Always assign identity for raw-socket unsigned char buf [5]; buf [0] = 0; put_uint32 (buf + 1, next_peer_id++); identity = blob_t (buf, sizeof buf); - msg.close (); } else { - identity = blob_t ((unsigned char*) msg.data (), msg.size ()); - outpipes_t::iterator it = outpipes.find (identity); - msg.close (); - - // Ignore peers with duplicate ID. - if (it != outpipes.end ()) + msg.init (); + ok = pipe_->read (&msg); + if (!ok) return false; + + if (msg.size () == 0) { + // Fall back on the auto-generation + unsigned char buf [5]; + buf [0] = 0; + put_uint32 (buf + 1, next_peer_id++); + identity = blob_t (buf, sizeof buf); + msg.close (); + } + else { + identity = blob_t ((unsigned char*) msg.data (), msg.size ()); + outpipes_t::iterator it = outpipes.find (identity); + msg.close (); + + // Ignore peers with duplicate ID. + if (it != outpipes.end ()) + return false; + } } pipe_->set_identity (identity); @@ -350,15 +408,3 @@ return true; } - -zmq::router_session_t::router_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::router_session_t::~router_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/router.hpp zeromq3-4.0.4/src/router.hpp --- zeromq3-3.2.4+dfsg/src/router.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/router.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -48,15 +45,15 @@ ~router_t (); // Overloads of functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); int xsetsockopt (int option_, const void *optval_, size_t optvallen_); - int xsend (msg_t *msg_, int flags_); - int xrecv (msg_t *msg_, int flags_); + int xsend (zmq::msg_t *msg_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); bool xhas_out (); void xread_activated (zmq::pipe_t *pipe_); void xwrite_activated (zmq::pipe_t *pipe_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); protected: @@ -113,26 +110,15 @@ // If true, report EAGAIN to the caller instead of silently dropping // the message targeting an unknown peer. bool mandatory; + bool raw_sock; + + // if true, send an empty message to every connected router peer + bool probe_router; router_t (const router_t&); const router_t &operator = (const router_t&); }; - class router_session_t : public session_base_t - { - public: - - router_session_t (zmq::io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~router_session_t (); - - private: - - router_session_t (const router_session_t&); - const router_session_t &operator = (const router_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/select.cpp zeromq3-4.0.4/src/select.cpp --- zeromq3-3.2.4+dfsg/src/select.cpp 2012-11-13 12:39:41.000000000 +0000 +++ zeromq3-4.0.4/src/select.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -146,6 +144,11 @@ stopping = true; } +int zmq::select_t::max_fds () +{ + return FD_SETSIZE; +} + void zmq::select_t::loop () { while (!stopping) { diff -Nru zeromq3-3.2.4+dfsg/src/select.hpp zeromq3-4.0.4/src/select.hpp --- zeromq3-3.2.4+dfsg/src/select.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/select.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -71,6 +69,8 @@ void start (); void stop (); + static int max_fds (); + private: // Main worker thread routine. diff -Nru zeromq3-3.2.4+dfsg/src/session_base.cpp zeromq3-4.0.4/src/session_base.cpp --- zeromq3-3.2.4+dfsg/src/session_base.cpp 2012-10-25 09:21:08.000000000 +0000 +++ zeromq3-4.0.4/src/session_base.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -20,8 +17,6 @@ along with this program. If not, see . */ -#include - #include "session_base.hpp" #include "i_engine.hpp" #include "err.hpp" @@ -33,17 +28,8 @@ #include "pgm_receiver.hpp" #include "address.hpp" +#include "ctx.hpp" #include "req.hpp" -#include "dealer.hpp" -#include "rep.hpp" -#include "router.hpp" -#include "pub.hpp" -#include "xpub.hpp" -#include "sub.hpp" -#include "xsub.hpp" -#include "push.hpp" -#include "pull.hpp" -#include "pair.hpp" zmq::session_base_t *zmq::session_base_t::create (class io_thread_t *io_thread_, bool connect_, class socket_base_t *socket_, const options_t &options_, @@ -56,43 +42,17 @@ socket_, options_, addr_); break; case ZMQ_DEALER: - s = new (std::nothrow) dealer_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_REP: - s = new (std::nothrow) rep_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_ROUTER: - s = new (std::nothrow) router_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_PUB: - s = new (std::nothrow) pub_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_XPUB: - s = new (std::nothrow) xpub_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_SUB: - s = new (std::nothrow) sub_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_XSUB: - s = new (std::nothrow) xsub_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_PUSH: - s = new (std::nothrow) push_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_PULL: - s = new (std::nothrow) pull_session_t (io_thread_, connect_, - socket_, options_, addr_); - break; case ZMQ_PAIR: - s = new (std::nothrow) pair_session_t (io_thread_, connect_, + case ZMQ_STREAM: + s = new (std::nothrow) session_base_t (io_thread_, connect_, socket_, options_, addr_); break; default: @@ -110,14 +70,13 @@ io_object_t (io_thread_), connect (connect_), pipe (NULL), + zap_pipe (NULL), incomplete_in (false), pending (false), engine (NULL), socket (socket_), io_thread (io_thread_), has_linger_timer (false), - identity_sent (false), - identity_received (false), addr (addr_) { } @@ -125,6 +84,7 @@ zmq::session_base_t::~session_base_t () { zmq_assert (!pipe); + zmq_assert (!zap_pipe); // If there's still a pending linger timer, remove it. if (has_linger_timer) { @@ -136,8 +96,7 @@ if (engine) engine->terminate (); - if (addr) - delete addr; + delete addr; } void zmq::session_base_t::attach_pipe (pipe_t *pipe_) @@ -151,17 +110,6 @@ int zmq::session_base_t::pull_msg (msg_t *msg_) { - // First message to send is identity - if (!identity_sent) { - zmq_assert (!(msg_->flags () & msg_t::more)); - int rc = msg_->init_size (options.identity_size); - errno_assert (rc == 0); - memcpy (msg_->data (), options.identity, options.identity_size); - identity_sent = true; - incomplete_in = false; - return 0; - } - if (!pipe || !pipe->read (msg_)) { errno = EAGAIN; return -1; @@ -173,19 +121,6 @@ int zmq::session_base_t::push_msg (msg_t *msg_) { - // First message to receive is identity - if (!identity_received) { - msg_->set_flags (msg_t::identity); - identity_received = true; - if (!options.recv_identity) { - int rc = msg_->close (); - errno_assert (rc == 0); - rc = msg_->init (); - errno_assert (rc == 0); - return 0; - } - } - if (pipe && pipe->write (msg_)) { int rc = msg_->init (); errno_assert (rc == 0); @@ -196,11 +131,41 @@ return -1; } +int zmq::session_base_t::read_zap_msg (msg_t *msg_) +{ + if (zap_pipe == NULL) { + errno = ENOTCONN; + return -1; + } + + if (!zap_pipe->read (msg_)) { + errno = EAGAIN; + return -1; + } + + return 0; +} + +int zmq::session_base_t::write_zap_msg (msg_t *msg_) +{ + if (zap_pipe == NULL) { + errno = ENOTCONN; + return -1; + } + + const bool ok = zap_pipe->write (msg_); + zmq_assert (ok); + + if ((msg_->flags () & msg_t::more) == 0) + zap_pipe->flush (); + + const int rc = msg_->init (); + errno_assert (rc == 0); + return 0; +} + void zmq::session_base_t::reset () { - // Restore identity flags. - identity_sent = false; - identity_received = false; } void zmq::session_base_t::flush () @@ -223,47 +188,64 @@ msg_t msg; int rc = msg.init (); errno_assert (rc == 0); - if (pull_msg (&msg) != 0) { - zmq_assert (!incomplete_in); - break; - } + rc = pull_msg (&msg); + errno_assert (rc == 0); rc = msg.close (); errno_assert (rc == 0); } } } -void zmq::session_base_t::terminated (pipe_t *pipe_) +void zmq::session_base_t::pipe_terminated (pipe_t *pipe_) { // Drop the reference to the deallocated pipe if required. - zmq_assert (pipe == pipe_ || terminating_pipes.count (pipe_) == 1); + zmq_assert (pipe_ == pipe + || pipe_ == zap_pipe + || terminating_pipes.count (pipe_) == 1); - if (pipe == pipe_) + if (pipe_ == pipe) // If this is our current pipe, remove it pipe = NULL; else + if (pipe_ == zap_pipe) { + zap_pipe = NULL; + } + else // Remove the pipe from the detached pipes set terminating_pipes.erase (pipe_); - // If we are waiting for pending messages to be sent, at this point - // we are sure that there will be no more messages and we can proceed - // with termination safely. - if (pending && !pipe && terminating_pipes.size () == 0) + if (!is_terminating () && options.raw_sock) { + if (engine) { + engine->terminate (); + engine = NULL; + } + terminate (); + } + + // If we are waiting for pending messages to be sent, at this point + // we are sure that there will be no more messages and we can proceed + // with termination safely. + if (pending && !pipe && !zap_pipe && terminating_pipes.empty ()) proceed_with_term (); } void zmq::session_base_t::read_activated (pipe_t *pipe_) { // Skip activating if we're detaching this pipe - if (pipe != pipe_) { + if (unlikely(pipe_ != pipe && pipe_ != zap_pipe)) { zmq_assert (terminating_pipes.count (pipe_) == 1); return; } - if (likely (engine != NULL)) - engine->activate_out (); - else + if (unlikely (engine == NULL)) { pipe->check_read (); + return; + } + + if (likely (pipe_ == pipe)) + engine->restart_output (); + else + engine->zap_msg_available (); } void zmq::session_base_t::write_activated (pipe_t *pipe_) @@ -275,7 +257,7 @@ } if (engine) - engine->activate_in (); + engine->restart_input (); } void zmq::session_base_t::hiccuped (pipe_t *) @@ -296,6 +278,52 @@ start_connecting (false); } +int zmq::session_base_t::zap_connect () +{ + zmq_assert (zap_pipe == NULL); + + endpoint_t peer = find_endpoint ("inproc://zeromq.zap.01"); + if (peer.socket == NULL) { + errno = ECONNREFUSED; + return -1; + } + if (peer.options.type != ZMQ_REP + && peer.options.type != ZMQ_ROUTER) { + errno = ECONNREFUSED; + return -1; + } + + // Create a bi-directional pipe that will connect + // session with zap socket. + object_t *parents [2] = {this, peer.socket}; + pipe_t *new_pipes [2] = {NULL, NULL}; + int hwms [2] = {0, 0}; + bool conflates [2] = {false, false}; + int rc = pipepair (parents, new_pipes, hwms, conflates); + errno_assert (rc == 0); + + // Attach local end of the pipe to this socket object. + zap_pipe = new_pipes [0]; + zap_pipe->set_nodelay (); + zap_pipe->set_event_sink (this); + + new_pipes [1]->set_nodelay (); + send_bind (peer.socket, new_pipes [1], false); + + // Send empty identity if required by the peer. + if (peer.options.recv_identity) { + msg_t id; + rc = id.init (); + errno_assert (rc == 0); + id.set_flags (msg_t::identity); + bool ok = zap_pipe->write (&id); + zmq_assert (ok); + zap_pipe->flush (); + } + + return 0; +} + void zmq::session_base_t::process_attach (i_engine *engine_) { zmq_assert (engine_ != NULL); @@ -304,9 +332,18 @@ if (!pipe && !is_terminating ()) { object_t *parents [2] = {this, socket}; pipe_t *pipes [2] = {NULL, NULL}; - int hwms [2] = {options.rcvhwm, options.sndhwm}; - bool delays [2] = {options.delay_on_close, options.delay_on_disconnect}; - int rc = pipepair (parents, pipes, hwms, delays); + + bool conflate = options.conflate && + (options.type == ZMQ_DEALER || + options.type == ZMQ_PULL || + options.type == ZMQ_PUSH || + options.type == ZMQ_PUB || + options.type == ZMQ_SUB); + + int hwms [2] = {conflate? -1 : options.rcvhwm, + conflate? -1 : options.sndhwm}; + bool conflates [2] = {conflate, conflate}; + int rc = pipepair (parents, pipes, hwms, conflates); errno_assert (rc == 0); // Plug the local end of the pipe. @@ -340,6 +377,9 @@ // Just in case there's only a delimiter in the pipe. if (pipe) pipe->check_read (); + + if (zap_pipe) + zap_pipe->check_read (); } void zmq::session_base_t::process_term (int linger_) @@ -348,36 +388,41 @@ // If the termination of the pipe happens before the term command is // delivered there's nothing much to do. We can proceed with the - // stadard termination immediately. - if (!pipe) { + // standard termination immediately. + if (!pipe && !zap_pipe) { proceed_with_term (); return; } pending = true; - // If there's finite linger value, delay the termination. - // If linger is infinite (negative) we don't even have to set - // the timer. - if (linger_ > 0) { - zmq_assert (!has_linger_timer); - add_timer (linger_, linger_timer_id); - has_linger_timer = true; - } - - // Start pipe termination process. Delay the termination till all messages - // are processed in case the linger time is non-zero. - pipe->terminate (linger_ != 0); - - // TODO: Should this go into pipe_t::terminate ? - // In case there's no engine and there's only delimiter in the - // pipe it wouldn't be ever read. Thus we check for it explicitly. - pipe->check_read (); + if (pipe != NULL) { + // If there's finite linger value, delay the termination. + // If linger is infinite (negative) we don't even have to set + // the timer. + if (linger_ > 0) { + zmq_assert (!has_linger_timer); + add_timer (linger_, linger_timer_id); + has_linger_timer = true; + } + + // Start pipe termination process. Delay the termination till all messages + // are processed in case the linger time is non-zero. + pipe->terminate (linger_ != 0); + + // TODO: Should this go into pipe_t::terminate ? + // In case there's no engine and there's only delimiter in the + // pipe it wouldn't be ever read. Thus we check for it explicitly. + pipe->check_read (); + } + + if (zap_pipe != NULL) + zap_pipe->terminate (false); } void zmq::session_base_t::proceed_with_term () { - // The pending phase have just ended. + // The pending phase has just ended. pending = false; // Continue with standard termination. @@ -407,7 +452,7 @@ // For delayed connect situations, terminate the pipe // and reestablish later on - if (pipe && options.delay_attach_on_connect == 1 + if (pipe && options.immediate == 1 && addr->protocol != "pgm" && addr->protocol != "epgm") { pipe->hiccup (); pipe->terminate (false); @@ -456,13 +501,16 @@ } #endif -#if defined ZMQ_HAVE_OPENPGM +#ifdef ZMQ_HAVE_OPENPGM // Both PGM and EPGM transports are using the same infrastructure. if (addr->protocol == "pgm" || addr->protocol == "epgm") { + zmq_assert (options.type == ZMQ_PUB || options.type == ZMQ_XPUB + || options.type == ZMQ_SUB || options.type == ZMQ_XSUB); + // For EPGM transport with UDP encapsulation of PGM is used. - bool udp_encapsulation = (addr->protocol == "epgm"); + bool const udp_encapsulation = addr->protocol == "epgm"; // At this point we'll create message pipes to the session straight // away. There's no point in delaying it as no concept of 'connect' @@ -470,7 +518,7 @@ if (options.type == ZMQ_PUB || options.type == ZMQ_XPUB) { // PGM sender. - pgm_sender_t *pgm_sender = new (std::nothrow) pgm_sender_t ( + pgm_sender_t *pgm_sender = new (std::nothrow) pgm_sender_t ( io_thread, options); alloc_assert (pgm_sender); @@ -479,10 +527,10 @@ send_attach (this, pgm_sender); } - else if (options.type == ZMQ_SUB || options.type == ZMQ_XSUB) { + else { // PGM receiver. - pgm_receiver_t *pgm_receiver = new (std::nothrow) pgm_receiver_t ( + pgm_receiver_t *pgm_receiver = new (std::nothrow) pgm_receiver_t ( io_thread, options); alloc_assert (pgm_receiver); @@ -491,8 +539,6 @@ send_attach (this, pgm_receiver); } - else - zmq_assert (false); return; } diff -Nru zeromq3-3.2.4+dfsg/src/session_base.hpp zeromq3-4.0.4/src/session_base.hpp --- zeromq3-3.2.4+dfsg/src/session_base.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/session_base.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -29,8 +26,6 @@ #include "own.hpp" #include "io_object.hpp" #include "pipe.hpp" -#include "i_msg_source.hpp" -#include "i_msg_sink.hpp" #include "socket_base.hpp" namespace zmq @@ -45,9 +40,7 @@ class session_base_t : public own_t, public io_object_t, - public i_pipe_events, - public i_msg_source, - public i_msg_sink + public i_pipe_events { public: @@ -59,12 +52,6 @@ // To be used once only, when creating the session. void attach_pipe (zmq::pipe_t *pipe_); - // i_msg_source interface implementation. - virtual int pull_msg (msg_t *msg_); - - // i_msg_sink interface implementation. - virtual int push_msg (msg_t *msg_); - // Following functions are the interface exposed towards the engine. virtual void reset (); void flush (); @@ -74,7 +61,28 @@ void read_activated (zmq::pipe_t *pipe_); void write_activated (zmq::pipe_t *pipe_); void hiccuped (zmq::pipe_t *pipe_); - void terminated (zmq::pipe_t *pipe_); + void pipe_terminated (zmq::pipe_t *pipe_); + + // Delivers a message. Returns 0 if successful; -1 otherwise. + // The function takes ownership of the message. + int push_msg (msg_t *msg_); + + int zap_connect (); + + // Fetches a message. Returns 0 if successful; -1 otherwise. + // The caller is responsible for freeing the message when no + // longer used. + int pull_msg (msg_t *msg_); + + // Receives message from ZAP socket. + // Returns 0 on success; -1 otherwise. + // The caller is responsible for freeing the message. + int read_zap_msg (msg_t *msg_); + + // Sends message to ZAP socket. + // Returns 0 on success; -1 otherwise. + // The function takes ownership of the message. + int write_zap_msg (msg_t *msg_); socket_base_t *get_socket (); @@ -112,9 +120,12 @@ // Pipe connecting the session to its socket. zmq::pipe_t *pipe; - + + // Pipe used to exchange messages with ZAP socket. + zmq::pipe_t *zap_pipe; + // This set is added to with pipes we are disconnecting, but haven't yet completed - std::set terminating_pipes; + std::set terminating_pipes; // This flag is true if the remainder of the message being processed // is still in the in pipe. @@ -140,10 +151,6 @@ // True is linger timer is running. bool has_linger_timer; - // If true, identity has been sent/received from the network. - bool identity_sent; - bool identity_received; - // Protocol and address to use when connecting. const address_t *addr; diff -Nru zeromq3-3.2.4+dfsg/src/signaler.cpp zeromq3-4.0.4/src/signaler.cpp --- zeromq3-3.2.4+dfsg/src/signaler.cpp 2013-05-16 16:57:42.000000000 +0000 +++ zeromq3-4.0.4/src/signaler.cpp 2013-12-08 07:02:10.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -81,12 +80,13 @@ zmq::signaler_t::signaler_t () { // Create the socketpair for signaling. - int rc = make_fdpair (&r, &w); - errno_assert (rc == 0); - - // Set both fds to non-blocking mode. - unblock_socket (w); - unblock_socket (r); + if (make_fdpair (&r, &w) == 0) { + unblock_socket (w); + unblock_socket (r); + } +#ifdef HAVE_FORK + pid = getpid(); +#endif } zmq::signaler_t::~signaler_t () @@ -118,6 +118,12 @@ void zmq::signaler_t::send () { +#if HAVE_FORK + if (unlikely(pid != getpid())) { + //printf("Child process %d signaler_t::send returning without sending #1\n", getpid()); + return; // do not send anything in forked child context + } +#endif #if defined ZMQ_HAVE_EVENTFD const uint64_t inc = 1; ssize_t sz = write (w, &inc, sizeof (inc)); @@ -133,6 +139,13 @@ ssize_t nbytes = ::send (w, &dummy, sizeof (dummy), 0); if (unlikely (nbytes == -1 && errno == EINTR)) continue; +#if HAVE_FORK + if (unlikely(pid != getpid())) { + //printf("Child process %d signaler_t::send returning without sending #2\n", getpid()); + errno = EINTR; + break; + } +#endif zmq_assert (nbytes == sizeof (dummy)); break; } @@ -141,6 +154,17 @@ int zmq::signaler_t::wait (int timeout_) { +#ifdef HAVE_FORK + if (unlikely(pid != getpid())) + { + // we have forked and the file descriptor is closed. Emulate an interupt + // response. + //printf("Child process %d signaler_t::wait returning simulating interrupt #1\n", getpid()); + errno = EINTR; + return -1; + } +#endif + #ifdef ZMQ_SIGNALER_WAIT_BASED_ON_POLL struct pollfd pfd; @@ -151,10 +175,20 @@ errno_assert (errno == EINTR); return -1; } - else if (unlikely (rc == 0)) { + else + if (unlikely (rc == 0)) { errno = EAGAIN; return -1; } +#ifdef HAVE_FORK + if (unlikely(pid != getpid())) { + // we have forked and the file descriptor is closed. Emulate an interupt + // response. + //printf("Child process %d signaler_t::wait returning simulating interrupt #2\n", getpid()); + errno = EINTR; + return -1; + } +#endif zmq_assert (rc == 1); zmq_assert (pfd.revents & POLLIN); return 0; @@ -205,8 +239,8 @@ // one, return it back to the eventfd object. if (unlikely (dummy == 2)) { const uint64_t inc = 1; - ssize_t sz = write (w, &inc, sizeof (inc)); - errno_assert (sz == sizeof (inc)); + ssize_t sz2 = write (w, &inc, sizeof (inc)); + errno_assert (sz2 == sizeof (inc)); return; } @@ -225,26 +259,45 @@ #endif } +#ifdef HAVE_FORK +void zmq::signaler_t::forked() +{ + // Close file descriptors created in the parent and create new pair + close (r); + close (w); + make_fdpair (&r, &w); +} +#endif + +// Returns -1 if we could not make the socket pair successfully int zmq::signaler_t::make_fdpair (fd_t *r_, fd_t *w_) { #if defined ZMQ_HAVE_EVENTFD - - // Create eventfd object. fd_t fd = eventfd (0, 0); - errno_assert (fd != -1); - *w_ = fd; - *r_ = fd; - return 0; + if (fd == -1) { + errno_assert (errno == ENFILE || errno == EMFILE); + *w_ = *r_ = -1; + return -1; + } + else { + *w_ = *r_ = fd; + return 0; + } #elif defined ZMQ_HAVE_WINDOWS - SECURITY_DESCRIPTOR sd = {0}; - SECURITY_ATTRIBUTES sa = {0}; +# if !defined _WIN32_WCE + // Windows CE does not manage security attributes + SECURITY_DESCRIPTOR sd; + SECURITY_ATTRIBUTES sa; + memset (&sd, 0, sizeof (sd)); + memset (&sa, 0, sizeof (sa)); InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&sd, TRUE, 0, FALSE); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = &sd; +# endif // This function has to be in a system-wide critical section so that // two instances of the library don't accidentally create signaler @@ -253,16 +306,17 @@ // Note that if the event object already exists, the CreateEvent requests // EVENT_ALL_ACCESS access right. If this fails, we try to open // the event object asking for SYNCHRONIZE access only. +# if !defined _WIN32_WCE HANDLE sync = CreateEvent (&sa, FALSE, TRUE, TEXT ("Global\\zmq-signaler-port-sync")); +# else + HANDLE sync = CreateEvent (NULL, FALSE, TRUE, TEXT ("Global\\zmq-signaler-port-sync")); +# endif if (sync == NULL && GetLastError () == ERROR_ACCESS_DENIED) - sync = OpenEvent (SYNCHRONIZE | EVENT_MODIFY_STATE, FALSE, TEXT ("Global\\zmq-signaler-port-sync")); + sync = OpenEvent (SYNCHRONIZE | EVENT_MODIFY_STATE, + FALSE, TEXT ("Global\\zmq-signaler-port-sync")); win_assert (sync != NULL); - // Enter the critical section. - DWORD dwrc = WaitForSingleObject (sync, INFINITE); - zmq_assert (dwrc == WAIT_OBJECT_0); - // Windows has no 'socketpair' function. CreatePipe is no good as pipe // handles cannot be polled on. Here we create the socketpair by hand. *w_ = INVALID_SOCKET; @@ -283,54 +337,51 @@ (char *)&tcp_nodelay, sizeof (tcp_nodelay)); wsa_assert (rc != SOCKET_ERROR); - // Bind listening socket to signaler port. + // Init sockaddr to signaler port. struct sockaddr_in addr; memset (&addr, 0, sizeof (addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl (INADDR_LOOPBACK); addr.sin_port = htons (signaler_port); - rc = bind (listener, (const struct sockaddr*) &addr, sizeof (addr)); - wsa_assert (rc != SOCKET_ERROR); - - // Listen for incomming connections. - rc = listen (listener, 1); - wsa_assert (rc != SOCKET_ERROR); // Create the writer socket. - *w_ = WSASocket (AF_INET, SOCK_STREAM, 0, NULL, 0, 0); + *w_ = open_socket (AF_INET, SOCK_STREAM, 0); wsa_assert (*w_ != INVALID_SOCKET); - // On Windows, preventing sockets to be inherited by child processes. - BOOL brc = SetHandleInformation ((HANDLE) *w_, HANDLE_FLAG_INHERIT, 0); - win_assert (brc); - // Set TCP_NODELAY on writer socket. rc = setsockopt (*w_, IPPROTO_TCP, TCP_NODELAY, (char *)&tcp_nodelay, sizeof (tcp_nodelay)); wsa_assert (rc != SOCKET_ERROR); + // Enter the critical section. + DWORD dwrc = WaitForSingleObject (sync, INFINITE); + zmq_assert (dwrc == WAIT_OBJECT_0); + + // Bind listening socket to signaler port. + rc = bind (listener, (const struct sockaddr*) &addr, sizeof (addr)); + + // Listen for incoming connections. + if (rc != SOCKET_ERROR) + rc = listen (listener, 1); + // Connect writer to the listener. - rc = connect (*w_, (struct sockaddr*) &addr, sizeof (addr)); + if (rc != SOCKET_ERROR) + rc = connect (*w_, (struct sockaddr*) &addr, sizeof (addr)); - // Save errno if connection fails - int conn_errno = 0; - if (rc == SOCKET_ERROR) { - conn_errno = WSAGetLastError (); - } else { - // Accept connection from writer. + // Accept connection from writer. + if (rc != SOCKET_ERROR) *r_ = accept (listener, NULL, NULL); - if (*r_ == INVALID_SOCKET) { - conn_errno = WSAGetLastError (); - } - } + // Save errno if error occurred in bind/listen/connect/accept. + int saved_errno = 0; + if (*r_ == INVALID_SOCKET) + saved_errno = WSAGetLastError (); // We don't need the listening socket anymore. Close it. - rc = closesocket (listener); - wsa_assert (rc != SOCKET_ERROR); + closesocket (listener); // Exit the critical section. - brc = SetEvent (sync); + BOOL brc = SetEvent (sync); win_assert (brc != 0); // Release the kernel object @@ -338,26 +389,22 @@ win_assert (brc != 0); if (*r_ != INVALID_SOCKET) { +# if !defined _WIN32_WCE // On Windows, preventing sockets to be inherited by child processes. brc = SetHandleInformation ((HANDLE) *r_, HANDLE_FLAG_INHERIT, 0); win_assert (brc); - +# endif return 0; - } else { + } + else { // Cleanup writer if connection failed - rc = closesocket (*w_); - wsa_assert (rc != SOCKET_ERROR); - - *w_ = INVALID_SOCKET; - + if (*w_ != INVALID_SOCKET) { + rc = closesocket (*w_); + wsa_assert (rc != SOCKET_ERROR); + *w_ = INVALID_SOCKET; + } // Set errno from saved value - errno = wsa_error_to_errno (conn_errno); - - // Ideally, we would return errno to the caller signaler_t() - // Unfortunately, it uses errno_assert() which gives "Unknown error" - // We might as well assert here and print the actual error message - wsa_assert_no (conn_errno); - + errno = wsa_error_to_errno (saved_errno); return -1; } @@ -385,7 +432,7 @@ rc = setsockopt (listener, IPPROTO_TCP, TCP_NODELACK, &on, sizeof (on)); errno_assert (rc != -1); - rc = bind(listener, (struct sockaddr*) &lcladdr, sizeof (lcladdr)); + rc = bind (listener, (struct sockaddr*) &lcladdr, sizeof (lcladdr)); errno_assert (rc != -1); socklen_t lcladdr_len = sizeof (lcladdr); @@ -415,15 +462,20 @@ return 0; -#else // All other implementations support socketpair() - +#else + // All other implementations support socketpair() int sv [2]; int rc = socketpair (AF_UNIX, SOCK_STREAM, 0, sv); - errno_assert (rc == 0); - *w_ = sv [0]; - *r_ = sv [1]; - return 0; - + if (rc == -1) { + errno_assert (errno == ENFILE || errno == EMFILE); + *w_ = *r_ = -1; + return -1; + } + else { + *w_ = sv [0]; + *r_ = sv [1]; + return 0; + } #endif } diff -Nru zeromq3-3.2.4+dfsg/src/signaler.hpp zeromq3-4.0.4/src/signaler.hpp --- zeromq3-3.2.4+dfsg/src/signaler.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/signaler.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -21,6 +20,10 @@ #ifndef __ZMQ_SIGNALER_HPP_INCLUDED__ #define __ZMQ_SIGNALER_HPP_INCLUDED__ +#ifdef HAVE_FORK +#include +#endif + #include "fd.hpp" namespace zmq @@ -42,22 +45,36 @@ void send (); int wait (int timeout_); void recv (); - + +#ifdef HAVE_FORK + // close the file descriptors in a forked child process so that they + // do not interfere with the context in the parent process. + void forked(); +#endif + private: // Creates a pair of filedescriptors that will be used // to pass the signals. static int make_fdpair (fd_t *r_, fd_t *w_); - // Underlying write & read file descriptor. + // Underlying write & read file descriptor + // Will be -1 if we exceeded number of available handles fd_t w; fd_t r; // Disable copying of signaler_t object. signaler_t (const signaler_t&); const signaler_t &operator = (const signaler_t&); - }; +#ifdef HAVE_FORK + // the process that created this context. Used to detect forking. + pid_t pid; + // idempotent close of file descriptors that is safe to use by destructor + // and forked(). + void close_internal(); +#endif + }; } #endif diff -Nru zeromq3-3.2.4+dfsg/src/socket_base.cpp zeromq3-4.0.4/src/socket_base.cpp --- zeromq3-3.2.4+dfsg/src/socket_base.cpp 2013-02-01 09:02:44.000000000 +0000 +++ zeromq3-4.0.4/src/socket_base.cpp 2013-12-08 07:02:10.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -29,7 +26,7 @@ #if defined ZMQ_HAVE_WINDOWS #include "windows.hpp" #if defined _MSC_VER -#if defined WINCE +#if defined _WIN32_WCE #include #else #include @@ -70,6 +67,7 @@ #include "router.hpp" #include "xpub.hpp" #include "xsub.hpp" +#include "stream.hpp" bool zmq::socket_base_t::check_tag () { @@ -81,44 +79,49 @@ { socket_base_t *s = NULL; switch (type_) { - - case ZMQ_PAIR: - s = new (std::nothrow) pair_t (parent_, tid_, sid_); - break; - case ZMQ_PUB: - s = new (std::nothrow) pub_t (parent_, tid_, sid_); - break; - case ZMQ_SUB: - s = new (std::nothrow) sub_t (parent_, tid_, sid_); - break; - case ZMQ_REQ: - s = new (std::nothrow) req_t (parent_, tid_, sid_); - break; - case ZMQ_REP: - s = new (std::nothrow) rep_t (parent_, tid_, sid_); - break; - case ZMQ_DEALER: - s = new (std::nothrow) dealer_t (parent_, tid_, sid_); - break; - case ZMQ_ROUTER: - s = new (std::nothrow) router_t (parent_, tid_, sid_); - break; - case ZMQ_PULL: - s = new (std::nothrow) pull_t (parent_, tid_, sid_); - break; - case ZMQ_PUSH: - s = new (std::nothrow) push_t (parent_, tid_, sid_); - break; - case ZMQ_XPUB: - s = new (std::nothrow) xpub_t (parent_, tid_, sid_); - break; - case ZMQ_XSUB: - s = new (std::nothrow) xsub_t (parent_, tid_, sid_); - break; - default: - errno = EINVAL; - return NULL; + case ZMQ_PAIR: + s = new (std::nothrow) pair_t (parent_, tid_, sid_); + break; + case ZMQ_PUB: + s = new (std::nothrow) pub_t (parent_, tid_, sid_); + break; + case ZMQ_SUB: + s = new (std::nothrow) sub_t (parent_, tid_, sid_); + break; + case ZMQ_REQ: + s = new (std::nothrow) req_t (parent_, tid_, sid_); + break; + case ZMQ_REP: + s = new (std::nothrow) rep_t (parent_, tid_, sid_); + break; + case ZMQ_DEALER: + s = new (std::nothrow) dealer_t (parent_, tid_, sid_); + break; + case ZMQ_ROUTER: + s = new (std::nothrow) router_t (parent_, tid_, sid_); + break; + case ZMQ_PULL: + s = new (std::nothrow) pull_t (parent_, tid_, sid_); + break; + case ZMQ_PUSH: + s = new (std::nothrow) push_t (parent_, tid_, sid_); + break; + case ZMQ_XPUB: + s = new (std::nothrow) xpub_t (parent_, tid_, sid_); + break; + case ZMQ_XSUB: + s = new (std::nothrow) xsub_t (parent_, tid_, sid_); + break; + case ZMQ_STREAM: + s = new (std::nothrow) stream_t (parent_, tid_, sid_); + break; + default: + errno = EINVAL; + return NULL; } + if (s->mailbox.get_fd () == retired_fd) + return NULL; + alloc_assert (s); return s; } @@ -135,6 +138,7 @@ monitor_events (0) { options.socket_id = sid_; + options.ipv6 = (parent_->get (ZMQ_IPV6) != 0); } zmq::socket_base_t::~socket_base_t () @@ -219,14 +223,14 @@ return 0; } -void zmq::socket_base_t::attach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::socket_base_t::attach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { // First, register the pipe so that we can terminate it later on. pipe_->set_event_sink (this); pipes.push_back (pipe_); // Let the derived socket type know about new pipe. - xattach_pipe (pipe_, icanhasall_); + xattach_pipe (pipe_, subscribe_to_all_); // If the socket is already being closed, ask any new pipes to terminate // straight away. @@ -300,6 +304,16 @@ return 0; } + if (option_ == ZMQ_LAST_ENDPOINT) { + if (*optvallen_ < last_endpoint.size () + 1) { + errno = EINVAL; + return -1; + } + strcpy (static_cast (optval_), last_endpoint.c_str ()); + *optvallen_ = last_endpoint.size () + 1; + return 0; + } + return options.getsockopt (option_, optval_, optvallen_); } @@ -330,8 +344,8 @@ endpoint_t endpoint = {this, options}; int rc = register_endpoint (addr_, endpoint); if (rc == 0) { - // Save last endpoint URI - options.last_endpoint.assign (addr_); + connect_pending(addr_, this); + last_endpoint.assign (addr_); } return rc; } @@ -362,9 +376,9 @@ } // Save last endpoint URI - listener->get_address (options.last_endpoint); + listener->get_address (last_endpoint); - add_endpoint (addr_, (own_t *) listener); + add_endpoint (addr_, (own_t *) listener, NULL); return 0; } @@ -381,9 +395,9 @@ } // Save last endpoint URI - listener->get_address (options.last_endpoint); + listener->get_address (last_endpoint); - add_endpoint (addr_, (own_t *) listener); + add_endpoint (addr_, (own_t *) listener, NULL); return 0; } #endif @@ -423,63 +437,83 @@ // Find the peer endpoint. endpoint_t peer = find_endpoint (addr_); - if (!peer.socket) - return -1; // The total HWM for an inproc connection should be the sum of // the binder's HWM and the connector's HWM. int sndhwm = 0; - if (options.sndhwm != 0 && peer.options.rcvhwm != 0) + if (peer.socket == NULL) + sndhwm = options.sndhwm; + else if (options.sndhwm != 0 && peer.options.rcvhwm != 0) sndhwm = options.sndhwm + peer.options.rcvhwm; int rcvhwm = 0; - if (options.rcvhwm != 0 && peer.options.sndhwm != 0) + if (peer.socket == NULL) + rcvhwm = options.rcvhwm; + else if (options.rcvhwm != 0 && peer.options.sndhwm != 0) rcvhwm = options.rcvhwm + peer.options.sndhwm; // Create a bi-directional pipe to connect the peers. - object_t *parents [2] = {this, peer.socket}; - pipe_t *pipes [2] = {NULL, NULL}; - int hwms [2] = {sndhwm, rcvhwm}; - bool delays [2] = {options.delay_on_disconnect, options.delay_on_close}; - int rc = pipepair (parents, pipes, hwms, delays); + object_t *parents [2] = {this, peer.socket == NULL ? this : peer.socket}; + pipe_t *new_pipes [2] = {NULL, NULL}; + + bool conflate = options.conflate && + (options.type == ZMQ_DEALER || + options.type == ZMQ_PULL || + options.type == ZMQ_PUSH || + options.type == ZMQ_PUB || + options.type == ZMQ_SUB); + + int hwms [2] = {conflate? -1 : sndhwm, conflate? -1 : rcvhwm}; + bool conflates [2] = {conflate, conflate}; + int rc = pipepair (parents, new_pipes, hwms, conflates); errno_assert (rc == 0); // Attach local end of the pipe to this socket object. - attach_pipe (pipes [0]); + attach_pipe (new_pipes [0]); - // If required, send the identity of the local socket to the peer. - if (peer.options.recv_identity) { - msg_t id; - rc = id.init_size (options.identity_size); - errno_assert (rc == 0); - memcpy (id.data (), options.identity, options.identity_size); - id.set_flags (msg_t::identity); - bool written = pipes [0]->write (&id); - zmq_assert (written); - pipes [0]->flush (); + if (!peer.socket) + { + endpoint_t endpoint = {this, options}; + pending_connection_t pending_connection = {endpoint, new_pipes [0], new_pipes [1]}; + pend_connection (addr_, pending_connection); } + else + { + // If required, send the identity of the local socket to the peer. + if (peer.options.recv_identity) { + + msg_t id; + rc = id.init_size (options.identity_size); + errno_assert (rc == 0); + memcpy (id.data (), options.identity, options.identity_size); + id.set_flags (msg_t::identity); + bool written = new_pipes [0]->write (&id); + zmq_assert (written); + new_pipes [0]->flush (); + } - // If required, send the identity of the peer to the local socket. - if (options.recv_identity) { - msg_t id; - rc = id.init_size (peer.options.identity_size); - errno_assert (rc == 0); - memcpy (id.data (), peer.options.identity, peer.options.identity_size); - id.set_flags (msg_t::identity); - bool written = pipes [1]->write (&id); - zmq_assert (written); - pipes [1]->flush (); - } + // If required, send the identity of the peer to the local socket. + if (options.recv_identity) { + msg_t id; + rc = id.init_size (peer.options.identity_size); + errno_assert (rc == 0); + memcpy (id.data (), peer.options.identity, peer.options.identity_size); + id.set_flags (msg_t::identity); + bool written = new_pipes [1]->write (&id); + zmq_assert (written); + new_pipes [1]->flush (); + } - // Attach remote end of the pipe to the peer socket. Note that peer's - // seqnum was incremented in find_endpoint function. We don't need it - // increased here. - send_bind (peer.socket, pipes [1], false); + // Attach remote end of the pipe to the peer socket. Note that peer's + // seqnum was incremented in find_endpoint function. We don't need it + // increased here. + send_bind (peer.socket, new_pipes [1], false); + } // Save last endpoint URI - options.last_endpoint.assign (addr_); + last_endpoint.assign (addr_); // remember inproc connections for disconnect - inprocs.insert (inprocs_t::value_type (std::string (addr_), pipes[0])); + inprocs.insert (inprocs_t::value_type (std::string (addr_), new_pipes[0])); return 0; } @@ -499,7 +533,7 @@ paddr->resolved.tcp_addr = new (std::nothrow) tcp_address_t (); alloc_assert (paddr->resolved.tcp_addr); int rc = paddr->resolved.tcp_addr->resolve ( - address.c_str (), false, options.ipv4only ? true : false); + address.c_str (), false, options.ipv6); if (rc != 0) { delete paddr; return -1; @@ -535,36 +569,47 @@ // PGM does not support subscription forwarding; ask for all data to be // sent to this pipe. - bool icanhasall = protocol == "pgm" || protocol == "epgm"; + bool subscribe_to_all = protocol == "pgm" || protocol == "epgm"; + pipe_t *newpipe = NULL; - if (options.delay_attach_on_connect != 1 || icanhasall) { + if (options.immediate != 1 || subscribe_to_all) { // Create a bi-directional pipe. object_t *parents [2] = {this, session}; - pipe_t *pipes [2] = {NULL, NULL}; - int hwms [2] = {options.sndhwm, options.rcvhwm}; - bool delays [2] = {options.delay_on_disconnect, options.delay_on_close}; - rc = pipepair (parents, pipes, hwms, delays); + pipe_t *new_pipes [2] = {NULL, NULL}; + + bool conflate = options.conflate && + (options.type == ZMQ_DEALER || + options.type == ZMQ_PULL || + options.type == ZMQ_PUSH || + options.type == ZMQ_PUB || + options.type == ZMQ_SUB); + + int hwms [2] = {conflate? -1 : options.sndhwm, + conflate? -1 : options.rcvhwm}; + bool conflates [2] = {conflate, conflate}; + rc = pipepair (parents, new_pipes, hwms, conflates); errno_assert (rc == 0); // Attach local end of the pipe to the socket object. - attach_pipe (pipes [0], icanhasall); + attach_pipe (new_pipes [0], subscribe_to_all); + newpipe = new_pipes [0]; // Attach remote end of the pipe to the session object later on. - session->attach_pipe (pipes [1]); + session->attach_pipe (new_pipes [1]); } // Save last endpoint URI - paddr->to_string (options.last_endpoint); + paddr->to_string (last_endpoint); - add_endpoint (addr_, (own_t *) session); + add_endpoint (addr_, (own_t *) session, newpipe); return 0; } -void zmq::socket_base_t::add_endpoint (const char *addr_, own_t *endpoint_) +void zmq::socket_base_t::add_endpoint (const char *addr_, own_t *endpoint_, pipe_t *pipe) { // Activate the session. Make it a child of this socket. launch_child (endpoint_); - endpoints.insert (endpoints_t::value_type (std::string (addr_), endpoint_)); + endpoints.insert (endpoints_t::value_type (std::string (addr_), endpoint_pipe_t(endpoint_, pipe))); } int zmq::socket_base_t::term_endpoint (const char *addr_) @@ -605,14 +650,13 @@ errno = ENOENT; return -1; } - + for (inprocs_t::iterator it = range.first; it != range.second; ++it) it->second->terminate(true); inprocs.erase (range.first, range.second); return 0; } - // Find the endpoints range (if any) corresponding to the addr_ string. std::pair range = endpoints.equal_range (std::string (addr_)); if (range.first == range.second) { @@ -620,8 +664,12 @@ return -1; } - for (endpoints_t::iterator it = range.first; it != range.second; ++it) - term_child (it->second); + for (endpoints_t::iterator it = range.first; it != range.second; ++it) { + // If we have an associated pipe, terminate it. + if (it->second.second != NULL) + it->second.second->terminate(false); + term_child (it->second.first); + } endpoints.erase (range.first, range.second); return 0; } @@ -653,7 +701,7 @@ msg_->set_flags (msg_t::more); // Try to send the message. - rc = xsend (msg_, flags_); + rc = xsend (msg_); if (rc == 0) return 0; if (unlikely (errno != EAGAIN)) @@ -665,7 +713,7 @@ return -1; // Compute the time when the timeout should occur. - // If the timeout is infite, don't care. + // If the timeout is infinite, don't care. int timeout = options.sndtimeo; uint64_t end = timeout < 0 ? 0 : (clock.now_ms () + timeout); @@ -675,7 +723,7 @@ while (true) { if (unlikely (process_commands (timeout, false) != 0)) return -1; - rc = xsend (msg_, flags_); + rc = xsend (msg_); if (rc == 0) break; if (unlikely (errno != EAGAIN)) @@ -720,7 +768,7 @@ } // Get the message. - int rc = xrecv (msg_, flags_); + int rc = xrecv (msg_); if (unlikely (rc != 0 && errno != EAGAIN)) return -1; @@ -739,7 +787,7 @@ return -1; ticks = 0; - rc = xrecv (msg_, flags_); + rc = xrecv (msg_); if (rc < 0) return rc; extract_flags (msg_); @@ -747,7 +795,7 @@ } // Compute the time when the timeout should occur. - // If the timeout is infite, don't care. + // If the timeout is infinite, don't care. int timeout = options.rcvtimeo; uint64_t end = timeout < 0 ? 0 : (clock.now_ms () + timeout); @@ -757,7 +805,7 @@ while (true) { if (unlikely (process_commands (block ? timeout : 0, false) != 0)) return -1; - rc = xrecv (msg_, flags_); + rc = xrecv (msg_); if (rc == 0) { ticks = 0; break; @@ -917,7 +965,7 @@ return false; } -int zmq::socket_base_t::xsend (msg_t *, int) +int zmq::socket_base_t::xsend (msg_t *) { errno = ENOTSUP; return -1; @@ -928,7 +976,7 @@ return false; } -int zmq::socket_base_t::xrecv (msg_t *, int) +int zmq::socket_base_t::xrecv (msg_t *) { errno = ENOTSUP; return -1; @@ -999,17 +1047,17 @@ void zmq::socket_base_t::hiccuped (pipe_t *pipe_) { - if (options.delay_attach_on_connect == 1) + if (options.immediate == 1) pipe_->terminate (false); else // Notify derived sockets of the hiccup xhiccuped (pipe_); } -void zmq::socket_base_t::terminated (pipe_t *pipe_) +void zmq::socket_base_t::pipe_terminated (pipe_t *pipe_) { // Notify the specific socket type about the pipe termination. - xterminated (pipe_); + xpipe_terminated (pipe_); // Remove pipe from inproc pipes for (inprocs_t::iterator it = inprocs.begin(); it != inprocs.end(); ++it) { @@ -1091,10 +1139,8 @@ if (monitor_events & ZMQ_EVENT_CONNECTED) { zmq_event_t event; event.event = ZMQ_EVENT_CONNECTED; - event.data.connected.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.connected.addr, addr_); - event.data.connected.fd = fd_; - monitor_event (event); + event.value = fd_; + monitor_event (event, addr_); } } @@ -1103,10 +1149,8 @@ if (monitor_events & ZMQ_EVENT_CONNECT_DELAYED) { zmq_event_t event; event.event = ZMQ_EVENT_CONNECT_DELAYED; - event.data.connect_delayed.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.connect_delayed.addr, addr_); - event.data.connect_delayed.err = err_; - monitor_event (event); + event.value = err_; + monitor_event (event, addr_); } } @@ -1115,10 +1159,8 @@ if (monitor_events & ZMQ_EVENT_CONNECT_RETRIED) { zmq_event_t event; event.event = ZMQ_EVENT_CONNECT_RETRIED; - event.data.connect_retried.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.connect_retried.addr, addr_); - event.data.connect_retried.interval = interval_; - monitor_event (event); + event.value = interval_; + monitor_event (event, addr_); } } @@ -1127,10 +1169,8 @@ if (monitor_events & ZMQ_EVENT_LISTENING) { zmq_event_t event; event.event = ZMQ_EVENT_LISTENING; - event.data.listening.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.listening.addr, addr_); - event.data.listening.fd = fd_; - monitor_event (event); + event.value = fd_; + monitor_event (event, addr_); } } @@ -1139,10 +1179,8 @@ if (monitor_events & ZMQ_EVENT_BIND_FAILED) { zmq_event_t event; event.event = ZMQ_EVENT_BIND_FAILED; - event.data.bind_failed.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.bind_failed.addr, addr_); - event.data.bind_failed.err = err_; - monitor_event (event); + event.value = err_; + monitor_event (event, addr_); } } @@ -1151,10 +1189,8 @@ if (monitor_events & ZMQ_EVENT_ACCEPTED) { zmq_event_t event; event.event = ZMQ_EVENT_ACCEPTED; - event.data.accepted.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.accepted.addr, addr_); - event.data.accepted.fd = fd_; - monitor_event (event); + event.value = fd_; + monitor_event (event, addr_); } } @@ -1163,10 +1199,8 @@ if (monitor_events & ZMQ_EVENT_ACCEPT_FAILED) { zmq_event_t event; event.event = ZMQ_EVENT_ACCEPT_FAILED; - event.data.accept_failed.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.accept_failed.addr, addr_); - event.data.accept_failed.err= err_; - monitor_event (event); + event.value= err_; + monitor_event (event, addr_); } } @@ -1175,22 +1209,18 @@ if (monitor_events & ZMQ_EVENT_CLOSED) { zmq_event_t event; event.event = ZMQ_EVENT_CLOSED; - event.data.closed.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.closed.addr, addr_); - event.data.closed.fd = fd_; - monitor_event (event); + event.value = fd_; + monitor_event (event, addr_); } } - + void zmq::socket_base_t::event_close_failed (std::string &addr_, int err_) { if (monitor_events & ZMQ_EVENT_CLOSE_FAILED) { zmq_event_t event; event.event = ZMQ_EVENT_CLOSE_FAILED; - event.data.close_failed.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.close_failed.addr, addr_); - event.data.close_failed.err = err_; - monitor_event (event); + event.value = err_; + monitor_event (event, addr_); } } @@ -1199,36 +1229,41 @@ if (monitor_events & ZMQ_EVENT_DISCONNECTED) { zmq_event_t event; event.event = ZMQ_EVENT_DISCONNECTED; - event.data.disconnected.addr = (char *) malloc (addr_.size () + 1); - copy_monitor_address (event.data.disconnected.addr, addr_); - event.data.disconnected.fd = fd_; - monitor_event (event); + event.value = fd_; + monitor_event (event, addr_); } } -void zmq::socket_base_t::copy_monitor_address (char *dest_, std::string &src_) -{ - alloc_assert (dest_); - dest_[src_.size ()] = 0; - memcpy (dest_, src_.c_str (), src_.size ()); -} - -void zmq::socket_base_t::monitor_event (zmq_event_t event_) +void zmq::socket_base_t::monitor_event (zmq_event_t event_, const std::string& addr_) { if (monitor_socket) { + const uint16_t eid = (uint16_t)event_.event; + const uint32_t value = (uint32_t)event_.value; + // prepare and send first message frame + // containing event id and value zmq_msg_t msg; - void *event_data = malloc (sizeof (event_)); - alloc_assert (event_data); - memcpy (event_data, &event_, sizeof (event_)); - zmq_msg_init_data (&msg, event_data, sizeof (event_), zmq_free_event, NULL); + zmq_msg_init_size (&msg, sizeof(eid) + sizeof(value)); + char* data1 = (char*)zmq_msg_data(&msg); + memcpy (data1, &eid, sizeof(eid)); + memcpy (data1+sizeof(eid), &value, sizeof(value)); + zmq_sendmsg (monitor_socket, &msg, ZMQ_SNDMORE); + // prepare and send second message frame + // containing the address (endpoint) + zmq_msg_init_size (&msg, addr_.size()); + memcpy(zmq_msg_data(&msg), addr_.c_str(), addr_.size()); zmq_sendmsg (monitor_socket, &msg, 0); - zmq_msg_close (&msg); } } void zmq::socket_base_t::stop_monitor() { if (monitor_socket) { + if (monitor_events & ZMQ_EVENT_MONITOR_STOPPED) { + zmq_event_t event; + event.event = ZMQ_EVENT_MONITOR_STOPPED; + event.value = 0; + monitor_event (event, ""); + } zmq_close (monitor_socket); monitor_socket = NULL; monitor_events = 0; diff -Nru zeromq3-3.2.4+dfsg/src/socket_base.hpp zeromq3-4.0.4/src/socket_base.hpp --- zeromq3-3.2.4+dfsg/src/socket_base.hpp 2013-02-01 09:02:44.000000000 +0000 +++ zeromq3-4.0.4/src/socket_base.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -103,11 +100,11 @@ void read_activated (pipe_t *pipe_); void write_activated (pipe_t *pipe_); void hiccuped (pipe_t *pipe_); - void terminated (pipe_t *pipe_); + void pipe_terminated (pipe_t *pipe_); void lock(); void unlock(); - int monitor(const char *endpoint_, int events_); + int monitor (const char *endpoint_, int events_); void event_connected (std::string &addr_, int fd_); void event_connect_delayed (std::string &addr_, int err_); @@ -116,9 +113,9 @@ void event_bind_failed (std::string &addr_, int err_); void event_accepted (std::string &addr_, int fd_); void event_accept_failed (std::string &addr_, int err_); - void event_closed (std::string &addr_, int fd_); - void event_close_failed (std::string &addr_, int fd_); - void event_disconnected (std::string &addr_, int fd_); + void event_closed (std::string &addr_, int fd_); + void event_close_failed (std::string &addr_, int fd_); + void event_disconnected (std::string &addr_, int fd_); protected: @@ -128,7 +125,7 @@ // Concrete algorithms for the x- methods are to be defined by // individual socket types. virtual void xattach_pipe (zmq::pipe_t *pipe_, - bool icanhasall_ = false) = 0; + bool subscribe_to_all_ = false) = 0; // The default implementation assumes there are no specific socket // options for the particular socket type. If not so, overload this @@ -138,36 +135,34 @@ // The default implementation assumes that send is not supported. virtual bool xhas_out (); - virtual int xsend (zmq::msg_t *msg_, int flags_); + virtual int xsend (zmq::msg_t *msg_); // The default implementation assumes that recv in not supported. virtual bool xhas_in (); - virtual int xrecv (zmq::msg_t *msg_, int flags_); + virtual int xrecv (zmq::msg_t *msg_); // i_pipe_events will be forwarded to these functions. virtual void xread_activated (pipe_t *pipe_); virtual void xwrite_activated (pipe_t *pipe_); virtual void xhiccuped (pipe_t *pipe_); - virtual void xterminated (pipe_t *pipe_) = 0; + virtual void xpipe_terminated (pipe_t *pipe_) = 0; // Delay actual destruction of the socket. void process_destroy (); // Socket event data dispath - void monitor_event (zmq_event_t data_); - - // Copy monitor specific event endpoints to event messages - void copy_monitor_address (char *dest_, std::string &src_); + void monitor_event (zmq_event_t data_, const std::string& addr_); // Monitor socket cleanup void stop_monitor (); private: // Creates new endpoint ID and adds the endpoint to the map. - void add_endpoint (const char *addr_, own_t *endpoint_); + void add_endpoint (const char *addr_, own_t *endpoint_, pipe_t *pipe); // Map of open endpoints. - typedef std::multimap endpoints_t; + typedef std::pair endpoint_pipe_t; + typedef std::multimap endpoints_t; endpoints_t endpoints; // Map of open inproc endpoints. @@ -202,7 +197,7 @@ int check_protocol (const std::string &protocol_); // Register the pipe with this socket. - void attach_pipe (zmq::pipe_t *pipe_, bool icanhasall_ = false); + void attach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_ = false); // Processes commands sent to this socket (if any). If timeout is -1, // returns only after at least one command was processed. @@ -244,6 +239,9 @@ // Bitmask of events being monitored int monitor_events; + // Last socket endpoint resolved URI + std::string last_endpoint; + socket_base_t (const socket_base_t&); const socket_base_t &operator = (const socket_base_t&); mutex_t sync; diff -Nru zeromq3-3.2.4+dfsg/src/stdint.hpp zeromq3-4.0.4/src/stdint.hpp --- zeromq3-3.2.4+dfsg/src/stdint.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/stdint.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/stream.cpp zeromq3-4.0.4/src/stream.cpp --- zeromq3-3.2.4+dfsg/src/stream.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/stream.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,257 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "stream.hpp" +#include "pipe.hpp" +#include "wire.hpp" +#include "random.hpp" +#include "likely.hpp" +#include "err.hpp" + +zmq::stream_t::stream_t (class ctx_t *parent_, uint32_t tid_, int sid_) : + socket_base_t (parent_, tid_, sid_), + prefetched (false), + identity_sent (false), + current_out (NULL), + more_out (false), + next_peer_id (generate_random ()) +{ + options.type = ZMQ_STREAM; + options.raw_sock = true; + + prefetched_id.init (); + prefetched_msg.init (); +} + +zmq::stream_t::~stream_t () +{ + zmq_assert (outpipes.empty ()); + prefetched_id.close (); + prefetched_msg.close (); +} + +void zmq::stream_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) +{ + // subscribe_to_all_ is unused + (void)subscribe_to_all_; + + zmq_assert (pipe_); + + identify_peer (pipe_); + fq.attach (pipe_); +} + +void zmq::stream_t::xpipe_terminated (pipe_t *pipe_) +{ + outpipes_t::iterator it = outpipes.find (pipe_->get_identity ()); + zmq_assert (it != outpipes.end ()); + outpipes.erase (it); + fq.pipe_terminated (pipe_); + if (pipe_ == current_out) + current_out = NULL; +} + +void zmq::stream_t::xread_activated (pipe_t *pipe_) +{ + fq.activated (pipe_); +} + +void zmq::stream_t::xwrite_activated (pipe_t *pipe_) +{ + outpipes_t::iterator it; + for (it = outpipes.begin (); it != outpipes.end (); ++it) + if (it->second.pipe == pipe_) + break; + + zmq_assert (it != outpipes.end ()); + zmq_assert (!it->second.active); + it->second.active = true; +} + +int zmq::stream_t::xsend (msg_t *msg_) +{ + // If this is the first part of the message it's the ID of the + // peer to send the message to. + if (!more_out) { + zmq_assert (!current_out); + + // If we have malformed message (prefix with no subsequent message) + // then just silently ignore it. + // TODO: The connections should be killed instead. + if (msg_->flags () & msg_t::more) { + + // Find the pipe associated with the identity stored in the prefix. + // If there's no such pipe return an error + blob_t identity ((unsigned char*) msg_->data (), msg_->size ()); + outpipes_t::iterator it = outpipes.find (identity); + + if (it != outpipes.end ()) { + current_out = it->second.pipe; + if (!current_out->check_write ()) { + it->second.active = false; + current_out = NULL; + errno = EAGAIN; + return -1; + } + } + else { + errno = EHOSTUNREACH; + return -1; + } + } + + // Expect one more message frame. + more_out = true; + + int rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + return 0; + } + + // Ignore the MORE flag + msg_->reset_flags (msg_t::more); + + // This is the last part of the message. + more_out = false; + + // Push the message into the pipe. If there's no out pipe, just drop it. + if (current_out) { + + // Close the remote connection if user has asked to do so + // by sending zero length message. + // Pending messages in the pipe will be dropped (on receiving term- ack) + if (msg_->size () == 0) { + current_out->terminate (false); + int rc = msg_->close (); + errno_assert (rc == 0); + current_out = NULL; + return 0; + } + bool ok = current_out->write (msg_); + if (likely (ok)) + current_out->flush (); + current_out = NULL; + } + else { + int rc = msg_->close (); + errno_assert (rc == 0); + } + + // Detach the message from the data buffer. + int rc = msg_->init (); + errno_assert (rc == 0); + + return 0; +} + +int zmq::stream_t::xrecv (msg_t *msg_) +{ + if (prefetched) { + if (!identity_sent) { + int rc = msg_->move (prefetched_id); + errno_assert (rc == 0); + identity_sent = true; + } + else { + int rc = msg_->move (prefetched_msg); + errno_assert (rc == 0); + prefetched = false; + } + return 0; + } + + pipe_t *pipe = NULL; + int rc = fq.recvpipe (&prefetched_msg, &pipe); + if (rc != 0) + return -1; + + zmq_assert (pipe != NULL); + zmq_assert ((prefetched_msg.flags () & msg_t::more) == 0); + + // We have received a frame with TCP data. + // Rather than sendig this frame, we keep it in prefetched + // buffer and send a frame with peer's ID. + blob_t identity = pipe->get_identity (); + rc = msg_->init_size (identity.size ()); + errno_assert (rc == 0); + memcpy (msg_->data (), identity.data (), identity.size ()); + msg_->set_flags (msg_t::more); + + prefetched = true; + identity_sent = true; + + return 0; +} + +bool zmq::stream_t::xhas_in () +{ + // We may already have a message pre-fetched. + if (prefetched) + return true; + + // Try to read the next message. + // The message, if read, is kept in the pre-fetch buffer. + pipe_t *pipe = NULL; + int rc = fq.recvpipe (&prefetched_msg, &pipe); + if (rc != 0) + return false; + + zmq_assert (pipe != NULL); + zmq_assert ((prefetched_msg.flags () & msg_t::more) == 0); + + blob_t identity = pipe->get_identity (); + rc = prefetched_id.init_size (identity.size ()); + errno_assert (rc == 0); + memcpy (prefetched_id.data (), identity.data (), identity.size ()); + prefetched_id.set_flags (msg_t::more); + + prefetched = true; + identity_sent = false; + + return true; +} + +bool zmq::stream_t::xhas_out () +{ + // In theory, STREAM socket is always ready for writing. Whether actual + // attempt to write succeeds depends on which pipe the message is going + // to be routed to. + return true; +} + +void zmq::stream_t::identify_peer (pipe_t *pipe_) +{ + // Always assign identity for raw-socket + unsigned char buffer [5]; + buffer [0] = 0; + put_uint32 (buffer + 1, next_peer_id++); + blob_t identity = blob_t (buffer, sizeof buffer); + + memcpy (options.identity, identity.data (), identity.size ()); + options.identity_size = identity.size (); + + pipe_->set_identity (identity); + // Add the record into output pipes lookup table + outpipe_t outpipe = {pipe_, true}; + const bool ok = outpipes.insert ( + outpipes_t::value_type (identity, outpipe)).second; + zmq_assert (ok); +} diff -Nru zeromq3-3.2.4+dfsg/src/stream_engine.cpp zeromq3-4.0.4/src/stream_engine.cpp --- zeromq3-3.2.4+dfsg/src/stream_engine.cpp 2013-02-01 09:03:55.000000000 +0000 +++ zeromq3-4.0.4/src/stream_engine.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -38,19 +36,25 @@ #include "stream_engine.hpp" #include "io_thread.hpp" #include "session_base.hpp" -#include "encoder.hpp" -#include "decoder.hpp" #include "v1_encoder.hpp" #include "v1_decoder.hpp" +#include "v2_encoder.hpp" +#include "v2_decoder.hpp" +#include "null_mechanism.hpp" +#include "plain_mechanism.hpp" +#include "curve_client.hpp" +#include "curve_server.hpp" +#include "raw_decoder.hpp" +#include "raw_encoder.hpp" #include "config.hpp" #include "err.hpp" #include "ip.hpp" #include "likely.hpp" #include "wire.hpp" -zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_, const std::string &endpoint_) : +zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_, + const std::string &endpoint_) : s (fd_), - io_enabled (false), inpos (NULL), insize (0), decoder (NULL), @@ -58,41 +62,35 @@ outsize (0), encoder (NULL), handshaking (true), + greeting_size (v2_greeting_size), greeting_bytes_read (0), session (NULL), options (options_), endpoint (endpoint_), plugged (false), - terminating (false), + read_msg (&stream_engine_t::read_identity), + write_msg (&stream_engine_t::write_identity), + io_error (false), + subscription_required (false), + mechanism (NULL), + input_stopped (false), + output_stopped (false), socket (NULL) { + int rc = tx_msg.init (); + errno_assert (rc == 0); + // Put the socket into non-blocking mode. unblock_socket (s); - // Set the socket buffer limits for the underlying socket. - if (options.sndbuf) { - int rc = setsockopt (s, SOL_SOCKET, SO_SNDBUF, - (char*) &options.sndbuf, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else - errno_assert (rc == 0); -#endif - } - if (options.rcvbuf) { - int rc = setsockopt (s, SOL_SOCKET, SO_RCVBUF, - (char*) &options.rcvbuf, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else - errno_assert (rc == 0); -#endif - } + + if (!get_peer_ip_address (s, peer_address)) + peer_address = ""; #ifdef SO_NOSIGPIPE // Make sure that SIGPIPE signal is not generated when writing to a // connection that was already closed by the peer. int set = 1; - int rc = setsockopt (s, SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof (int)); + rc = setsockopt (s, SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof (int)); errno_assert (rc == 0); #endif } @@ -103,19 +101,21 @@ if (s != retired_fd) { #ifdef ZMQ_HAVE_WINDOWS - int rc = closesocket (s); - wsa_assert (rc != SOCKET_ERROR); + int rc = closesocket (s); + wsa_assert (rc != SOCKET_ERROR); #else - int rc = close (s); + int rc = close (s); errno_assert (rc == 0); #endif - s = retired_fd; + s = retired_fd; } - if (encoder != NULL) - delete encoder; - if (decoder != NULL) - delete decoder; + int rc = tx_msg.close (); + errno_assert (rc == 0); + + delete encoder; + delete decoder; + delete mechanism; } void zmq::stream_engine_t::plug (io_thread_t *io_thread_, @@ -133,15 +133,31 @@ // Connect to I/O threads poller object. io_object_t::plug (io_thread_); handle = add_fd (s); - io_enabled = true; + io_error = false; + + if (options.raw_sock) { + // no handshaking for raw sock, instantiate raw encoder and decoders + encoder = new (std::nothrow) raw_encoder_t (out_batch_size); + alloc_assert (encoder); + + decoder = new (std::nothrow) raw_decoder_t (in_batch_size); + alloc_assert (decoder); + + // disable handshaking for raw socket + handshaking = false; - // Send the 'length' and 'flags' fields of the identity message. - // The 'length' field is encoded in the long format. - outpos = greeting_output_buffer; - outpos [outsize++] = 0xff; - put_uint64 (&outpos [outsize], options.identity_size + 1); - outsize += 8; - outpos [outsize++] = 0x7f; + read_msg = &stream_engine_t::pull_msg_from_session; + write_msg = &stream_engine_t::push_msg_to_session; + } + else { + // Send the 'length' and 'flags' fields of the identity message. + // The 'length' field is encoded in the long format. + outpos = greeting_send; + outpos [outsize++] = 0xff; + put_uint64 (&outpos [outsize], options.identity_size + 1); + outsize += 8; + outpos [outsize++] = 0x7f; + } set_pollin (handle); set_pollout (handle); @@ -155,42 +171,38 @@ plugged = false; // Cancel all fd subscriptions. - if (io_enabled) { + if (!io_error) rm_fd (handle); - io_enabled = false; - } // Disconnect from I/O threads poller object. io_object_t::unplug (); - // Disconnect from session object. - if (encoder) - encoder->set_msg_source (NULL); - if (decoder) - decoder->set_msg_sink (NULL); session = NULL; } void zmq::stream_engine_t::terminate () { - if (!terminating && encoder && encoder->has_data ()) { - // Give io_thread a chance to send in the buffer - terminating = true; - return; - } unplug (); delete this; } void zmq::stream_engine_t::in_event () { - // If still handshaking, receive and prcess the greeting message. + assert (!io_error); + + // If still handshaking, receive and process the greeting message. if (unlikely (handshaking)) if (!handshake ()) return; zmq_assert (decoder); - bool disconnection = false; + + // If there has been an I/O error, stop polling. + if (input_stopped) { + rm_fd (handle); + io_error = true; + return; + } // If there's no data to process in the buffer... if (!insize) { @@ -199,53 +211,57 @@ // Note that buffer can be arbitrarily large. However, we assume // the underlying TCP layer has fixed buffer size and thus the // number of bytes read will be always limited. - decoder->get_buffer (&inpos, &insize); - insize = read (inpos, insize); + size_t bufsize = 0; + decoder->get_buffer (&inpos, &bufsize); - // Check whether the peer has closed the connection. - if (insize == (size_t) -1) { - insize = 0; - disconnection = true; + int const rc = read (inpos, bufsize); + if (rc == 0) { + error (); + return; + } + if (rc == -1) { + if (errno != EAGAIN) + error (); + return; } - } - - // Push the data to the decoder. - size_t processed = decoder->process_buffer (inpos, insize); - if (unlikely (processed == (size_t) -1)) { - disconnection = true; + // Adjust input size + insize = static_cast (rc); } - else { - // Stop polling for input if we got stuck. - if (processed < insize) - reset_pollin (handle); + int rc = 0; + size_t processed = 0; - // Adjust the buffer. + while (insize > 0) { + rc = decoder->decode (inpos, insize, processed); + zmq_assert (processed <= insize); inpos += processed; insize -= processed; + if (rc == 0 || rc == -1) + break; + rc = (this->*write_msg) (decoder->msg ()); + if (rc == -1) + break; } - // Flush all messages the decoder may have produced. - session->flush (); - - // Input error has occurred. If the last decoded - // message has already been accepted, we terminate - // the engine immediately. Otherwise, we stop - // waiting for input events and postpone the termination - // until after the session has accepted the message. - if (disconnection) { - if (decoder->stalled ()) { - rm_fd (handle); - io_enabled = false; - } - else + // Tear down the connection if we have failed to decode input data + // or the session has rejected the message. + if (rc == -1) { + if (errno != EAGAIN) { error (); + return; + } + input_stopped = true; + reset_pollin (handle); } + + session->flush (); } void zmq::stream_engine_t::out_event () { + zmq_assert (!io_error); + // If write buffer is empty, try to read new data from the encoder. if (!outsize) { @@ -258,10 +274,23 @@ } outpos = NULL; - encoder->get_data (&outpos, &outsize); + outsize = encoder->encode (&outpos, 0); + + while (outsize < out_batch_size) { + if ((this->*read_msg) (&tx_msg) == -1) + break; + encoder->load_msg (&tx_msg); + unsigned char *bufptr = outpos + outsize; + size_t n = encoder->encode (&bufptr, out_batch_size - outsize); + zmq_assert (n > 0); + if (outpos == NULL) + outpos = bufptr; + outsize += n; + } // If there is no data to send, stop polling for output. if (outsize == 0) { + output_stopped = true; reset_pollout (handle); return; } @@ -269,18 +298,16 @@ // If there are any data to write in write buffer, write as much as // possible to the socket. Note that amount of data to write can be - // arbitratily large. However, we assume that underlying TCP layer has + // arbitrarily large. However, we assume that underlying TCP layer has // limited transmission buffer and thus the actual number of bytes // written should be reasonably modest. int nbytes = write (outpos, outsize); // IO error has occurred. We stop waiting for output events. // The engine is not terminated until we detect input error; - // this is necessary to prevent losing incomming messages. + // this is necessary to prevent losing incoming messages. if (nbytes == -1) { reset_pollout (handle); - if (unlikely (terminating)) - terminate (); return; } @@ -292,15 +319,17 @@ if (unlikely (handshaking)) if (outsize == 0) reset_pollout (handle); - - if (unlikely (terminating)) - if (outsize == 0) - terminate (); } -void zmq::stream_engine_t::activate_out () +void zmq::stream_engine_t::restart_output () { - set_pollout (handle); + if (unlikely (io_error)) + return; + + if (likely (output_stopped)) { + set_pollout (handle); + output_stopped = false; + } // Speculative write: The assumption is that at the moment new message // was sent by the user the socket is probably available for writing. @@ -309,85 +338,137 @@ out_event (); } -void zmq::stream_engine_t::activate_in () +void zmq::stream_engine_t::restart_input () { - if (unlikely (!io_enabled)) { - // There was an input error but the engine could not - // be terminated (due to the stalled decoder). - // Flush the pending message and terminate the engine now. - zmq_assert (decoder); - decoder->process_buffer (inpos, 0); - zmq_assert (!decoder->stalled ()); - session->flush (); - error (); + zmq_assert (input_stopped); + zmq_assert (session != NULL); + zmq_assert (decoder != NULL); + + int rc = (this->*write_msg) (decoder->msg ()); + if (rc == -1) { + if (errno == EAGAIN) + session->flush (); + else + error (); return; } - set_pollin (handle); + while (insize > 0) { + size_t processed = 0; + rc = decoder->decode (inpos, insize, processed); + zmq_assert (processed <= insize); + inpos += processed; + insize -= processed; + if (rc == 0 || rc == -1) + break; + rc = (this->*write_msg) (decoder->msg ()); + if (rc == -1) + break; + } - // Speculative read. - in_event (); + if (rc == -1 && errno == EAGAIN) + session->flush (); + else + if (rc == -1 || io_error) + error (); + else { + input_stopped = false; + set_pollin (handle); + session->flush (); + + // Speculative read. + in_event (); + } } bool zmq::stream_engine_t::handshake () { zmq_assert (handshaking); zmq_assert (greeting_bytes_read < greeting_size); - // Receive the greeting. while (greeting_bytes_read < greeting_size) { - const int n = read (greeting + greeting_bytes_read, + const int n = read (greeting_recv + greeting_bytes_read, greeting_size - greeting_bytes_read); - if (n == -1) { + if (n == 0) { error (); return false; } - - if (n == 0) + if (n == -1) { + if (errno != EAGAIN) + error (); return false; + } greeting_bytes_read += n; // We have received at least one byte from the peer. // If the first byte is not 0xff, we know that the // peer is using unversioned protocol. - if (greeting [0] != 0xff) + if (greeting_recv [0] != 0xff) break; - if (greeting_bytes_read < 10) + if (greeting_bytes_read < signature_size) continue; // Inspect the right-most bit of the 10th byte (which coincides // with the 'flags' field if a regular message was sent). // Zero indicates this is a header of identity message // (i.e. the peer is using the unversioned protocol). - if (!(greeting [9] & 0x01)) + if (!(greeting_recv [9] & 0x01)) break; // The peer is using versioned protocol. - // Send the rest of the greeting, if necessary. - if (outpos + outsize != greeting_output_buffer + greeting_size) { + // Send the major version number. + if (outpos + outsize == greeting_send + signature_size) { if (outsize == 0) set_pollout (handle); - outpos [outsize++] = 1; // Protocol version - outpos [outsize++] = options.type; // Socket type + outpos [outsize++] = 3; // Major version number + } + + if (greeting_bytes_read > signature_size) { + if (outpos + outsize == greeting_send + signature_size + 1) { + if (outsize == 0) + set_pollout (handle); + + // Use ZMTP/2.0 to talk to older peers. + if (greeting_recv [10] == ZMTP_1_0 + || greeting_recv [10] == ZMTP_2_0) + outpos [outsize++] = options.type; + else { + outpos [outsize++] = 0; // Minor version number + memset (outpos + outsize, 0, 20); + + zmq_assert (options.mechanism == ZMQ_NULL + || options.mechanism == ZMQ_PLAIN + || options.mechanism == ZMQ_CURVE); + + if (options.mechanism == ZMQ_NULL) + memcpy (outpos + outsize, "NULL", 4); + else + if (options.mechanism == ZMQ_PLAIN) + memcpy (outpos + outsize, "PLAIN", 5); + else + memcpy (outpos + outsize, "CURVE", 5); + outsize += 20; + memset (outpos + outsize, 0, 32); + outsize += 32; + greeting_size = v3_greeting_size; + } + } } } - // Position of the version field in the greeting. - const size_t version_pos = 10; + // Position of the revision field in the greeting. + const size_t revision_pos = 10; - // Is the peer using the unversioned protocol? - // If so, we send and receive rests of identity - // messages. - if (greeting [0] != 0xff || !(greeting [9] & 0x01)) { - encoder = new (std::nothrow) encoder_t (out_batch_size); + // Is the peer using ZMTP/1.0 with no revision number? + // If so, we send and receive rest of identity message + if (greeting_recv [0] != 0xff || !(greeting_recv [9] & 0x01)) { + encoder = new (std::nothrow) v1_encoder_t (out_batch_size); alloc_assert (encoder); - encoder->set_msg_source (session); - decoder = new (std::nothrow) decoder_t (in_batch_size, options.maxmsgsize); + decoder = new (std::nothrow) v1_decoder_t (in_batch_size, options.maxmsgsize); alloc_assert (decoder); - decoder->set_msg_sink (session); // We have already sent the message header. // Since there is no way to tell the encoder to @@ -395,41 +476,88 @@ // header data away. const size_t header_size = options.identity_size + 1 >= 255 ? 10 : 2; unsigned char tmp [10], *bufferp = tmp; - size_t buffer_size = header_size; - encoder->get_data (&bufferp, &buffer_size); + + // Prepare the identity message and load it into encoder. + // Then consume bytes we have already sent to the peer. + const int rc = tx_msg.init_size (options.identity_size); + zmq_assert (rc == 0); + memcpy (tx_msg.data (), options.identity, options.identity_size); + encoder->load_msg (&tx_msg); + size_t buffer_size = encoder->encode (&bufferp, header_size); zmq_assert (buffer_size == header_size); // Make sure the decoder sees the data we have already received. - inpos = greeting; + inpos = greeting_recv; insize = greeting_bytes_read; // To allow for interoperability with peers that do not forward - // their subscriptions, we inject a phony subsription - // message into the incomming message stream. To put this - // message right after the identity message, we temporarily - // divert the message stream from session to ourselves. + // their subscriptions, we inject a phantom subscription message + // message into the incoming message stream. if (options.type == ZMQ_PUB || options.type == ZMQ_XPUB) - decoder->set_msg_sink (this); + subscription_required = true; + + // We are sending our identity now and the next message + // will come from the socket. + read_msg = &stream_engine_t::pull_msg_from_session; + + // We are expecting identity message. + write_msg = &stream_engine_t::write_identity; } else - if (greeting [version_pos] == 0) { - // ZMTP/1.0 framing. - encoder = new (std::nothrow) encoder_t (out_batch_size); + if (greeting_recv [revision_pos] == ZMTP_1_0) { + encoder = new (std::nothrow) v1_encoder_t ( + out_batch_size); alloc_assert (encoder); - encoder->set_msg_source (session); - decoder = new (std::nothrow) decoder_t (in_batch_size, options.maxmsgsize); + decoder = new (std::nothrow) v1_decoder_t ( + in_batch_size, options.maxmsgsize); + alloc_assert (decoder); + } + else + if (greeting_recv [revision_pos] == ZMTP_2_0) { + encoder = new (std::nothrow) v2_encoder_t (out_batch_size); + alloc_assert (encoder); + + decoder = new (std::nothrow) v2_decoder_t ( + in_batch_size, options.maxmsgsize); alloc_assert (decoder); - decoder->set_msg_sink (session); } else { - // v1 framing protocol. - encoder = new (std::nothrow) v1_encoder_t (out_batch_size, session); + encoder = new (std::nothrow) v2_encoder_t (out_batch_size); alloc_assert (encoder); - decoder = new (std::nothrow) - v1_decoder_t (in_batch_size, options.maxmsgsize, session); + decoder = new (std::nothrow) v2_decoder_t ( + in_batch_size, options.maxmsgsize); alloc_assert (decoder); + + if (memcmp (greeting_recv + 12, "NULL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20) == 0) { + mechanism = new (std::nothrow) + null_mechanism_t (session, peer_address, options); + alloc_assert (mechanism); + } + else + if (memcmp (greeting_recv + 12, "PLAIN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20) == 0) { + mechanism = new (std::nothrow) + plain_mechanism_t (session, peer_address, options); + alloc_assert (mechanism); + } +#ifdef HAVE_LIBSODIUM + else + if (memcmp (greeting_recv + 12, "CURVE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20) == 0) { + if (options.as_server) + mechanism = new (std::nothrow) + curve_server_t (session, peer_address, options); + else + mechanism = new (std::nothrow) curve_client_t (options); + alloc_assert (mechanism); + } +#endif + else { + error (); + return false; + } + read_msg = &stream_engine_t::next_handshake_command; + write_msg = &stream_engine_t::process_handshake_command; } // Start polling for output if necessary. @@ -443,35 +571,166 @@ return true; } -int zmq::stream_engine_t::push_msg (msg_t *msg_) +int zmq::stream_engine_t::read_identity (msg_t *msg_) { - zmq_assert (options.type == ZMQ_PUB || options.type == ZMQ_XPUB); - - // The first message is identity. - // Let the session process it. - int rc = session->push_msg (msg_); + int rc = msg_->init_size (options.identity_size); errno_assert (rc == 0); + if (options.identity_size > 0) + memcpy (msg_->data (), options.identity, options.identity_size); + read_msg = &stream_engine_t::pull_msg_from_session; + return 0; +} - // Inject the subscription message so that the ZMQ 2.x peer - // receives our messages. - rc = msg_->init_size (1); - errno_assert (rc == 0); - *(unsigned char*) msg_->data () = 1; - rc = session->push_msg (msg_); - session->flush (); +int zmq::stream_engine_t::write_identity (msg_t *msg_) +{ + if (options.recv_identity) { + msg_->set_flags (msg_t::identity); + int rc = session->push_msg (msg_); + errno_assert (rc == 0); + } + else { + int rc = msg_->close (); + errno_assert (rc == 0); + rc = msg_->init (); + errno_assert (rc == 0); + } - // Once we have injected the subscription message, we can - // Divert the message flow back to the session. - zmq_assert (decoder); - decoder->set_msg_sink (session); + if (subscription_required) + write_msg = &stream_engine_t::write_subscription_msg; + else + write_msg = &stream_engine_t::push_msg_to_session; + + return 0; +} + +int zmq::stream_engine_t::next_handshake_command (msg_t *msg_) +{ + zmq_assert (mechanism != NULL); + + const int rc = mechanism->next_handshake_command (msg_); + if (rc == 0) { + msg_->set_flags (msg_t::command); + if (mechanism->is_handshake_complete ()) + mechanism_ready (); + } + + return rc; +} + +int zmq::stream_engine_t::process_handshake_command (msg_t *msg_) +{ + zmq_assert (mechanism != NULL); + const int rc = mechanism->process_handshake_command (msg_); + if (rc == 0) { + if (mechanism->is_handshake_complete ()) + mechanism_ready (); + if (output_stopped) + restart_output (); + } + + return rc; +} + +void zmq::stream_engine_t::zap_msg_available () +{ + zmq_assert (mechanism != NULL); + + const int rc = mechanism->zap_msg_available (); + if (rc == -1) { + error (); + return; + } + if (input_stopped) + restart_input (); + if (output_stopped) + restart_output (); +} + +void zmq::stream_engine_t::mechanism_ready () +{ + if (options.recv_identity) { + msg_t identity; + mechanism->peer_identity (&identity); + const int rc = session->push_msg (&identity); + if (rc == -1 && errno == EAGAIN) { + // If the write is failing at this stage with + // an EAGAIN the pipe must be being shut down, + // so we can just bail out of the identity set. + return; + } + errno_assert (rc == 0); + session->flush (); + } + + read_msg = &stream_engine_t::pull_and_encode; + write_msg = &stream_engine_t::decode_and_push; +} + +int zmq::stream_engine_t::pull_msg_from_session (msg_t *msg_) +{ + return session->pull_msg (msg_); +} + +int zmq::stream_engine_t::push_msg_to_session (msg_t *msg_) +{ + return session->push_msg (msg_); +} + +int zmq::stream_engine_t::pull_and_encode (msg_t *msg_) +{ + zmq_assert (mechanism != NULL); + + if (session->pull_msg (msg_) == -1) + return -1; + if (mechanism->encode (msg_) == -1) + return -1; + return 0; +} + +int zmq::stream_engine_t::decode_and_push (msg_t *msg_) +{ + zmq_assert (mechanism != NULL); + + if (mechanism->decode (msg_) == -1) + return -1; + if (session->push_msg (msg_) == -1) { + if (errno == EAGAIN) + write_msg = &stream_engine_t::push_one_then_decode_and_push; + return -1; + } + return 0; +} +int zmq::stream_engine_t::push_one_then_decode_and_push (msg_t *msg_) +{ + const int rc = session->push_msg (msg_); + if (rc == 0) + write_msg = &stream_engine_t::decode_and_push; return rc; } +int zmq::stream_engine_t::write_subscription_msg (msg_t *msg_) +{ + msg_t subscription; + + // Inject the subscription message, so that also + // ZMQ 2.x peers receive published messages. + int rc = subscription.init_size (1); + errno_assert (rc == 0); + *(unsigned char*) subscription.data () = 1; + rc = session->push_msg (&subscription); + if (rc == -1) + return -1; + + write_msg = &stream_engine_t::push_msg_to_session; + return push_msg_to_session (msg_); +} + void zmq::stream_engine_t::error () { zmq_assert (session); socket->event_disconnected (endpoint, s); + session->flush (); session->detach (); unplug (); delete this; @@ -487,7 +746,7 @@ // we'll get an error (this may happen during the speculative write). if (nbytes == SOCKET_ERROR && WSAGetLastError () == WSAEWOULDBLOCK) return 0; - + // Signalise peer failure. if (nbytes == SOCKET_ERROR && ( WSAGetLastError () == WSAENETDOWN || @@ -527,7 +786,7 @@ return -1; } - return (size_t) nbytes; + return static_cast (nbytes); #endif } @@ -536,59 +795,45 @@ { #ifdef ZMQ_HAVE_WINDOWS - int nbytes = recv (s, (char*) data_, (int) size_, 0); + const int rc = recv (s, (char*) data_, (int) size_, 0); // If not a single byte can be read from the socket in non-blocking mode // we'll get an error (this may happen during the speculative read). - if (nbytes == SOCKET_ERROR && WSAGetLastError () == WSAEWOULDBLOCK) - return 0; - - // Connection failure. - if (nbytes == SOCKET_ERROR && ( - WSAGetLastError () == WSAENETDOWN || - WSAGetLastError () == WSAENETRESET || - WSAGetLastError () == WSAECONNABORTED || - WSAGetLastError () == WSAETIMEDOUT || - WSAGetLastError () == WSAECONNRESET || - WSAGetLastError () == WSAECONNREFUSED || - WSAGetLastError () == WSAENOTCONN)) - return -1; - - wsa_assert (nbytes != SOCKET_ERROR); - - // Orderly shutdown by the other peer. - if (nbytes == 0) - return -1; + if (rc == SOCKET_ERROR) { + if (WSAGetLastError () == WSAEWOULDBLOCK) + errno = EAGAIN; + else { + wsa_assert (WSAGetLastError () == WSAENETDOWN + || WSAGetLastError () == WSAENETRESET + || WSAGetLastError () == WSAECONNABORTED + || WSAGetLastError () == WSAETIMEDOUT + || WSAGetLastError () == WSAECONNRESET + || WSAGetLastError () == WSAECONNREFUSED + || WSAGetLastError () == WSAENOTCONN); + errno = wsa_error_to_errno (WSAGetLastError ()); + } + } - return nbytes; + return rc == SOCKET_ERROR? -1: rc; #else - ssize_t nbytes = recv (s, data_, size_, 0); + const ssize_t rc = recv (s, data_, size_, 0); // Several errors are OK. When speculative read is being done we may not // be able to read a single byte from the socket. Also, SIGSTOP issued // by a debugging tool can result in EINTR error. - if (nbytes == -1 && (errno == EAGAIN || errno == EWOULDBLOCK || - errno == EINTR)) - return 0; - - // Signalise peer failure. - if (nbytes == -1) { + if (rc == -1) { errno_assert (errno != EBADF && errno != EFAULT && errno != EINVAL && errno != ENOMEM && errno != ENOTSOCK); - return -1; + if (errno == EWOULDBLOCK || errno == EINTR) + errno = EAGAIN; } - // Orderly shutdown by the peer. - if (nbytes == 0) - return -1; - - return (size_t) nbytes; + return static_cast (rc); #endif } - diff -Nru zeromq3-3.2.4+dfsg/src/stream_engine.hpp zeromq3-4.0.4/src/stream_engine.hpp --- zeromq3-3.2.4+dfsg/src/stream_engine.hpp 2013-02-01 09:03:55.000000000 +0000 +++ zeromq3-4.0.4/src/stream_engine.hpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -26,7 +24,6 @@ #include "fd.hpp" #include "i_engine.hpp" -#include "i_msg_sink.hpp" #include "io_object.hpp" #include "i_encoder.hpp" #include "i_decoder.hpp" @@ -36,29 +33,36 @@ namespace zmq { + // Protocol revisions + enum + { + ZMTP_1_0 = 0, + ZMTP_2_0 = 1 + }; class io_thread_t; + class msg_t; class session_base_t; + class mechanism_t; // This engine handles any socket with SOCK_STREAM semantics, // e.g. TCP socket or an UNIX domain socket. - class stream_engine_t : public io_object_t, public i_engine, public i_msg_sink + class stream_engine_t : public io_object_t, public i_engine { public: - stream_engine_t (fd_t fd_, const options_t &options_, const std::string &endpoint); + stream_engine_t (fd_t fd_, const options_t &options_, + const std::string &endpoint); ~stream_engine_t (); // i_engine interface implementation. void plug (zmq::io_thread_t *io_thread_, zmq::session_base_t *session_); void terminate (); - void activate_in (); - void activate_out (); - - // i_msg_sink interface implementation. - virtual int push_msg (msg_t *msg_); + void restart_input (); + void restart_output (); + void zap_msg_available (); // i_poll_events interface implementation. void in_event (); @@ -83,21 +87,38 @@ // of error or orderly shutdown by the other peer -1 is returned. int write (const void *data_, size_t size_); - // Reads data from the socket (up to 'size' bytes). Returns the number - // of bytes actually read (even zero is to be considered to be - // a success). In case of error or orderly shutdown by the other - // peer -1 is returned. + // Reads data from the socket (up to 'size' bytes). + // Returns the number of bytes actually read or -1 on error. + // Zero indicates the peer has closed the connection. int read (void *data_, size_t size_); + int read_identity (msg_t *msg_); + int write_identity (msg_t *msg_); + + int next_handshake_command (msg_t *msg); + int process_handshake_command (msg_t *msg); + + int pull_msg_from_session (msg_t *msg_); + int push_msg_to_session (msg_t *msg); + + int pull_and_encode (msg_t *msg_); + int decode_and_push (msg_t *msg_); + int push_one_then_decode_and_push (msg_t *msg_); + + void mechanism_ready (); + + int write_subscription_msg (msg_t *msg_); + + size_t add_property (unsigned char *ptr, + const char *name, const void *value, size_t value_len); + // Underlying socket. fd_t s; - // Size of the greeting message: - // Preamble (10 bytes) + version (1 byte) + socket type (1 byte). - const static size_t greeting_size = 12; + // True iff this is server's engine. + bool as_server; - // True iff we are registered with an I/O poller. - bool io_enabled; + msg_t tx_msg; handle_t handle; @@ -114,17 +135,23 @@ // version. When false, normal message flow has started. bool handshaking; - // The receive buffer holding the greeting message - // that we are receiving from the peer. - unsigned char greeting [greeting_size]; + static const size_t signature_size = 10; - // The number of bytes of the greeting message that - // we have already received. - unsigned int greeting_bytes_read; + // Size of ZMTP/1.0 and ZMTP/2.0 greeting message + static const size_t v2_greeting_size = 12; + + // Size of ZMTP/3.0 greeting message + static const size_t v3_greeting_size = 64; - // The send buffer holding the greeting message - // that we are sending to the peer. - unsigned char greeting_output_buffer [greeting_size]; + // Expected greeting size. + size_t greeting_size; + + // Greeting received from, and sent to peer + unsigned char greeting_recv [v3_greeting_size]; + unsigned char greeting_send [v3_greeting_size]; + + // Size of greeting received so far + unsigned int greeting_bytes_read; // The session this engine is attached to. zmq::session_base_t *session; @@ -135,11 +162,31 @@ std::string endpoint; bool plugged; - bool terminating; + + int (stream_engine_t::*read_msg) (msg_t *msg_); + + int (stream_engine_t::*write_msg) (msg_t *msg_); + + bool io_error; + + // Indicates whether the engine is to inject a phantom + // subscription message into the incoming stream. + // Needed to support old peers. + bool subscription_required; + + mechanism_t *mechanism; + + // True iff the engine couldn't consume the last decoded message. + bool input_stopped; + + // True iff the engine doesn't have any message to encode. + bool output_stopped; // Socket zmq::socket_base_t *socket; + std::string peer_address; + stream_engine_t (const stream_engine_t&); const stream_engine_t &operator = (const stream_engine_t&); }; diff -Nru zeromq3-3.2.4+dfsg/src/stream.hpp zeromq3-4.0.4/src/stream.hpp --- zeromq3-3.2.4+dfsg/src/stream.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/stream.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,97 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_STREAM_HPP_INCLUDED__ +#define __ZMQ_STREAM_HPP_INCLUDED__ + +#include + +#include "router.hpp" + +namespace zmq +{ + + class ctx_t; + class pipe_t; + + class stream_t : + public socket_base_t + { + public: + + stream_t (zmq::ctx_t *parent_, uint32_t tid_, int sid); + ~stream_t (); + + // Overloads of functions from socket_base_t. + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); + int xsend (zmq::msg_t *msg_); + int xrecv (zmq::msg_t *msg_); + bool xhas_in (); + bool xhas_out (); + void xread_activated (zmq::pipe_t *pipe_); + void xwrite_activated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); + + private: + // Generate peer's id and update lookup map + void identify_peer (pipe_t *pipe_); + + // Fair queueing object for inbound pipes. + fq_t fq; + + // True iff there is a message held in the pre-fetch buffer. + bool prefetched; + + // If true, the receiver got the message part with + // the peer's identity. + bool identity_sent; + + // Holds the prefetched identity. + msg_t prefetched_id; + + // Holds the prefetched message. + msg_t prefetched_msg; + + struct outpipe_t + { + zmq::pipe_t *pipe; + bool active; + }; + + // Outbound pipes indexed by the peer IDs. + typedef std::map outpipes_t; + outpipes_t outpipes; + + // The pipe we are currently writing to. + zmq::pipe_t *current_out; + + // If true, more outgoing message parts are expected. + bool more_out; + + // Peer ID are generated. It's a simple increment and wrap-over + // algorithm. This value is the next ID to use (if not used already). + uint32_t next_peer_id; + + stream_t (const stream_t&); + const stream_t &operator = (const stream_t&); + }; + +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/sub.cpp zeromq3-4.0.4/src/sub.cpp --- zeromq3-3.2.4+dfsg/src/sub.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/sub.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -51,13 +49,14 @@ unsigned char *data = (unsigned char*) msg.data (); if (option_ == ZMQ_SUBSCRIBE) *data = 1; - else if (option_ == ZMQ_UNSUBSCRIBE) + else + if (option_ == ZMQ_UNSUBSCRIBE) *data = 0; memcpy (data + 1, optval_, optvallen_); // Pass it further on in the stack. int err = 0; - rc = xsub_t::xsend (&msg, 0); + rc = xsub_t::xsend (&msg); if (rc != 0) err = errno; int rc2 = msg.close (); @@ -67,7 +66,7 @@ return rc; } -int zmq::sub_t::xsend (msg_t *, int) +int zmq::sub_t::xsend (msg_t *) { // Overload the XSUB's send. errno = ENOTSUP; @@ -79,15 +78,3 @@ // Overload the XSUB's send. return false; } - -zmq::sub_session_t::sub_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - xsub_session_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::sub_session_t::~sub_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/sub.hpp zeromq3-4.0.4/src/sub.hpp --- zeromq3-3.2.4+dfsg/src/sub.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/sub.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -42,7 +40,7 @@ protected: int xsetsockopt (int option_, const void *optval_, size_t optvallen_); - int xsend (zmq::msg_t *msg_, int flags_); + int xsend (zmq::msg_t *msg_); bool xhas_out (); private: @@ -51,21 +49,6 @@ const sub_t &operator = (const sub_t&); }; - class sub_session_t : public xsub_session_t - { - public: - - sub_session_t (zmq::io_thread_t *io_thread_, bool connect_, - zmq::socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~sub_session_t (); - - private: - - sub_session_t (const sub_session_t&); - const sub_session_t &operator = (const sub_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/tcp_address.cpp zeromq3-4.0.4/src/tcp_address.cpp --- zeromq3-3.2.4+dfsg/src/tcp_address.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/tcp_address.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -52,10 +50,10 @@ #include // On Solaris platform, network interface name can be queried by ioctl. -int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv4only_) +int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_) { // TODO: Unused parameter, IPv6 support not implemented for Solaris. - (void) ipv4only_; + (void) ipv6_; // Create a socket. int fd = open_socket (AF_INET, SOCK_DGRAM, 0); @@ -106,7 +104,6 @@ errno = ENODEV; return -1; } - return 0; } @@ -117,10 +114,10 @@ #include #include -int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv4only_) +int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_) { // TODO: Unused parameter, IPv6 support not implemented for AIX or HP/UX. - (void) ipv4only_; + (void) ipv6_; // Create a socket. int sd = open_socket (AF_INET, SOCK_DGRAM, 0); @@ -141,7 +138,6 @@ errno = ENODEV; return -1; } - memcpy (&address.ipv4.sin_addr, &((sockaddr_in*) &ifr.ifr_addr)->sin_addr, sizeof (in_addr)); @@ -157,10 +153,10 @@ // On these platforms, network interface name can be queried // using getifaddrs function. -int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv4only_) +int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_) { // Get the addresses. - ifaddrs* ifa = NULL; + ifaddrs *ifa = NULL; int rc = getifaddrs (&ifa); errno_assert (rc == 0); zmq_assert (ifa != NULL); @@ -173,11 +169,8 @@ continue; int family = ifp->ifa_addr->sa_family; - - if ((family == AF_INET - || (!ipv4only_ && family == AF_INET6)) - && !strcmp (nic_, ifp->ifa_name)) - { + if ((family == AF_INET || (ipv6_ && family == AF_INET6)) + && !strcmp (nic_, ifp->ifa_name)) { memcpy (&address, ifp->ifa_addr, (family == AF_INET) ? sizeof (struct sockaddr_in) : sizeof (struct sockaddr_in6)); @@ -193,7 +186,6 @@ errno = ENODEV; return -1; } - return 0; } @@ -201,11 +193,11 @@ // On other platforms we assume there are no sane interface names. // This is true especially of Windows. -int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv4only_) +int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_) { // All unused parameters. (void) nic_; - (void) ipv4only_; + (void) ipv6_; errno = ENODEV; return -1; @@ -213,8 +205,7 @@ #endif -int zmq::tcp_address_t::resolve_interface (const char *interface_, - bool ipv4only_) +int zmq::tcp_address_t::resolve_interface (const char *interface_, bool ipv6_) { // Initialize temporary output pointers with storage address. sockaddr_storage ss; @@ -223,15 +214,7 @@ // Initialise IP-format family/port and populate temporary output pointers // with the address. - if (ipv4only_) { - sockaddr_in ip4_addr; - memset (&ip4_addr, 0, sizeof (ip4_addr)); - ip4_addr.sin_family = AF_INET; - ip4_addr.sin_addr.s_addr = htonl (INADDR_ANY); - out_addrlen = sizeof ip4_addr; - memcpy (out_addr, &ip4_addr, out_addrlen); - } - else { + if (ipv6_) { sockaddr_in6 ip6_addr; memset (&ip6_addr, 0, sizeof (ip6_addr)); ip6_addr.sin6_family = AF_INET6; @@ -239,8 +222,15 @@ out_addrlen = sizeof ip6_addr; memcpy (out_addr, &ip6_addr, out_addrlen); } - - // * resolves to INADDR_ANY or in6addr_any. + else { + sockaddr_in ip4_addr; + memset (&ip4_addr, 0, sizeof (ip4_addr)); + ip4_addr.sin_family = AF_INET; + ip4_addr.sin_addr.s_addr = htonl (INADDR_ANY); + out_addrlen = sizeof ip4_addr; + memcpy (out_addr, &ip4_addr, out_addrlen); + } + // "*" resolves to INADDR_ANY or in6addr_any. if (strcmp (interface_, "*") == 0) { zmq_assert (out_addrlen <= sizeof address); memcpy (&address, out_addr, out_addrlen); @@ -248,7 +238,7 @@ } // Try to resolve the string as a NIC name. - int rc = resolve_nic_name (interface_, ipv4only_); + int rc = resolve_nic_name (interface_, ipv6_); if (rc != 0 && errno != ENODEV) return rc; if (rc == 0) @@ -266,7 +256,7 @@ // Choose IPv4 or IPv6 protocol family. Note that IPv6 allows for // IPv4-in-IPv6 addresses. - req.ai_family = ipv4only_ ? AF_INET : AF_INET6; + req.ai_family = ipv6_? AF_INET6: AF_INET; // Arbitrary, not used in the output, but avoids duplicate results. req.ai_socktype = SOCK_STREAM; @@ -304,7 +294,7 @@ return 0; } -int zmq::tcp_address_t::resolve_hostname (const char *hostname_, bool ipv4only_) +int zmq::tcp_address_t::resolve_hostname (const char *hostname_, bool ipv6_) { // Set up the query. #if defined ZMQ_HAVE_OPENVMS && defined __ia64 && __INITIAL_POINTER_SIZE == 64 @@ -316,7 +306,7 @@ // Choose IPv4 or IPv6 protocol family. Note that IPv6 allows for // IPv4-in-IPv6 addresses. - req.ai_family = ipv4only_ ? AF_INET : AF_INET6; + req.ai_family = ipv6_? AF_INET6: AF_INET; // Need to choose one to avoid duplicate results from getaddrinfo() - this // doesn't really matter, since it's not included in the addr-output. @@ -382,7 +372,7 @@ { } -int zmq::tcp_address_t::resolve (const char *name_, bool local_, bool ipv4only_) +int zmq::tcp_address_t::resolve (const char *name_, bool local_, bool ipv6_) { // Find the ':' at end that separates address from the port number. const char *delimiter = strrchr (name_, ':'); @@ -390,7 +380,6 @@ errno = EINVAL; return -1; } - // Separate the address/port. std::string addr_str (name_, delimiter - name_); std::string port_str (delimiter + 1); @@ -400,8 +389,8 @@ addr_str [addr_str.size () - 1] == ']') addr_str = addr_str.substr (1, addr_str.size () - 2); - uint16_t port; // Allow 0 specifically, to detect invalid port error in atoi if not + uint16_t port; if (port_str == "*" || port_str == "0") // Resolve wildcard to 0 to allow autoselection of port port = 0; @@ -417,9 +406,9 @@ // Resolve the IP address. int rc; if (local_) - rc = resolve_interface (addr_str.c_str (), ipv4only_); + rc = resolve_interface (addr_str.c_str (), ipv6_); else - rc = resolve_hostname (addr_str.c_str (), ipv4only_); + rc = resolve_hostname (addr_str.c_str (), ipv6_); if (rc != 0) return -1; @@ -434,7 +423,8 @@ int zmq::tcp_address_t::to_string (std::string &addr_) { - if (address.generic.sa_family != AF_INET && address.generic.sa_family != AF_INET6) { + if (address.generic.sa_family != AF_INET + && address.generic.sa_family != AF_INET6) { addr_.clear (); return -1; } @@ -493,7 +483,7 @@ return address_mask; } -int zmq::tcp_address_mask_t::resolve (const char *name_, bool ipv4only_) +int zmq::tcp_address_mask_t::resolve (const char *name_, bool ipv6_) { // Find '/' at the end that separates address from the cidr mask number. // Allow empty mask clause and threat it like '/32' for ipv4 or '/128' for ipv6. @@ -507,12 +497,11 @@ return -1; } } - else { + else addr_str.assign (name_); - } // Parse address part using standard routines. - int rc = tcp_address_t::resolve_hostname (addr_str.c_str (), ipv4only_); + int rc = tcp_address_t::resolve_hostname (addr_str.c_str (), ipv6_); if (rc != 0) return rc; diff -Nru zeromq3-3.2.4+dfsg/src/tcp_address.hpp zeromq3-4.0.4/src/tcp_address.hpp --- zeromq3-3.2.4+dfsg/src/tcp_address.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/tcp_address.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -45,8 +43,8 @@ // This function translates textual TCP address into an address // strcuture. If 'local' is true, names are resolved as local interface // names. If it is false, names are resolved as remote hostnames. - // If 'ipv4only' is true, the name will never resolve to IPv6 address. - int resolve (const char* name_, bool local_, bool ipv4only_); + // If 'ipv6' is true, the name may resolve to IPv6 address. + int resolve (const char *name_, bool local_, bool ipv6_); // The opposite to resolve() virtual int to_string (std::string &addr_); @@ -60,10 +58,9 @@ socklen_t addrlen () const; protected: - - int resolve_nic_name (const char *nic_, bool ipv4only_); - int resolve_interface (const char *interface_, bool ipv4only_); - int resolve_hostname (const char *hostname_, bool ipv4only_); + int resolve_nic_name (const char *nic_, bool ipv6_); + int resolve_interface (const char *interface_, bool ipv6_); + int resolve_hostname (const char *hostname_, bool ipv6_); union { sockaddr generic; @@ -75,13 +72,12 @@ class tcp_address_mask_t : public tcp_address_t { public: - tcp_address_mask_t (); // This function enhances tcp_address_t::resolve() with ability to parse // additional cidr-like(/xx) mask value at the end of the name string. // Works only with remote hostnames. - int resolve (const char* name_, bool ipv4only_); + int resolve (const char *name_, bool ipv6_); // The opposite to resolve() int to_string (std::string &addr_); @@ -91,7 +87,6 @@ bool match_address (const struct sockaddr *ss, const socklen_t ss_len) const; private: - int address_mask; }; diff -Nru zeromq3-3.2.4+dfsg/src/tcp_connecter.cpp zeromq3-4.0.4/src/tcp_connecter.cpp --- zeromq3-3.2.4+dfsg/src/tcp_connecter.cpp 2013-05-02 18:41:25.000000000 +0000 +++ zeromq3-4.0.4/src/tcp_connecter.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -104,7 +102,7 @@ void zmq::tcp_connecter_t::in_event () { - // We are not polling for incomming data, so we are actually called + // We are not polling for incoming data, so we are actually called // because of error here. However, we can get error on out event as well // on some platforms, so we'll simply handle both events in the same way. out_event (); @@ -127,7 +125,8 @@ tune_tcp_keepalives (fd, options.tcp_keepalive, options.tcp_keepalive_cnt, options.tcp_keepalive_idle, options.tcp_keepalive_intvl); // Create the engine object for this connection. - stream_engine_t *engine = new (std::nothrow) stream_engine_t (fd, options, endpoint); + stream_engine_t *engine = new (std::nothrow) + stream_engine_t (fd, options, endpoint); alloc_assert (engine); // Attach the engine to the corresponding session object. @@ -227,6 +226,12 @@ // Set the socket to non-blocking mode so that we get async connect(). unblock_socket (s); + // Set the socket buffer limits for the underlying socket. + if (options.sndbuf != 0) + set_tcp_send_buffer (s, options.sndbuf); + if (options.rcvbuf != 0) + set_tcp_receive_buffer (s, options.rcvbuf); + // Connect to the remote peer. int rc = ::connect ( s, addr->resolved.tcp_addr->addr (), diff -Nru zeromq3-3.2.4+dfsg/src/tcp_connecter.hpp zeromq3-4.0.4/src/tcp_connecter.hpp --- zeromq3-3.2.4+dfsg/src/tcp_connecter.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/tcp_connecter.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/tcp.cpp zeromq3-4.0.4/src/tcp.cpp --- zeromq3-3.2.4+dfsg/src/tcp.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/tcp.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -61,6 +59,28 @@ #endif } +void zmq::set_tcp_send_buffer (fd_t sockfd_, int bufsize_) +{ + const int rc = setsockopt (sockfd_, SOL_SOCKET, SO_SNDBUF, + (char*) &bufsize_, sizeof bufsize_); +#ifdef ZMQ_HAVE_WINDOWS + wsa_assert (rc != SOCKET_ERROR); +#else + errno_assert (rc == 0); +#endif +} + +void zmq::set_tcp_receive_buffer (fd_t sockfd_, int bufsize_) +{ + const int rc = setsockopt (sockfd_, SOL_SOCKET, SO_RCVBUF, + (char*) &bufsize_, sizeof bufsize_); +#ifdef ZMQ_HAVE_WINDOWS + wsa_assert (rc != SOCKET_ERROR); +#else + errno_assert (rc == 0); +#endif +} + void zmq::tune_tcp_keepalives (fd_t s_, int keepalive_, int keepalive_cnt_, int keepalive_idle_, int keepalive_intvl_) { // These options are used only under certain #ifdefs below. @@ -74,44 +94,37 @@ // Tuning TCP keep-alives if platform allows it // All values = -1 means skip and leave it for OS +#ifdef ZMQ_HAVE_WINDOWS + tcp_keepalive keepalive_opts; + keepalive_opts.onoff = keepalive_; + keepalive_opts.keepalivetime = keepalive_idle_ != -1 ? keepalive_idle_ * 1000 : 7200000; + keepalive_opts.keepaliveinterval = keepalive_intvl_ != -1 ? keepalive_intvl_ * 1000 : 1000; + DWORD num_bytes_returned; + int rc = WSAIoctl(s_, SIO_KEEPALIVE_VALS, &keepalive_opts, sizeof(keepalive_opts), NULL, 0, &num_bytes_returned, NULL, NULL); + wsa_assert (rc != SOCKET_ERROR); +#else #ifdef ZMQ_HAVE_SO_KEEPALIVE if (keepalive_ != -1) { int rc = setsockopt (s_, SOL_SOCKET, SO_KEEPALIVE, (char*) &keepalive_, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else errno_assert (rc == 0); -#endif #ifdef ZMQ_HAVE_TCP_KEEPCNT if (keepalive_cnt_ != -1) { int rc = setsockopt (s_, IPPROTO_TCP, TCP_KEEPCNT, &keepalive_cnt_, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else errno_assert (rc == 0); -#endif } #endif // ZMQ_HAVE_TCP_KEEPCNT #ifdef ZMQ_HAVE_TCP_KEEPIDLE if (keepalive_idle_ != -1) { int rc = setsockopt (s_, IPPROTO_TCP, TCP_KEEPIDLE, &keepalive_idle_, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else errno_assert (rc == 0); -#endif } #else // ZMQ_HAVE_TCP_KEEPIDLE #ifdef ZMQ_HAVE_TCP_KEEPALIVE if (keepalive_idle_ != -1) { int rc = setsockopt (s_, IPPROTO_TCP, TCP_KEEPALIVE, &keepalive_idle_, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else errno_assert (rc == 0); -#endif } #endif // ZMQ_HAVE_TCP_KEEPALIVE #endif // ZMQ_HAVE_TCP_KEEPIDLE @@ -119,13 +132,10 @@ #ifdef ZMQ_HAVE_TCP_KEEPINTVL if (keepalive_intvl_ != -1) { int rc = setsockopt (s_, IPPROTO_TCP, TCP_KEEPINTVL, &keepalive_intvl_, sizeof (int)); -#ifdef ZMQ_HAVE_WINDOWS - wsa_assert (rc != SOCKET_ERROR); -#else errno_assert (rc == 0); -#endif } #endif // ZMQ_HAVE_TCP_KEEPINTVL } #endif // ZMQ_HAVE_SO_KEEPALIVE +#endif // ZMQ_HAVE_WINDOWS } diff -Nru zeromq3-3.2.4+dfsg/src/tcp.hpp zeromq3-4.0.4/src/tcp.hpp --- zeromq3-3.2.4+dfsg/src/tcp.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/tcp.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -30,6 +28,12 @@ // Tunes the supplied TCP socket for the best latency. void tune_tcp_socket (fd_t s_); + // Sets the socket send buffer size. + void set_tcp_send_buffer (fd_t sockfd_, int bufsize_); + + // Sets the socket receive buffer size. + void set_tcp_receive_buffer (fd_t sockfd_, int bufsize_); + // Tunes TCP keep-alives void tune_tcp_keepalives (fd_t s_, int keepalive_, int keepalive_cnt_, int keepalive_idle_, int keepalive_intvl_); diff -Nru zeromq3-3.2.4+dfsg/src/tcp_listener.cpp zeromq3-4.0.4/src/tcp_listener.cpp --- zeromq3-3.2.4+dfsg/src/tcp_listener.cpp 2012-11-23 07:38:26.000000000 +0000 +++ zeromq3-4.0.4/src/tcp_listener.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2010 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -93,7 +91,8 @@ tune_tcp_keepalives (fd, options.tcp_keepalive, options.tcp_keepalive_cnt, options.tcp_keepalive_idle, options.tcp_keepalive_intvl); // Create the engine object for this connection. - stream_engine_t *engine = new (std::nothrow) stream_engine_t (fd, options, endpoint); + stream_engine_t *engine = new (std::nothrow) + stream_engine_t (fd, options, endpoint); alloc_assert (engine); // Choose I/O thread to run connecter in. Given that we are already @@ -148,7 +147,7 @@ int zmq::tcp_listener_t::set_address (const char *addr_) { // Convert the textual address into address structure. - int rc = address.resolve (addr_, true, options.ipv4only ? true : false); + int rc = address.resolve (addr_, true, options.ipv6); if (rc != 0) return -1; @@ -160,8 +159,9 @@ #endif // IPv6 address family not supported, try automatic downgrade to IPv4. - if (address.family () == AF_INET6 && errno == EAFNOSUPPORT && - !options.ipv4only) { + if (address.family () == AF_INET6 + && errno == EAFNOSUPPORT + && options.ipv6) { rc = address.resolve (addr_, true, true); if (rc != 0) return rc; @@ -173,9 +173,11 @@ errno = wsa_error_to_errno (WSAGetLastError ()); return -1; } +#if !defined _WIN32_WCE // On Windows, preventing sockets to be inherited by child processes. BOOL brc = SetHandleInformation ((HANDLE) s, HANDLE_FLAG_INHERIT, 0); win_assert (brc); +#endif #else if (s == -1) return -1; @@ -186,6 +188,12 @@ if (address.family () == AF_INET6) enable_ipv4_mapping (s); + // Set the socket buffer limits for the underlying socket. + if (options.sndbuf != 0) + set_tcp_send_buffer (s, options.sndbuf); + if (options.rcvbuf != 0) + set_tcp_receive_buffer (s, options.rcvbuf); + // Allow reusing of the address. int flag = 1; #ifdef ZMQ_HAVE_WINDOWS @@ -240,7 +248,8 @@ // Accept one connection and deal with different failure modes. zmq_assert (s != retired_fd); - struct sockaddr_storage ss = {}; + struct sockaddr_storage ss; + memset (&ss, 0, sizeof (ss)); #ifdef ZMQ_HAVE_HPUX int ss_len = sizeof (ss); #else @@ -256,9 +265,11 @@ WSAGetLastError () == WSAENOBUFS); return retired_fd; } +#if !defined _WIN32_WCE // On Windows, preventing sockets to be inherited by child processes. BOOL brc = SetHandleInformation ((HANDLE) sock, HANDLE_FLAG_INHERIT, 0); win_assert (brc); +#endif #else if (sock == -1) { errno_assert (errno == EAGAIN || errno == EWOULDBLOCK || diff -Nru zeromq3-3.2.4+dfsg/src/tcp_listener.hpp zeromq3-4.0.4/src/tcp_listener.hpp --- zeromq3-3.2.4+dfsg/src/tcp_listener.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/tcp_listener.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2010 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/thread.cpp zeromq3-4.0.4/src/thread.cpp --- zeromq3-3.2.4+dfsg/src/thread.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/thread.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2011 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -43,7 +41,7 @@ { tfn = tfn_; arg =arg_; -#if defined WINCE +#if defined _WIN32_WCE descriptor = (HANDLE) CreateThread (NULL, 0, &::thread_routine, this, 0 , NULL); #else diff -Nru zeromq3-3.2.4+dfsg/src/thread.hpp zeromq3-4.0.4/src/thread.hpp --- zeromq3-3.2.4+dfsg/src/thread.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/thread.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2011 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/trie.cpp zeromq3-4.0.4/src/trie.cpp --- zeromq3-3.2.4+dfsg/src/trie.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/trie.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011-2012 Spotify AB - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -48,10 +45,10 @@ delete next.node; next.node = 0; } - else if (count > 1) { + else + if (count > 1) { for (unsigned short i = 0; i != count; ++i) - if (next.table [i]) - delete next.table [i]; + delete next.table [i]; free (next.table); } } @@ -74,7 +71,8 @@ count = 1; next.node = NULL; } - else if (count == 1) { + else + if (count == 1) { unsigned char oldc = min; trie_t *oldp = next.node; count = (min < c ? c - min : min - c) + 1; @@ -86,8 +84,8 @@ min = std::min (min, c); next.table [oldc - min] = oldp; } - else if (min < c) { - + else + if (min < c) { // The new character is above the current character range. unsigned short old_count = count; count = c - min + 1; @@ -136,121 +134,120 @@ bool zmq::trie_t::rm (unsigned char *prefix_, size_t size_) { - // TODO: Shouldn't an error be reported if the key does not exist? + // TODO: Shouldn't an error be reported if the key does not exist? + if (!size_) { + if (!refcnt) + return false; + refcnt--; + return refcnt == 0; + } + unsigned char c = *prefix_; + if (!count || c < min || c >= min + count) + return false; + + trie_t *next_node = + count == 1 ? next.node : next.table [c - min]; - if (!size_) { - if (!refcnt) - return false; - refcnt--; - return refcnt == 0; - } - - unsigned char c = *prefix_; - if (!count || c < min || c >= min + count) - return false; - - trie_t *next_node = - count == 1 ? next.node : next.table [c - min]; - - if (!next_node) - return false; - - bool ret = next_node->rm (prefix_ + 1, size_ - 1); - - // Prune redundant nodes - if (next_node->is_redundant ()) { - delete next_node; - zmq_assert (count > 0); - - if (count == 1) { - // The just pruned node is was the only live node - next.node = 0; - count = 0; - --live_nodes; - zmq_assert (live_nodes == 0); - } - else { - next.table [c - min] = 0; - zmq_assert (live_nodes > 1); - --live_nodes; - - // Compact the table if possible - if (live_nodes == 1) { - // We can switch to using the more compact single-node - // representation since the table only contains one live node - trie_t *node = 0; - // Since we always compact the table the pruned node must - // either be the left-most or right-most ptr in the node - // table - if (c == min) { - // The pruned node is the left-most node ptr in the - // node table => keep the right-most node - node = next.table [count - 1]; - min += count - 1; - } - else if (c == min + count - 1) { - // The pruned node is the right-most node ptr in the - // node table => keep the left-most node - node = next.table [0]; - } - - zmq_assert (node); - free (next.table); - next.node = node; - count = 1; - } - else if (c == min) { - // We can compact the table "from the left". - // Find the left-most non-null node ptr, which we'll use as - // our new min - unsigned char new_min = min; - for (unsigned short i = 1; i < count; ++i) { - if (next.table [i]) { - new_min = i + min; - break; - } - } - zmq_assert (new_min != min); - - trie_t **old_table = next.table; - zmq_assert (new_min > min); - zmq_assert (count > new_min - min); - - count = count - (new_min - min); - next.table = (trie_t**) malloc (sizeof (trie_t*) * count); - alloc_assert (next.table); - - memmove (next.table, old_table + (new_min - min), - sizeof (trie_t*) * count); - free (old_table); - - min = new_min; - } - else if (c == min + count - 1) { - // We can compact the table "from the right". - // Find the right-most non-null node ptr, which we'll use to - // determine the new table size - unsigned short new_count = count; - for (unsigned short i = 1; i < count; ++i) { - if (next.table [count - 1 - i]) { - new_count = count - i; - break; - } - } - zmq_assert (new_count != count); - count = new_count; - - trie_t **old_table = next.table; - next.table = (trie_t**) malloc (sizeof (trie_t*) * count); - alloc_assert (next.table); - - memmove (next.table, old_table, sizeof (trie_t*) * count); - free (old_table); - } - } - } + if (!next_node) + return false; - return ret; + bool ret = next_node->rm (prefix_ + 1, size_ - 1); + + // Prune redundant nodes + if (next_node->is_redundant ()) { + delete next_node; + zmq_assert (count > 0); + + if (count == 1) { + // The just pruned node is was the only live node + next.node = 0; + count = 0; + --live_nodes; + zmq_assert (live_nodes == 0); + } + else { + next.table [c - min] = 0; + zmq_assert (live_nodes > 1); + --live_nodes; + + // Compact the table if possible + if (live_nodes == 1) { + // We can switch to using the more compact single-node + // representation since the table only contains one live node + trie_t *node = 0; + // Since we always compact the table the pruned node must + // either be the left-most or right-most ptr in the node + // table + if (c == min) { + // The pruned node is the left-most node ptr in the + // node table => keep the right-most node + node = next.table [count - 1]; + min += count - 1; + } + else + if (c == min + count - 1) { + // The pruned node is the right-most node ptr in the + // node table => keep the left-most node + node = next.table [0]; + } + zmq_assert (node); + free (next.table); + next.node = node; + count = 1; + } + else + if (c == min) { + // We can compact the table "from the left". + // Find the left-most non-null node ptr, which we'll use as + // our new min + unsigned char new_min = min; + for (unsigned short i = 1; i < count; ++i) { + if (next.table [i]) { + new_min = i + min; + break; + } + } + zmq_assert (new_min != min); + + trie_t **old_table = next.table; + zmq_assert (new_min > min); + zmq_assert (count > new_min - min); + + count = count - (new_min - min); + next.table = (trie_t**) malloc (sizeof (trie_t*) * count); + alloc_assert (next.table); + + memmove (next.table, old_table + (new_min - min), + sizeof (trie_t*) * count); + free (old_table); + + min = new_min; + } + else + if (c == min + count - 1) { + // We can compact the table "from the right". + // Find the right-most non-null node ptr, which we'll use to + // determine the new table size + unsigned short new_count = count; + for (unsigned short i = 1; i < count; ++i) { + if (next.table [count - 1 - i]) { + new_count = count - i; + break; + } + } + zmq_assert (new_count != count); + count = new_count; + + trie_t **old_table = next.table; + next.table = (trie_t**) malloc (sizeof (trie_t*) * count); + alloc_assert (next.table); + + memmove (next.table, old_table, sizeof (trie_t*) * count); + free (old_table); + } + } + } + return ret; } bool zmq::trie_t::check (unsigned char *data_, size_t size_) diff -Nru zeromq3-3.2.4+dfsg/src/trie.hpp zeromq3-4.0.4/src/trie.hpp --- zeromq3-3.2.4+dfsg/src/trie.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/trie.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2011-2012 Spotify AB - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. diff -Nru zeromq3-3.2.4+dfsg/src/v1_decoder.cpp zeromq3-4.0.4/src/v1_decoder.cpp --- zeromq3-3.2.4+dfsg/src/v1_decoder.cpp 2012-11-13 12:34:49.000000000 +0000 +++ zeromq3-4.0.4/src/v1_decoder.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -21,30 +19,28 @@ #include #include +#include #include "platform.hpp" -#ifdef ZMQ_HAVE_WINDOWS +#if defined ZMQ_HAVE_WINDOWS #include "windows.hpp" #endif -#include "v1_protocol.hpp" +#include "decoder.hpp" #include "v1_decoder.hpp" #include "likely.hpp" #include "wire.hpp" #include "err.hpp" -zmq::v1_decoder_t::v1_decoder_t (size_t bufsize_, - int64_t maxmsgsize_, i_msg_sink *msg_sink_) : +zmq::v1_decoder_t::v1_decoder_t (size_t bufsize_, int64_t maxmsgsize_) : decoder_base_t (bufsize_), - msg_sink (msg_sink_), - msg_flags (0), maxmsgsize (maxmsgsize_) { int rc = in_progress.init (); errno_assert (rc == 0); - // At the beginning, read one byte and go to flags_ready state. - next_step (tmpbuf, 1, &v1_decoder_t::flags_ready); + // At the beginning, read one byte and go to one_byte_size_ready state. + next_step (tmpbuf, 1, &v1_decoder_t::one_byte_size_ready); } zmq::v1_decoder_t::~v1_decoder_t () @@ -53,110 +49,100 @@ errno_assert (rc == 0); } -void zmq::v1_decoder_t::set_msg_sink (i_msg_sink *msg_sink_) -{ - msg_sink = msg_sink_; -} - -bool zmq::v1_decoder_t::flags_ready () +int zmq::v1_decoder_t::one_byte_size_ready () { - msg_flags = 0; - if (tmpbuf [0] & v1_protocol_t::more_flag) - msg_flags |= msg_t::more; - - // The payload length is either one or eight bytes, - // depending on whether the 'large' bit is set. - if (tmpbuf [0] & v1_protocol_t::large_flag) + // First byte of size is read. If it is 0xff read 8-byte size. + // Otherwise allocate the buffer for message data and read the + // message data into it. + if (*tmpbuf == 0xff) next_step (tmpbuf, 8, &v1_decoder_t::eight_byte_size_ready); - else - next_step (tmpbuf, 1, &v1_decoder_t::one_byte_size_ready); + else { + + // There has to be at least one byte (the flags) in the message). + if (!*tmpbuf) { + errno = EPROTO; + return -1; + } + + if (maxmsgsize >= 0 && (int64_t) (*tmpbuf - 1) > maxmsgsize) { + errno = EMSGSIZE; + return -1; + } + + // in_progress is initialised at this point so in theory we should + // close it before calling zmq_msg_init_size, however, it's a 0-byte + // message and thus we can treat it as uninitialised... + int rc = in_progress.init_size (*tmpbuf - 1); + if (rc != 0) { + errno_assert (errno == ENOMEM); + rc = in_progress.init (); + errno_assert (rc == 0); + errno = ENOMEM; + return -1; + } - return true; + next_step (tmpbuf, 1, &v1_decoder_t::flags_ready); + } + return 0; } -bool zmq::v1_decoder_t::one_byte_size_ready () +int zmq::v1_decoder_t::eight_byte_size_ready () { - int rc = 0; + // 8-byte payload length is read. Allocate the buffer + // for message body and read the message data into it. + const uint64_t payload_length = get_uint64 (tmpbuf); + + // There has to be at least one byte (the flags) in the message). + if (payload_length == 0) { + errno = EPROTO; + return -1; + } // Message size must not exceed the maximum allowed size. - if (maxmsgsize >= 0) - if (unlikely (tmpbuf [0] > static_cast (maxmsgsize))) - goto error; + if (maxmsgsize >= 0 && payload_length - 1 > (uint64_t) maxmsgsize) { + errno = EMSGSIZE; + return -1; + } + + // Message size must fit within range of size_t data type. + if (payload_length - 1 > std::numeric_limits ::max ()) { + errno = EMSGSIZE; + return -1; + } + + const size_t msg_size = static_cast (payload_length - 1); // in_progress is initialised at this point so in theory we should - // close it before calling zmq_msg_init_size, however, it's a 0-byte + // close it before calling init_size, however, it's a 0-byte // message and thus we can treat it as uninitialised... - rc = in_progress.init_size (tmpbuf [0]); - if (unlikely (rc)) { + int rc = in_progress.init_size (msg_size); + if (rc != 0) { errno_assert (errno == ENOMEM); - int rc = in_progress.init (); + rc = in_progress.init (); errno_assert (rc == 0); - goto error; + errno = ENOMEM; + return -1; } - in_progress.set_flags (msg_flags); - next_step (in_progress.data (), in_progress.size (), - &v1_decoder_t::message_ready); - - return true; - -error: - decoding_error (); - return false; + next_step (tmpbuf, 1, &v1_decoder_t::flags_ready); + return 0; } -bool zmq::v1_decoder_t::eight_byte_size_ready () +int zmq::v1_decoder_t::flags_ready () { - int rc = 0; - - // The payload size is encoded as 64-bit unsigned integer. - // The most significant byte comes first. - const uint64_t msg_size = get_uint64 (tmpbuf); - - // Message size must not exceed the maximum allowed size. - if (maxmsgsize >= 0) - if (unlikely (msg_size > static_cast (maxmsgsize))) - goto error; - - // Message size must fit into size_t data type. - if (unlikely (msg_size != static_cast (msg_size))) - goto error; - - // in_progress is initialised at this point so in theory we should - // close it before calling init_size, however, it's a 0-byte - // message and thus we can treat it as uninitialised. - rc = in_progress.init_size (static_cast (msg_size)); - if (unlikely (rc)) { - errno_assert (errno == ENOMEM); - int rc = in_progress.init (); - errno_assert (rc == 0); - goto error; - } + // Store the flags from the wire into the message structure. + in_progress.set_flags (tmpbuf [0] & msg_t::more); - in_progress.set_flags (msg_flags); next_step (in_progress.data (), in_progress.size (), &v1_decoder_t::message_ready); - return true; - -error: - decoding_error (); - return false; + return 0; } -bool zmq::v1_decoder_t::message_ready () +int zmq::v1_decoder_t::message_ready () { // Message is completely read. Push it further and start reading // new message. (in_progress is a 0-byte message after this point.) - if (unlikely (!msg_sink)) - return false; - int rc = msg_sink->push_msg (&in_progress); - if (unlikely (rc != 0)) { - if (errno != EAGAIN) - decoding_error (); - return false; - } - - next_step (tmpbuf, 1, &v1_decoder_t::flags_ready); - return true; + next_step (tmpbuf, 1, &v1_decoder_t::one_byte_size_ready); + return 1; } diff -Nru zeromq3-3.2.4+dfsg/src/v1_decoder.hpp zeromq3-4.0.4/src/v1_decoder.hpp --- zeromq3-3.2.4+dfsg/src/v1_decoder.hpp 2012-11-13 12:34:49.000000000 +0000 +++ zeromq3-4.0.4/src/v1_decoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -22,41 +20,32 @@ #ifndef __ZMQ_V1_DECODER_HPP_INCLUDED__ #define __ZMQ_V1_DECODER_HPP_INCLUDED__ -#include "err.hpp" -#include "msg.hpp" #include "decoder.hpp" -#include "i_msg_sink.hpp" -#include "stdint.hpp" namespace zmq { - - // Decoder for 0MQ v1 framing protocol. Converts data stream into messages. + // Decoder for ZMTP/1.0 protocol. Converts data batches into messages. class v1_decoder_t : public decoder_base_t { public: - v1_decoder_t (size_t bufsize_, - int64_t maxmsgsize_, i_msg_sink *msg_sink_); - virtual ~v1_decoder_t (); + v1_decoder_t (size_t bufsize_, int64_t maxmsgsize_); + ~v1_decoder_t (); - // i_decoder interface. - virtual void set_msg_sink (i_msg_sink *msg_sink_); + virtual msg_t *msg () { return &in_progress; } private: - bool flags_ready (); - bool one_byte_size_ready (); - bool eight_byte_size_ready (); - bool message_ready (); + int one_byte_size_ready (); + int eight_byte_size_ready (); + int flags_ready (); + int message_ready (); - i_msg_sink *msg_sink; unsigned char tmpbuf [8]; - unsigned char msg_flags; msg_t in_progress; - const int64_t maxmsgsize; + int64_t maxmsgsize; v1_decoder_t (const v1_decoder_t&); void operator = (const v1_decoder_t&); diff -Nru zeromq3-3.2.4+dfsg/src/v1_encoder.cpp zeromq3-4.0.4/src/v1_encoder.cpp --- zeromq3-3.2.4+dfsg/src/v1_encoder.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/v1_encoder.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,8 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -20,84 +17,49 @@ along with this program. If not, see . */ -#include "v1_protocol.hpp" +#include "encoder.hpp" #include "v1_encoder.hpp" #include "likely.hpp" #include "wire.hpp" -zmq::v1_encoder_t::v1_encoder_t (size_t bufsize_, i_msg_source *msg_source_) : - encoder_base_t (bufsize_), - msg_source (msg_source_) +zmq::v1_encoder_t::v1_encoder_t (size_t bufsize_) : + encoder_base_t (bufsize_) { - int rc = in_progress.init (); - errno_assert (rc == 0); - // Write 0 bytes to the batch and go to message_ready state. next_step (NULL, 0, &v1_encoder_t::message_ready, true); } zmq::v1_encoder_t::~v1_encoder_t () { - int rc = in_progress.close (); - errno_assert (rc == 0); } -void zmq::v1_encoder_t::set_msg_source (i_msg_source *msg_source_) +void zmq::v1_encoder_t::size_ready () { - msg_source = msg_source_; + // Write message body into the buffer. + next_step (in_progress->data (), in_progress->size (), + &v1_encoder_t::message_ready, true); } -bool zmq::v1_encoder_t::message_ready () +void zmq::v1_encoder_t::message_ready () { - // Release the content of the old message. - int rc = in_progress.close (); - errno_assert (rc == 0); - - // Read new message. If there is none, return false. - // Note that new state is set only if write is successful. That way - // unsuccessful write will cause retry on the next state machine - // invocation. - if (unlikely (!msg_source)) { - rc = in_progress.init (); - errno_assert (rc == 0); - return false; - } + // Get the message size. + size_t size = in_progress->size (); - rc = msg_source->pull_msg (&in_progress); - if (unlikely (rc)) { - errno_assert (errno == EAGAIN); - rc = in_progress.init (); - errno_assert (rc == 0); - return false; - } + // Account for the 'flags' byte. + size++; - // Encode flags. - unsigned char &protocol_flags = tmpbuf [0]; - protocol_flags = 0; - if (in_progress.flags () & msg_t::more) - protocol_flags |= v1_protocol_t::more_flag; - if (in_progress.size () > 255) - protocol_flags |= v1_protocol_t::large_flag; - - // Encode the message length. For messages less then 256 bytes, - // the length is encoded as 8-bit unsigned integer. For larger - // messages, 64-bit unsigned integer in network byte order is used. - const size_t size = in_progress.size (); - if (unlikely (size > 255)) { - put_uint64 (tmpbuf + 1, size); - next_step (tmpbuf, 9, &v1_encoder_t::size_ready, false); + // For messages less than 255 bytes long, write one byte of message size. + // For longer messages write 0xff escape character followed by 8-byte + // message size. In both cases 'flags' field follows. + if (size < 255) { + tmpbuf [0] = (unsigned char) size; + tmpbuf [1] = (in_progress->flags () & msg_t::more); + next_step (tmpbuf, 2, &v1_encoder_t::size_ready, false); } else { - tmpbuf [1] = static_cast (size); - next_step (tmpbuf, 2, &v1_encoder_t::size_ready, false); + tmpbuf [0] = 0xff; + put_uint64 (tmpbuf + 1, size); + tmpbuf [9] = (in_progress->flags () & msg_t::more); + next_step (tmpbuf, 10, &v1_encoder_t::size_ready, false); } - return true; -} - -bool zmq::v1_encoder_t::size_ready () -{ - // Write message body into the buffer. - next_step (in_progress.data (), in_progress.size (), - &v1_encoder_t::message_ready, !(in_progress.flags () & msg_t::more)); - return true; } diff -Nru zeromq3-3.2.4+dfsg/src/v1_encoder.hpp zeromq3-4.0.4/src/v1_encoder.hpp --- zeromq3-3.2.4+dfsg/src/v1_encoder.hpp 2013-07-30 07:23:57.000000000 +0000 +++ zeromq3-4.0.4/src/v1_encoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -22,32 +20,25 @@ #ifndef __ZMQ_V1_ENCODER_HPP_INCLUDED__ #define __ZMQ_V1_ENCODER_HPP_INCLUDED__ -#include "msg.hpp" -#include "i_msg_source.hpp" #include "encoder.hpp" namespace zmq { - - // Encoder for 0MQ framing protocol. Converts messages into data stream. + // Encoder for ZMTP/1.0 protocol. Converts messages into data batches. class v1_encoder_t : public encoder_base_t { public: - v1_encoder_t (size_t bufsize_, i_msg_source *msg_source_); - virtual ~v1_encoder_t (); - - virtual void set_msg_source (i_msg_source *msg_source_); + v1_encoder_t (size_t bufsize_); + ~v1_encoder_t (); private: - bool size_ready (); - bool message_ready (); + void size_ready (); + void message_ready (); - i_msg_source *msg_source; - msg_t in_progress; - unsigned char tmpbuf [9]; + unsigned char tmpbuf [10]; v1_encoder_t (const v1_encoder_t&); const v1_encoder_t &operator = (const v1_encoder_t&); diff -Nru zeromq3-3.2.4+dfsg/src/v1_protocol.hpp zeromq3-4.0.4/src/v1_protocol.hpp --- zeromq3-3.2.4+dfsg/src/v1_protocol.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/v1_protocol.hpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -/* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2007-2012 Other contributors as noted in the AUTHORS file - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#ifndef __ZMQ_V1_PROTOCOL_HPP_INCLUDED__ -#define __ZMQ_V1_PROTOCOL_HPP_INCLUDED__ - -namespace zmq -{ - - // Definition of constans for v1 transport protocol. - class v1_protocol_t - { - public: - // Message flags. - enum - { - more_flag = 1, - large_flag = 2 - }; - - }; - -} - -#endif - diff -Nru zeromq3-3.2.4+dfsg/src/v2_decoder.cpp zeromq3-4.0.4/src/v2_decoder.cpp --- zeromq3-3.2.4+dfsg/src/v2_decoder.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/v2_decoder.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,142 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include +#include + +#include "platform.hpp" +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include "v2_protocol.hpp" +#include "v2_decoder.hpp" +#include "likely.hpp" +#include "wire.hpp" +#include "err.hpp" + +zmq::v2_decoder_t::v2_decoder_t (size_t bufsize_, int64_t maxmsgsize_) : + decoder_base_t (bufsize_), + msg_flags (0), + maxmsgsize (maxmsgsize_) +{ + int rc = in_progress.init (); + errno_assert (rc == 0); + + // At the beginning, read one byte and go to flags_ready state. + next_step (tmpbuf, 1, &v2_decoder_t::flags_ready); +} + +zmq::v2_decoder_t::~v2_decoder_t () +{ + int rc = in_progress.close (); + errno_assert (rc == 0); +} + +int zmq::v2_decoder_t::flags_ready () +{ + msg_flags = 0; + if (tmpbuf [0] & v2_protocol_t::more_flag) + msg_flags |= msg_t::more; + if (tmpbuf [0] & v2_protocol_t::command_flag) + msg_flags |= msg_t::command; + + // The payload length is either one or eight bytes, + // depending on whether the 'large' bit is set. + if (tmpbuf [0] & v2_protocol_t::large_flag) + next_step (tmpbuf, 8, &v2_decoder_t::eight_byte_size_ready); + else + next_step (tmpbuf, 1, &v2_decoder_t::one_byte_size_ready); + + return 0; +} + +int zmq::v2_decoder_t::one_byte_size_ready () +{ + // Message size must not exceed the maximum allowed size. + if (maxmsgsize >= 0) + if (unlikely (tmpbuf [0] > static_cast (maxmsgsize))) { + errno = EMSGSIZE; + return -1; + } + + // in_progress is initialised at this point so in theory we should + // close it before calling zmq_msg_init_size, however, it's a 0-byte + // message and thus we can treat it as uninitialised... + int rc = in_progress.init_size (tmpbuf [0]); + if (unlikely (rc)) { + errno_assert (errno == ENOMEM); + rc = in_progress.init (); + errno_assert (rc == 0); + errno = ENOMEM; + return -1; + } + + in_progress.set_flags (msg_flags); + next_step (in_progress.data (), in_progress.size (), + &v2_decoder_t::message_ready); + + return 0; +} + +int zmq::v2_decoder_t::eight_byte_size_ready () +{ + // The payload size is encoded as 64-bit unsigned integer. + // The most significant byte comes first. + const uint64_t msg_size = get_uint64 (tmpbuf); + + // Message size must not exceed the maximum allowed size. + if (maxmsgsize >= 0) + if (unlikely (msg_size > static_cast (maxmsgsize))) { + errno = EMSGSIZE; + return -1; + } + + // Message size must fit into size_t data type. + if (unlikely (msg_size != static_cast (msg_size))) { + errno = EMSGSIZE; + return -1; + } + + // in_progress is initialised at this point so in theory we should + // close it before calling init_size, however, it's a 0-byte + // message and thus we can treat it as uninitialised. + int rc = in_progress.init_size (static_cast (msg_size)); + if (unlikely (rc)) { + errno_assert (errno == ENOMEM); + rc = in_progress.init (); + errno_assert (rc == 0); + errno = ENOMEM; + return -1; + } + + in_progress.set_flags (msg_flags); + next_step (in_progress.data (), in_progress.size (), + &v2_decoder_t::message_ready); + + return 0; +} + +int zmq::v2_decoder_t::message_ready () +{ + // Message is completely read. Signal this to the caller + // and prepare to decode next message. + next_step (tmpbuf, 1, &v2_decoder_t::flags_ready); + return 1; +} diff -Nru zeromq3-3.2.4+dfsg/src/v2_decoder.hpp zeromq3-4.0.4/src/v2_decoder.hpp --- zeromq3-3.2.4+dfsg/src/v2_decoder.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/v2_decoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,57 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_V2_DECODER_HPP_INCLUDED__ +#define __ZMQ_V2_DECODER_HPP_INCLUDED__ + +#include "decoder.hpp" + +namespace zmq +{ + // Decoder for ZMTP/2.x framing protocol. Converts data stream into messages. + class v2_decoder_t : public decoder_base_t + { + public: + + v2_decoder_t (size_t bufsize_, int64_t maxmsgsize_); + virtual ~v2_decoder_t (); + + // i_decoder interface. + virtual msg_t *msg () { return &in_progress; } + + private: + + int flags_ready (); + int one_byte_size_ready (); + int eight_byte_size_ready (); + int message_ready (); + + unsigned char tmpbuf [8]; + unsigned char msg_flags; + msg_t in_progress; + + const int64_t maxmsgsize; + + v2_decoder_t (const v2_decoder_t&); + void operator = (const v2_decoder_t&); + }; + +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/v2_encoder.cpp zeromq3-4.0.4/src/v2_encoder.cpp --- zeromq3-3.2.4+dfsg/src/v2_encoder.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/v2_encoder.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,67 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "v2_protocol.hpp" +#include "v2_encoder.hpp" +#include "likely.hpp" +#include "wire.hpp" + +zmq::v2_encoder_t::v2_encoder_t (size_t bufsize_) : + encoder_base_t (bufsize_) +{ + // Write 0 bytes to the batch and go to message_ready state. + next_step (NULL, 0, &v2_encoder_t::message_ready, true); +} + +zmq::v2_encoder_t::~v2_encoder_t () +{ +} + +void zmq::v2_encoder_t::message_ready () +{ + // Encode flags. + unsigned char &protocol_flags = tmpbuf [0]; + protocol_flags = 0; + if (in_progress->flags () & msg_t::more) + protocol_flags |= v2_protocol_t::more_flag; + if (in_progress->size () > 255) + protocol_flags |= v2_protocol_t::large_flag; + if (in_progress->flags () & msg_t::command) + protocol_flags |= v2_protocol_t::command_flag; + + // Encode the message length. For messages less then 256 bytes, + // the length is encoded as 8-bit unsigned integer. For larger + // messages, 64-bit unsigned integer in network byte order is used. + const size_t size = in_progress->size (); + if (unlikely (size > 255)) { + put_uint64 (tmpbuf + 1, size); + next_step (tmpbuf, 9, &v2_encoder_t::size_ready, false); + } + else { + tmpbuf [1] = static_cast (size); + next_step (tmpbuf, 2, &v2_encoder_t::size_ready, false); + } +} + +void zmq::v2_encoder_t::size_ready () +{ + // Write message body into the buffer. + next_step (in_progress->data (), in_progress->size (), + &v2_encoder_t::message_ready, true); +} diff -Nru zeromq3-3.2.4+dfsg/src/v2_encoder.hpp zeromq3-4.0.4/src/v2_encoder.hpp --- zeromq3-3.2.4+dfsg/src/v2_encoder.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/v2_encoder.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,49 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_V2_ENCODER_HPP_INCLUDED__ +#define __ZMQ_V2_ENCODER_HPP_INCLUDED__ + +#include "encoder.hpp" + +namespace zmq +{ + // Encoder for 0MQ framing protocol. Converts messages into data stream. + + class v2_encoder_t : public encoder_base_t + { + public: + + v2_encoder_t (size_t bufsize_); + virtual ~v2_encoder_t (); + + private: + + void size_ready (); + void message_ready (); + + unsigned char tmpbuf [9]; + + v2_encoder_t (const v2_encoder_t&); + const v2_encoder_t &operator = (const v2_encoder_t&); + }; +} + +#endif + diff -Nru zeromq3-3.2.4+dfsg/src/v2_protocol.hpp zeromq3-4.0.4/src/v2_protocol.hpp --- zeromq3-3.2.4+dfsg/src/v2_protocol.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/v2_protocol.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,39 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_V2_PROTOCOL_HPP_INCLUDED__ +#define __ZMQ_V2_PROTOCOL_HPP_INCLUDED__ + +namespace zmq +{ + // Definition of constants for ZMTP/2.0 transport protocol. + class v2_protocol_t + { + public: + // Message flags. + enum + { + more_flag = 1, + large_flag = 2, + command_flag = 4 + }; + }; +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/windows.hpp zeromq3-4.0.4/src/windows.hpp --- zeromq3-3.2.4+dfsg/src/windows.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/windows.hpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -167,10 +165,11 @@ #include #include +#include #include #include -#if !defined WINCE +#if !defined _WIN32_WCE #include #endif diff -Nru zeromq3-3.2.4+dfsg/src/wire.hpp zeromq3-4.0.4/src/wire.hpp --- zeromq3-3.2.4+dfsg/src/wire.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/wire.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -34,7 +33,7 @@ *buffer_ = value; } - inline uint8_t get_uint8 (unsigned char *buffer_) + inline uint8_t get_uint8 (const unsigned char *buffer_) { return *buffer_; } @@ -45,7 +44,7 @@ buffer_ [1] = (unsigned char) (value & 0xff); } - inline uint16_t get_uint16 (unsigned char *buffer_) + inline uint16_t get_uint16 (const unsigned char *buffer_) { return (((uint16_t) buffer_ [0]) << 8) | @@ -60,7 +59,7 @@ buffer_ [3] = (unsigned char) (value & 0xff); } - inline uint32_t get_uint32 (unsigned char *buffer_) + inline uint32_t get_uint32 (const unsigned char *buffer_) { return (((uint32_t) buffer_ [0]) << 24) | @@ -81,7 +80,7 @@ buffer_ [7] = (unsigned char) (value & 0xff); } - inline uint64_t get_uint64 (unsigned char *buffer_) + inline uint64_t get_uint64 (const unsigned char *buffer_) { return (((uint64_t) buffer_ [0]) << 56) | diff -Nru zeromq3-3.2.4+dfsg/src/xpub.cpp zeromq3-4.0.4/src/xpub.cpp --- zeromq3-3.2.4+dfsg/src/xpub.cpp 2012-11-16 01:59:37.000000000 +0000 +++ zeromq3-4.0.4/src/xpub.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -38,14 +36,14 @@ { } -void zmq::xpub_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::xpub_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { zmq_assert (pipe_); dist.attach (pipe_); - // If icanhasall_ is specified, the caller would like to subscribe + // If subscribe_to_all_ is specified, the caller would like to subscribe // to all data on this pipe, implicitly. - if (icanhasall_) + if (subscribe_to_all_) subscriptions.add (NULL, 0, pipe_); // The pipe is active when attached. Let's read the subscriptions from @@ -58,9 +56,8 @@ // There are some subscriptions waiting. Let's process them. msg_t sub; while (pipe_->read (&sub)) { - - // Apply the subscription to the trie. - unsigned char *const data = (unsigned char*) sub.data (); + // Apply the subscription to the trie + unsigned char *const data = (unsigned char *) sub.data (); const size_t size = sub.size (); if (size > 0 && (*data == 0 || *data == 1)) { bool unique; @@ -71,10 +68,16 @@ // If the subscription is not a duplicate store it so that it can be // passed to used on next recv call. (Unsubscribe is not verbose.) - if (options.type == ZMQ_XPUB && (unique || (*data && verbose))) - pending.push_back (blob_t (data, size)); + if (options.type == ZMQ_XPUB && (unique || (*data && verbose))) { + pending_data.push_back (blob_t (data, size)); + pending_flags.push_back (0); + } + } + else { + // Process user message coming upstream from xsub socket + pending_data.push_back (blob_t (data, size)); + pending_flags.push_back (sub.flags ()); } - sub.close (); } } @@ -95,18 +98,18 @@ errno = EINVAL; return -1; } - verbose = *static_cast (optval_); + verbose = (*static_cast (optval_) != 0); return 0; } -void zmq::xpub_t::xterminated (pipe_t *pipe_) +void zmq::xpub_t::xpipe_terminated (pipe_t *pipe_) { // Remove the pipe from the trie. If there are topics that nobody // is interested in anymore, send corresponding unsubscriptions // upstream. subscriptions.rm (pipe_, send_unsubscription, this); - dist.terminated (pipe_); + dist.pipe_terminated (pipe_); } void zmq::xpub_t::mark_as_matching (pipe_t *pipe_, void *arg_) @@ -115,7 +118,7 @@ self->dist.match (pipe_); } -int zmq::xpub_t::xsend (msg_t *msg_, int flags_) +int zmq::xpub_t::xsend (msg_t *msg_) { bool msg_more = msg_->flags () & msg_t::more ? true : false; @@ -126,7 +129,7 @@ // Send the message to all the pipes that were marked as matching // in the previous step. - int rc = dist.send_to_matching (msg_, flags_); + int rc = dist.send_to_matching (msg_); if (rc != 0) return rc; @@ -145,30 +148,30 @@ return dist.has_out (); } -int zmq::xpub_t::xrecv (msg_t *msg_, int flags_) +int zmq::xpub_t::xrecv (msg_t *msg_) { - // flags_ is unused - (void)flags_; - // If there is at least one - if (pending.empty ()) { + if (pending_data.empty ()) { errno = EAGAIN; return -1; } int rc = msg_->close (); errno_assert (rc == 0); - rc = msg_->init_size (pending.front ().size ()); + rc = msg_->init_size (pending_data.front ().size ()); errno_assert (rc == 0); - memcpy (msg_->data (), pending.front ().data (), - pending.front ().size ()); - pending.pop_front (); + memcpy (msg_->data (), + pending_data.front ().data (), + pending_data.front ().size ()); + msg_->set_flags (pending_flags.front ()); + pending_data.pop_front (); + pending_flags.pop_front (); return 0; } bool zmq::xpub_t::xhas_in () { - return !pending.empty (); + return !pending_data.empty (); } void zmq::xpub_t::send_unsubscription (unsigned char *data_, size_t size_, @@ -177,24 +180,12 @@ xpub_t *self = (xpub_t*) arg_; if (self->options.type != ZMQ_PUB) { - - // Place the unsubscription to the queue of pending (un)sunscriptions - // to be retrived by the user later on. - blob_t unsub (size_ + 1, 0); - unsub [0] = 0; - memcpy (&unsub [1], data_, size_); - self->pending.push_back (unsub); + // Place the unsubscription to the queue of pending (un)sunscriptions + // to be retrived by the user later on. + blob_t unsub (size_ + 1, 0); + unsub [0] = 0; + memcpy (&unsub [1], data_, size_); + self->pending_data.push_back (unsub); + self->pending_flags.push_back (0); } } - -zmq::xpub_session_t::xpub_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::xpub_session_t::~xpub_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/xpub.hpp zeromq3-4.0.4/src/xpub.hpp --- zeromq3-3.2.4+dfsg/src/xpub.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/xpub.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -47,15 +46,15 @@ ~xpub_t (); // Implementations of virtual functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_ = false); - int xsend (zmq::msg_t *msg_, int flags_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_ = false); + int xsend (zmq::msg_t *msg_); bool xhas_out (); - int xrecv (zmq::msg_t *msg_, int flags_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); void xread_activated (zmq::pipe_t *pipe_); void xwrite_activated (zmq::pipe_t *pipe_); int xsetsockopt (int option_, const void *optval_, size_t optvallen_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); private: @@ -83,28 +82,13 @@ // List of pending (un)subscriptions, ie. those that were already // applied to the trie, but not yet received by the user. typedef std::basic_string blob_t; - typedef std::deque pending_t; - pending_t pending; + std::deque pending_data; + std::deque pending_flags; xpub_t (const xpub_t&); const xpub_t &operator = (const xpub_t&); }; - class xpub_session_t : public session_base_t - { - public: - - xpub_session_t (zmq::io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~xpub_session_t (); - - private: - - xpub_session_t (const xpub_session_t&); - const xpub_session_t &operator = (const xpub_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/xsub.cpp zeromq3-4.0.4/src/xsub.cpp --- zeromq3-3.2.4+dfsg/src/xsub.cpp 2013-05-02 20:09:30.000000000 +0000 +++ zeromq3-4.0.4/src/xsub.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -45,10 +43,10 @@ errno_assert (rc == 0); } -void zmq::xsub_t::xattach_pipe (pipe_t *pipe_, bool icanhasall_) +void zmq::xsub_t::xattach_pipe (pipe_t *pipe_, bool subscribe_to_all_) { - // icanhasall_ is unused - (void)icanhasall_; + // subscribe_to_all_ is unused + (void) subscribe_to_all_; zmq_assert (pipe_); fq.attach (pipe_); @@ -69,10 +67,10 @@ dist.activated (pipe_); } -void zmq::xsub_t::xterminated (pipe_t *pipe_) +void zmq::xsub_t::xpipe_terminated (pipe_t *pipe_) { - fq.terminated (pipe_); - dist.terminated (pipe_); + fq.pipe_terminated (pipe_); + dist.pipe_terminated (pipe_); } void zmq::xsub_t::xhiccuped (pipe_t *pipe_) @@ -82,30 +80,29 @@ pipe_->flush (); } -int zmq::xsub_t::xsend (msg_t *msg_, int flags_) +int zmq::xsub_t::xsend (msg_t *msg_) { size_t size = msg_->size (); - unsigned char *data = (unsigned char*) msg_->data (); + unsigned char *data = (unsigned char *) msg_->data (); - // Malformed subscriptions. - if (size < 1 || (*data != 0 && *data != 1)) { - errno = EINVAL; - return -1; - } - - // Process the subscription. - if (*data == 1) { - // this used to filter out duplicate subscriptions, - // however this is alread done on the XPUB side and - // doing it here as well breaks ZMQ_XPUB_VERBOSE - // when there are forwarding devices involved + if (size > 0 && *data == 1) { + // Process subscribe message + // This used to filter out duplicate subscriptions, + // however this is alread done on the XPUB side and + // doing it here as well breaks ZMQ_XPUB_VERBOSE + // when there are forwarding devices involved. subscriptions.add (data + 1, size - 1); - return dist.send_to_all (msg_, flags_); + return dist.send_to_all (msg_); } - else { + else + if (size > 0 && *data == 0) { + // Process unsubscribe message if (subscriptions.rm (data + 1, size - 1)) - return dist.send_to_all (msg_, flags_); + return dist.send_to_all (msg_); } + else + // User message sent upstream to XPUB socket + return dist.send_to_all (msg_); int rc = msg_->close (); errno_assert (rc == 0); @@ -121,11 +118,8 @@ return true; } -int zmq::xsub_t::xrecv (msg_t *msg_, int flags_) +int zmq::xsub_t::xrecv (msg_t *msg_) { - // flags_ is unused - (void)flags_; - // If there's already a message prepared by a previous call to zmq_poll, // return it straight ahead. if (has_message) { @@ -232,15 +226,3 @@ if (!sent) msg.close (); } - -zmq::xsub_session_t::xsub_session_t (io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_) : - session_base_t (io_thread_, connect_, socket_, options_, addr_) -{ -} - -zmq::xsub_session_t::~xsub_session_t () -{ -} - diff -Nru zeromq3-3.2.4+dfsg/src/xsub.hpp zeromq3-4.0.4/src/xsub.hpp --- zeromq3-3.2.4+dfsg/src/xsub.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/xsub.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -45,15 +44,15 @@ protected: // Overloads of functions from socket_base_t. - void xattach_pipe (zmq::pipe_t *pipe_, bool icanhasall_); - int xsend (zmq::msg_t *msg_, int flags_); + void xattach_pipe (zmq::pipe_t *pipe_, bool subscribe_to_all_); + int xsend (zmq::msg_t *msg_); bool xhas_out (); - int xrecv (zmq::msg_t *msg_, int flags_); + int xrecv (zmq::msg_t *msg_); bool xhas_in (); void xread_activated (zmq::pipe_t *pipe_); void xwrite_activated (zmq::pipe_t *pipe_); void xhiccuped (pipe_t *pipe_); - void xterminated (zmq::pipe_t *pipe_); + void xpipe_terminated (zmq::pipe_t *pipe_); private: @@ -87,21 +86,6 @@ const xsub_t &operator = (const xsub_t&); }; - class xsub_session_t : public session_base_t - { - public: - - xsub_session_t (class io_thread_t *io_thread_, bool connect_, - socket_base_t *socket_, const options_t &options_, - const address_t *addr_); - ~xsub_session_t (); - - private: - - xsub_session_t (const xsub_session_t&); - const xsub_session_t &operator = (const xsub_session_t&); - }; - } #endif diff -Nru zeromq3-3.2.4+dfsg/src/ypipe_base.hpp zeromq3-4.0.4/src/ypipe_base.hpp --- zeromq3-3.2.4+dfsg/src/ypipe_base.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/ypipe_base.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,44 @@ + +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_YPIPE_BASE_HPP_INCLUDED__ +#define __ZMQ_YPIPE_BASE_HPP_INCLUDED__ + + +namespace zmq +{ + // ypipe_base abstracts ypipe and ypipe_conflate specific + // classes, one is selected according to a the conflate + // socket option + + template class ypipe_base_t + { + public: + virtual ~ypipe_base_t () {} + virtual void write (const T &value_, bool incomplete_) = 0; + virtual bool unwrite (T *value_) = 0; + virtual bool flush () = 0; + virtual bool check_read () = 0; + virtual bool read (T *value_) = 0; + virtual bool probe (bool (*fn)(T &)) = 0; + }; +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/ypipe_conflate.hpp zeromq3-4.0.4/src/ypipe_conflate.hpp --- zeromq3-3.2.4+dfsg/src/ypipe_conflate.hpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/src/ypipe_conflate.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,127 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#ifndef __ZMQ_YPIPE_CONFLATE_HPP_INCLUDED__ +#define __ZMQ_YPIPE_CONFLATE_HPP_INCLUDED__ + +#include "platform.hpp" +#include "dbuffer.hpp" +#include "ypipe_base.hpp" + +namespace zmq +{ + + // Adapter for dbuffer, to plug it in instead of a queue for the sake + // of implementing the conflate socket option, which, if set, makes + // the receiving side to discard all incoming messages but the last one. + // + // reader_awake flag is needed here to mimic ypipe delicate behaviour + // around the reader being asleep (see 'c' pointer being NULL in ypipe.hpp) + + template class ypipe_conflate_t : public ypipe_base_t + { + public: + + // Initialises the pipe. + inline ypipe_conflate_t () + : reader_awake(false) + { + } + + // The destructor doesn't have to be virtual. It is mad virtual + // just to keep ICC and code checking tools from complaining. + inline virtual ~ypipe_conflate_t () + { + } + + // Following function (write) deliberately copies uninitialised data + // when used with zmq_msg. Initialising the VSM body for + // non-VSM messages won't be good for performance. + +#ifdef ZMQ_HAVE_OPENVMS +#pragma message save +#pragma message disable(UNINIT) +#endif + inline void write (const T &value_, bool incomplete_) + { + (void)incomplete_; + + dbuffer.write (value_); + } + +#ifdef ZMQ_HAVE_OPENVMS +#pragma message restore +#endif + + // There are no incomplete items for conflate ypipe + inline bool unwrite (T *value_) + { + return false; + } + + // Flush is no-op for conflate ypipe. Reader asleep behaviour + // is as of the usual ypipe. + // Returns false if the reader thread is sleeping. In that case, + // caller is obliged to wake the reader up before using the pipe again. + inline bool flush () + { + return reader_awake; + } + + // Check whether item is available for reading. + inline bool check_read () + { + bool res = dbuffer.check_read (); + if (!res) + reader_awake = false; + + return res; + } + + // Reads an item from the pipe. Returns false if there is no value. + // available. + inline bool read (T *value_) + { + if (!check_read ()) + return false; + + return dbuffer.read (value_); + } + + // Applies the function fn to the first elemenent in the pipe + // and returns the value returned by the fn. + // The pipe mustn't be empty or the function crashes. + inline bool probe (bool (*fn)(T &)) + { + return dbuffer.probe (fn); + } + + protected: + + dbuffer_t dbuffer; + bool reader_awake; + + // Disable copying of ypipe object. + ypipe_conflate_t (const ypipe_conflate_t&); + const ypipe_conflate_t &operator = (const ypipe_conflate_t&); + }; + +} + +#endif diff -Nru zeromq3-3.2.4+dfsg/src/ypipe.hpp zeromq3-4.0.4/src/ypipe.hpp --- zeromq3-3.2.4+dfsg/src/ypipe.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/ypipe.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -25,6 +23,7 @@ #include "atomic_ptr.hpp" #include "yqueue.hpp" #include "platform.hpp" +#include "ypipe_base.hpp" namespace zmq { @@ -36,7 +35,7 @@ // N is granularity of the pipe, i.e. how many items are needed to // perform next memory allocation. - template class ypipe_t + template class ypipe_t : public ypipe_base_t { public: diff -Nru zeromq3-3.2.4+dfsg/src/yqueue.hpp zeromq3-4.0.4/src/yqueue.hpp --- zeromq3-3.2.4+dfsg/src/yqueue.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/yqueue.hpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -74,8 +72,7 @@ } chunk_t *sc = spare_chunk.xchg (NULL); - if (sc) - free (sc); + free (sc); } // Returns reference to the front element of the queue. @@ -158,8 +155,7 @@ // so for cache reasons we'll get rid of the spare and // use 'o' as the spare. chunk_t *cs = spare_chunk.xchg (o); - if (cs) - free (cs); + free (cs); } } diff -Nru zeromq3-3.2.4+dfsg/src/zmq.cpp zeromq3-4.0.4/src/zmq.cpp --- zeromq3-3.2.4+dfsg/src/zmq.cpp 2012-11-23 07:40:01.000000000 +0000 +++ zeromq3-4.0.4/src/zmq.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -56,7 +54,7 @@ // XSI vector I/O -#if ZMQ_HAVE_UIO +#if defined ZMQ_HAVE_UIO #include #else struct iovec { @@ -108,7 +106,7 @@ return zmq::errno_to_string (errnum_); } -int zmq_errno () +int zmq_errno (void) { return errno; } @@ -163,7 +161,7 @@ return ctx; } -int zmq_ctx_destroy (void *ctx_) +int zmq_ctx_term (void *ctx_) { if (!ctx_ || !((zmq::ctx_t*) ctx_)->check_tag ()) { errno = EFAULT; @@ -192,6 +190,16 @@ return rc; } +int zmq_ctx_shutdown (void *ctx_) +{ + if (!ctx_ || !((zmq::ctx_t*) ctx_)->check_tag ()) { + errno = EFAULT; + return -1; + } + + return ((zmq::ctx_t*) ctx_)->shutdown (); +} + int zmq_ctx_set (void *ctx_, int option_, int optval_) { if (!ctx_ || !((zmq::ctx_t*) ctx_)->check_tag ()) { @@ -225,7 +233,12 @@ int zmq_term (void *ctx_) { - return zmq_ctx_destroy (ctx_); + return zmq_ctx_term (ctx_); +} + +int zmq_ctx_destroy (void *ctx_) +{ + return zmq_ctx_term (ctx_); } @@ -373,7 +386,35 @@ return rc; } +int zmq_send_const (void *s_, const void *buf_, size_t len_, int flags_) +{ + if (!s_ || !((zmq::socket_base_t*) s_)->check_tag ()) { + errno = ENOTSOCK; + return -1; + } + zmq_msg_t msg; + int rc = zmq_msg_init_data (&msg, (void*)buf_, len_, NULL, NULL); + if (rc != 0) + return -1; + + zmq::socket_base_t *s = (zmq::socket_base_t *) s_; + rc = s_sendmsg (s, &msg, flags_); + if (unlikely (rc < 0)) { + int err = errno; + int rc2 = zmq_msg_close (&msg); + errno_assert (rc2 == 0); + errno = err; + return -1; + } + + // Note the optimisation here. We don't close the msg object as it is + // empty anyway. This may change when implementation of zmq_msg_t changes. + return rc; +} + + // Send multiple messages. +// TODO: this function has no man page // // If flag bit ZMQ_SNDMORE is set the vector is treated as // a single multi-part message, i.e. the last message has @@ -474,11 +515,7 @@ // // The iov_base* buffers of each iovec *a_ filled in by this // function may be freed using free(). -// -// Implementation note: We assume zmq::msg_t buffer allocated -// by zmq::recvmsg can be freed by free(). -// We assume it is safe to steal these buffers by simply -// not closing the zmq::msg_t. +// TODO: this function has no man page // int zmq_recviov (void *s_, iovec *a_, size_t *count_, int flags_) { @@ -495,8 +532,7 @@ *count_ = 0; for (size_t i = 0; recvmore && i < count; ++i) { - // Cheat! We never close any msg - // because we want to steal the buffer. + zmq_msg_t msg; int rc = zmq_msg_init (&msg); errno_assert (rc == 0); @@ -510,15 +546,21 @@ nread = -1; break; } - ++*count_; - ++nread; - // Cheat: acquire zmq_msg buffer. - a_[i].iov_base = static_cast (zmq_msg_data (&msg)); a_[i].iov_len = zmq_msg_size (&msg); - + a_[i].iov_base = malloc(a_[i].iov_len); + if (unlikely (!a_[i].iov_base)) { + errno = ENOMEM; + return -1; + } + memcpy(a_[i].iov_base,static_cast (zmq_msg_data (&msg)), + a_[i].iov_len); // Assume zmq_socket ZMQ_RVCMORE is properly set. recvmore = ((zmq::msg_t*) (void *) &msg)->flags () & zmq::msg_t::more; + rc = zmq_msg_close(&msg); + errno_assert (rc == 0); + ++*count_; + ++nread; } return nread; } @@ -642,9 +684,13 @@ zmq::clock_t clock; uint64_t now = 0; uint64_t end = 0; + pollfd spollfds[ZMQ_POLLITEMS_DFLT]; + pollfd *pollfds = spollfds; - pollfd *pollfds = (pollfd*) malloc (nitems_ * sizeof (pollfd)); - alloc_assert (pollfds); + if (nitems_ > ZMQ_POLLITEMS_DFLT) { + pollfds = (pollfd*) malloc (nitems_ * sizeof (pollfd)); + alloc_assert (pollfds); + } // Build pollset for poll () system call. for (int i = 0; i != nitems_; i++) { @@ -655,7 +701,8 @@ size_t zmq_fd_size = sizeof (zmq::fd_t); if (zmq_getsockopt (items_ [i].socket, ZMQ_FD, &pollfds [i].fd, &zmq_fd_size) == -1) { - free (pollfds); + if (pollfds != spollfds) + free (pollfds); return -1; } pollfds [i].events = items_ [i].events ? POLLIN : 0; @@ -688,7 +735,8 @@ while (true) { int rc = poll (pollfds, nitems_, timeout); if (rc == -1 && errno == EINTR) { - free (pollfds); + if (pollfds != spollfds) + free (pollfds); return -1; } errno_assert (rc >= 0); @@ -706,7 +754,8 @@ uint32_t zmq_events; if (zmq_getsockopt (items_ [i].socket, ZMQ_EVENTS, &zmq_events, &zmq_events_size) == -1) { - free (pollfds); + if (pollfds != spollfds) + free (pollfds); return -1; } if ((items_ [i].events & ZMQ_POLLOUT) && @@ -766,7 +815,8 @@ break; } - free (pollfds); + if (pollfds != spollfds) + free (pollfds); return nevents; #elif defined ZMQ_POLL_BASED_ON_SELECT @@ -980,79 +1030,9 @@ // The deprecated device functionality -int zmq_device (int type, void *frontend_, void *backend_) +int zmq_device (int /* type */, void *frontend_, void *backend_) { return zmq::proxy ( (zmq::socket_base_t*) frontend_, (zmq::socket_base_t*) backend_, NULL); } - -// Callback to free socket event data - -void zmq_free_event (void *event_data, void *hint) -{ - zmq_event_t *event = (zmq_event_t *) event_data; - - switch (event->event) { - case ZMQ_EVENT_CONNECTED: - free (event->data.connected.addr); - break; - case ZMQ_EVENT_CONNECT_DELAYED: - free (event->data.connect_delayed.addr); - break; - case ZMQ_EVENT_CONNECT_RETRIED: - free (event->data.connect_retried.addr); - break; - case ZMQ_EVENT_LISTENING: - free (event->data.listening.addr); - break; - case ZMQ_EVENT_BIND_FAILED: - free (event->data.bind_failed.addr); - break; - case ZMQ_EVENT_ACCEPTED: - free (event->data.accepted.addr); - break; - case ZMQ_EVENT_ACCEPT_FAILED: - free (event->data.accept_failed.addr); - break; - case ZMQ_EVENT_CLOSED: - free (event->data.closed.addr); - break; - case ZMQ_EVENT_CLOSE_FAILED: - free (event->data.close_failed.addr); - break; - case ZMQ_EVENT_DISCONNECTED: - free (event->data.disconnected.addr); - break; - } - free (event_data); -} - -//////////////////////////////////////////////////////////////////////////////// -// 0MQ utils - to be used by perf tests -//////////////////////////////////////////////////////////////////////////////// - -void zmq_sleep (int seconds_) -{ -#if defined ZMQ_HAVE_WINDOWS - Sleep (seconds_ * 1000); -#else - sleep (seconds_); -#endif -} - -void *zmq_stopwatch_start () -{ - uint64_t *watch = (uint64_t*) malloc (sizeof (uint64_t)); - alloc_assert (watch); - *watch = zmq::clock_t::now_us (); - return (void*) watch; -} - -unsigned long zmq_stopwatch_stop (void *watch_) -{ - uint64_t end = zmq::clock_t::now_us (); - uint64_t start = *(uint64_t*) watch_; - free (watch_); - return (unsigned long) (end - start); -} diff -Nru zeromq3-3.2.4+dfsg/src/zmq_utils.cpp zeromq3-4.0.4/src/zmq_utils.cpp --- zeromq3-3.2.4+dfsg/src/zmq_utils.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/src/zmq_utils.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2009 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -21,19 +19,21 @@ #include "platform.hpp" -#include "../include/zmq_utils.h" - -#include - -#include "stdint.hpp" #include "clock.hpp" #include "err.hpp" +#include "thread.hpp" +#include +#include "../include/zmq_utils.h" #if !defined ZMQ_HAVE_WINDOWS #include #else #include "windows.hpp" #endif +#ifdef HAVE_LIBSODIUM +# include +#endif + void zmq_sleep (int seconds_) { @@ -59,3 +59,142 @@ free (watch_); return (unsigned long) (end - start); } + +void *zmq_threadstart(zmq_thread_fn* func, void* arg) +{ + zmq::thread_t* thread = new zmq::thread_t; + thread->start(func, arg); + return thread; +} + +void zmq_threadclose(void* thread) +{ + zmq::thread_t* pThread = static_cast(thread); + pThread->stop(); + delete pThread; +} + +// Z85 codec, taken from 0MQ RFC project, implements RFC32 Z85 encoding + +// Maps base 256 to base 85 +static char encoder [85 + 1] = { + "0123456789" "abcdefghij" "klmnopqrst" "uvwxyzABCD" + "EFGHIJKLMN" "OPQRSTUVWX" "YZ.-:+=^!/" "*?&<>()[]{" + "}@%$#" +}; + +// Maps base 85 to base 256 +// We chop off lower 32 and higher 128 ranges +static uint8_t decoder [96] = { + 0x00, 0x44, 0x00, 0x54, 0x53, 0x52, 0x48, 0x00, + 0x4B, 0x4C, 0x46, 0x41, 0x00, 0x3F, 0x3E, 0x45, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x40, 0x00, 0x49, 0x42, 0x4A, 0x47, + 0x51, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, + 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, + 0x3B, 0x3C, 0x3D, 0x4D, 0x00, 0x4E, 0x43, 0x00, + 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, + 0x21, 0x22, 0x23, 0x4F, 0x00, 0x50, 0x00, 0x00 +}; + +// -------------------------------------------------------------------------- +// Encode a binary frame as a string; destination string MUST be at least +// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns +// dest. Size must be a multiple of 4. +// Returns NULL and sets errno = EINVAL for invalid input. + +char *zmq_z85_encode (char *dest, uint8_t *data, size_t size) +{ + if (size % 4 != 0) { + errno = EINVAL; + return NULL; + } + unsigned int char_nbr = 0; + unsigned int byte_nbr = 0; + uint32_t value = 0; + while (byte_nbr < size) { + // Accumulate value in base 256 (binary) + value = value * 256 + data [byte_nbr++]; + if (byte_nbr % 4 == 0) { + // Output value in base 85 + unsigned int divisor = 85 * 85 * 85 * 85; + while (divisor) { + dest [char_nbr++] = encoder [value / divisor % 85]; + divisor /= 85; + } + value = 0; + } + } + assert (char_nbr == size * 5 / 4); + dest [char_nbr] = 0; + return dest; +} + + +// -------------------------------------------------------------------------- +// Decode an encoded string into a binary frame; dest must be at least +// strlen (string) * 4 / 5 bytes long. Returns dest. strlen (string) +// must be a multiple of 5. +// Returns NULL and sets errno = EINVAL for invalid input. + +uint8_t *zmq_z85_decode (uint8_t *dest, char *string) +{ + if (strlen (string) % 5 != 0) { + errno = EINVAL; + return NULL; + } + unsigned int byte_nbr = 0; + unsigned int char_nbr = 0; + unsigned int string_len = strlen (string); + uint32_t value = 0; + while (char_nbr < string_len) { + // Accumulate value in base 85 + value = value * 85 + decoder [(uint8_t) string [char_nbr++] - 32]; + if (char_nbr % 5 == 0) { + // Output value in base 256 + unsigned int divisor = 256 * 256 * 256; + while (divisor) { + dest [byte_nbr++] = value / divisor % 256; + divisor /= 256; + } + value = 0; + } + } + assert (byte_nbr == strlen (string) * 4 / 5); + return dest; +} + +// -------------------------------------------------------------------------- +// Generate a public/private keypair with libsodium. +// Generated keys will be 40 byte z85-encoded strings. +// Returns 0 on success, -1 on failure, setting errno. +// Sets errno = ENOTSUP in the absence of libsodium. + +int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key) +{ +#ifdef HAVE_LIBSODIUM +# if crypto_box_PUBLICKEYBYTES != 32 \ + || crypto_box_SECRETKEYBYTES != 32 +# error "libsodium not built correctly" +# endif + + uint8_t public_key [32]; + uint8_t secret_key [32]; + + int rc = crypto_box_keypair (public_key, secret_key); + // Is there a sensible errno to set here? + if (rc) + return rc; + + zmq_z85_encode (z85_public_key, public_key, 32); + zmq_z85_encode (z85_secret_key, secret_key, 32); + + return 0; +#else // requires libsodium + errno = ENOTSUP; + return -1; +#endif +} diff -Nru zeromq3-3.2.4+dfsg/tests/Makefile.am zeromq3-4.0.4/tests/Makefile.am --- zeromq3-3.2.4+dfsg/tests/Makefile.am 2013-02-01 09:02:44.000000000 +0000 +++ zeromq3-4.0.4/tests/Makefile.am 2013-11-13 17:57:50.000000000 +0000 @@ -3,7 +3,8 @@ LDADD = $(top_builddir)/src/libzmq.la -noinst_PROGRAMS = test_pair_inproc \ +noinst_PROGRAMS = test_system \ + test_pair_inproc \ test_pair_tcp \ test_reqrep_inproc \ test_reqrep_tcp \ @@ -13,21 +14,43 @@ test_invalid_rep \ test_msg_flags \ test_connect_resolve \ - test_connect_delay \ + test_immediate \ test_last_endpoint \ test_term_endpoint \ test_monitor \ test_router_mandatory \ - test_disconnect_inproc - + test_router_raw_empty \ + test_probe_router \ + test_stream \ + test_disconnect_inproc \ + test_ctx_options \ + test_ctx_destroy \ + test_security_null \ + test_security_plain \ + test_security_curve \ + test_iov \ + test_spec_req \ + test_spec_rep \ + test_spec_dealer \ + test_spec_router \ + test_spec_pushpull \ + test_req_correlate \ + test_req_relaxed \ + test_conflate \ + test_inproc_connect \ + test_issue_566 \ + test_abstract_ipc \ + test_many_sockets if !ON_MINGW noinst_PROGRAMS += test_shutdown_stress \ test_pair_ipc \ test_reqrep_ipc \ - test_timeo + test_timeo \ + test_fork endif +test_system_SOURCES = test_system.cpp test_pair_inproc_SOURCES = test_pair_inproc.cpp testutil.hpp test_pair_tcp_SOURCES = test_pair_tcp.cpp testutil.hpp test_reqrep_inproc_SOURCES = test_reqrep_inproc.cpp testutil.hpp @@ -38,18 +61,44 @@ test_invalid_rep_SOURCES = test_invalid_rep.cpp test_msg_flags_SOURCES = test_msg_flags.cpp test_connect_resolve_SOURCES = test_connect_resolve.cpp -test_connect_delay_SOURCES = test_connect_delay.cpp +test_immediate_SOURCES = test_immediate.cpp test_last_endpoint_SOURCES = test_last_endpoint.cpp test_term_endpoint_SOURCES = test_term_endpoint.cpp test_monitor_SOURCES = test_monitor.cpp -test_disconnect_inproc_SOURCES = test_disconnect_inproc.cpp test_router_mandatory_SOURCES = test_router_mandatory.cpp - +test_router_raw_empty_SOURCES = test_router_raw_empty.cpp +test_probe_router_SOURCES = test_probe_router.cpp +test_stream_SOURCES = test_stream.cpp +test_disconnect_inproc_SOURCES = test_disconnect_inproc.cpp +test_ctx_options_SOURCES = test_ctx_options.cpp +test_iov_SOURCES = test_iov.cpp +test_ctx_destroy_SOURCES = test_ctx_destroy.cpp +test_security_null_SOURCES = test_security_null.cpp +test_security_plain_SOURCES = test_security_plain.cpp +test_security_curve_SOURCES = test_security_curve.cpp +test_spec_req_SOURCES = test_spec_req.cpp +test_spec_rep_SOURCES = test_spec_rep.cpp +test_spec_dealer_SOURCES = test_spec_dealer.cpp +test_spec_router_SOURCES = test_spec_router.cpp +test_spec_pushpull_SOURCES = test_spec_pushpull.cpp +test_req_correlate_SOURCES = test_req_correlate.cpp +test_req_relaxed_SOURCES = test_req_relaxed.cpp +test_conflate_SOURCES = test_conflate.cpp +test_inproc_connect_SOURCES = test_inproc_connect.cpp +test_issue_566_SOURCES = test_issue_566.cpp +test_abstract_ipc_SOURCES = test_abstract_ipc.cpp +test_many_sockets_SOURCES = test_many_sockets.cpp if !ON_MINGW test_shutdown_stress_SOURCES = test_shutdown_stress.cpp test_pair_ipc_SOURCES = test_pair_ipc.cpp testutil.hpp test_reqrep_ipc_SOURCES = test_reqrep_ipc.cpp testutil.hpp test_timeo_SOURCES = test_timeo.cpp +test_fork_SOURCES = test_fork.cpp endif +# Run the test cases TESTS = $(noinst_PROGRAMS) + +if !ON_LINUX +XFAIL_TESTS = test_abstract_ipc +endif diff -Nru zeromq3-3.2.4+dfsg/tests/Makefile.in zeromq3-4.0.4/tests/Makefile.in --- zeromq3-3.2.4+dfsg/tests/Makefile.in 2013-09-20 09:19:00.000000000 +0000 +++ zeromq3-4.0.4/tests/Makefile.in 2014-03-10 21:42:42.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,23 +16,6 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -51,20 +34,33 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = test_pair_inproc$(EXEEXT) test_pair_tcp$(EXEEXT) \ - test_reqrep_inproc$(EXEEXT) test_reqrep_tcp$(EXEEXT) \ - test_hwm$(EXEEXT) test_reqrep_device$(EXEEXT) \ - test_sub_forward$(EXEEXT) test_invalid_rep$(EXEEXT) \ - test_msg_flags$(EXEEXT) test_connect_resolve$(EXEEXT) \ - test_connect_delay$(EXEEXT) test_last_endpoint$(EXEEXT) \ - test_term_endpoint$(EXEEXT) test_monitor$(EXEEXT) \ - test_router_mandatory$(EXEEXT) test_disconnect_inproc$(EXEEXT) \ +noinst_PROGRAMS = test_system$(EXEEXT) test_pair_inproc$(EXEEXT) \ + test_pair_tcp$(EXEEXT) test_reqrep_inproc$(EXEEXT) \ + test_reqrep_tcp$(EXEEXT) test_hwm$(EXEEXT) \ + test_reqrep_device$(EXEEXT) test_sub_forward$(EXEEXT) \ + test_invalid_rep$(EXEEXT) test_msg_flags$(EXEEXT) \ + test_connect_resolve$(EXEEXT) test_immediate$(EXEEXT) \ + test_last_endpoint$(EXEEXT) test_term_endpoint$(EXEEXT) \ + test_monitor$(EXEEXT) test_router_mandatory$(EXEEXT) \ + test_router_raw_empty$(EXEEXT) test_probe_router$(EXEEXT) \ + test_stream$(EXEEXT) test_disconnect_inproc$(EXEEXT) \ + test_ctx_options$(EXEEXT) test_ctx_destroy$(EXEEXT) \ + test_security_null$(EXEEXT) test_security_plain$(EXEEXT) \ + test_security_curve$(EXEEXT) test_iov$(EXEEXT) \ + test_spec_req$(EXEEXT) test_spec_rep$(EXEEXT) \ + test_spec_dealer$(EXEEXT) test_spec_router$(EXEEXT) \ + test_spec_pushpull$(EXEEXT) test_req_correlate$(EXEEXT) \ + test_req_relaxed$(EXEEXT) test_conflate$(EXEEXT) \ + test_inproc_connect$(EXEEXT) test_issue_566$(EXEEXT) \ + test_abstract_ipc$(EXEEXT) test_many_sockets$(EXEEXT) \ $(am__EXEEXT_1) @ON_MINGW_FALSE@am__append_1 = test_shutdown_stress \ @ON_MINGW_FALSE@ test_pair_ipc \ @ON_MINGW_FALSE@ test_reqrep_ipc \ -@ON_MINGW_FALSE@ test_timeo +@ON_MINGW_FALSE@ test_timeo \ +@ON_MINGW_FALSE@ test_fork +@ON_LINUX_FALSE@XFAIL_TESTS = test_abstract_ipc$(EXEEXT) subdir = tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -73,7 +69,7 @@ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -82,35 +78,73 @@ CONFIG_CLEAN_VPATH_FILES = @ON_MINGW_FALSE@am__EXEEXT_1 = test_shutdown_stress$(EXEEXT) \ @ON_MINGW_FALSE@ test_pair_ipc$(EXEEXT) \ -@ON_MINGW_FALSE@ test_reqrep_ipc$(EXEEXT) test_timeo$(EXEEXT) +@ON_MINGW_FALSE@ test_reqrep_ipc$(EXEEXT) test_timeo$(EXEEXT) \ +@ON_MINGW_FALSE@ test_fork$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) -am_test_connect_delay_OBJECTS = test_connect_delay.$(OBJEXT) -test_connect_delay_OBJECTS = $(am_test_connect_delay_OBJECTS) -test_connect_delay_LDADD = $(LDADD) -test_connect_delay_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_abstract_ipc_OBJECTS = test_abstract_ipc.$(OBJEXT) +test_abstract_ipc_OBJECTS = $(am_test_abstract_ipc_OBJECTS) +test_abstract_ipc_LDADD = $(LDADD) +test_abstract_ipc_DEPENDENCIES = $(top_builddir)/src/libzmq.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am_test_conflate_OBJECTS = test_conflate.$(OBJEXT) +test_conflate_OBJECTS = $(am_test_conflate_OBJECTS) +test_conflate_LDADD = $(LDADD) +test_conflate_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_connect_resolve_OBJECTS = test_connect_resolve.$(OBJEXT) test_connect_resolve_OBJECTS = $(am_test_connect_resolve_OBJECTS) test_connect_resolve_LDADD = $(LDADD) test_connect_resolve_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_ctx_destroy_OBJECTS = test_ctx_destroy.$(OBJEXT) +test_ctx_destroy_OBJECTS = $(am_test_ctx_destroy_OBJECTS) +test_ctx_destroy_LDADD = $(LDADD) +test_ctx_destroy_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_ctx_options_OBJECTS = test_ctx_options.$(OBJEXT) +test_ctx_options_OBJECTS = $(am_test_ctx_options_OBJECTS) +test_ctx_options_LDADD = $(LDADD) +test_ctx_options_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_disconnect_inproc_OBJECTS = test_disconnect_inproc.$(OBJEXT) test_disconnect_inproc_OBJECTS = $(am_test_disconnect_inproc_OBJECTS) test_disconnect_inproc_LDADD = $(LDADD) test_disconnect_inproc_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am__test_fork_SOURCES_DIST = test_fork.cpp +@ON_MINGW_FALSE@am_test_fork_OBJECTS = test_fork.$(OBJEXT) +test_fork_OBJECTS = $(am_test_fork_OBJECTS) +test_fork_LDADD = $(LDADD) +test_fork_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_hwm_OBJECTS = test_hwm.$(OBJEXT) test_hwm_OBJECTS = $(am_test_hwm_OBJECTS) test_hwm_LDADD = $(LDADD) test_hwm_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_immediate_OBJECTS = test_immediate.$(OBJEXT) +test_immediate_OBJECTS = $(am_test_immediate_OBJECTS) +test_immediate_LDADD = $(LDADD) +test_immediate_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_inproc_connect_OBJECTS = test_inproc_connect.$(OBJEXT) +test_inproc_connect_OBJECTS = $(am_test_inproc_connect_OBJECTS) +test_inproc_connect_LDADD = $(LDADD) +test_inproc_connect_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_invalid_rep_OBJECTS = test_invalid_rep.$(OBJEXT) test_invalid_rep_OBJECTS = $(am_test_invalid_rep_OBJECTS) test_invalid_rep_LDADD = $(LDADD) test_invalid_rep_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_iov_OBJECTS = test_iov.$(OBJEXT) +test_iov_OBJECTS = $(am_test_iov_OBJECTS) +test_iov_LDADD = $(LDADD) +test_iov_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_issue_566_OBJECTS = test_issue_566.$(OBJEXT) +test_issue_566_OBJECTS = $(am_test_issue_566_OBJECTS) +test_issue_566_LDADD = $(LDADD) +test_issue_566_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_last_endpoint_OBJECTS = test_last_endpoint.$(OBJEXT) test_last_endpoint_OBJECTS = $(am_test_last_endpoint_OBJECTS) test_last_endpoint_LDADD = $(LDADD) test_last_endpoint_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_many_sockets_OBJECTS = test_many_sockets.$(OBJEXT) +test_many_sockets_OBJECTS = $(am_test_many_sockets_OBJECTS) +test_many_sockets_LDADD = $(LDADD) +test_many_sockets_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_monitor_OBJECTS = test_monitor.$(OBJEXT) test_monitor_OBJECTS = $(am_test_monitor_OBJECTS) test_monitor_LDADD = $(LDADD) @@ -132,6 +166,18 @@ test_pair_tcp_OBJECTS = $(am_test_pair_tcp_OBJECTS) test_pair_tcp_LDADD = $(LDADD) test_pair_tcp_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_probe_router_OBJECTS = test_probe_router.$(OBJEXT) +test_probe_router_OBJECTS = $(am_test_probe_router_OBJECTS) +test_probe_router_LDADD = $(LDADD) +test_probe_router_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_req_correlate_OBJECTS = test_req_correlate.$(OBJEXT) +test_req_correlate_OBJECTS = $(am_test_req_correlate_OBJECTS) +test_req_correlate_LDADD = $(LDADD) +test_req_correlate_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_req_relaxed_OBJECTS = test_req_relaxed.$(OBJEXT) +test_req_relaxed_OBJECTS = $(am_test_req_relaxed_OBJECTS) +test_req_relaxed_LDADD = $(LDADD) +test_req_relaxed_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_reqrep_device_OBJECTS = test_reqrep_device.$(OBJEXT) test_reqrep_device_OBJECTS = $(am_test_reqrep_device_OBJECTS) test_reqrep_device_LDADD = $(LDADD) @@ -154,16 +200,60 @@ test_router_mandatory_OBJECTS = $(am_test_router_mandatory_OBJECTS) test_router_mandatory_LDADD = $(LDADD) test_router_mandatory_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_router_raw_empty_OBJECTS = test_router_raw_empty.$(OBJEXT) +test_router_raw_empty_OBJECTS = $(am_test_router_raw_empty_OBJECTS) +test_router_raw_empty_LDADD = $(LDADD) +test_router_raw_empty_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_security_curve_OBJECTS = test_security_curve.$(OBJEXT) +test_security_curve_OBJECTS = $(am_test_security_curve_OBJECTS) +test_security_curve_LDADD = $(LDADD) +test_security_curve_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_security_null_OBJECTS = test_security_null.$(OBJEXT) +test_security_null_OBJECTS = $(am_test_security_null_OBJECTS) +test_security_null_LDADD = $(LDADD) +test_security_null_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_security_plain_OBJECTS = test_security_plain.$(OBJEXT) +test_security_plain_OBJECTS = $(am_test_security_plain_OBJECTS) +test_security_plain_LDADD = $(LDADD) +test_security_plain_DEPENDENCIES = $(top_builddir)/src/libzmq.la am__test_shutdown_stress_SOURCES_DIST = test_shutdown_stress.cpp @ON_MINGW_FALSE@am_test_shutdown_stress_OBJECTS = \ @ON_MINGW_FALSE@ test_shutdown_stress.$(OBJEXT) test_shutdown_stress_OBJECTS = $(am_test_shutdown_stress_OBJECTS) test_shutdown_stress_LDADD = $(LDADD) test_shutdown_stress_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_spec_dealer_OBJECTS = test_spec_dealer.$(OBJEXT) +test_spec_dealer_OBJECTS = $(am_test_spec_dealer_OBJECTS) +test_spec_dealer_LDADD = $(LDADD) +test_spec_dealer_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_spec_pushpull_OBJECTS = test_spec_pushpull.$(OBJEXT) +test_spec_pushpull_OBJECTS = $(am_test_spec_pushpull_OBJECTS) +test_spec_pushpull_LDADD = $(LDADD) +test_spec_pushpull_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_spec_rep_OBJECTS = test_spec_rep.$(OBJEXT) +test_spec_rep_OBJECTS = $(am_test_spec_rep_OBJECTS) +test_spec_rep_LDADD = $(LDADD) +test_spec_rep_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_spec_req_OBJECTS = test_spec_req.$(OBJEXT) +test_spec_req_OBJECTS = $(am_test_spec_req_OBJECTS) +test_spec_req_LDADD = $(LDADD) +test_spec_req_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_spec_router_OBJECTS = test_spec_router.$(OBJEXT) +test_spec_router_OBJECTS = $(am_test_spec_router_OBJECTS) +test_spec_router_LDADD = $(LDADD) +test_spec_router_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_stream_OBJECTS = test_stream.$(OBJEXT) +test_stream_OBJECTS = $(am_test_stream_OBJECTS) +test_stream_LDADD = $(LDADD) +test_stream_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_sub_forward_OBJECTS = test_sub_forward.$(OBJEXT) test_sub_forward_OBJECTS = $(am_test_sub_forward_OBJECTS) test_sub_forward_LDADD = $(LDADD) test_sub_forward_DEPENDENCIES = $(top_builddir)/src/libzmq.la +am_test_system_OBJECTS = test_system.$(OBJEXT) +test_system_OBJECTS = $(am_test_system_OBJECTS) +test_system_LDADD = $(LDADD) +test_system_DEPENDENCIES = $(top_builddir)/src/libzmq.la am_test_term_endpoint_OBJECTS = test_term_endpoint.$(OBJEXT) test_term_endpoint_OBJECTS = $(am_test_term_endpoint_OBJECTS) test_term_endpoint_LDADD = $(LDADD) @@ -215,35 +305,52 @@ AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(test_connect_delay_SOURCES) \ - $(test_connect_resolve_SOURCES) \ - $(test_disconnect_inproc_SOURCES) $(test_hwm_SOURCES) \ - $(test_invalid_rep_SOURCES) $(test_last_endpoint_SOURCES) \ - $(test_monitor_SOURCES) $(test_msg_flags_SOURCES) \ - $(test_pair_inproc_SOURCES) $(test_pair_ipc_SOURCES) \ - $(test_pair_tcp_SOURCES) $(test_reqrep_device_SOURCES) \ +SOURCES = $(test_abstract_ipc_SOURCES) $(test_conflate_SOURCES) \ + $(test_connect_resolve_SOURCES) $(test_ctx_destroy_SOURCES) \ + $(test_ctx_options_SOURCES) $(test_disconnect_inproc_SOURCES) \ + $(test_fork_SOURCES) $(test_hwm_SOURCES) \ + $(test_immediate_SOURCES) $(test_inproc_connect_SOURCES) \ + $(test_invalid_rep_SOURCES) $(test_iov_SOURCES) \ + $(test_issue_566_SOURCES) $(test_last_endpoint_SOURCES) \ + $(test_many_sockets_SOURCES) $(test_monitor_SOURCES) \ + $(test_msg_flags_SOURCES) $(test_pair_inproc_SOURCES) \ + $(test_pair_ipc_SOURCES) $(test_pair_tcp_SOURCES) \ + $(test_probe_router_SOURCES) $(test_req_correlate_SOURCES) \ + $(test_req_relaxed_SOURCES) $(test_reqrep_device_SOURCES) \ $(test_reqrep_inproc_SOURCES) $(test_reqrep_ipc_SOURCES) \ $(test_reqrep_tcp_SOURCES) $(test_router_mandatory_SOURCES) \ - $(test_shutdown_stress_SOURCES) $(test_sub_forward_SOURCES) \ + $(test_router_raw_empty_SOURCES) \ + $(test_security_curve_SOURCES) $(test_security_null_SOURCES) \ + $(test_security_plain_SOURCES) $(test_shutdown_stress_SOURCES) \ + $(test_spec_dealer_SOURCES) $(test_spec_pushpull_SOURCES) \ + $(test_spec_rep_SOURCES) $(test_spec_req_SOURCES) \ + $(test_spec_router_SOURCES) $(test_stream_SOURCES) \ + $(test_sub_forward_SOURCES) $(test_system_SOURCES) \ $(test_term_endpoint_SOURCES) $(test_timeo_SOURCES) -DIST_SOURCES = $(test_connect_delay_SOURCES) \ - $(test_connect_resolve_SOURCES) \ - $(test_disconnect_inproc_SOURCES) $(test_hwm_SOURCES) \ - $(test_invalid_rep_SOURCES) $(test_last_endpoint_SOURCES) \ - $(test_monitor_SOURCES) $(test_msg_flags_SOURCES) \ - $(test_pair_inproc_SOURCES) $(am__test_pair_ipc_SOURCES_DIST) \ - $(test_pair_tcp_SOURCES) $(test_reqrep_device_SOURCES) \ +DIST_SOURCES = $(test_abstract_ipc_SOURCES) $(test_conflate_SOURCES) \ + $(test_connect_resolve_SOURCES) $(test_ctx_destroy_SOURCES) \ + $(test_ctx_options_SOURCES) $(test_disconnect_inproc_SOURCES) \ + $(am__test_fork_SOURCES_DIST) $(test_hwm_SOURCES) \ + $(test_immediate_SOURCES) $(test_inproc_connect_SOURCES) \ + $(test_invalid_rep_SOURCES) $(test_iov_SOURCES) \ + $(test_issue_566_SOURCES) $(test_last_endpoint_SOURCES) \ + $(test_many_sockets_SOURCES) $(test_monitor_SOURCES) \ + $(test_msg_flags_SOURCES) $(test_pair_inproc_SOURCES) \ + $(am__test_pair_ipc_SOURCES_DIST) $(test_pair_tcp_SOURCES) \ + $(test_probe_router_SOURCES) $(test_req_correlate_SOURCES) \ + $(test_req_relaxed_SOURCES) $(test_reqrep_device_SOURCES) \ $(test_reqrep_inproc_SOURCES) \ $(am__test_reqrep_ipc_SOURCES_DIST) $(test_reqrep_tcp_SOURCES) \ $(test_router_mandatory_SOURCES) \ + $(test_router_raw_empty_SOURCES) \ + $(test_security_curve_SOURCES) $(test_security_null_SOURCES) \ + $(test_security_plain_SOURCES) \ $(am__test_shutdown_stress_SOURCES_DIST) \ - $(test_sub_forward_SOURCES) $(test_term_endpoint_SOURCES) \ - $(am__test_timeo_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac + $(test_spec_dealer_SOURCES) $(test_spec_pushpull_SOURCES) \ + $(test_spec_rep_SOURCES) $(test_spec_req_SOURCES) \ + $(test_spec_router_SOURCES) $(test_stream_SOURCES) \ + $(test_sub_forward_SOURCES) $(test_system_SOURCES) \ + $(test_term_endpoint_SOURCES) $(am__test_timeo_SOURCES_DIST) ETAGS = etags CTAGS = ctags am__tty_colors = \ @@ -390,6 +497,7 @@ -I$(top_srcdir)/include LDADD = $(top_builddir)/src/libzmq.la +test_system_SOURCES = test_system.cpp test_pair_inproc_SOURCES = test_pair_inproc.cpp testutil.hpp test_pair_tcp_SOURCES = test_pair_tcp.cpp testutil.hpp test_reqrep_inproc_SOURCES = test_reqrep_inproc.cpp testutil.hpp @@ -400,16 +508,40 @@ test_invalid_rep_SOURCES = test_invalid_rep.cpp test_msg_flags_SOURCES = test_msg_flags.cpp test_connect_resolve_SOURCES = test_connect_resolve.cpp -test_connect_delay_SOURCES = test_connect_delay.cpp +test_immediate_SOURCES = test_immediate.cpp test_last_endpoint_SOURCES = test_last_endpoint.cpp test_term_endpoint_SOURCES = test_term_endpoint.cpp test_monitor_SOURCES = test_monitor.cpp -test_disconnect_inproc_SOURCES = test_disconnect_inproc.cpp test_router_mandatory_SOURCES = test_router_mandatory.cpp +test_router_raw_empty_SOURCES = test_router_raw_empty.cpp +test_probe_router_SOURCES = test_probe_router.cpp +test_stream_SOURCES = test_stream.cpp +test_disconnect_inproc_SOURCES = test_disconnect_inproc.cpp +test_ctx_options_SOURCES = test_ctx_options.cpp +test_iov_SOURCES = test_iov.cpp +test_ctx_destroy_SOURCES = test_ctx_destroy.cpp +test_security_null_SOURCES = test_security_null.cpp +test_security_plain_SOURCES = test_security_plain.cpp +test_security_curve_SOURCES = test_security_curve.cpp +test_spec_req_SOURCES = test_spec_req.cpp +test_spec_rep_SOURCES = test_spec_rep.cpp +test_spec_dealer_SOURCES = test_spec_dealer.cpp +test_spec_router_SOURCES = test_spec_router.cpp +test_spec_pushpull_SOURCES = test_spec_pushpull.cpp +test_req_correlate_SOURCES = test_req_correlate.cpp +test_req_relaxed_SOURCES = test_req_relaxed.cpp +test_conflate_SOURCES = test_conflate.cpp +test_inproc_connect_SOURCES = test_inproc_connect.cpp +test_issue_566_SOURCES = test_issue_566.cpp +test_abstract_ipc_SOURCES = test_abstract_ipc.cpp +test_many_sockets_SOURCES = test_many_sockets.cpp @ON_MINGW_FALSE@test_shutdown_stress_SOURCES = test_shutdown_stress.cpp @ON_MINGW_FALSE@test_pair_ipc_SOURCES = test_pair_ipc.cpp testutil.hpp @ON_MINGW_FALSE@test_reqrep_ipc_SOURCES = test_reqrep_ipc.cpp testutil.hpp @ON_MINGW_FALSE@test_timeo_SOURCES = test_timeo.cpp +@ON_MINGW_FALSE@test_fork_SOURCES = test_fork.cpp + +# Run the test cases TESTS = $(noinst_PROGRAMS) all: all-am @@ -454,24 +586,51 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -test_connect_delay$(EXEEXT): $(test_connect_delay_OBJECTS) $(test_connect_delay_DEPENDENCIES) $(EXTRA_test_connect_delay_DEPENDENCIES) - @rm -f test_connect_delay$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(test_connect_delay_OBJECTS) $(test_connect_delay_LDADD) $(LIBS) +test_abstract_ipc$(EXEEXT): $(test_abstract_ipc_OBJECTS) $(test_abstract_ipc_DEPENDENCIES) $(EXTRA_test_abstract_ipc_DEPENDENCIES) + @rm -f test_abstract_ipc$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_abstract_ipc_OBJECTS) $(test_abstract_ipc_LDADD) $(LIBS) +test_conflate$(EXEEXT): $(test_conflate_OBJECTS) $(test_conflate_DEPENDENCIES) $(EXTRA_test_conflate_DEPENDENCIES) + @rm -f test_conflate$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_conflate_OBJECTS) $(test_conflate_LDADD) $(LIBS) test_connect_resolve$(EXEEXT): $(test_connect_resolve_OBJECTS) $(test_connect_resolve_DEPENDENCIES) $(EXTRA_test_connect_resolve_DEPENDENCIES) @rm -f test_connect_resolve$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_connect_resolve_OBJECTS) $(test_connect_resolve_LDADD) $(LIBS) +test_ctx_destroy$(EXEEXT): $(test_ctx_destroy_OBJECTS) $(test_ctx_destroy_DEPENDENCIES) $(EXTRA_test_ctx_destroy_DEPENDENCIES) + @rm -f test_ctx_destroy$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_ctx_destroy_OBJECTS) $(test_ctx_destroy_LDADD) $(LIBS) +test_ctx_options$(EXEEXT): $(test_ctx_options_OBJECTS) $(test_ctx_options_DEPENDENCIES) $(EXTRA_test_ctx_options_DEPENDENCIES) + @rm -f test_ctx_options$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_ctx_options_OBJECTS) $(test_ctx_options_LDADD) $(LIBS) test_disconnect_inproc$(EXEEXT): $(test_disconnect_inproc_OBJECTS) $(test_disconnect_inproc_DEPENDENCIES) $(EXTRA_test_disconnect_inproc_DEPENDENCIES) @rm -f test_disconnect_inproc$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_disconnect_inproc_OBJECTS) $(test_disconnect_inproc_LDADD) $(LIBS) +test_fork$(EXEEXT): $(test_fork_OBJECTS) $(test_fork_DEPENDENCIES) $(EXTRA_test_fork_DEPENDENCIES) + @rm -f test_fork$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_fork_OBJECTS) $(test_fork_LDADD) $(LIBS) test_hwm$(EXEEXT): $(test_hwm_OBJECTS) $(test_hwm_DEPENDENCIES) $(EXTRA_test_hwm_DEPENDENCIES) @rm -f test_hwm$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_hwm_OBJECTS) $(test_hwm_LDADD) $(LIBS) +test_immediate$(EXEEXT): $(test_immediate_OBJECTS) $(test_immediate_DEPENDENCIES) $(EXTRA_test_immediate_DEPENDENCIES) + @rm -f test_immediate$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_immediate_OBJECTS) $(test_immediate_LDADD) $(LIBS) +test_inproc_connect$(EXEEXT): $(test_inproc_connect_OBJECTS) $(test_inproc_connect_DEPENDENCIES) $(EXTRA_test_inproc_connect_DEPENDENCIES) + @rm -f test_inproc_connect$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_inproc_connect_OBJECTS) $(test_inproc_connect_LDADD) $(LIBS) test_invalid_rep$(EXEEXT): $(test_invalid_rep_OBJECTS) $(test_invalid_rep_DEPENDENCIES) $(EXTRA_test_invalid_rep_DEPENDENCIES) @rm -f test_invalid_rep$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_invalid_rep_OBJECTS) $(test_invalid_rep_LDADD) $(LIBS) +test_iov$(EXEEXT): $(test_iov_OBJECTS) $(test_iov_DEPENDENCIES) $(EXTRA_test_iov_DEPENDENCIES) + @rm -f test_iov$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_iov_OBJECTS) $(test_iov_LDADD) $(LIBS) +test_issue_566$(EXEEXT): $(test_issue_566_OBJECTS) $(test_issue_566_DEPENDENCIES) $(EXTRA_test_issue_566_DEPENDENCIES) + @rm -f test_issue_566$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_issue_566_OBJECTS) $(test_issue_566_LDADD) $(LIBS) test_last_endpoint$(EXEEXT): $(test_last_endpoint_OBJECTS) $(test_last_endpoint_DEPENDENCIES) $(EXTRA_test_last_endpoint_DEPENDENCIES) @rm -f test_last_endpoint$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_last_endpoint_OBJECTS) $(test_last_endpoint_LDADD) $(LIBS) +test_many_sockets$(EXEEXT): $(test_many_sockets_OBJECTS) $(test_many_sockets_DEPENDENCIES) $(EXTRA_test_many_sockets_DEPENDENCIES) + @rm -f test_many_sockets$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_many_sockets_OBJECTS) $(test_many_sockets_LDADD) $(LIBS) test_monitor$(EXEEXT): $(test_monitor_OBJECTS) $(test_monitor_DEPENDENCIES) $(EXTRA_test_monitor_DEPENDENCIES) @rm -f test_monitor$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_monitor_OBJECTS) $(test_monitor_LDADD) $(LIBS) @@ -487,6 +646,15 @@ test_pair_tcp$(EXEEXT): $(test_pair_tcp_OBJECTS) $(test_pair_tcp_DEPENDENCIES) $(EXTRA_test_pair_tcp_DEPENDENCIES) @rm -f test_pair_tcp$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_pair_tcp_OBJECTS) $(test_pair_tcp_LDADD) $(LIBS) +test_probe_router$(EXEEXT): $(test_probe_router_OBJECTS) $(test_probe_router_DEPENDENCIES) $(EXTRA_test_probe_router_DEPENDENCIES) + @rm -f test_probe_router$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_probe_router_OBJECTS) $(test_probe_router_LDADD) $(LIBS) +test_req_correlate$(EXEEXT): $(test_req_correlate_OBJECTS) $(test_req_correlate_DEPENDENCIES) $(EXTRA_test_req_correlate_DEPENDENCIES) + @rm -f test_req_correlate$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_req_correlate_OBJECTS) $(test_req_correlate_LDADD) $(LIBS) +test_req_relaxed$(EXEEXT): $(test_req_relaxed_OBJECTS) $(test_req_relaxed_DEPENDENCIES) $(EXTRA_test_req_relaxed_DEPENDENCIES) + @rm -f test_req_relaxed$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_req_relaxed_OBJECTS) $(test_req_relaxed_LDADD) $(LIBS) test_reqrep_device$(EXEEXT): $(test_reqrep_device_OBJECTS) $(test_reqrep_device_DEPENDENCIES) $(EXTRA_test_reqrep_device_DEPENDENCIES) @rm -f test_reqrep_device$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_reqrep_device_OBJECTS) $(test_reqrep_device_LDADD) $(LIBS) @@ -502,12 +670,45 @@ test_router_mandatory$(EXEEXT): $(test_router_mandatory_OBJECTS) $(test_router_mandatory_DEPENDENCIES) $(EXTRA_test_router_mandatory_DEPENDENCIES) @rm -f test_router_mandatory$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_router_mandatory_OBJECTS) $(test_router_mandatory_LDADD) $(LIBS) +test_router_raw_empty$(EXEEXT): $(test_router_raw_empty_OBJECTS) $(test_router_raw_empty_DEPENDENCIES) $(EXTRA_test_router_raw_empty_DEPENDENCIES) + @rm -f test_router_raw_empty$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_router_raw_empty_OBJECTS) $(test_router_raw_empty_LDADD) $(LIBS) +test_security_curve$(EXEEXT): $(test_security_curve_OBJECTS) $(test_security_curve_DEPENDENCIES) $(EXTRA_test_security_curve_DEPENDENCIES) + @rm -f test_security_curve$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_security_curve_OBJECTS) $(test_security_curve_LDADD) $(LIBS) +test_security_null$(EXEEXT): $(test_security_null_OBJECTS) $(test_security_null_DEPENDENCIES) $(EXTRA_test_security_null_DEPENDENCIES) + @rm -f test_security_null$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_security_null_OBJECTS) $(test_security_null_LDADD) $(LIBS) +test_security_plain$(EXEEXT): $(test_security_plain_OBJECTS) $(test_security_plain_DEPENDENCIES) $(EXTRA_test_security_plain_DEPENDENCIES) + @rm -f test_security_plain$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_security_plain_OBJECTS) $(test_security_plain_LDADD) $(LIBS) test_shutdown_stress$(EXEEXT): $(test_shutdown_stress_OBJECTS) $(test_shutdown_stress_DEPENDENCIES) $(EXTRA_test_shutdown_stress_DEPENDENCIES) @rm -f test_shutdown_stress$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_shutdown_stress_OBJECTS) $(test_shutdown_stress_LDADD) $(LIBS) +test_spec_dealer$(EXEEXT): $(test_spec_dealer_OBJECTS) $(test_spec_dealer_DEPENDENCIES) $(EXTRA_test_spec_dealer_DEPENDENCIES) + @rm -f test_spec_dealer$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_spec_dealer_OBJECTS) $(test_spec_dealer_LDADD) $(LIBS) +test_spec_pushpull$(EXEEXT): $(test_spec_pushpull_OBJECTS) $(test_spec_pushpull_DEPENDENCIES) $(EXTRA_test_spec_pushpull_DEPENDENCIES) + @rm -f test_spec_pushpull$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_spec_pushpull_OBJECTS) $(test_spec_pushpull_LDADD) $(LIBS) +test_spec_rep$(EXEEXT): $(test_spec_rep_OBJECTS) $(test_spec_rep_DEPENDENCIES) $(EXTRA_test_spec_rep_DEPENDENCIES) + @rm -f test_spec_rep$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_spec_rep_OBJECTS) $(test_spec_rep_LDADD) $(LIBS) +test_spec_req$(EXEEXT): $(test_spec_req_OBJECTS) $(test_spec_req_DEPENDENCIES) $(EXTRA_test_spec_req_DEPENDENCIES) + @rm -f test_spec_req$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_spec_req_OBJECTS) $(test_spec_req_LDADD) $(LIBS) +test_spec_router$(EXEEXT): $(test_spec_router_OBJECTS) $(test_spec_router_DEPENDENCIES) $(EXTRA_test_spec_router_DEPENDENCIES) + @rm -f test_spec_router$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_spec_router_OBJECTS) $(test_spec_router_LDADD) $(LIBS) +test_stream$(EXEEXT): $(test_stream_OBJECTS) $(test_stream_DEPENDENCIES) $(EXTRA_test_stream_DEPENDENCIES) + @rm -f test_stream$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_stream_OBJECTS) $(test_stream_LDADD) $(LIBS) test_sub_forward$(EXEEXT): $(test_sub_forward_OBJECTS) $(test_sub_forward_DEPENDENCIES) $(EXTRA_test_sub_forward_DEPENDENCIES) @rm -f test_sub_forward$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_sub_forward_OBJECTS) $(test_sub_forward_LDADD) $(LIBS) +test_system$(EXEEXT): $(test_system_OBJECTS) $(test_system_DEPENDENCIES) $(EXTRA_test_system_DEPENDENCIES) + @rm -f test_system$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_system_OBJECTS) $(test_system_LDADD) $(LIBS) test_term_endpoint$(EXEEXT): $(test_term_endpoint_OBJECTS) $(test_term_endpoint_DEPENDENCIES) $(EXTRA_test_term_endpoint_DEPENDENCIES) @rm -f test_term_endpoint$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_term_endpoint_OBJECTS) $(test_term_endpoint_LDADD) $(LIBS) @@ -521,24 +722,47 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_connect_delay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_abstract_ipc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_conflate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_connect_resolve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ctx_destroy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_ctx_options.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_disconnect_inproc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_fork.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_hwm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_immediate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_inproc_connect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_invalid_rep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_iov.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_issue_566.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_last_endpoint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_many_sockets.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_monitor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_msg_flags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pair_inproc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pair_ipc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pair_tcp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_probe_router.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_req_correlate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_req_relaxed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_reqrep_device.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_reqrep_inproc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_reqrep_ipc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_reqrep_tcp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_router_mandatory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_router_raw_empty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_security_curve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_security_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_security_plain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_shutdown_stress.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spec_dealer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spec_pushpull.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spec_rep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spec_req.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_spec_router.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stream.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_sub_forward.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_system.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_term_endpoint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_timeo.Po@am__quote@ diff -Nru zeromq3-3.2.4+dfsg/tests/test_abstract_ipc.cpp zeromq3-4.0.4/tests/test_abstract_ipc.cpp --- zeromq3-3.2.4+dfsg/tests/test_abstract_ipc.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_abstract_ipc.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,57 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *sb = zmq_socket (ctx, ZMQ_PAIR); + assert (sb); + int rc = zmq_bind (sb, "ipc://@/tmp/tester"); + assert (rc == 0); + + char endpoint[200]; + size_t size = sizeof(endpoint); + rc = zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, endpoint, &size); + assert (rc == 0); + rc = strncmp(endpoint, "ipc://@/tmp/tester", size); + assert (rc == 0); + + void *sc = zmq_socket (ctx, ZMQ_PAIR); + assert (sc); + rc = zmq_connect (sc, "ipc://@/tmp/tester"); + assert (rc == 0); + + bounce (sb, sc); + + rc = zmq_close (sc); + assert (rc == 0); + + rc = zmq_close (sb); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_conflate.cpp zeromq3-4.0.4/tests/test_conflate.cpp --- zeromq3-3.2.4+dfsg/tests/test_conflate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_conflate.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,72 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (int argc, char *argv []) +{ + const char *bind_to = "tcp://127.0.0.1:5555"; + + int rc; + + void* ctx = zmq_init (1); + assert (ctx); + + void* s_in = zmq_socket (ctx, ZMQ_PULL); + assert (s_in); + + int conflate = 1; + rc = zmq_setsockopt (s_in, ZMQ_CONFLATE, &conflate, sizeof(conflate)); + assert (rc == 0); + + rc = zmq_bind (s_in, bind_to); + assert (rc == 0); + + void* s_out = zmq_socket (ctx, ZMQ_PUSH); + assert (s_out); + + rc = zmq_connect (s_out, bind_to); + assert (rc == 0); + + int message_count = 20; + for (int j = 0; j < message_count; ++j) { + rc = zmq_send(s_out, (void*)&j, sizeof(int), 0); + if (rc < 0) { + printf ("error in zmq_sendmsg: %s\n", zmq_strerror (errno)); + return -1; + } + } + msleep (SETTLE_TIME); + + int payload_recved = 0; + rc = zmq_recv (s_in, (void*)&payload_recved, sizeof(int), 0); + assert (rc > 0); + assert (payload_recved == message_count - 1); + + rc = zmq_close (s_in); + assert (rc == 0); + + rc = zmq_close (s_out); + assert (rc == 0); + + rc = zmq_term (ctx); + assert (rc == 0); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_connect_delay.cpp zeromq3-4.0.4/tests/test_connect_delay.cpp --- zeromq3-3.2.4+dfsg/tests/test_connect_delay.cpp 2013-07-30 07:24:07.000000000 +0000 +++ zeromq3-4.0.4/tests/test_connect_delay.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,238 +0,0 @@ -/* - Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file - - This file is part of 0MQ. - - 0MQ is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - 0MQ is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . -*/ - -#include "../include/zmq.h" -#include -#include -#include -#include -#include - -#undef NDEBUG -#include - -int main (void) -{ - int val; - int rc; - char buffer[16]; - // TEST 1. - // First we're going to attempt to send messages to two - // pipes, one connected, the other not. We should see - // the PUSH load balancing to both pipes, and hence half - // of the messages getting queued, as connect() creates a - // pipe immediately. - - void *context = zmq_ctx_new(); - assert (context); - void *to = zmq_socket(context, ZMQ_PULL); - assert (to); - - // Bind the one valid receiver - val = 0; - rc = zmq_setsockopt(to, ZMQ_LINGER, &val, sizeof(val)); - assert (rc == 0); - rc = zmq_bind (to, "tcp://*:6555"); - assert (rc == 0); - - // Create a socket pushing to two endpoints - only 1 message should arrive. - void *from = zmq_socket (context, ZMQ_PUSH); - assert(from); - - val = 0; - zmq_setsockopt (from, ZMQ_LINGER, &val, sizeof (val)); - // This pipe will not connect - rc = zmq_connect (from, "tcp://localhost:5556"); - assert (rc == 0); - // This pipe will - rc = zmq_connect (from, "tcp://localhost:6555"); - assert (rc == 0); - - // We send 10 messages, 5 should just get stuck in the queue - // for the not-yet-connected pipe - for (int i = 0; i < 10; ++i) { - rc = zmq_send (from, "Hello", 5, 0); - assert (rc == 5); - } - - // We now consume from the connected pipe - // - we should see just 5 - int timeout = 100; - rc = zmq_setsockopt (to, ZMQ_RCVTIMEO, &timeout, sizeof (int)); - assert (rc == 0); - - int seen = 0; - while (true) { - rc = zmq_recv (to, &buffer, sizeof (buffer), 0); - if (rc == -1) - break; // Break when we didn't get a message - seen++; - } - assert (seen == 5); - - rc = zmq_close (from); - assert (rc == 0); - - rc = zmq_close (to); - assert (rc == 0); - - rc = zmq_term (context); - assert (rc == 0); - - // TEST 2 - // This time we will do the same thing, connect two pipes, - // one of which will succeed in connecting to a bound - // receiver, the other of which will fail. However, we will - // also set the delay attach on connect flag, which should - // cause the pipe attachment to be delayed until the connection - // succeeds. - context = zmq_ctx_new(); - - // Bind the valid socket - to = zmq_socket (context, ZMQ_PULL); - assert (to); - rc = zmq_bind (to, "tcp://*:5560"); - assert (rc == 0); - - val = 0; - rc = zmq_setsockopt (to, ZMQ_LINGER, &val, sizeof(val)); - assert (rc == 0); - - // Create a socket pushing to two endpoints - all messages should arrive. - from = zmq_socket (context, ZMQ_PUSH); - assert (from); - - val = 0; - rc = zmq_setsockopt (from, ZMQ_LINGER, &val, sizeof(val)); - assert (rc == 0); - - // Set the key flag - val = 1; - rc = zmq_setsockopt (from, ZMQ_DELAY_ATTACH_ON_CONNECT, &val, sizeof(val)); - assert (rc == 0); - - // Connect to the invalid socket - rc = zmq_connect (from, "tcp://localhost:5561"); - assert (rc == 0); - // Connect to the valid socket - rc = zmq_connect (from, "tcp://localhost:5560"); - assert (rc == 0); - - // Send 10 messages, all should be routed to the connected pipe - for (int i = 0; i < 10; ++i) { - rc = zmq_send (from, "Hello", 5, 0); - assert (rc == 5); - } - rc = zmq_setsockopt (to, ZMQ_RCVTIMEO, &timeout, sizeof (int)); - assert (rc == 0); - - seen = 0; - while (true) { - rc = zmq_recv (to, &buffer, sizeof (buffer), 0); - if (rc == -1) - break; // Break when we didn't get a message - seen++; - } - assert (seen == 10); - - rc = zmq_close (from); - assert (rc == 0); - - rc = zmq_close (to); - assert (rc == 0); - - rc = zmq_term (context); - assert (rc == 0); - - // TEST 3 - // This time we want to validate that the same blocking behaviour - // occurs with an existing connection that is broken. We will send - // messages to a connected pipe, disconnect and verify the messages - // block. Then we reconnect and verify messages flow again. - context = zmq_ctx_new (); - - void *backend = zmq_socket (context, ZMQ_DEALER); - assert (backend); - void *frontend = zmq_socket (context, ZMQ_DEALER); - assert (frontend); - int zero = 0; - rc = zmq_setsockopt (backend, ZMQ_LINGER, &zero, sizeof (zero)); - assert (rc == 0); - rc = zmq_setsockopt (frontend, ZMQ_LINGER, &zero, sizeof (zero)); - assert (rc == 0); - - // Frontend connects to backend using DELAY_ATTACH_ON_CONNECT - int on = 1; - rc = zmq_setsockopt (frontend, ZMQ_DELAY_ATTACH_ON_CONNECT, &on, sizeof (on)); - assert (rc == 0); - rc = zmq_bind (backend, "tcp://*:5560"); - assert (rc == 0); - rc = zmq_connect (frontend, "tcp://localhost:5560"); - assert (rc == 0); - - // Ping backend to frontend so we know when the connection is up - rc = zmq_send (backend, "Hello", 5, 0); - assert (rc == 5); - rc = zmq_recv (frontend, buffer, 255, 0); - assert (rc == 5); - - // Send message from frontend to backend - rc = zmq_send (frontend, "Hello", 5, ZMQ_DONTWAIT); - assert (rc == 5); - - rc = zmq_close (backend); - assert (rc == 0); - - // Give time to process disconnect - // There's no way to do this except with a sleep - struct timespec t = { 0, 250 * 1000000 }; - nanosleep (&t, NULL); - - // Send a message, should fail - rc = zmq_send (frontend, "Hello", 5, ZMQ_DONTWAIT); - assert (rc == -1); - - // Recreate backend socket - backend = zmq_socket (context, ZMQ_DEALER); - assert (backend); - rc = zmq_setsockopt (backend, ZMQ_LINGER, &zero, sizeof (zero)); - assert (rc == 0); - rc = zmq_bind (backend, "tcp://*:5560"); - assert (rc == 0); - - // Ping backend to frontend so we know when the connection is up - rc = zmq_send (backend, "Hello", 5, 0); - assert (rc == 5); - rc = zmq_recv (frontend, buffer, 255, 0); - assert (rc == 5); - - // After the reconnect, should succeed - rc = zmq_send (frontend, "Hello", 5, ZMQ_DONTWAIT); - assert (rc == 5); - - rc = zmq_close (backend); - assert (rc == 0); - - rc = zmq_close (frontend); - assert (rc == 0); - - rc = zmq_term (context); - assert (rc == 0); -} - diff -Nru zeromq3-3.2.4+dfsg/tests/test_connect_resolve.cpp zeromq3-4.0.4/tests/test_connect_resolve.cpp --- zeromq3-3.2.4+dfsg/tests/test_connect_resolve.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_connect_resolve.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2012 Spotify AB - Copyright (c) 2012 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,36 +17,36 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include -#include - -#undef NDEBUG -#include +#include "testutil.hpp" int main (void) { - fprintf (stderr, "test_connect_resolve running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); - // Create pair of socket, each with high watermark of 2. Thus the total - // buffer space should be 4 messages. void *sock = zmq_socket (ctx, ZMQ_PUB); assert (sock); int rc = zmq_connect (sock, "tcp://localhost:1234"); assert (rc == 0); - rc = zmq_connect (sock, "tcp://0mq.is.teh.best:1234"); + rc = zmq_connect (sock, "tcp://localhost:invalid"); assert (rc == -1); assert (errno == EINVAL); + rc = zmq_connect (sock, "tcp://in val id:1234"); + assert (rc == -1); + assert (errno == EINVAL); + + rc = zmq_connect (sock, "invalid://localhost:1234"); + assert (rc == -1); + assert (errno == EPROTONOSUPPORT); + rc = zmq_close (sock); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0; diff -Nru zeromq3-3.2.4+dfsg/tests/test_ctx_destroy.cpp zeromq3-4.0.4/tests/test_ctx_destroy.cpp --- zeromq3-3.2.4+dfsg/tests/test_ctx_destroy.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_ctx_destroy.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,90 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +static void receiver (void *socket) +{ + char buffer[16]; + int rc = zmq_recv (socket, &buffer, sizeof (buffer), 0); + assert(rc == -1); +} + +void test_ctx_destroy() +{ + int rc; + + // Set up our context and sockets + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *socket = zmq_socket (ctx, ZMQ_PULL); + assert (socket); + + // Close the socket + rc = zmq_close (socket); + assert (rc == 0); + + // Destroy the context + rc = zmq_ctx_destroy (ctx); + assert (rc == 0); +} + +void test_ctx_shutdown() +{ + int rc; + + // Set up our context and sockets + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *socket = zmq_socket (ctx, ZMQ_PULL); + assert (socket); + + // Spawn a thread to receive on socket + void *receiver_thread = zmq_threadstart (&receiver, socket); + + // Wait for thread to start up and block + msleep (SETTLE_TIME); + + // Shutdown context, if we used destroy here we would deadlock. + rc = zmq_ctx_shutdown (ctx); + assert (rc == 0); + + // Wait for thread to finish + zmq_threadclose (receiver_thread); + + // Close the socket. + rc = zmq_close (socket); + assert (rc == 0); + + // Destory the context, will now not hang as we have closed the socket. + rc = zmq_ctx_destroy (ctx); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + + test_ctx_destroy(); + test_ctx_shutdown(); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_ctx_options.cpp zeromq3-4.0.4/tests/test_ctx_options.cpp --- zeromq3-3.2.4+dfsg/tests/test_ctx_options.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_ctx_options.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,52 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) +{ + setup_test_environment(); + int rc; + + // Set up our context and sockets + void *ctx = zmq_ctx_new (); + assert (ctx); + + assert (zmq_ctx_get (ctx, ZMQ_MAX_SOCKETS) == ZMQ_MAX_SOCKETS_DFLT); + assert (zmq_ctx_get (ctx, ZMQ_IO_THREADS) == ZMQ_IO_THREADS_DFLT); + assert (zmq_ctx_get (ctx, ZMQ_IPV6) == 0); + + rc = zmq_ctx_set (ctx, ZMQ_IPV6, true); + assert (zmq_ctx_get (ctx, ZMQ_IPV6) == 1); + + void *router = zmq_socket (ctx, ZMQ_ROUTER); + int ipv6; + size_t optsize = sizeof (int); + rc = zmq_getsockopt (router, ZMQ_IPV6, &ipv6, &optsize); + assert (rc == 0); + assert (ipv6); + + rc = zmq_close (router); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_disconnect_inproc.cpp zeromq3-4.0.4/tests/test_disconnect_inproc.cpp --- zeromq3-3.2.4+dfsg/tests/test_disconnect_inproc.cpp 2013-05-02 18:43:38.000000000 +0000 +++ zeromq3-4.0.4/tests/test_disconnect_inproc.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,23 @@ -#include -#include -#include -#include +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" /// Initialize a zeromq message with a given null-terminated string #define ZMQ_PREPARE_STRING(msg, data, size) \ @@ -13,6 +29,7 @@ bool isSubscribed = false; int main(int argc, char** argv) { + setup_test_environment(); void* context = zmq_ctx_new(); void* pubSocket; void* subSocket; @@ -22,20 +39,20 @@ zmq_setsockopt(subSocket, ZMQ_SUBSCRIBE, "foo", 3) && printf("zmq_setsockopt: %s\n",zmq_strerror(errno)); zmq_bind(pubSocket, "inproc://someInProcDescriptor") && printf("zmq_bind: %s\n", zmq_strerror(errno)); - //zmq_bind(pubSocket, "tcp://*:30010") && printf("zmq_bind: %s\n", zmq_strerror(errno)); + //zmq_bind(pubSocket, "tcp://127.0.0.1:30010") && printf("zmq_bind: %s\n", zmq_strerror(errno)); - int32_t more; + int more; size_t more_size = sizeof(more); int iteration = 0; - while(1) { + while (1) { zmq_pollitem_t items [] = { - { subSocket, 0, ZMQ_POLLIN, 0 }, // read publications - { pubSocket, 0, ZMQ_POLLIN, 0 }, // read subscriptions + { subSocket, 0, ZMQ_POLLIN, 0 }, // read publications + { pubSocket, 0, ZMQ_POLLIN, 0 }, // read subscriptions }; - zmq_poll(items, 2, 500); + int rc = zmq_poll (items, 2, 100); - if (items[1].revents & ZMQ_POLLIN) { + if (items [1].revents & ZMQ_POLLIN) { while (1) { zmq_msg_t msg; zmq_msg_init (&msg); @@ -73,41 +90,36 @@ } } } - if (iteration == 1) { zmq_connect(subSocket, "inproc://someInProcDescriptor") && printf("zmq_connect: %s\n", zmq_strerror(errno)); //zmq_connect(subSocket, "tcp://127.0.0.1:30010") && printf("zmq_connect: %s\n", zmq_strerror(errno)); } - if (iteration == 4) { zmq_disconnect(subSocket, "inproc://someInProcDescriptor") && printf("zmq_disconnect(%d): %s\n", errno, zmq_strerror(errno)); //zmq_disconnect(subSocket, "tcp://127.0.0.1:30010") && printf("zmq_disconnect: %s\n", zmq_strerror(errno)); } - - if (iteration == 10) { + if (iteration > 4 && rc == 0) break; - } - + zmq_msg_t channelEnvlp; ZMQ_PREPARE_STRING(channelEnvlp, "foo", 3); - zmq_sendmsg(pubSocket, &channelEnvlp, ZMQ_SNDMORE) >= 0 || printf("zmq_sendmsg: %s\n",zmq_strerror(errno)); + zmq_msg_send (&channelEnvlp, pubSocket, ZMQ_SNDMORE) >= 0 || printf("zmq_msg_send: %s\n",zmq_strerror(errno)); zmq_msg_close(&channelEnvlp) && printf("zmq_msg_close: %s\n",zmq_strerror(errno)); zmq_msg_t message; ZMQ_PREPARE_STRING(message, "this is foo!", 12); - zmq_sendmsg(pubSocket, &message, 0) >= 0 || printf("zmq_sendmsg: %s\n",zmq_strerror(errno)); + zmq_msg_send (&message, pubSocket, 0) >= 0 || printf("zmq_msg_send: %s\n",zmq_strerror(errno)); zmq_msg_close(&message) && printf("zmq_msg_close: %s\n",zmq_strerror(errno)); iteration++; } - assert(publicationsReceived == 3); assert(!isSubscribed); zmq_close(pubSocket) && printf("zmq_close: %s", zmq_strerror(errno)); zmq_close(subSocket) && printf("zmq_close: %s", zmq_strerror(errno)); - zmq_ctx_destroy(context); + zmq_ctx_term(context); return 0; } diff -Nru zeromq3-3.2.4+dfsg/tests/test_fork.cpp zeromq3-4.0.4/tests/test_fork.cpp --- zeromq3-3.2.4+dfsg/tests/test_fork.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_fork.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,81 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +const char *address = "tcp://127.0.0.1:6571"; + +#define NUM_MESSAGES 5 + +int main (void) +{ + setup_test_environment (); + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Create and bind pull socket to receive messages + void *pull = zmq_socket (ctx, ZMQ_PULL); + assert (pull); + int rc = zmq_bind (pull, address); + assert (rc == 0); + + int pid = fork (); + if (pid == 0) { + // Child process + // Immediately close parent sockets and context + zmq_close (pull); + zmq_term (ctx); + + // Create new context, socket, connect and send some messages + void *child_ctx = zmq_ctx_new (); + assert (child_ctx); + void *push = zmq_socket (child_ctx, ZMQ_PUSH); + assert (push); + rc = zmq_connect (push, address); + assert (rc == 0); + int count; + for (count = 0; count < NUM_MESSAGES; count++) + zmq_send (push, "Hello", 5, 0); + + zmq_close (push); + zmq_ctx_destroy (child_ctx); + exit (0); + } + else { + // Parent process + int count; + for (count = 0; count < NUM_MESSAGES; count++) { + char buffer [5]; + int num_bytes = zmq_recv (pull, buffer, 5, 0); + assert (num_bytes == 5); + } + int child_status; + while (true) { + rc = waitpid (pid, &child_status, 0); + if (rc == -1 && errno == EINTR) + continue; + assert (rc > 0); + // Verify the status code of the child was zero + assert (WEXITSTATUS (child_status) == 0); + break; + } + exit (0); + } + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_hwm.cpp zeromq3-4.0.4/tests/test_hwm.cpp --- zeromq3-3.2.4+dfsg/tests/test_hwm.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_hwm.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,66 +17,283 @@ along with this program. If not, see . */ - -#include #include "testutil.hpp" -int main (void) -{ - fprintf (stderr, "test_hwm running...\n"); +const int MAX_SENDS = 10000; - void *ctx = zmq_init (1); +enum TestType { BIND_FIRST, CONNECT_FIRST }; + +int test_defaults () +{ + void *ctx = zmq_ctx_new (); assert (ctx); + int rc; - // Create pair of socket, each with high watermark of 2. Thus the total - // buffer space should be 4 messages. - void *sb = zmq_socket (ctx, ZMQ_PULL); - assert (sb); - int hwm = 2; - int rc = zmq_setsockopt (sb, ZMQ_RCVHWM, &hwm, sizeof (hwm)); + // Set up bind socket + void *bind_socket = zmq_socket (ctx, ZMQ_PULL); + assert (bind_socket); + rc = zmq_bind (bind_socket, "inproc://a"); assert (rc == 0); - rc = zmq_bind (sb, "inproc://a"); + + // Set up connect socket + void *connect_socket = zmq_socket (ctx, ZMQ_PUSH); + assert (connect_socket); + rc = zmq_connect (connect_socket, "inproc://a"); assert (rc == 0); - void *sc = zmq_socket (ctx, ZMQ_PUSH); - assert (sc); - rc = zmq_setsockopt (sc, ZMQ_SNDHWM, &hwm, sizeof (hwm)); + // Send until we block + int send_count = 0; + while (send_count < MAX_SENDS && zmq_send (connect_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++send_count; + + // Now receive all sent messages + int recv_count = 0; + while (zmq_recv (bind_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++recv_count; + + assert (send_count == recv_count); + + // Clean up + rc = zmq_close (connect_socket); assert (rc == 0); - rc = zmq_connect (sc, "inproc://a"); + + rc = zmq_close (bind_socket); assert (rc == 0); - // Try to send 10 messages. Only 4 should succeed. - for (int i = 0; i < 10; i++) + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return send_count; +} + +int count_msg (int send_hwm, int recv_hwm, TestType testType) +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + int rc; + + void *bind_socket; + void *connect_socket; + if (testType == BIND_FIRST) { - int rc = zmq_send (sc, NULL, 0, ZMQ_DONTWAIT); - if (i < 4) - assert (rc == 0); - else - assert (rc < 0 && errno == EAGAIN); + // Set up bind socket + bind_socket = zmq_socket (ctx, ZMQ_PULL); + assert (bind_socket); + rc = zmq_setsockopt (bind_socket, ZMQ_RCVHWM, &recv_hwm, sizeof (recv_hwm)); + assert (rc == 0); + rc = zmq_bind (bind_socket, "inproc://a"); + assert (rc == 0); + + // Set up connect socket + connect_socket = zmq_socket (ctx, ZMQ_PUSH); + assert (connect_socket); + rc = zmq_setsockopt (connect_socket, ZMQ_SNDHWM, &send_hwm, sizeof (send_hwm)); + assert (rc == 0); + rc = zmq_connect (connect_socket, "inproc://a"); + assert (rc == 0); } + else + { + // Set up connect socket + connect_socket = zmq_socket (ctx, ZMQ_PUSH); + assert (connect_socket); + rc = zmq_setsockopt (connect_socket, ZMQ_SNDHWM, &send_hwm, sizeof (send_hwm)); + assert (rc == 0); + rc = zmq_connect (connect_socket, "inproc://a"); + assert (rc == 0); - // There should be now 4 messages pending, consume them. - for (int i = 0; i != 4; i++) { - rc = zmq_recv (sb, NULL, 0, 0); + // Set up bind socket + bind_socket = zmq_socket (ctx, ZMQ_PULL); + assert (bind_socket); + rc = zmq_setsockopt (bind_socket, ZMQ_RCVHWM, &recv_hwm, sizeof (recv_hwm)); + assert (rc == 0); + rc = zmq_bind (bind_socket, "inproc://a"); assert (rc == 0); } + // Send until we block + int send_count = 0; + while (send_count < MAX_SENDS && zmq_send (connect_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++send_count; + + // Now receive all sent messages + int recv_count = 0; + while (zmq_recv (bind_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++recv_count; + + assert (send_count == recv_count); + // Now it should be possible to send one more. - rc = zmq_send (sc, NULL, 0, 0); + rc = zmq_send (connect_socket, NULL, 0, 0); assert (rc == 0); // Consume the remaining message. - rc = zmq_recv (sb, NULL, 0, 0); + rc = zmq_recv (bind_socket, NULL, 0, 0); assert (rc == 0); - rc = zmq_close (sc); + // Clean up + rc = zmq_close (connect_socket); assert (rc == 0); - rc = zmq_close (sb); + rc = zmq_close (bind_socket); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); - return 0; + return send_count; +} + +int test_inproc_bind_first (int send_hwm, int recv_hwm) +{ + return count_msg(send_hwm, recv_hwm, BIND_FIRST); +} + +int test_inproc_connect_first (int send_hwm, int recv_hwm) +{ + return count_msg(send_hwm, recv_hwm, CONNECT_FIRST); +} + +int test_inproc_connect_and_close_first (int send_hwm, int recv_hwm) +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + int rc; + + // Set up connect socket + void *connect_socket = zmq_socket (ctx, ZMQ_PUSH); + assert (connect_socket); + rc = zmq_setsockopt (connect_socket, ZMQ_SNDHWM, &send_hwm, sizeof (send_hwm)); + assert (rc == 0); + rc = zmq_connect (connect_socket, "inproc://a"); + assert (rc == 0); + + // Send until we block + int send_count = 0; + while (send_count < MAX_SENDS && zmq_send (connect_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++send_count; + + // Close connect + rc = zmq_close (connect_socket); + assert (rc == 0); + + // Set up bind socket + void *bind_socket = zmq_socket (ctx, ZMQ_PULL); + assert (bind_socket); + rc = zmq_setsockopt (bind_socket, ZMQ_RCVHWM, &recv_hwm, sizeof (recv_hwm)); + assert (rc == 0); + rc = zmq_bind (bind_socket, "inproc://a"); + assert (rc == 0); + + // Now receive all sent messages + int recv_count = 0; + while (zmq_recv (bind_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++recv_count; + + assert (send_count == recv_count); + + // Clean up + rc = zmq_close (bind_socket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return send_count; +} + +int test_inproc_bind_and_close_first (int send_hwm, int recv_hwm) +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + int rc; + + // Set up bind socket + void *bind_socket = zmq_socket (ctx, ZMQ_PUSH); + assert (bind_socket); + rc = zmq_setsockopt (bind_socket, ZMQ_SNDHWM, &send_hwm, sizeof (send_hwm)); + assert (rc == 0); + rc = zmq_bind (bind_socket, "inproc://a"); + assert (rc == 0); + + // Send until we block + int send_count = 0; + while (send_count < MAX_SENDS && zmq_send (bind_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++send_count; + + // Close bind + rc = zmq_close (bind_socket); + assert (rc == 0); + + /* Can't currently do connect without then wiring up a bind as things hang, this needs top be fixed. + // Set up connect socket + void *connect_socket = zmq_socket (ctx, ZMQ_PULL); + assert (connect_socket); + rc = zmq_setsockopt (connect_socket, ZMQ_RCVHWM, &recv_hwm, sizeof (recv_hwm)); + assert (rc == 0); + rc = zmq_connect (connect_socket, "inproc://a"); + assert (rc == 0); + + // Now receive all sent messages + int recv_count = 0; + while (zmq_recv (connect_socket, NULL, 0, ZMQ_DONTWAIT) == 0) + ++recv_count; + + assert (send_count == recv_count); + */ + + // Clean up + //rc = zmq_close (connect_socket); + //assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return send_count; +} + +int main (void) +{ + setup_test_environment(); + + int count; + + // Default values are 1000 on send and 1000 one receive, so 2000 total + count = test_defaults (); + assert (count == 2000); + + // Infinite send and receive buffer + count = test_inproc_bind_first (0, 0); + assert (count == MAX_SENDS); + count = test_inproc_connect_first (0, 0); + assert (count == MAX_SENDS); + + // Infinite send buffer + count = test_inproc_bind_first (1, 0); + assert (count == MAX_SENDS); + count = test_inproc_connect_first (1, 0); + assert (count == MAX_SENDS); + + // Infinite receive buffer + count = test_inproc_bind_first (0, 1); + assert (count == MAX_SENDS); + count = test_inproc_connect_first (0, 1); + assert (count == MAX_SENDS); + + // Send and recv buffers hwm 1, so total that can be queued is 2 + count = test_inproc_bind_first (1, 1); + assert (count == 2); + count = test_inproc_connect_first (1, 1); + assert (count == 2); + + // Send hwm of 1, send before bind so total that can be queued is 1 + count = test_inproc_connect_and_close_first (1, 0); + assert (count == 1); + + // Send hwm of 1, send from bind side before connect so total that can be queued should be 1, + // however currently all messages get thrown away before the connect. BUG? + count = test_inproc_bind_and_close_first (1, 0); + //assert (count == 1); + + return 0; } diff -Nru zeromq3-3.2.4+dfsg/tests/test_immediate.cpp zeromq3-4.0.4/tests/test_immediate.cpp --- zeromq3-3.2.4+dfsg/tests/test_immediate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_immediate.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,228 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) +{ + setup_test_environment(); + int val; + int rc; + char buffer[16]; + // TEST 1. + // First we're going to attempt to send messages to two + // pipes, one connected, the other not. We should see + // the PUSH load balancing to both pipes, and hence half + // of the messages getting queued, as connect() creates a + // pipe immediately. + + void *context = zmq_ctx_new(); + assert (context); + void *to = zmq_socket(context, ZMQ_PULL); + assert (to); + + // Bind the one valid receiver + val = 0; + rc = zmq_setsockopt(to, ZMQ_LINGER, &val, sizeof(val)); + assert (rc == 0); + rc = zmq_bind (to, "tcp://127.0.0.1:6555"); + assert (rc == 0); + + // Create a socket pushing to two endpoints - only 1 message should arrive. + void *from = zmq_socket (context, ZMQ_PUSH); + assert(from); + + val = 0; + zmq_setsockopt (from, ZMQ_LINGER, &val, sizeof (val)); + // This pipe will not connect + rc = zmq_connect (from, "tcp://localhost:5556"); + assert (rc == 0); + // This pipe will + rc = zmq_connect (from, "tcp://localhost:6555"); + assert (rc == 0); + + // We send 10 messages, 5 should just get stuck in the queue + // for the not-yet-connected pipe + for (int i = 0; i < 10; ++i) { + rc = zmq_send (from, "Hello", 5, 0); + assert (rc == 5); + } + + // We now consume from the connected pipe + // - we should see just 5 + int timeout = 100; + rc = zmq_setsockopt (to, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + int seen = 0; + while (true) { + rc = zmq_recv (to, &buffer, sizeof (buffer), 0); + if (rc == -1) + break; // Break when we didn't get a message + seen++; + } + assert (seen == 5); + + rc = zmq_close (from); + assert (rc == 0); + + rc = zmq_close (to); + assert (rc == 0); + + rc = zmq_ctx_term (context); + assert (rc == 0); + + // TEST 2 + // This time we will do the same thing, connect two pipes, + // one of which will succeed in connecting to a bound + // receiver, the other of which will fail. However, we will + // also set the delay attach on connect flag, which should + // cause the pipe attachment to be delayed until the connection + // succeeds. + context = zmq_ctx_new(); + + // Bind the valid socket + to = zmq_socket (context, ZMQ_PULL); + assert (to); + rc = zmq_bind (to, "tcp://127.0.0.1:5560"); + assert (rc == 0); + + val = 0; + rc = zmq_setsockopt (to, ZMQ_LINGER, &val, sizeof(val)); + assert (rc == 0); + + // Create a socket pushing to two endpoints - all messages should arrive. + from = zmq_socket (context, ZMQ_PUSH); + assert (from); + + val = 0; + rc = zmq_setsockopt (from, ZMQ_LINGER, &val, sizeof(val)); + assert (rc == 0); + + // Set the key flag + val = 1; + rc = zmq_setsockopt (from, ZMQ_IMMEDIATE, &val, sizeof(val)); + assert (rc == 0); + + // Connect to the invalid socket + rc = zmq_connect (from, "tcp://localhost:5561"); + assert (rc == 0); + // Connect to the valid socket + rc = zmq_connect (from, "tcp://localhost:5560"); + assert (rc == 0); + + // Send 10 messages, all should be routed to the connected pipe + for (int i = 0; i < 10; ++i) { + rc = zmq_send (from, "Hello", 5, 0); + assert (rc == 5); + } + rc = zmq_setsockopt (to, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + seen = 0; + while (true) { + rc = zmq_recv (to, &buffer, sizeof (buffer), 0); + if (rc == -1) + break; // Break when we didn't get a message + seen++; + } + assert (seen == 10); + + rc = zmq_close (from); + assert (rc == 0); + + rc = zmq_close (to); + assert (rc == 0); + + rc = zmq_ctx_term (context); + assert (rc == 0); + + // TEST 3 + // This time we want to validate that the same blocking behaviour + // occurs with an existing connection that is broken. We will send + // messages to a connected pipe, disconnect and verify the messages + // block. Then we reconnect and verify messages flow again. + context = zmq_ctx_new (); + + void *backend = zmq_socket (context, ZMQ_DEALER); + assert (backend); + void *frontend = zmq_socket (context, ZMQ_DEALER); + assert (frontend); + int zero = 0; + rc = zmq_setsockopt (backend, ZMQ_LINGER, &zero, sizeof (zero)); + assert (rc == 0); + rc = zmq_setsockopt (frontend, ZMQ_LINGER, &zero, sizeof (zero)); + assert (rc == 0); + + // Frontend connects to backend using IMMEDIATE + int on = 1; + rc = zmq_setsockopt (frontend, ZMQ_IMMEDIATE, &on, sizeof (on)); + assert (rc == 0); + rc = zmq_bind (backend, "tcp://127.0.0.1:5560"); + assert (rc == 0); + rc = zmq_connect (frontend, "tcp://localhost:5560"); + assert (rc == 0); + + // Ping backend to frontend so we know when the connection is up + rc = zmq_send (backend, "Hello", 5, 0); + assert (rc == 5); + rc = zmq_recv (frontend, buffer, 255, 0); + assert (rc == 5); + + // Send message from frontend to backend + rc = zmq_send (frontend, "Hello", 5, ZMQ_DONTWAIT); + assert (rc == 5); + + rc = zmq_close (backend); + assert (rc == 0); + + // Give time to process disconnect + msleep (SETTLE_TIME); + + // Send a message, should fail + rc = zmq_send (frontend, "Hello", 5, ZMQ_DONTWAIT); + assert (rc == -1); + + // Recreate backend socket + backend = zmq_socket (context, ZMQ_DEALER); + assert (backend); + rc = zmq_setsockopt (backend, ZMQ_LINGER, &zero, sizeof (zero)); + assert (rc == 0); + rc = zmq_bind (backend, "tcp://127.0.0.1:5560"); + assert (rc == 0); + + // Ping backend to frontend so we know when the connection is up + rc = zmq_send (backend, "Hello", 5, 0); + assert (rc == 5); + rc = zmq_recv (frontend, buffer, 255, 0); + assert (rc == 5); + + // After the reconnect, should succeed + rc = zmq_send (frontend, "Hello", 5, ZMQ_DONTWAIT); + assert (rc == 5); + + rc = zmq_close (backend); + assert (rc == 0); + + rc = zmq_close (frontend); + assert (rc == 0); + + rc = zmq_ctx_term (context); + assert (rc == 0); +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_inproc_connect.cpp zeromq3-4.0.4/tests/test_inproc_connect.cpp --- zeromq3-3.2.4+dfsg/tests/test_inproc_connect.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_inproc_connect.cpp 2014-03-10 21:20:14.000000000 +0000 @@ -0,0 +1,357 @@ +/* + Copyright (c) 2007-2014 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +static void pusher (void *ctx) +{ + // Connect first + void *connectSocket = zmq_socket (ctx, ZMQ_PAIR); + assert (connectSocket); + int rc = zmq_connect (connectSocket, "inproc://a"); + assert (rc == 0); + + // Queue up some data + rc = zmq_send_const (connectSocket, "foobar", 6, 0); + assert (rc == 6); + + // Cleanup + rc = zmq_close (connectSocket); + assert (rc == 0); +} + +void test_bind_before_connect() +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Bind first + void *bindSocket = zmq_socket (ctx, ZMQ_PAIR); + assert (bindSocket); + int rc = zmq_bind (bindSocket, "inproc://a"); + assert (rc == 0); + + // Now connect + void *connectSocket = zmq_socket (ctx, ZMQ_PAIR); + assert (connectSocket); + rc = zmq_connect (connectSocket, "inproc://a"); + assert (rc == 0); + + // Queue up some data + rc = zmq_send_const (connectSocket, "foobar", 6, 0); + assert (rc == 6); + + // Read pending message + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, bindSocket, 0); + assert (rc == 6); + void *data = zmq_msg_data (&msg); + assert (memcmp ("foobar", data, 6) == 0); + + // Cleanup + rc = zmq_close (connectSocket); + assert (rc == 0); + + rc = zmq_close (bindSocket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +void test_connect_before_bind() +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Connect first + void *connectSocket = zmq_socket (ctx, ZMQ_PAIR); + assert (connectSocket); + int rc = zmq_connect (connectSocket, "inproc://a"); + assert (rc == 0); + + // Queue up some data + rc = zmq_send_const (connectSocket, "foobar", 6, 0); + assert (rc == 6); + + // Now bind + void *bindSocket = zmq_socket (ctx, ZMQ_PAIR); + assert (bindSocket); + rc = zmq_bind (bindSocket, "inproc://a"); + assert (rc == 0); + + // Read pending message + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, bindSocket, 0); + assert (rc == 6); + void *data = zmq_msg_data (&msg); + assert (memcmp ("foobar", data, 6) == 0); + + // Cleanup + rc = zmq_close (connectSocket); + assert (rc == 0); + + rc = zmq_close (bindSocket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +void test_connect_before_bind_pub_sub() +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Connect first + void *connectSocket = zmq_socket (ctx, ZMQ_PUB); + assert (connectSocket); + int rc = zmq_connect (connectSocket, "inproc://a"); + assert (rc == 0); + + // Queue up some data, this will be dropped + rc = zmq_send_const (connectSocket, "before", 6, 0); + assert (rc == 6); + + // Now bind + void *bindSocket = zmq_socket (ctx, ZMQ_SUB); + assert (bindSocket); + rc = zmq_setsockopt (bindSocket, ZMQ_SUBSCRIBE, "", 0); + assert (rc == 0); + rc = zmq_bind (bindSocket, "inproc://a"); + assert (rc == 0); + + // Wait for pub-sub connection to happen + msleep (SETTLE_TIME); + + // Queue up some data, this not will be dropped + rc = zmq_send_const (connectSocket, "after", 6, 0); + assert (rc == 6); + + // Read pending message + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, bindSocket, 0); + assert (rc == 6); + void *data = zmq_msg_data (&msg); + assert (memcmp ("after", data, 5) == 0); + + // Cleanup + rc = zmq_close (connectSocket); + assert (rc == 0); + + rc = zmq_close (bindSocket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +void test_multiple_connects() +{ + const unsigned int no_of_connects = 10; + void *ctx = zmq_ctx_new (); + assert (ctx); + + int rc; + void *connectSocket[no_of_connects]; + + // Connect first + for (unsigned int i = 0; i < no_of_connects; ++i) + { + connectSocket [i] = zmq_socket (ctx, ZMQ_PUSH); + assert (connectSocket [i]); + rc = zmq_connect (connectSocket [i], "inproc://a"); + assert (rc == 0); + + // Queue up some data + rc = zmq_send_const (connectSocket [i], "foobar", 6, 0); + assert (rc == 6); + } + + // Now bind + void *bindSocket = zmq_socket (ctx, ZMQ_PULL); + assert (bindSocket); + rc = zmq_bind (bindSocket, "inproc://a"); + assert (rc == 0); + + for (unsigned int i = 0; i < no_of_connects; ++i) + { + // Read pending message + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, bindSocket, 0); + assert (rc == 6); + void *data = zmq_msg_data (&msg); + assert (memcmp ("foobar", data, 6) == 0); + } + + // Cleanup + for (unsigned int i = 0; i < no_of_connects; ++i) + { + rc = zmq_close (connectSocket [i]); + assert (rc == 0); + } + + rc = zmq_close (bindSocket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +void test_multiple_threads() +{ + const unsigned int no_of_threads = 30; + void *ctx = zmq_ctx_new (); + assert (ctx); + + int rc; + void *threads [no_of_threads]; + + // Connect first + for (unsigned int i = 0; i < no_of_threads; ++i) + { + threads [i] = zmq_threadstart (&pusher, ctx); + } + + // Now bind + void *bindSocket = zmq_socket (ctx, ZMQ_PULL); + assert (bindSocket); + rc = zmq_bind (bindSocket, "inproc://a"); + assert (rc == 0); + + for (unsigned int i = 0; i < no_of_threads; ++i) + { + // Read pending message + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, bindSocket, 0); + assert (rc == 6); + void *data = zmq_msg_data (&msg); + assert (memcmp ("foobar", data, 6) == 0); + } + + // Cleanup + for (unsigned int i = 0; i < no_of_threads; ++i) + { + zmq_threadclose (threads [i]); + } + + rc = zmq_close (bindSocket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +void test_identity() +{ + // Create the infrastructure + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *sc = zmq_socket (ctx, ZMQ_DEALER); + assert (sc); + + int rc = zmq_connect (sc, "inproc://a"); + assert (rc == 0); + + void *sb = zmq_socket (ctx, ZMQ_ROUTER); + assert (sb); + + rc = zmq_bind (sb, "inproc://a"); + assert (rc == 0); + + // Send 2-part message. + rc = zmq_send (sc, "A", 1, ZMQ_SNDMORE); + assert (rc == 1); + rc = zmq_send (sc, "B", 1, 0); + assert (rc == 1); + + // Identity comes first. + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, sb, 0); + assert (rc >= 0); + int more = zmq_msg_more (&msg); + assert (more == 1); + + // Then the first part of the message body. + rc = zmq_msg_recv (&msg, sb, 0); + assert (rc == 1); + more = zmq_msg_more (&msg); + assert (more == 1); + + // And finally, the second part of the message body. + rc = zmq_msg_recv (&msg, sb, 0); + assert (rc == 1); + more = zmq_msg_more (&msg); + assert (more == 0); + + // Deallocate the infrastructure. + rc = zmq_close (sc); + assert (rc == 0); + + rc = zmq_close (sb); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +void test_connect_only () +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *connectSocket = zmq_socket (ctx, ZMQ_PUSH); + assert (connectSocket); + int rc = zmq_connect (connectSocket, "inproc://a"); + assert (rc == 0); + + rc = zmq_close (connectSocket); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + + test_bind_before_connect (); + test_connect_before_bind (); + test_connect_before_bind_pub_sub (); + test_multiple_connects (); + test_multiple_threads (); + test_identity (); + test_connect_only (); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_invalid_rep.cpp zeromq3-4.0.4/tests/test_invalid_rep.cpp --- zeromq3-3.2.4+dfsg/tests/test_invalid_rep.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_invalid_rep.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,23 +17,21 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include - -#undef NDEBUG -#include +#include "testutil.hpp" int main (void) { - fprintf (stderr, "test_invalid_rep running...\n"); - + setup_test_environment(); // Create REQ/ROUTER wiring. - void *ctx = zmq_init (1); + void *ctx = zmq_ctx_new (); assert (ctx); + void *router_socket = zmq_socket (ctx, ZMQ_ROUTER); assert (router_socket); + void *req_socket = zmq_socket (ctx, ZMQ_REQ); assert (req_socket); + int linger = 0; int rc = zmq_setsockopt (router_socket, ZMQ_LINGER, &linger, sizeof (int)); assert (rc == 0); @@ -77,14 +73,14 @@ // Check whether we've got the valid reply. rc = zmq_recv (req_socket, body, sizeof (body), 0); assert (rc == 1); - assert (body [0] == 'b'); + assert (body [0] == 'b'); // Tear down the wiring. rc = zmq_close (router_socket); assert (rc == 0); rc = zmq_close (req_socket); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0; diff -Nru zeromq3-3.2.4+dfsg/tests/test_iov.cpp zeromq3-4.0.4/tests/test_iov.cpp --- zeromq3-3.2.4+dfsg/tests/test_iov.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_iov.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,106 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +// XSI vector I/O +#if defined ZMQ_HAVE_UIO +#include +#else +struct iovec { + void *iov_base; + size_t iov_len; +}; +#endif + +void do_check(void* sb, void* sc, unsigned int msgsz) +{ + setup_test_environment(); + int rc; + int sum =0; + for (int i = 0; i < 10; i++) + { + zmq_msg_t msg; + zmq_msg_init_size(&msg, msgsz); + void * data = zmq_msg_data(&msg); + memcpy(data,&i, sizeof(int)); + rc = zmq_msg_send(&msg,sc,i==9 ? 0 :ZMQ_SNDMORE); + assert (rc == (int)msgsz); + zmq_msg_close(&msg); + sum += i; + } + + struct iovec ibuffer[32] ; + memset(&ibuffer[0], 0, sizeof(ibuffer)); + + size_t count = 10; + rc = zmq_recviov(sb,&ibuffer[0],&count,0); + assert (rc == 10); + + int rsum=0; + for(;count;--count) + { + int v; + memcpy(&v,ibuffer[count-1].iov_base,sizeof(int)); + rsum += v; + assert(ibuffer[count-1].iov_len == msgsz); + // free up the memory + free(ibuffer[count-1].iov_base); + } + + assert ( sum == rsum ); + +} + +int main (void) +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + int rc; + + void *sb = zmq_socket (ctx, ZMQ_PULL); + assert (sb); + + rc = zmq_bind (sb, "inproc://a"); + assert (rc == 0); + + msleep (SETTLE_TIME); + void *sc = zmq_socket (ctx, ZMQ_PUSH); + + rc = zmq_connect (sc, "inproc://a"); + assert (rc == 0); + + + // message bigger than vsm max + do_check(sb,sc,100); + + // message smaller than vsm max + do_check(sb,sc,10); + + rc = zmq_close (sc); + assert (rc == 0); + + rc = zmq_close (sb); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_issue_566.cpp zeromq3-4.0.4/tests/test_issue_566.cpp --- zeromq3-3.2.4+dfsg/tests/test_issue_566.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_issue_566.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,85 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +// Issue 566 describes a problem in libzmq v4.0.0 where a dealer to router +// connection would fail randomly. The test works when the two sockets are +// on the same context, and failed when they were on separate contexts. +// Fixed by https://github.com/zeromq/libzmq/commit/be25cf. + +int main (void) +{ + setup_test_environment(); + + void *ctx1 = zmq_ctx_new (); + assert (ctx1); + + void *ctx2 = zmq_ctx_new (); + assert (ctx2); + + void *router = zmq_socket (ctx1, ZMQ_ROUTER); + int on = 1; + int rc = zmq_setsockopt (router, ZMQ_ROUTER_MANDATORY, &on, sizeof (on)); + assert (rc == 0); + rc = zmq_bind (router, "tcp://127.0.0.1:5555"); + assert (rc != -1); + + // Repeat often enough to be sure this works as it should + for (int cycle = 0; cycle < 100; cycle++) { + // Create dealer with unique explicit identity + // We assume the router learns this out-of-band + void *dealer = zmq_socket (ctx2, ZMQ_DEALER); + char identity [10]; + sprintf (identity, "%09d", cycle); + rc = zmq_setsockopt (dealer, ZMQ_IDENTITY, identity, 10); + assert (rc == 0); + int rcvtimeo = 1000; + rc = zmq_setsockopt (dealer, ZMQ_RCVTIMEO, &rcvtimeo, sizeof (int)); + assert (rc == 0); + rc = zmq_connect (dealer, "tcp://127.0.0.1:5555"); + assert (rc == 0); + + // Router will try to send to dealer, at short intervals. + // It typically takes 2-5 msec for the connection to establish + // on a loopback interface, but we'll allow up to one second + // before failing the test (e.g. for running on a debugger or + // a very slow system). + for (int attempt = 0; attempt < 500; attempt++) { + zmq_poll (0, 0, 2); + rc = zmq_send (router, identity, 10, ZMQ_SNDMORE); + if (rc == -1 && errno == EHOSTUNREACH) + continue; + assert (rc == 10); + rc = zmq_send (router, "HELLO", 5, 0); + assert (rc == 5); + break; + } + uint8_t buffer [5]; + rc = zmq_recv (dealer, buffer, 5, 0); + assert (rc == 5); + assert (memcmp (buffer, "HELLO", 5) == 0); + close_zero_linger (dealer); + } + zmq_close (router); + zmq_ctx_destroy (ctx1); + zmq_ctx_destroy (ctx2); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_last_endpoint.cpp zeromq3-4.0.4/tests/test_last_endpoint.cpp --- zeromq3-3.2.4+dfsg/tests/test_last_endpoint.cpp 2013-05-02 18:43:38.000000000 +0000 +++ zeromq3-4.0.4/tests/test_last_endpoint.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,11 +17,7 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include - -#undef NDEBUG -#include +#include "testutil.hpp" static void do_bind_and_verify (void *s, const char *endpoint) { @@ -37,23 +31,26 @@ int main (void) { + setup_test_environment(); // Create the infrastructure - void *ctx = zmq_init (1); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_ROUTER); assert (sb); + int val = 0; + int rc = zmq_setsockopt (sb, ZMQ_LINGER, &val, sizeof (val)); + assert (rc == 0); do_bind_and_verify (sb, "tcp://127.0.0.1:5560"); do_bind_and_verify (sb, "tcp://127.0.0.1:5561"); - do_bind_and_verify (sb, "ipc:///tmp/testep"); - int rc = zmq_close (sb); + rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); - return 0; + return 0 ; } diff -Nru zeromq3-3.2.4+dfsg/tests/test_many_sockets.cpp zeromq3-4.0.4/tests/test_many_sockets.cpp --- zeromq3-3.2.4+dfsg/tests/test_many_sockets.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_many_sockets.cpp 2013-12-08 07:02:10.000000000 +0000 @@ -0,0 +1,90 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" +#include +#include +#include +#include + +void test_system_max () +{ + // Keep allocating sockets until we run out of system resources + const int no_of_sockets = 2 * 65536; + void *ctx = zmq_ctx_new (); + zmq_ctx_set (ctx, ZMQ_MAX_SOCKETS, no_of_sockets); + std::vector sockets; + + while (true) { + void *socket = zmq_socket (ctx, ZMQ_PAIR); + if (!socket) + break; + sockets.push_back (socket); + } + assert ((int) sockets.size () < no_of_sockets); + + // System is out of resources, further calls to zmq_socket should return NULL + for (unsigned int i = 0; i < 10; ++i) { + void *socket = zmq_socket (ctx, ZMQ_PAIR); + assert (socket == NULL); + } + // Clean up. + for (unsigned int i = 0; i < sockets.size (); ++i) + zmq_close (sockets [i]); + + zmq_ctx_destroy (ctx); +} + +void test_zmq_default_max () +{ + // Keep allocating sockets until we hit the default limit + void *ctx = zmq_ctx_new (); + std::vector sockets; + + while (true) { + void *socket = zmq_socket (ctx, ZMQ_PAIR); + if (!socket) + break; + sockets.push_back (socket); + } + // We may stop sooner if system has fewer available sockets + assert (sockets.size () <= ZMQ_MAX_SOCKETS_DFLT); + + // Further calls to zmq_socket should return NULL + for (unsigned int i = 0; i < 10; ++i) { + void *socket = zmq_socket (ctx, ZMQ_PAIR); + assert (socket == NULL); + } + + // Clean up + for (unsigned int i = 0; i < sockets.size (); ++i) + zmq_close (sockets [i]); + + zmq_ctx_destroy (ctx); +} + +int main (void) +{ + setup_test_environment (); + + test_system_max (); + test_zmq_default_max (); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_monitor.cpp zeromq3-4.0.4/tests/test_monitor.cpp --- zeromq3-3.2.4+dfsg/tests/test_monitor.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_monitor.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,10 +17,6 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include "../include/zmq_utils.h" -#include -#include #include "testutil.hpp" // REQ socket events handled @@ -32,167 +26,163 @@ // REP socket events handled static int rep_socket_events; -const char *addr; +std::string addr ; -extern "C" +static bool read_msg(void* s, zmq_event_t& event, std::string& ep) { - // REQ socket monitor thread - static void *req_socket_monitor (void *ctx) - { - zmq_event_t event; - int rc; - - void *s = zmq_socket (ctx, ZMQ_PAIR); - assert (s); - - rc = zmq_connect (s, "inproc://monitor.req"); - assert (rc == 0); - while (true) { - zmq_msg_t msg; - zmq_msg_init (&msg); - rc = zmq_recvmsg (s, &msg, 0); - if (rc == -1 && zmq_errno() == ETERM) break; - assert (rc != -1); - memcpy (&event, zmq_msg_data (&msg), sizeof (event)); - switch (event.event) { + int rc ; + zmq_msg_t msg1; // binary part + zmq_msg_init (&msg1); + zmq_msg_t msg2; // address part + zmq_msg_init (&msg2); + rc = zmq_msg_recv (&msg1, s, 0); + if (rc == -1 && zmq_errno() == ETERM) + return true ; + + assert (rc != -1); + assert (zmq_msg_more(&msg1) != 0); + rc = zmq_msg_recv (&msg2, s, 0); + if (rc == -1 && zmq_errno() == ETERM) + return true; + + assert (rc != -1); + assert (zmq_msg_more(&msg2) == 0); + // copy binary data to event struct + const char* data = (char*)zmq_msg_data(&msg1); + memcpy(&event.event, data, sizeof(event.event)); + memcpy(&event.value, data+sizeof(event.event), sizeof(event.value)); + // copy address part + ep = std::string((char*)zmq_msg_data(&msg2), zmq_msg_size(&msg2)); + + if (event.event == ZMQ_EVENT_MONITOR_STOPPED) + return true; + + return false; +} + + +// REQ socket monitor thread +static void req_socket_monitor (void *ctx) +{ + zmq_event_t event; + std::string ep ; + int rc; + + void *s = zmq_socket (ctx, ZMQ_PAIR); + assert (s); + + rc = zmq_connect (s, "inproc://monitor.req"); + assert (rc == 0); + while (!read_msg(s, event, ep)) { + assert (ep == addr); + switch (event.event) { case ZMQ_EVENT_CONNECTED: - assert (event.data.connected.fd > 0); - assert (!strcmp (event.data.connected.addr, addr)); + assert (event.value > 0); req_socket_events |= ZMQ_EVENT_CONNECTED; req2_socket_events |= ZMQ_EVENT_CONNECTED; break; case ZMQ_EVENT_CONNECT_DELAYED: - assert (event.data.connect_delayed.err != 0); - assert (!strcmp (event.data.connect_delayed.addr, addr)); + assert (event.value != 0); req_socket_events |= ZMQ_EVENT_CONNECT_DELAYED; break; case ZMQ_EVENT_CLOSE_FAILED: - assert (event.data.close_failed.err != 0); - assert (!strcmp (event.data.close_failed.addr, addr)); + assert (event.value != 0); req_socket_events |= ZMQ_EVENT_CLOSE_FAILED; break; case ZMQ_EVENT_CLOSED: - assert (event.data.closed.fd != 0); - assert (!strcmp (event.data.closed.addr, addr)); + assert (event.value != 0); req_socket_events |= ZMQ_EVENT_CLOSED; break; case ZMQ_EVENT_DISCONNECTED: - assert (event.data.disconnected.fd != 0); - assert (!strcmp (event.data.disconnected.addr, addr)); + assert (event.value != 0); req_socket_events |= ZMQ_EVENT_DISCONNECTED; break; - } } - zmq_close (s); - return NULL; } + zmq_close (s); } -extern "C" +// 2nd REQ socket monitor thread +static void req2_socket_monitor (void *ctx) { - // 2nd REQ socket monitor thread - static void *req2_socket_monitor (void *ctx) - { - zmq_event_t event; - int rc; - - void *s = zmq_socket (ctx, ZMQ_PAIR); - assert (s); - - rc = zmq_connect (s, "inproc://monitor.req2"); - assert (rc == 0); - while (true) { - zmq_msg_t msg; - zmq_msg_init (&msg); - rc = zmq_recvmsg (s, &msg, 0); - if (rc == -1 && zmq_errno() == ETERM) break; - assert (rc != -1); - memcpy (&event, zmq_msg_data (&msg), sizeof (event)); - switch (event.event) { + zmq_event_t event; + std::string ep ; + int rc; + + void *s = zmq_socket (ctx, ZMQ_PAIR); + assert (s); + + rc = zmq_connect (s, "inproc://monitor.req2"); + assert (rc == 0); + while (!read_msg(s, event, ep)) { + assert (ep == addr); + switch (event.event) { case ZMQ_EVENT_CONNECTED: - assert (event.data.connected.fd > 0); - assert (!strcmp (event.data.connected.addr, addr)); + assert (event.value > 0); req2_socket_events |= ZMQ_EVENT_CONNECTED; break; case ZMQ_EVENT_CLOSED: - assert (event.data.closed.fd != 0); - assert (!strcmp (event.data.closed.addr, addr)); + assert (event.value != 0); req2_socket_events |= ZMQ_EVENT_CLOSED; break; - } } - zmq_close (s); - return NULL; } + zmq_close (s); } - -extern "C" +// REP socket monitor thread +static void rep_socket_monitor (void *ctx) { - // REP socket monitor thread - static void *rep_socket_monitor (void *ctx) - { - zmq_event_t event; - int rc; - - void *s = zmq_socket (ctx, ZMQ_PAIR); - assert (s); - - rc = zmq_connect (s, "inproc://monitor.rep"); - assert (rc == 0); - while (true) { - zmq_msg_t msg; - zmq_msg_init (&msg); - rc = zmq_recvmsg (s, &msg, 0); - if (rc == -1 && zmq_errno() == ETERM) break; - assert (rc != -1); - memcpy (&event, zmq_msg_data (&msg), sizeof (event)); - switch (event.event) { + zmq_event_t event; + std::string ep ; + int rc; + + void *s = zmq_socket (ctx, ZMQ_PAIR); + assert (s); + + rc = zmq_connect (s, "inproc://monitor.rep"); + assert (rc == 0); + while (!read_msg(s, event, ep)) { + assert (ep == addr); + switch (event.event) { case ZMQ_EVENT_LISTENING: - assert (event.data.listening.fd > 0); - assert (!strcmp (event.data.listening.addr, addr)); + assert (event.value > 0); rep_socket_events |= ZMQ_EVENT_LISTENING; break; case ZMQ_EVENT_ACCEPTED: - assert (event.data.accepted.fd > 0); - assert (!strcmp (event.data.accepted.addr, addr)); + assert (event.value > 0); rep_socket_events |= ZMQ_EVENT_ACCEPTED; break; case ZMQ_EVENT_CLOSE_FAILED: - assert (event.data.close_failed.err != 0); - assert (!strcmp (event.data.close_failed.addr, addr)); + assert (event.value != 0); rep_socket_events |= ZMQ_EVENT_CLOSE_FAILED; break; case ZMQ_EVENT_CLOSED: - assert (event.data.closed.fd != 0); - assert (!strcmp (event.data.closed.addr, addr)); + assert (event.value != 0); rep_socket_events |= ZMQ_EVENT_CLOSED; break; case ZMQ_EVENT_DISCONNECTED: - assert (event.data.disconnected.fd != 0); - assert (!strcmp (event.data.disconnected.addr, addr)); + assert (event.value != 0); rep_socket_events |= ZMQ_EVENT_DISCONNECTED; break; - } - zmq_msg_close (&msg); } - zmq_close (s); - return NULL; } + zmq_close (s); } int main (void) { + setup_test_environment(); int rc; void *req; void *req2; void *rep; - pthread_t threads [3]; + void* threads [3]; addr = "tcp://127.0.0.1:5560"; // Create the infrastructure - void *ctx = zmq_init (1); + void *ctx = zmq_ctx_new (); assert (ctx); // REP socket @@ -200,7 +190,7 @@ assert (rep); // Assert supported protocols - rc = zmq_socket_monitor (rep, addr, 0); + rc = zmq_socket_monitor (rep, addr.c_str(), 0); assert (rc == -1); assert (zmq_errno() == EPROTONOSUPPORT); @@ -211,12 +201,8 @@ // REP socket monitor, all events rc = zmq_socket_monitor (rep, "inproc://monitor.rep", ZMQ_EVENT_ALL); assert (rc == 0); - rc = pthread_create (&threads [0], NULL, rep_socket_monitor, ctx); - assert (rc == 0); - - rc = zmq_bind (rep, addr); - assert (rc == 0); - + threads [0] = zmq_threadstart(&rep_socket_monitor, ctx); + // REQ socket req = zmq_socket (ctx, ZMQ_REQ); assert (req); @@ -224,12 +210,18 @@ // REQ socket monitor, all events rc = zmq_socket_monitor (req, "inproc://monitor.req", ZMQ_EVENT_ALL); assert (rc == 0); - rc = pthread_create (&threads [1], NULL, req_socket_monitor, ctx); + threads [1] = zmq_threadstart(&req_socket_monitor, ctx); + msleep (SETTLE_TIME); + + // Bind REQ and REP + rc = zmq_bind (rep, addr.c_str()); assert (rc == 0); - rc = zmq_connect (req, addr); + rc = zmq_connect (req, addr.c_str()); assert (rc == 0); + bounce (rep, req); + // 2nd REQ socket req2 = zmq_socket (ctx, ZMQ_REQ); assert (req2); @@ -237,23 +229,17 @@ // 2nd REQ socket monitor, connected event only rc = zmq_socket_monitor (req2, "inproc://monitor.req2", ZMQ_EVENT_CONNECTED); assert (rc == 0); - rc = pthread_create (&threads [2], NULL, req2_socket_monitor, ctx); - assert (rc == 0); + threads [2] = zmq_threadstart(&req2_socket_monitor, ctx); - rc = zmq_connect (req2, addr); + rc = zmq_connect (req2, addr.c_str()); assert (rc == 0); - bounce (rep, req); - - // Allow a window for socket events as connect can be async - zmq_sleep (1); - // Close the REP socket rc = zmq_close (rep); assert (rc == 0); - // Allow some time for detecting error states - zmq_sleep (1); + // Allow enough time for detecting error states + msleep (250); // Close the REQ socket rc = zmq_close (req); @@ -263,10 +249,7 @@ rc = zmq_close (req2); assert (rc == 0); - // Allow for closed or disconnected events to bubble up - zmq_sleep (1); - - zmq_term (ctx); + zmq_ctx_term (ctx); // Expected REP socket events assert (rep_socket_events & ZMQ_EVENT_LISTENING); @@ -282,8 +265,8 @@ assert (req2_socket_events & ZMQ_EVENT_CONNECTED); assert (!(req2_socket_events & ZMQ_EVENT_CLOSED)); - pthread_exit (NULL); + for (unsigned int i = 0; i < 3; ++i) + zmq_threadclose(threads [i]); return 0 ; } - diff -Nru zeromq3-3.2.4+dfsg/tests/test_msg_flags.cpp zeromq3-4.0.4/tests/test_msg_flags.cpp --- zeromq3-3.2.4+dfsg/tests/test_msg_flags.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_msg_flags.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2007-2012 iMatix Corporation - Copyright (c) 2011 250bpm s.r.o. - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,23 +17,24 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include - -#undef NDEBUG -#include +#include "testutil.hpp" int main (void) { + setup_test_environment(); // Create the infrastructure - void *ctx = zmq_init (0); + void *ctx = zmq_ctx_new (); assert (ctx); + void *sb = zmq_socket (ctx, ZMQ_ROUTER); assert (sb); + int rc = zmq_bind (sb, "inproc://a"); assert (rc == 0); + void *sc = zmq_socket (ctx, ZMQ_DEALER); assert (sc); + rc = zmq_connect (sc, "inproc://a"); assert (rc == 0); @@ -49,29 +48,31 @@ zmq_msg_t msg; rc = zmq_msg_init (&msg); assert (rc == 0); - rc = zmq_recvmsg (sb, &msg, 0); + rc = zmq_msg_recv (&msg, sb, 0); assert (rc >= 0); - int more = zmq_msg_get (&msg, ZMQ_MORE); + int more = zmq_msg_more (&msg); assert (more == 1); // Then the first part of the message body. - rc = zmq_recvmsg (sb, &msg, 0); + rc = zmq_msg_recv (&msg, sb, 0); assert (rc == 1); - more = zmq_msg_get (&msg, ZMQ_MORE); + more = zmq_msg_more (&msg); assert (more == 1); // And finally, the second part of the message body. - rc = zmq_recvmsg (sb, &msg, 0); + rc = zmq_msg_recv (&msg, sb, 0); assert (rc == 1); - more = zmq_msg_get (&msg, ZMQ_MORE); + more = zmq_msg_more (&msg); assert (more == 0); // Deallocate the infrastructure. rc = zmq_close (sc); assert (rc == 0); + rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; } diff -Nru zeromq3-3.2.4+dfsg/tests/test_pair_inproc.cpp zeromq3-4.0.4/tests/test_pair_inproc.cpp --- zeromq3-3.2.4+dfsg/tests/test_pair_inproc.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_pair_inproc.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,14 +17,12 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_pair_inproc running...\n"); - - void *ctx = zmq_init (0); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_PAIR); @@ -39,6 +36,27 @@ assert (rc == 0); bounce (sb, sc); + + // Test zmq_send_const + rc = zmq_send_const (sb, "foo", 3, ZMQ_SNDMORE); + assert (rc == 3); + rc = zmq_send_const (sb, "foobar", 6, 0); + assert (rc == 6); + + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, sc, 0); + assert (rc == 3); + assert (zmq_msg_size (&msg) == 3); + void* data = zmq_msg_data (&msg); + assert (memcmp ("foo", data, 3) == 0); + rc = zmq_msg_recv (&msg, sc, 0); + assert (rc == 6); + data = zmq_msg_data (&msg); + assert (memcmp ("foobar", data, 6) == 0); + + // Cleanup rc = zmq_close (sc); assert (rc == 0); @@ -46,7 +64,7 @@ rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_pair_ipc.cpp zeromq3-4.0.4/tests/test_pair_ipc.cpp --- zeromq3-3.2.4+dfsg/tests/test_pair_ipc.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_pair_ipc.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,14 +17,12 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_pair_ipc running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_PAIR); @@ -46,7 +43,7 @@ rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_pair_tcp.cpp zeromq3-4.0.4/tests/test_pair_tcp.cpp --- zeromq3-3.2.4+dfsg/tests/test_pair_tcp.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_pair_tcp.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,14 +17,12 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_pair_tcp running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_PAIR); @@ -47,7 +43,7 @@ rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_probe_router.cpp zeromq3-4.0.4/tests/test_probe_router.cpp --- zeromq3-3.2.4+dfsg/tests/test_probe_router.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_probe_router.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,72 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Create server and bind to endpoint + void *server = zmq_socket (ctx, ZMQ_ROUTER); + assert (server); + int rc = zmq_bind (server, "tcp://127.0.0.1:5560"); + assert (rc == 0); + + // Create client and connect to server, doing a probe + void *client = zmq_socket (ctx, ZMQ_ROUTER); + assert (client); + rc = zmq_setsockopt (client, ZMQ_IDENTITY, "X", 1); + assert (rc == 0); + int probe = 1; + rc = zmq_setsockopt (client, ZMQ_PROBE_ROUTER, &probe, sizeof (probe)); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:5560"); + assert (rc == 0); + + // We expect an identity=X + empty message from client + unsigned char buffer [255]; + rc = zmq_recv (server, buffer, 255, 0); + assert (rc == 1); + assert (buffer [0] == 'X'); + rc = zmq_recv (server, buffer, 255, 0); + assert (rc == 0); + + // Send a message to client now + rc = zmq_send (server, "X", 1, ZMQ_SNDMORE); + assert (rc == 1); + rc = zmq_send (server, "Hello", 5, 0); + assert (rc == 5); + + rc = zmq_recv (client, buffer, 255, 0); + assert (rc == 5); + + rc = zmq_close (server); + assert (rc == 0); + + rc = zmq_close (client); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_req_correlate.cpp zeromq3-4.0.4/tests/test_req_correlate.cpp --- zeromq3-3.2.4+dfsg/tests/test_req_correlate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_req_correlate.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,177 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *req = zmq_socket (ctx, ZMQ_REQ); + assert (req); + + void *router = zmq_socket (ctx, ZMQ_ROUTER); + assert (router); + + int enabled = 1; + int rc = zmq_setsockopt (req, ZMQ_REQ_CORRELATE, &enabled, sizeof (int)); + assert (rc == 0); + + int rcvtimeo = 100; + rc = zmq_setsockopt (req, ZMQ_RCVTIMEO, &rcvtimeo, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (req, "tcp://localhost:5555"); + assert (rc == 0); + + rc = zmq_bind (router, "tcp://127.0.0.1:5555"); + assert (rc == 0); + + // Send a multi-part request. + s_send_seq (req, "ABC", "DEF", SEQ_END); + + zmq_msg_t msg; + zmq_msg_init (&msg); + + // Receive peer identity + rc = zmq_msg_recv (&msg, router, 0); + assert (rc != -1); + assert (zmq_msg_size (&msg) > 0); + zmq_msg_t peer_id_msg; + zmq_msg_init (&peer_id_msg); + zmq_msg_copy (&peer_id_msg, &msg); + + int more = 0; + size_t more_size = sizeof (more); + rc = zmq_getsockopt (router, ZMQ_RCVMORE, &more, &more_size); + assert (rc == 0); + assert (more); + + // Receive request id 1 + rc = zmq_msg_recv (&msg, router, 0); + assert (rc != -1); + assert (zmq_msg_size (&msg) == sizeof(uint32_t)); + uint32_t req_id = *static_cast (zmq_msg_data (&msg)); + zmq_msg_t req_id_msg; + zmq_msg_init (&req_id_msg); + zmq_msg_copy (&req_id_msg, &msg); + + more = 0; + more_size = sizeof (more); + rc = zmq_getsockopt (router, ZMQ_RCVMORE, &more, &more_size); + assert (rc == 0); + assert (more); + + // Receive the rest. + s_recv_seq (router, 0, "ABC", "DEF", SEQ_END); + + // Send back a bad reply: correct req id + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_copy (&msg, &req_id_msg); + rc = zmq_msg_send (&msg, router, 0); + assert (rc != -1); + + // Send back a bad reply: wrong req id + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + uint32_t bad_req_id = req_id + 1; + zmq_msg_init_data (&msg, &bad_req_id, sizeof (uint32_t), NULL, NULL); + rc = zmq_msg_send (&msg, router, 0); + assert (rc != -1); + + // Send back a bad reply: correct req id, 0 + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_copy (&msg, &req_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, 0, SEQ_END); + + // Send back a bad reply: correct req id, garbage + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_copy (&msg, &req_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, "FOO", SEQ_END); + + // Send back a bad reply: wrong req id, 0 + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_init_data (&msg, &bad_req_id, sizeof (uint32_t), NULL, NULL); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, 0, SEQ_END); + + // Send back a bad reply: correct req id, garbage, data + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_copy (&msg, &req_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, "FOO", "DATA", SEQ_END); + + // Send back a bad reply: wrong req id, 0, data + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_init_data (&msg, &bad_req_id, sizeof (uint32_t), NULL, NULL); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, 0, "DATA", SEQ_END); + + // Send back a good reply. + zmq_msg_copy (&msg, &peer_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + zmq_msg_copy (&msg, &req_id_msg); + rc = zmq_msg_send (&msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, 0, "GHI", SEQ_END); + + // Receive reply. If any of the other messages got through, we wouldn't see + // this particular data. + s_recv_seq (req, "GHI", SEQ_END); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + rc = zmq_msg_close (&peer_id_msg); + assert (rc == 0); + + rc = zmq_msg_close (&req_id_msg); + assert (rc == 0); + + close_zero_linger (req); + close_zero_linger (router); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_req_relaxed.cpp zeromq3-4.0.4/tests/test_req_relaxed.cpp --- zeromq3-3.2.4+dfsg/tests/test_req_relaxed.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_req_relaxed.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,116 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *req = zmq_socket (ctx, ZMQ_REQ); + assert (req); + + int enabled = 1; + int rc = zmq_setsockopt (req, ZMQ_REQ_RELAXED, &enabled, sizeof (int)); + assert (rc == 0); + + rc = zmq_setsockopt (req, ZMQ_REQ_CORRELATE, &enabled, sizeof (int)); + assert (rc == 0); + + rc = zmq_bind (req, "tcp://127.0.0.1:5555"); + assert (rc == 0); + + const size_t services = 5; + void *rep [services]; + for (size_t peer = 0; peer < services; peer++) { + rep [peer] = zmq_socket (ctx, ZMQ_REP); + assert (rep [peer]); + + int timeout = 100; + rc = zmq_setsockopt (rep [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (rep [peer], "tcp://localhost:5555"); + assert (rc == 0); + } + // We have to give the connects time to finish otherwise the requests + // will not properly round-robin. We could alternatively connect the + // REQ sockets to the REP sockets. + msleep (SETTLE_TIME); + + // Case 1: Second send() before a reply arrives in a pipe. + + // Send a request, ensure it arrives, don't send a reply + s_send_seq (req, "A", "B", SEQ_END); + s_recv_seq (rep [0], "A", "B", SEQ_END); + + // Send another request on the REQ socket + s_send_seq (req, "C", "D", SEQ_END); + s_recv_seq (rep [1], "C", "D", SEQ_END); + + // Send a reply to the first request - that should be discarded by the REQ + s_send_seq (rep [0], "WRONG", SEQ_END); + + // Send the expected reply + s_send_seq (rep [1], "OK", SEQ_END); + s_recv_seq (req, "OK", SEQ_END); + + + // Another standard req-rep cycle, just to check + s_send_seq (req, "E", SEQ_END); + s_recv_seq (rep [2], "E", SEQ_END); + s_send_seq (rep [2], "F", "G", SEQ_END); + s_recv_seq (req, "F", "G", SEQ_END); + + + // Case 2: Second send() after a reply is already in a pipe on the REQ. + + // Send a request, ensure it arrives, send a reply + s_send_seq (req, "H", SEQ_END); + s_recv_seq (rep [3], "H", SEQ_END); + s_send_seq (rep [3], "BAD", SEQ_END); + + // Wait for message to be there. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + // Without receiving that reply, send another request on the REQ socket + s_send_seq (req, "I", SEQ_END); + s_recv_seq (rep [4], "I", SEQ_END); + + // Send the expected reply + s_send_seq (rep [4], "GOOD", SEQ_END); + s_recv_seq (req, "GOOD", SEQ_END); + + + close_zero_linger (req); + for (size_t peer = 0; peer < services; peer++) + close_zero_linger (rep [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_reqrep_device.cpp zeromq3-4.0.4/tests/test_reqrep_device.cpp --- zeromq3-3.2.4+dfsg/tests/test_reqrep_device.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_reqrep_device.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 VMware, Inc. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,18 +17,12 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include -#include - -#undef NDEBUG -#include +#include "testutil.hpp" int main (void) { - fprintf (stderr, "test_reqrep_device running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); // Create a req/rep device. @@ -66,13 +58,13 @@ zmq_msg_t msg; rc = zmq_msg_init (&msg); assert (rc == 0); - rc = zmq_recvmsg (router, &msg, 0); + rc = zmq_msg_recv (&msg, router, 0); assert (rc >= 0); int rcvmore; size_t sz = sizeof (rcvmore); rc = zmq_getsockopt (router, ZMQ_RCVMORE, &rcvmore, &sz); assert (rc == 0); - rc = zmq_sendmsg (dealer, &msg, rcvmore ? ZMQ_SNDMORE : 0); + rc = zmq_msg_send (&msg, dealer, rcvmore? ZMQ_SNDMORE: 0); assert (rc >= 0); } @@ -104,12 +96,12 @@ zmq_msg_t msg; rc = zmq_msg_init (&msg); assert (rc == 0); - rc = zmq_recvmsg (dealer, &msg, 0); + rc = zmq_msg_recv (&msg, dealer, 0); assert (rc >= 0); int rcvmore; rc = zmq_getsockopt (dealer, ZMQ_RCVMORE, &rcvmore, &sz); assert (rc == 0); - rc = zmq_sendmsg (router, &msg, rcvmore ? ZMQ_SNDMORE : 0); + rc = zmq_msg_send (&msg, router, rcvmore? ZMQ_SNDMORE: 0); assert (rc >= 0); } @@ -136,7 +128,7 @@ assert (rc == 0); rc = zmq_close (dealer); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_reqrep_inproc.cpp zeromq3-4.0.4/tests/test_reqrep_inproc.cpp --- zeromq3-3.2.4+dfsg/tests/test_reqrep_inproc.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_reqrep_inproc.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,14 +17,12 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_reqrep_inproc running...\n"); - - void *ctx = zmq_init (0); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_REP); @@ -46,7 +43,7 @@ rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_reqrep_ipc.cpp zeromq3-4.0.4/tests/test_reqrep_ipc.cpp --- zeromq3-3.2.4+dfsg/tests/test_reqrep_ipc.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_reqrep_ipc.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,14 +17,12 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_reqrep_ipc running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_REP); @@ -46,7 +43,7 @@ rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_reqrep_tcp.cpp zeromq3-4.0.4/tests/test_reqrep_tcp.cpp --- zeromq3-3.2.4+dfsg/tests/test_reqrep_tcp.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_reqrep_tcp.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,14 +17,12 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_reqrep_tcp running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); void *sb = zmq_socket (ctx, ZMQ_REP); @@ -47,7 +43,7 @@ rc = zmq_close (sb); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_router_mandatory.cpp zeromq3-4.0.4/tests/test_router_mandatory.cpp --- zeromq3-3.2.4+dfsg/tests/test_router_mandatory.cpp 2012-10-30 10:13:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_router_mandatory.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,43 +17,64 @@ along with this program. If not, see . */ -#include #include "testutil.hpp" int main (void) { - fprintf (stderr, "test_router_mandatory running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); + void *router = zmq_socket (ctx, ZMQ_ROUTER); + assert (router); - // Creating the first socket. - void *sa = zmq_socket (ctx, ZMQ_ROUTER); - assert (sa); - - int rc = zmq_bind (sa, "tcp://127.0.0.1:15560"); + int rc = zmq_bind (router, "tcp://127.0.0.1:5560"); assert (rc == 0); - // Sending a message to an unknown peer with the default setting - rc = zmq_send (sa, "UNKNOWN", 7, ZMQ_SNDMORE); + // Send a message to an unknown peer with the default setting + // This will not report any error + rc = zmq_send (router, "UNKNOWN", 7, ZMQ_SNDMORE); assert (rc == 7); - rc = zmq_send (sa, "DATA", 4, 0); + rc = zmq_send (router, "DATA", 4, 0); assert (rc == 4); + // Send a message to an unknown peer with mandatory routing + // This will fail int mandatory = 1; + rc = zmq_setsockopt (router, ZMQ_ROUTER_MANDATORY, &mandatory, sizeof (mandatory)); + assert (rc == 0); + rc = zmq_send (router, "UNKNOWN", 7, ZMQ_SNDMORE); + assert (rc == -1 && errno == EHOSTUNREACH); - // Set mandatory routing on socket - rc = zmq_setsockopt (sa, ZMQ_ROUTER_MANDATORY, &mandatory, sizeof (mandatory)); + // Create dealer called "X" and connect it to our router + void *dealer = zmq_socket (ctx, ZMQ_DEALER); + assert (dealer); + rc = zmq_setsockopt (dealer, ZMQ_IDENTITY, "X", 1); + assert (rc == 0); + rc = zmq_connect (dealer, "tcp://127.0.0.1:5560"); assert (rc == 0); - // Send a message and check that it fails - rc = zmq_send (sa, "UNKNOWN", 7, ZMQ_SNDMORE | ZMQ_DONTWAIT); - assert (rc == -1 && errno == EHOSTUNREACH); + // Get message from dealer to know when connection is ready + char buffer [255]; + rc = zmq_send (dealer, "Hello", 5, 0); + assert (rc == 5); + rc = zmq_recv (router, buffer, 255, 0); + assert (rc == 1); + assert (buffer [0] == 'X'); + + // Send a message to connected dealer now + // It should work + rc = zmq_send (router, "X", 1, ZMQ_SNDMORE); + assert (rc == 1); + rc = zmq_send (router, "Hello", 5, 0); + assert (rc == 5); + + rc = zmq_close (router); + assert (rc == 0); - rc = zmq_close (sa); + rc = zmq_close (dealer); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_router_raw_empty.cpp zeromq3-4.0.4/tests/test_router_raw_empty.cpp --- zeromq3-3.2.4+dfsg/tests/test_router_raw_empty.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_router_raw_empty.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,65 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +int main (void) { + setup_test_environment(); + void *ctx = zmq_ctx_new(); + assert(ctx); + + void *router = zmq_socket(ctx, ZMQ_ROUTER); + assert(router); + void *dealer = zmq_socket(ctx, ZMQ_DEALER); + assert(dealer); + + int one=1; + int rc = zmq_setsockopt(router, ZMQ_ROUTER_RAW, &one, sizeof(int)); + assert(rc >= 0); + rc = zmq_setsockopt(router, ZMQ_ROUTER_MANDATORY, &one, sizeof(int)); + assert(rc >= 0); + + rc = zmq_bind(router, "tcp://127.0.0.1:5555"); + rc = zmq_connect(dealer, "tcp://127.0.0.1:5555"); + zmq_send(dealer, "", 0, 0); + + + zmq_msg_t ident, empty; + zmq_msg_init(&ident); + rc = zmq_msg_recv(&ident, router, 0); + assert(rc >= 0); + rc = zmq_msg_init_data(&empty, (void*)"", 0, NULL, NULL); + assert(rc >= 0); + + rc = zmq_msg_send(&ident, router, ZMQ_SNDMORE); + assert(rc >= 0); + rc = zmq_msg_close(&ident); + assert(rc >= 0); + + rc = zmq_msg_send(&empty, router, 0); + assert(rc >= 0); + + // This close used to fail with Bad Address + rc = zmq_msg_close(&empty); + assert(rc >= 0); + + close_zero_linger(dealer); + close_zero_linger(router); + zmq_ctx_term(ctx); +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_security_curve.cpp zeromq3-4.0.4/tests/test_security_curve.cpp --- zeromq3-3.2.4+dfsg/tests/test_security_curve.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_security_curve.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,212 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +// We'll generate random test keys at startup +static char client_public [41]; +static char client_secret [41]; +static char server_public [41]; +static char server_secret [41]; + +// -------------------------------------------------------------------------- +// Encode a binary frame as a string; destination string MUST be at least +// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns +// dest. Size must be a multiple of 4. + +static void zap_handler (void *handler) +{ + // Process ZAP requests forever + while (true) { + char *version = s_recv (handler); + if (!version) + break; // Terminating + + char *sequence = s_recv (handler); + char *domain = s_recv (handler); + char *address = s_recv (handler); + char *identity = s_recv (handler); + char *mechanism = s_recv (handler); + uint8_t client_key [32]; + int size = zmq_recv (handler, client_key, 32, 0); + assert (size == 32); + + char client_key_text [41]; + zmq_z85_encode (client_key_text, client_key, 32); + + assert (streq (version, "1.0")); + assert (streq (mechanism, "CURVE")); + assert (streq (identity, "IDENT")); + + s_sendmore (handler, version); + s_sendmore (handler, sequence); + + if (streq (client_key_text, client_public)) { + s_sendmore (handler, "200"); + s_sendmore (handler, "OK"); + s_sendmore (handler, "anonymous"); + s_send (handler, ""); + } + else { + s_sendmore (handler, "400"); + s_sendmore (handler, "Invalid client public key"); + s_sendmore (handler, ""); + s_send (handler, ""); + } + free (version); + free (sequence); + free (domain); + free (address); + free (identity); + free (mechanism); + } + zmq_close (handler); +} + + +int main (void) +{ +#ifndef HAVE_LIBSODIUM + printf ("libsodium not installed, skipping CURVE test\n"); + return 0; +#endif + + // Generate new keypairs for this test + int rc = zmq_curve_keypair (client_public, client_secret); + assert (rc == 0); + rc = zmq_curve_keypair (server_public, server_secret); + assert (rc == 0); + + setup_test_environment (); + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Spawn ZAP handler + // We create and bind ZAP socket in main thread to avoid case + // where child thread does not start up fast enough. + void *handler = zmq_socket (ctx, ZMQ_REP); + assert (handler); + rc = zmq_bind (handler, "inproc://zeromq.zap.01"); + assert (rc == 0); + void *zap_thread = zmq_threadstart (&zap_handler, handler); + + // Server socket will accept connections + void *server = zmq_socket (ctx, ZMQ_DEALER); + assert (server); + int as_server = 1; + rc = zmq_setsockopt (server, ZMQ_CURVE_SERVER, &as_server, sizeof (int)); + assert (rc == 0); + rc = zmq_setsockopt (server, ZMQ_CURVE_SECRETKEY, server_secret, 40); + assert (rc == 0); + rc = zmq_setsockopt (server, ZMQ_IDENTITY, "IDENT", 6); + assert (rc == 0); + rc = zmq_bind (server, "tcp://127.0.0.1:9998"); + assert (rc == 0); + + // Check CURVE security with valid credentials + void *client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 40); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + bounce (server, client); + rc = zmq_close (client); + assert (rc == 0); + + // Check CURVE security with a garbage server key + // This will be caught by the curve_server class, not passed to ZAP + char garbage_key [] = "0000111122223333444455556666777788889999"; + client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, garbage_key, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 40); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + expect_bounce_fail (server, client); + close_zero_linger (client); + + // Check CURVE security with a garbage client public key + // This will be caught by the curve_server class, not passed to ZAP + client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, garbage_key, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 40); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + expect_bounce_fail (server, client); + close_zero_linger (client); + + // Check CURVE security with a garbage client secret key + // This will be caught by the curve_server class, not passed to ZAP + client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, garbage_key, 40); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + expect_bounce_fail (server, client); + close_zero_linger (client); + + // Check CURVE security with bogus client credentials + // This must be caught by the ZAP handler + char bogus_public [41]; + char bogus_secret [41]; + zmq_curve_keypair (bogus_public, bogus_secret); + + client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, bogus_public, 40); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, bogus_secret, 40); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + expect_bounce_fail (server, client); + close_zero_linger (client); + + // Shutdown + rc = zmq_close (server); + assert (rc == 0); + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + // Wait until ZAP handler terminates + zmq_threadclose (zap_thread); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_security_null.cpp zeromq3-4.0.4/tests/test_security_null.cpp --- zeromq3-3.2.4+dfsg/tests/test_security_null.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_security_null.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,148 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +static void +zap_handler (void *handler) +{ + // Process ZAP requests forever + while (true) { + char *version = s_recv (handler); + if (!version) + break; // Terminating + char *sequence = s_recv (handler); + char *domain = s_recv (handler); + char *address = s_recv (handler); + char *identity = s_recv (handler); + char *mechanism = s_recv (handler); + + assert (streq (version, "1.0")); + assert (streq (mechanism, "NULL")); + + s_sendmore (handler, version); + s_sendmore (handler, sequence); + if (streq (domain, "TEST")) { + s_sendmore (handler, "200"); + s_sendmore (handler, "OK"); + s_sendmore (handler, "anonymous"); + s_send (handler, ""); + } + else { + s_sendmore (handler, "400"); + s_sendmore (handler, "BAD DOMAIN"); + s_sendmore (handler, ""); + s_send (handler, ""); + } + free (version); + free (sequence); + free (domain); + free (address); + free (identity); + free (mechanism); + } + zmq_close (handler); +} + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Spawn ZAP handler + // We create and bind ZAP socket in main thread to avoid case + // where child thread does not start up fast enough. + void *handler = zmq_socket (ctx, ZMQ_REP); + assert (handler); + int rc = zmq_bind (handler, "inproc://zeromq.zap.01"); + assert (rc == 0); + void *zap_thread = zmq_threadstart (&zap_handler, handler); + + // We bounce between a binding server and a connecting client + void *server = zmq_socket (ctx, ZMQ_DEALER); + assert (server); + void *client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + + // We first test client/server with no ZAP domain + // Libzmq does not call our ZAP handler, the connect must succeed + rc = zmq_bind (server, "tcp://127.0.0.1:9000"); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9000"); + assert (rc == 0); + bounce (server, client); + zmq_unbind (server, "tcp://127.0.0.1:9000"); + zmq_disconnect (client, "tcp://localhost:9000"); + + // Now define a ZAP domain for the server; this enables + // authentication. We're using the wrong domain so this test + // must fail. + // ************************************************************** + // PH: the following causes libzmq to get confused, so that the + // next step fails. To reproduce, uncomment this block. Note that + // even creating a new client/server socket pair, the behaviour + // does not change. + // ************************************************************** + // Destroying the old sockets and creating new ones isn't needed, + // but it shows that the problem isn't related to specific sockets. + //close_zero_linger (client); + //close_zero_linger (server); + //server = zmq_socket (ctx, ZMQ_DEALER); + //assert (server); + //client = zmq_socket (ctx, ZMQ_DEALER); + //assert (client); + //// The above code should not be required + //rc = zmq_setsockopt (server, ZMQ_ZAP_DOMAIN, "WRONG", 5); + //assert (rc == 0); + //rc = zmq_bind (server, "tcp://127.0.0.1:9001"); + //assert (rc == 0); + //rc = zmq_connect (client, "tcp://localhost:9001"); + //assert (rc == 0); + //expect_bounce_fail (server, client); + //zmq_unbind (server, "tcp://127.0.0.1:9001"); + //zmq_disconnect (client, "tcp://localhost:9001"); + + // Now use the right domain, the test must pass + rc = zmq_setsockopt (server, ZMQ_ZAP_DOMAIN, "TEST", 4); + assert (rc == 0); + rc = zmq_bind (server, "tcp://127.0.0.1:9002"); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9002"); + assert (rc == 0); + // ************************************************************** + // PH: it fails here; though the ZAP reply is 200 OK, and + // null_mechanism.cpp correctly parses that, the connection + // never succeeds and the test hangs. + // ************************************************************** + bounce (server, client); + zmq_unbind (server, "tcp://127.0.0.1:9002"); + zmq_disconnect (client, "tcp://localhost:9002"); + + // Shutdown + close_zero_linger (client); + close_zero_linger (server); + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + // Wait until ZAP handler terminates. + zmq_threadclose (zap_thread); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_security_plain.cpp zeromq3-4.0.4/tests/test_security_plain.cpp --- zeromq3-3.2.4+dfsg/tests/test_security_plain.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_security_plain.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,150 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +static void +zap_handler (void *ctx) +{ + // Create and bind ZAP socket + void *zap = zmq_socket (ctx, ZMQ_REP); + assert (zap); + int rc = zmq_bind (zap, "inproc://zeromq.zap.01"); + assert (rc == 0); + + // Process ZAP requests forever + while (true) { + char *version = s_recv (zap); + if (!version) + break; // Terminating + char *sequence = s_recv (zap); + char *domain = s_recv (zap); + char *address = s_recv (zap); + char *identity = s_recv (zap); + char *mechanism = s_recv (zap); + char *username = s_recv (zap); + char *password = s_recv (zap); + + assert (streq (version, "1.0")); + assert (streq (mechanism, "PLAIN")); + assert (streq (identity, "IDENT")); + + s_sendmore (zap, version); + s_sendmore (zap, sequence); + if (streq (username, "admin") + && streq (password, "password")) { + s_sendmore (zap, "200"); + s_sendmore (zap, "OK"); + s_sendmore (zap, "anonymous"); + s_send (zap, ""); + } + else { + s_sendmore (zap, "400"); + s_sendmore (zap, "Invalid username or password"); + s_sendmore (zap, ""); + s_send (zap, ""); + } + free (version); + free (sequence); + free (domain); + free (address); + free (identity); + free (mechanism); + free (username); + free (password); + } + rc = zmq_close (zap); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Spawn ZAP handler + void *zap_thread = zmq_threadstart (&zap_handler, ctx); + + // Server socket will accept connections + void *server = zmq_socket (ctx, ZMQ_DEALER); + assert (server); + int rc = zmq_setsockopt (server, ZMQ_IDENTITY, "IDENT", 6); + assert (rc == 0); + int as_server = 1; + rc = zmq_setsockopt (server, ZMQ_PLAIN_SERVER, &as_server, sizeof (int)); + assert (rc == 0); + rc = zmq_bind (server, "tcp://127.0.0.1:9998"); + assert (rc == 0); + + char username [256]; + char password [256]; + + // Check PLAIN security with correct username/password + void *client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + strcpy (username, "admin"); + rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, username, strlen (username)); + assert (rc == 0); + strcpy (password, "password"); + rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, password, strlen (password)); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + bounce (server, client); + rc = zmq_close (client); + assert (rc == 0); + + // Check PLAIN security with badly configured client (as_server) + // This will be caught by the plain_server class, not passed to ZAP + client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + as_server = 1; + rc = zmq_setsockopt (client, ZMQ_PLAIN_SERVER, &as_server, sizeof (int)); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + expect_bounce_fail (server, client); + close_zero_linger (client); + + // Check PLAIN security -- failed authentication + client = zmq_socket (ctx, ZMQ_DEALER); + assert (client); + strcpy (username, "wronguser"); + strcpy (password, "wrongpass"); + rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, username, strlen (username)); + assert (rc == 0); + rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, password, strlen (password)); + assert (rc == 0); + rc = zmq_connect (client, "tcp://localhost:9998"); + assert (rc == 0); + expect_bounce_fail (server, client); + close_zero_linger (client); + + // Shutdown + rc = zmq_close (server); + assert (rc == 0); + rc = zmq_ctx_term (ctx); + assert (rc == 0); + + // Wait until ZAP handler terminates + zmq_threadclose (zap_thread); + + return 0; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_shutdown_stress.cpp zeromq3-4.0.4/tests/test_shutdown_stress.cpp --- zeromq3-3.2.4+dfsg/tests/test_shutdown_stress.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_shutdown_stress.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,19 +17,13 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include -#include -#include - -#undef NDEBUG -#include +#include "testutil.hpp" #define THREAD_COUNT 100 extern "C" { - static void *worker (void *s) + static void worker (void *s) { int rc; @@ -41,28 +33,25 @@ // Start closing the socket while the connecting process is underway. rc = zmq_close (s); assert (rc == 0); - - return NULL; } } int main (void) { - void *ctx; + setup_test_environment(); void *s1; void *s2; int i; int j; int rc; - pthread_t threads [THREAD_COUNT]; - - fprintf (stderr, "test_shutdown_stress running...\n"); + void* threads [THREAD_COUNT]; for (j = 0; j != 10; j++) { // Check the shutdown with many parallel I/O threads. - ctx = zmq_init (7); + void *ctx = zmq_ctx_new (); assert (ctx); + zmq_ctx_set (ctx, ZMQ_IO_THREADS, 7); s1 = zmq_socket (ctx, ZMQ_PUB); assert (s1); @@ -73,19 +62,17 @@ for (i = 0; i != THREAD_COUNT; i++) { s2 = zmq_socket (ctx, ZMQ_SUB); assert (s2); - rc = pthread_create (&threads [i], NULL, worker, s2); - assert (rc == 0); + threads [i] = zmq_threadstart(&worker, s2); } for (i = 0; i != THREAD_COUNT; i++) { - rc = pthread_join (threads [i], NULL); - assert (rc == 0); + zmq_threadclose(threads [i]); } rc = zmq_close (s1); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); } diff -Nru zeromq3-3.2.4+dfsg/tests/test_spec_dealer.cpp zeromq3-4.0.4/tests/test_spec_dealer.cpp --- zeromq3-3.2.4+dfsg/tests/test_spec_dealer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_spec_dealer.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,254 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +const char *bind_address = 0; +const char *connect_address = 0; + +void test_round_robin_out (void *ctx) +{ + void *dealer = zmq_socket (ctx, ZMQ_DEALER); + assert (dealer); + + int rc = zmq_bind (dealer, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *rep [services]; + for (size_t peer = 0; peer < services; ++peer) { + rep [peer] = zmq_socket (ctx, ZMQ_REP); + assert (rep [peer]); + + int timeout = 100; + rc = zmq_setsockopt (rep [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (rep [peer], connect_address); + assert (rc == 0); + } + + // Wait for connections. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + // Send all requests + for (size_t i = 0; i < services; ++i) + s_send_seq (dealer, 0, "ABC", SEQ_END); + + // Expect every REP got one message + zmq_msg_t msg; + zmq_msg_init (&msg); + + for (size_t peer = 0; peer < services; ++peer) + s_recv_seq (rep [peer], "ABC", SEQ_END); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (dealer); + + for (size_t peer = 0; peer < services; ++peer) + close_zero_linger (rep [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_fair_queue_in (void *ctx) +{ + void *receiver = zmq_socket (ctx, ZMQ_DEALER); + assert (receiver); + + int timeout = 100; + int rc = zmq_setsockopt (receiver, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_bind (receiver, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *senders [services]; + for (size_t peer = 0; peer < services; ++peer) { + senders [peer] = zmq_socket (ctx, ZMQ_DEALER); + assert (senders [peer]); + + rc = zmq_setsockopt (senders [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (senders [peer], connect_address); + assert (rc == 0); + } + + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + + s_send_seq (senders [0], "A", SEQ_END); + s_recv_seq (receiver, "A", SEQ_END); + + s_send_seq (senders [0], "A", SEQ_END); + s_recv_seq (receiver, "A", SEQ_END); + + // send our requests + for (size_t peer = 0; peer < services; ++peer) + s_send_seq (senders [peer], "B", SEQ_END); + + // Wait for data. + rc = zmq_poll (0, 0, 50); + assert (rc == 0); + + // handle the requests + for (size_t peer = 0; peer < services; ++peer) + s_recv_seq (receiver, "B", SEQ_END); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (receiver); + + for (size_t peer = 0; peer < services; ++peer) + close_zero_linger (senders [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_destroy_queue_on_disconnect (void *ctx) +{ + void *A = zmq_socket (ctx, ZMQ_DEALER); + assert (A); + + int rc = zmq_bind (A, bind_address); + assert (rc == 0); + + void *B = zmq_socket (ctx, ZMQ_DEALER); + assert (B); + + rc = zmq_connect (B, connect_address); + assert (rc == 0); + + // Send a message in both directions + s_send_seq (A, "ABC", SEQ_END); + s_send_seq (B, "DEF", SEQ_END); + + rc = zmq_disconnect (B, connect_address); + assert (rc == 0); + + // Disconnect may take time and need command processing. + zmq_pollitem_t poller [2] = { { A, 0, 0, 0 }, { B, 0, 0, 0 } }; + rc = zmq_poll (poller, 2, 100); + assert (rc == 0); + rc = zmq_poll (poller, 2, 100); + assert (rc == 0); + + // No messages should be available, sending should fail. + zmq_msg_t msg; + zmq_msg_init (&msg); + + rc = zmq_send (A, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_msg_recv (&msg, A, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + // After a reconnect of B, the messages should still be gone + rc = zmq_connect (B, connect_address); + assert (rc == 0); + + rc = zmq_msg_recv (&msg, A, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_msg_recv (&msg, B, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (A); + close_zero_linger (B); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_block_on_send_no_peers (void *ctx) +{ + void *sc = zmq_socket (ctx, ZMQ_DEALER); + assert (sc); + + int timeout = 100; + int rc = zmq_setsockopt (sc, ZMQ_SNDTIMEO, &timeout, sizeof (timeout)); + assert (rc == 0); + + rc = zmq_send (sc, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_send (sc, 0, 0, 0); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_close (sc); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + const char *binds [] = { "inproc://a", "tcp://127.0.0.1:5555" }; + const char *connects [] = { "inproc://a", "tcp://localhost:5555" }; + + for (int transports = 0; transports < 2; ++transports) { + bind_address = binds [transports]; + connect_address = connects [transports]; + + // SHALL route outgoing messages to available peers using a round-robin + // strategy. + test_round_robin_out (ctx); + + // SHALL receive incoming messages from its peers using a fair-queuing + // strategy. + test_fair_queue_in (ctx); + + // SHALL block on sending, or return a suitable error, when it has no connected peers. + test_block_on_send_no_peers (ctx); + + // SHALL create a double queue when a peer connects to it. If this peer + // disconnects, the DEALER socket SHALL destroy its double queue and SHALL + // discard any messages it contains. + // *** Test disabled until libzmq does this properly *** + // test_destroy_queue_on_disconnect (ctx); + } + + int rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_spec_pushpull.cpp zeromq3-4.0.4/tests/test_spec_pushpull.cpp --- zeromq3-3.2.4+dfsg/tests/test_spec_pushpull.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_spec_pushpull.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,293 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +const char *bind_address = 0; +const char *connect_address = 0; + +void test_push_round_robin_out (void *ctx) +{ + void *push = zmq_socket (ctx, ZMQ_PUSH); + assert (push); + + int rc = zmq_bind (push, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *pulls [services]; + for (size_t peer = 0; peer < services; ++peer) { + pulls [peer] = zmq_socket (ctx, ZMQ_PULL); + assert (pulls [peer]); + + int timeout = 100; + rc = zmq_setsockopt (pulls [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (pulls [peer], connect_address); + assert (rc == 0); + } + + // Wait for connections. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + // Send 2N messages + for (size_t peer = 0; peer < services; ++peer) + s_send_seq (push, "ABC", SEQ_END); + for (size_t peer = 0; peer < services; ++peer) + s_send_seq (push, "DEF", SEQ_END); + + // Expect every PULL got one of each + for (size_t peer = 0; peer < services; ++peer) { + s_recv_seq (pulls [peer], "ABC", SEQ_END); + s_recv_seq (pulls [peer], "DEF", SEQ_END); + } + + close_zero_linger (push); + + for (size_t peer = 0; peer < services; ++peer) + close_zero_linger (pulls [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_pull_fair_queue_in (void *ctx) +{ + void *pull = zmq_socket (ctx, ZMQ_PULL); + assert (pull); + + int rc = zmq_bind (pull, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *pushs [services]; + for (size_t peer = 0; peer < services; ++peer) + { + pushs [peer] = zmq_socket (ctx, ZMQ_PUSH); + assert (pushs [peer]); + + rc = zmq_connect (pushs [peer], connect_address); + assert (rc == 0); + } + + // Wait for connections. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + int first_half = 0; + int second_half = 0; + + // Send 2N messages + for (size_t peer = 0; peer < services; ++peer) { + char *str = strdup("A"); + + str [0] += peer; + s_send_seq (pushs [peer], str, SEQ_END); + first_half += str [0]; + + str [0] += services; + s_send_seq (pushs [peer], str, SEQ_END); + second_half += str [0]; + + free (str); + } + + // Wait for data. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + + // Expect to pull one from each first + for (size_t peer = 0; peer < services; ++peer) { + rc = zmq_msg_recv (&msg, pull, 0); + assert (rc == 2); + const char *str = (const char *)zmq_msg_data (&msg); + first_half -= str [0]; + } + assert (first_half == 0); + + // And then get the second batch + for (size_t peer = 0; peer < services; ++peer) { + rc = zmq_msg_recv (&msg, pull, 0); + assert (rc == 2); + const char *str = (const char *)zmq_msg_data (&msg); + second_half -= str [0]; + } + assert (second_half == 0); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (pull); + + for (size_t peer = 0; peer < services; ++peer) + close_zero_linger (pushs [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_push_block_on_send_no_peers (void *ctx) +{ + void *sc = zmq_socket (ctx, ZMQ_PUSH); + assert (sc); + + int timeout = 100; + int rc = zmq_setsockopt (sc, ZMQ_SNDTIMEO, &timeout, sizeof (timeout)); + assert (rc == 0); + + rc = zmq_send (sc, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_send (sc, 0, 0, 0); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_close (sc); + assert (rc == 0); +} + +void test_destroy_queue_on_disconnect (void *ctx) +{ + void *A = zmq_socket (ctx, ZMQ_PUSH); + assert (A); + + int hwm = 1; + int rc = zmq_setsockopt (A, ZMQ_SNDHWM, &hwm, sizeof (hwm)); + assert (rc == 0); + + rc = zmq_bind (A, bind_address); + assert (rc == 0); + + void *B = zmq_socket (ctx, ZMQ_PULL); + assert (B); + + rc = zmq_setsockopt (B, ZMQ_RCVHWM, &hwm, sizeof (hwm)); + assert (rc == 0); + + rc = zmq_connect (B, connect_address); + assert (rc == 0); + + // Send two messages, one should be stuck in A's outgoing queue, the other + // arrives at B. + s_send_seq (A, "ABC", SEQ_END); + s_send_seq (A, "DEF", SEQ_END); + + // Both queues should now be full, indicated by A blocking on send. + rc = zmq_send (A, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_disconnect (B, connect_address); + assert (rc == 0); + + // Disconnect may take time and need command processing. + zmq_pollitem_t poller [2] = { { A, 0, 0, 0 }, { B, 0, 0, 0 } }; + rc = zmq_poll (poller, 2, 100); + assert (rc == 0); + rc = zmq_poll (poller, 2, 100); + assert (rc == 0); + + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + + // Can't receive old data on B. + rc = zmq_msg_recv (&msg, B, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + // Sending fails. + rc = zmq_send (A, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + // Reconnect B + rc = zmq_connect (B, connect_address); + assert (rc == 0); + + // Still can't receive old data on B. + rc = zmq_msg_recv (&msg, B, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + // two messages should be sendable before the queues are filled up. + s_send_seq (A, "ABC", SEQ_END); + s_send_seq (A, "DEF", SEQ_END); + + rc = zmq_send (A, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (A); + close_zero_linger (B); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + const char *binds [] = { "inproc://a", "tcp://127.0.0.1:5555" }; + const char *connects [] = { "inproc://a", "tcp://localhost:5555" }; + + for (int transport = 0; transport < 2; ++transport) { + bind_address = binds [transport]; + connect_address = connects [transport]; + + // PUSH: SHALL route outgoing messages to connected peers using a + // round-robin strategy. + test_push_round_robin_out (ctx); + + // PULL: SHALL receive incoming messages from its peers using a fair-queuing + // strategy. + test_pull_fair_queue_in (ctx); + + // PUSH: SHALL block on sending, or return a suitable error, when it has no + // available peers. + test_push_block_on_send_no_peers (ctx); + + // PUSH and PULL: SHALL create this queue when a peer connects to it. If + // this peer disconnects, the socket SHALL destroy its queue and SHALL + // discard any messages it contains. + // *** Test disabled until libzmq does this properly *** + // test_destroy_queue_on_disconnect (ctx); + } + + int rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_spec_rep.cpp zeromq3-4.0.4/tests/test_spec_rep.cpp --- zeromq3-3.2.4+dfsg/tests/test_spec_rep.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_spec_rep.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,155 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +const char *bind_address = 0; +const char *connect_address = 0; + +void test_fair_queue_in (void *ctx) +{ + void *rep = zmq_socket (ctx, ZMQ_REP); + assert (rep); + + int timeout = 100; + int rc = zmq_setsockopt (rep, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_bind (rep, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *reqs [services]; + for (size_t peer = 0; peer < services; ++peer) { + reqs [peer] = zmq_socket (ctx, ZMQ_REQ); + assert (reqs [peer]); + + rc = zmq_setsockopt (reqs [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (reqs [peer], connect_address); + assert (rc == 0); + } + + s_send_seq (reqs [0], "A", SEQ_END); + s_recv_seq (rep, "A", SEQ_END); + s_send_seq (rep, "A", SEQ_END); + s_recv_seq (reqs [0], "A", SEQ_END); + + s_send_seq (reqs [0], "A", SEQ_END); + s_recv_seq (rep, "A", SEQ_END); + s_send_seq (rep, "A", SEQ_END); + s_recv_seq (reqs [0], "A", SEQ_END); + + // TODO: following test fails randomly on some boxes +#ifdef SOMEONE_FIXES_THIS + // send N requests + for (size_t peer = 0; peer < services; ++peer) { + char * str = strdup("A"); + str [0] += peer; + s_send_seq (reqs [peer], str, SEQ_END); + free (str); + } + + // handle N requests + for (size_t peer = 0; peer < services; ++peer) { + char * str = strdup("A"); + str [0] += peer; + // Test fails here + s_recv_seq (rep, str, SEQ_END); + s_send_seq (rep, str, SEQ_END); + s_recv_seq (reqs [peer], str, SEQ_END); + free (str); + } +#endif + close_zero_linger (rep); + + for (size_t peer = 0; peer < services; ++peer) + close_zero_linger (reqs [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_envelope (void *ctx) +{ + void *rep = zmq_socket (ctx, ZMQ_REP); + assert (rep); + + int rc = zmq_bind (rep, bind_address); + assert (rc == 0); + + void *dealer = zmq_socket (ctx, ZMQ_DEALER); + assert (dealer); + + rc = zmq_connect (dealer, connect_address); + assert (rc == 0); + + // minimal envelope + s_send_seq (dealer, 0, "A", SEQ_END); + s_recv_seq (rep, "A", SEQ_END); + s_send_seq (rep, "A", SEQ_END); + s_recv_seq (dealer, 0, "A", SEQ_END); + + // big envelope + s_send_seq (dealer, "X", "Y", 0, "A", SEQ_END); + s_recv_seq (rep, "A", SEQ_END); + s_send_seq (rep, "A", SEQ_END); + s_recv_seq (dealer, "X", "Y", 0, "A", SEQ_END); + + close_zero_linger (rep); + close_zero_linger (dealer); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + const char *binds [] = { "inproc://a", "tcp://127.0.0.1:5555" }; + const char *connects [] = { "inproc://a", "tcp://localhost:5555" }; + + for (int transport = 0; transport < 2; ++transport) { + bind_address = binds [transport]; + connect_address = connects [transport]; + + // SHALL receive incoming messages from its peers using a fair-queuing + // strategy. + test_fair_queue_in (ctx); + + // For an incoming message: + // SHALL remove and store the address envelope, including the delimiter. + // SHALL pass the remaining data frames to its calling application. + // SHALL wait for a single reply message from its calling application. + // SHALL prepend the address envelope and delimiter. + // SHALL deliver this message back to the originating peer. + test_envelope (ctx); + } + + int rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_spec_req.cpp zeromq3-4.0.4/tests/test_spec_req.cpp --- zeromq3-3.2.4+dfsg/tests/test_spec_req.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_spec_req.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,253 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +const char *bind_address = 0; +const char *connect_address = 0; + +void test_round_robin_out (void *ctx) +{ + void *req = zmq_socket (ctx, ZMQ_REQ); + assert (req); + + int rc = zmq_bind (req, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *rep [services]; + for (size_t peer = 0; peer < services; peer++) { + rep [peer] = zmq_socket (ctx, ZMQ_REP); + assert (rep [peer]); + + int timeout = 100; + rc = zmq_setsockopt (rep [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_connect (rep [peer], connect_address); + assert (rc == 0); + } + // We have to give the connects time to finish otherwise the requests + // will not properly round-robin. We could alternatively connect the + // REQ sockets to the REP sockets. + msleep (SETTLE_TIME); + + // Send our peer-replies, and expect every REP it used once in order + for (size_t peer = 0; peer < services; peer++) { + s_send_seq (req, "ABC", SEQ_END); + s_recv_seq (rep [peer], "ABC", SEQ_END); + s_send_seq (rep [peer], "DEF", SEQ_END); + s_recv_seq (req, "DEF", SEQ_END); + } + + close_zero_linger (req); + for (size_t peer = 0; peer < services; peer++) + close_zero_linger (rep [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_req_only_listens_to_current_peer (void *ctx) +{ + void *req = zmq_socket (ctx, ZMQ_REQ); + assert (req); + + int rc = zmq_setsockopt(req, ZMQ_IDENTITY, "A", 2); + assert (rc == 0); + + rc = zmq_bind (req, bind_address); + assert (rc == 0); + + const size_t services = 3; + void *router [services]; + + for (size_t i = 0; i < services; ++i) { + router [i] = zmq_socket (ctx, ZMQ_ROUTER); + assert (router [i]); + + int timeout = 100; + rc = zmq_setsockopt (router [i], ZMQ_RCVTIMEO, &timeout, sizeof (timeout)); + assert (rc == 0); + + int enabled = 1; + rc = zmq_setsockopt (router [i], ZMQ_ROUTER_MANDATORY, &enabled, sizeof (enabled)); + assert (rc == 0); + + rc = zmq_connect (router [i], connect_address); + assert (rc == 0); + } + + // Wait for connects to finish. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + for (size_t i = 0; i < services; ++i) { + // There still is a race condition when a stale peer's message + // arrives at the REQ just after a request was sent to that peer. + // To avoid that happening in the test, sleep for a bit. + rc = zmq_poll (0, 0, 10); + assert (rc == 0); + + s_send_seq (req, "ABC", SEQ_END); + + // Receive on router i + s_recv_seq (router [i], "A", 0, "ABC", SEQ_END); + + // Send back replies on all routers + for (size_t j = 0; j < services; ++j) { + const char *replies [] = { "WRONG", "GOOD" }; + const char *reply = replies [i == j ? 1 : 0]; + s_send_seq (router [j], "A", 0, reply, SEQ_END); + } + + // Receive only the good reply + s_recv_seq (req, "GOOD", SEQ_END); + } + + close_zero_linger (req); + for (size_t i = 0; i < services; ++i) + close_zero_linger (router [i]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_req_message_format (void *ctx) +{ + void *req = zmq_socket (ctx, ZMQ_REQ); + assert (req); + + void *router = zmq_socket (ctx, ZMQ_ROUTER); + assert (router); + + int rc = zmq_bind (req, bind_address); + assert (rc == 0); + + rc = zmq_connect (router, connect_address); + assert (rc == 0); + + // Send a multi-part request. + s_send_seq (req, "ABC", "DEF", SEQ_END); + + zmq_msg_t msg; + zmq_msg_init (&msg); + + // Receive peer identity + rc = zmq_msg_recv (&msg, router, 0); + assert (rc != -1); + assert (zmq_msg_size (&msg) > 0); + zmq_msg_t peer_id_msg; + zmq_msg_init (&peer_id_msg); + zmq_msg_copy (&peer_id_msg, &msg); + + int more = 0; + size_t more_size = sizeof (more); + rc = zmq_getsockopt (router, ZMQ_RCVMORE, &more, &more_size); + assert (rc == 0); + assert (more); + + // Receive the rest. + s_recv_seq (router, 0, "ABC", "DEF", SEQ_END); + + // Send back a single-part reply. + rc = zmq_msg_send (&peer_id_msg, router, ZMQ_SNDMORE); + assert (rc != -1); + s_send_seq (router, 0, "GHI", SEQ_END); + + // Receive reply. + s_recv_seq (req, "GHI", SEQ_END); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + rc = zmq_msg_close (&peer_id_msg); + assert (rc == 0); + + close_zero_linger (req); + close_zero_linger (router); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_block_on_send_no_peers (void *ctx) +{ + void *sc = zmq_socket (ctx, ZMQ_REQ); + assert (sc); + + int timeout = 100; + int rc = zmq_setsockopt (sc, ZMQ_SNDTIMEO, &timeout, sizeof (timeout)); + assert (rc == 0); + + rc = zmq_send (sc, 0, 0, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_send (sc, 0, 0, 0); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_close (sc); + assert (rc == 0); +} + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + const char *binds [] = { "inproc://a", "tcp://127.0.0.1:5555" }; + const char *connects [] = { "inproc://a", "tcp://localhost:5555" }; + + for (int transport = 0; transport < 2; transport++) { + bind_address = binds [transport]; + connect_address = connects [transport]; + + // SHALL route outgoing messages to connected peers using a round-robin + // strategy. + test_round_robin_out (ctx); + + // The request and reply messages SHALL have this format on the wire: + // * A delimiter, consisting of an empty frame, added by the REQ socket. + // * One or more data frames, comprising the message visible to the + // application. + test_req_message_format (ctx); + + // SHALL block on sending, or return a suitable error, when it has no + // connected peers. + test_block_on_send_no_peers (ctx); + + // SHALL accept an incoming message only from the last peer that it sent a + // request to. + // SHALL discard silently any messages received from other peers. + // PH: this test is still failing; disabled for now to allow build to + // complete. + // test_req_only_listens_to_current_peer (ctx); + } + + int rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_spec_router.cpp zeromq3-4.0.4/tests/test_spec_router.cpp --- zeromq3-3.2.4+dfsg/tests/test_spec_router.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_spec_router.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,204 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +const char *bind_address = 0; +const char *connect_address = 0; + +void test_fair_queue_in (void *ctx) +{ + void *receiver = zmq_socket (ctx, ZMQ_ROUTER); + assert (receiver); + + int timeout = 100; + int rc = zmq_setsockopt (receiver, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + rc = zmq_bind (receiver, bind_address); + assert (rc == 0); + + const size_t services = 5; + void *senders [services]; + for (size_t peer = 0; peer < services; ++peer) { + senders [peer] = zmq_socket (ctx, ZMQ_DEALER); + assert (senders [peer]); + + rc = zmq_setsockopt (senders [peer], ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + + char *str = strdup("A"); + str [0] += peer; + rc = zmq_setsockopt (senders [peer], ZMQ_IDENTITY, str, 2); + assert (rc == 0); + free (str); + + rc = zmq_connect (senders [peer], connect_address); + assert (rc == 0); + } + + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + + s_send_seq (senders [0], "M", SEQ_END); + s_recv_seq (receiver, "A", "M", SEQ_END); + + s_send_seq (senders [0], "M", SEQ_END); + s_recv_seq (receiver, "A", "M", SEQ_END); + + int sum = 0; + + // send N requests + for (size_t peer = 0; peer < services; ++peer) { + s_send_seq (senders [peer], "M", SEQ_END); + sum += 'A' + peer; + } + + assert (sum == services * 'A' + services * (services - 1) / 2); + + // handle N requests + for (size_t peer = 0; peer < services; ++peer) { + rc = zmq_msg_recv (&msg, receiver, 0); + assert (rc == 2); + const char *id = (const char *)zmq_msg_data (&msg); + sum -= id [0]; + + s_recv_seq (receiver, "M", SEQ_END); + } + + assert (sum == 0); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (receiver); + + for (size_t peer = 0; peer < services; ++peer) + close_zero_linger (senders [peer]); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + +void test_destroy_queue_on_disconnect (void *ctx) +{ + void *A = zmq_socket (ctx, ZMQ_ROUTER); + assert (A); + + int enabled = 1; + int rc = zmq_setsockopt (A, ZMQ_ROUTER_MANDATORY, &enabled, sizeof (enabled)); + assert (rc == 0); + + rc = zmq_bind (A, bind_address); + assert (rc == 0); + + void *B = zmq_socket (ctx, ZMQ_DEALER); + assert (B); + + rc = zmq_setsockopt (B, ZMQ_IDENTITY, "B", 2); + assert (rc == 0); + + rc = zmq_connect (B, connect_address); + assert (rc == 0); + + // Wait for connection. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); + + // Send a message in both directions + s_send_seq (A, "B", "ABC", SEQ_END); + s_send_seq (B, "DEF", SEQ_END); + + rc = zmq_disconnect (B, connect_address); + assert (rc == 0); + + // Disconnect may take time and need command processing. + zmq_pollitem_t poller [2] = { { A, 0, 0, 0 }, { B, 0, 0, 0 } }; + rc = zmq_poll (poller, 2, 100); + assert (rc == 0); + rc = zmq_poll (poller, 2, 100); + assert (rc == 0); + + // No messages should be available, sending should fail. + zmq_msg_t msg; + zmq_msg_init (&msg); + + rc = zmq_send (A, "B", 2, ZMQ_SNDMORE | ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EHOSTUNREACH); + + rc = zmq_msg_recv (&msg, A, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + // After a reconnect of B, the messages should still be gone + rc = zmq_connect (B, connect_address); + assert (rc == 0); + + rc = zmq_msg_recv (&msg, A, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_msg_recv (&msg, B, ZMQ_DONTWAIT); + assert (rc == -1); + assert (errno == EAGAIN); + + rc = zmq_msg_close (&msg); + assert (rc == 0); + + close_zero_linger (A); + close_zero_linger (B); + + // Wait for disconnects. + rc = zmq_poll (0, 0, 100); + assert (rc == 0); +} + + +int main (void) +{ + setup_test_environment(); + void *ctx = zmq_ctx_new (); + assert (ctx); + + const char *binds [] = { "inproc://a", "tcp://127.0.0.1:5555" }; + const char *connects [] = { "inproc://a", "tcp://localhost:5555" }; + + for (int transport = 0; transport < 2; ++transport) { + bind_address = binds [transport]; + connect_address = connects [transport]; + + // SHALL receive incoming messages from its peers using a fair-queuing + // strategy. + test_fair_queue_in (ctx); + + // SHALL create a double queue when a peer connects to it. If this peer + // disconnects, the ROUTER socket SHALL destroy its double queue and SHALL + // discard any messages it contains. + // *** Test disabled until libzmq does this properly *** + // test_destroy_queue_on_disconnect (ctx); + } + + int rc = zmq_ctx_term (ctx); + assert (rc == 0); + + return 0 ; +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_stream.cpp zeromq3-4.0.4/tests/test_stream.cpp --- zeromq3-3.2.4+dfsg/tests/test_stream.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_stream.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,227 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +// ZMTP protocol greeting structure + +typedef unsigned char byte; +typedef struct { + byte signature [10]; // 0xFF 8*0x00 0x7F + byte version [2]; // 0x03 0x00 for ZMTP/3.0 + byte mechanism [20]; // "NULL" + byte as_server; + byte filler [31]; +} zmtp_greeting_t; + +#define ZMTP_DEALER 5 // Socket type constants + +// This is a greeting matching what 0MQ will send us; note the +// 8-byte size is set to 1 for backwards compatibility + +static zmtp_greeting_t greeting + = { { 0xFF, 0, 0, 0, 0, 0, 0, 0, 1, 0x7F }, { 3, 0 }, { 'N', 'U', 'L', 'L'} }; + +static void +test_stream_to_dealer (void) +{ + int rc; + + // Set up our context and sockets + void *ctx = zmq_ctx_new (); + assert (ctx); + + // We'll be using this socket in raw mode + void *stream = zmq_socket (ctx, ZMQ_STREAM); + assert (stream); + + int zero = 0; + rc = zmq_setsockopt (stream, ZMQ_LINGER, &zero, sizeof (zero)); + assert (rc == 0); + rc = zmq_bind (stream, "tcp://127.0.0.1:5556"); + assert (rc == 0); + + // We'll be using this socket as the other peer + void *dealer = zmq_socket (ctx, ZMQ_DEALER); + assert (dealer); + rc = zmq_setsockopt (dealer, ZMQ_LINGER, &zero, sizeof (zero)); + assert (rc == 0); + rc = zmq_connect (dealer, "tcp://localhost:5556"); + + // Send a message on the dealer socket + rc = zmq_send (dealer, "Hello", 5, 0); + assert (rc == 5); + + // First frame is identity + zmq_msg_t identity; + rc = zmq_msg_init (&identity); + assert (rc == 0); + rc = zmq_msg_recv (&identity, stream, 0); + assert (rc > 0); + assert (zmq_msg_more (&identity)); + + // Second frame is greeting signature + byte buffer [255]; + rc = zmq_recv (stream, buffer, 255, 0); + assert (rc == 10); + assert (memcmp (buffer, greeting.signature, 10) == 0); + + // Send our own protocol greeting + rc = zmq_msg_send (&identity, stream, ZMQ_SNDMORE); + assert (rc > 0); + rc = zmq_send (stream, &greeting, sizeof (greeting), 0); + assert (rc == sizeof (greeting)); + + // Now we expect the data from the DEALER socket + // We want the rest of greeting along with the Ready command + int bytes_read = 0; + while (bytes_read < 97) { + // First frame is the identity of the connection (each time) + rc = zmq_msg_recv (&identity, stream, 0); + assert (rc > 0); + assert (zmq_msg_more (&identity)); + // Second frame contains the next chunk of data + rc = zmq_recv (stream, buffer + bytes_read, 255 - bytes_read, 0); + assert (rc >= 0); + bytes_read += rc; + } + + // First two bytes are major and minor version numbers. + assert (buffer [0] == 3); // ZMTP/3.0 + assert (buffer [1] == 0); + + // Mechanism is "NULL" + assert (memcmp (buffer + 2, "NULL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20) == 0); + assert (memcmp (buffer + 54, "\4\51\5READY", 8) == 0); + assert (memcmp (buffer + 62, "\13Socket-Type\0\0\0\6DEALER", 22) == 0); + assert (memcmp (buffer + 84, "\10Identity\0\0\0\0", 13) == 0); + + // Announce we are ready + memcpy (buffer, "\4\51\5READY", 8); + memcpy (buffer + 8, "\13Socket-Type\0\0\0\6ROUTER", 22); + memcpy (buffer + 30, "\10Identity\0\0\0\0", 13); + + // Send Ready command + rc = zmq_msg_send (&identity, stream, ZMQ_SNDMORE); + assert (rc > 0); + rc = zmq_send (stream, buffer, 43, 0); + assert (rc == 43); + + // Now we expect the data from the DEALER socket + // First frame is, again, the identity of the connection + rc = zmq_msg_recv (&identity, stream, 0); + assert (rc > 0); + assert (zmq_msg_more (&identity)); + + // Third frame contains Hello message from DEALER + rc = zmq_recv (stream, buffer, sizeof buffer, 0); + assert (rc == 7); + + // Then we have a 5-byte message "Hello" + assert (buffer [0] == 0); // Flags = 0 + assert (buffer [1] == 5); // Size = 5 + assert (memcmp (buffer + 2, "Hello", 5) == 0); + + // Send "World" back to DEALER + rc = zmq_msg_send (&identity, stream, ZMQ_SNDMORE); + assert (rc > 0); + byte world [] = { 0, 5, 'W', 'o', 'r', 'l', 'd' }; + rc = zmq_send (stream, world, sizeof (world), 0); + assert (rc == sizeof (world)); + + // Expect response on DEALER socket + rc = zmq_recv (dealer, buffer, 255, 0); + assert (rc == 5); + assert (memcmp (buffer, "World", 5) == 0); + + rc = zmq_close (dealer); + assert (rc == 0); + + rc = zmq_close (stream); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + + +static void +test_stream_to_stream (void) +{ + int rc; + // Set-up our context and sockets + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *server = zmq_socket (ctx, ZMQ_STREAM); + assert (server); + rc = zmq_bind (server, "tcp://127.0.0.1:9080"); + assert (rc == 0); + + void *client = zmq_socket (ctx, ZMQ_STREAM); + assert (client); + rc = zmq_connect (client, "tcp://localhost:9080"); + assert (rc == 0); + // It would be less surprising to get an empty message instead + // of having to fetch the identity like this [PH 2013/06/27] + uint8_t id [256]; + size_t id_size = 256; + rc = zmq_getsockopt (client, ZMQ_IDENTITY, id, &id_size); + assert (rc == 0); + + // Sent HTTP request on client socket + // First frame is server identity + rc = zmq_send (client, id, id_size, ZMQ_SNDMORE); + assert (rc == (int) id_size); + // Second frame is HTTP GET request + rc = zmq_send (client, "GET /\n\n", 7, 0); + assert (rc == 7); + + // Get HTTP request; ID frame and then request + id_size = zmq_recv (server, id, 256, 0); + assert (id_size > 0); + uint8_t buffer [256]; + rc = zmq_recv (server, buffer, 256, 0); + assert (rc > 0); + assert (memcmp (buffer, "GET /\n\n", 7) == 0); + + // Send reply back to client + char http_response [] = + "HTTP/1.0 200 OK\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + "Hello, World!"; + zmq_send (server, id, id_size, ZMQ_SNDMORE); + zmq_send (server, http_response, sizeof (http_response), 0); + + // Get reply at client and check that it's complete + id_size = zmq_recv (client, id, 256, 0); + assert (id_size > 0); + rc = zmq_recv (client, buffer, 256, 0); + assert (rc == sizeof (http_response)); + assert (memcmp (buffer, http_response, sizeof (http_response)) == 0); +} + + +int main (void) +{ + setup_test_environment(); + test_stream_to_dealer (); + test_stream_to_stream (); +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_sub_forward.cpp zeromq3-4.0.4/tests/test_sub_forward.cpp --- zeromq3-3.2.4+dfsg/tests/test_sub_forward.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_sub_forward.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,21 +17,15 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include "../include/zmq_utils.h" -#include - -#undef NDEBUG -#include +#include "testutil.hpp" int main (void) { - fprintf (stderr, "test_sub_forward running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); - // First, create an intermediate device. + // First, create an intermediate device void *xpub = zmq_socket (ctx, ZMQ_XPUB); assert (xpub); int rc = zmq_bind (xpub, "tcp://127.0.0.1:5560"); @@ -43,13 +35,13 @@ rc = zmq_bind (xsub, "tcp://127.0.0.1:5561"); assert (rc == 0); - // Create a publisher. + // Create a publisher void *pub = zmq_socket (ctx, ZMQ_PUB); assert (pub); rc = zmq_connect (pub, "tcp://127.0.0.1:5561"); assert (rc == 0); - // Create a subscriber. + // Create a subscriber void *sub = zmq_socket (ctx, ZMQ_SUB); assert (sub); rc = zmq_connect (sub, "tcp://127.0.0.1:5560"); @@ -59,27 +51,27 @@ rc = zmq_setsockopt (sub, ZMQ_SUBSCRIBE, "", 0); assert (rc == 0); - // Pass the subscription upstream through the device. + // Pass the subscription upstream through the device char buff [32]; rc = zmq_recv (xpub, buff, sizeof (buff), 0); assert (rc >= 0); rc = zmq_send (xsub, buff, rc, 0); assert (rc >= 0); - // Wait a bit till the subscription gets to the publisher. - zmq_sleep (1); + // Wait a bit till the subscription gets to the publisher + msleep (SETTLE_TIME); - // Send an empty message. + // Send an empty message rc = zmq_send (pub, NULL, 0, 0); assert (rc == 0); - // Pass the message downstream through the device. + // Pass the message downstream through the device rc = zmq_recv (xsub, buff, sizeof (buff), 0); assert (rc >= 0); rc = zmq_send (xpub, buff, rc, 0); assert (rc >= 0); - // Receive the message in the subscriber. + // Receive the message in the subscriber rc = zmq_recv (sub, buff, sizeof (buff), 0); assert (rc == 0); @@ -92,7 +84,7 @@ assert (rc == 0); rc = zmq_close (sub); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; diff -Nru zeromq3-3.2.4+dfsg/tests/test_system.cpp zeromq3-4.0.4/tests/test_system.cpp --- zeromq3-3.2.4+dfsg/tests/test_system.cpp 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tests/test_system.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,82 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include "testutil.hpp" + +#if defined (ZMQ_HAVE_WINDOWS) +# include +# include +#else +# include +# include +# include +#endif + +#if defined (ZMQ_HAVE_WINDOWS) + +void initialise_network() +{ + WSADATA info; + if (WSAStartup(MAKEWORD(2,0), &info) != 0) + { + throw std::runtime_error("Could not start WSA"); + } +} + +int close(int fd) +{ + return closesocket(fd); +} + +#else + +void initialise_network() +{ +} + +#endif + +// This test case stresses the system to shake out known configuration +// problems. We're not using libzmq here but direct system calls. Note +// that code may need wrapping to be properly portable. + +int main (void) +{ + initialise_network(); + + // Check that we can create 1,000 sockets + int handle [1000]; + int count; + for (count = 0; count < 1000; count++) { + handle [count] = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (handle [count] == -1) { + printf ("W: Only able to create %d sockets on this box\n", count); + printf ("I: Tune your system to increase maximum allowed file handles\n"); +#if defined (ZMQ_HAVE_OSX) + printf ("I: On OS/X, run 'ulimit -n 1200' in bash"); +#elif defined (ZMQ_HAVE_LINUX) + printf ("I: On Linux, run 'ulimit -n 1200' in bash"); +#endif + return -1; + } + } + // Release the socket handles + while (count) + close (handle [count--]); +} diff -Nru zeromq3-3.2.4+dfsg/tests/test_term_endpoint.cpp zeromq3-4.0.4/tests/test_term_endpoint.cpp --- zeromq3-3.2.4+dfsg/tests/test_term_endpoint.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_term_endpoint.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2011 iMatix Corporation - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,24 +17,17 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include "../include/zmq_utils.h" -#include -#include - -#undef NDEBUG -#include +#include "testutil.hpp" int main (void) { + setup_test_environment(); int rc; char buf[32]; const char *ep = "tcp://127.0.0.1:5560"; - fprintf (stderr, "unbind endpoint test running...\n"); - // Create infrastructure. - void *ctx = zmq_init (1); + void *ctx = zmq_ctx_new (); assert (ctx); void *push = zmq_socket (ctx, ZMQ_PUSH); assert (push); @@ -47,38 +38,33 @@ rc = zmq_connect (pull, ep); assert (rc == 0); - // Pass one message through to ensure the connection is established. + // Pass one message through to ensure the connection is established rc = zmq_send (push, "ABC", 3, 0); assert (rc == 3); rc = zmq_recv (pull, buf, sizeof (buf), 0); assert (rc == 3); - // Unbind the lisnening endpoint + // Unbind the listening endpoint rc = zmq_unbind (push, ep); assert (rc == 0); - // Let events some time - zmq_sleep (1); + // Allow unbind to settle + msleep (SETTLE_TIME); - // Check that sending would block (there's no outbound connection). + // Check that sending would block (there's no outbound connection) rc = zmq_send (push, "ABC", 3, ZMQ_DONTWAIT); assert (rc == -1 && zmq_errno () == EAGAIN); - // Clean up. + // Clean up rc = zmq_close (pull); assert (rc == 0); rc = zmq_close (push); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); - - // Now the other way round. - fprintf (stderr, "disconnect endpoint test running...\n"); - - - // Create infrastructure. - ctx = zmq_init (1); + // Create infrastructure + ctx = zmq_ctx_new (); assert (ctx); push = zmq_socket (ctx, ZMQ_PUSH); assert (push); @@ -95,12 +81,12 @@ rc = zmq_recv (pull, buf, sizeof (buf), 0); assert (rc == 3); - // Disconnect the bound endpoint + // Disconnect the bound endpoint rc = zmq_disconnect (push, ep); assert (rc == 0); - // Let events some time - zmq_sleep (1); + // Allow disconnect to settle + msleep (SETTLE_TIME); // Check that sending would block (there's no inbound connections). rc = zmq_send (push, "ABC", 3, ZMQ_DONTWAIT); @@ -111,7 +97,7 @@ assert (rc == 0); rc = zmq_close (push); assert (rc == 0); - rc = zmq_term (ctx); + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0; diff -Nru zeromq3-3.2.4+dfsg/tests/test_timeo.cpp zeromq3-4.0.4/tests/test_timeo.cpp --- zeromq3-3.2.4+dfsg/tests/test_timeo.cpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/test_timeo.cpp 2013-11-13 17:57:50.000000000 +0000 @@ -1,6 +1,5 @@ /* - Copyright (c) 2010-2011 250bpm s.r.o. - Copyright (c) 2010-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -18,102 +17,59 @@ along with this program. If not, see . */ -#include "../include/zmq.h" -#include "../include/zmq_utils.h" -#include -#include -#include - -#undef NDEBUG -#include - -extern "C" -{ - void *worker(void *ctx) - { - // Worker thread connects after delay of 1 second. Then it waits - // for 1 more second, so that async connect has time to succeed. - zmq_sleep (1); - void *sc = zmq_socket (ctx, ZMQ_PUSH); - assert (sc); - int rc = zmq_connect (sc, "inproc://timeout_test"); - assert (rc == 0); - zmq_sleep (1); - rc = zmq_close (sc); - assert (rc == 0); - return NULL; - } -} +#include "testutil.hpp" int main (void) { - fprintf (stderr, "test_timeo running...\n"); - - void *ctx = zmq_init (1); + setup_test_environment(); + void *ctx = zmq_ctx_new (); assert (ctx); - // Create a disconnected socket. - void *sb = zmq_socket (ctx, ZMQ_PULL); - assert (sb); - int rc = zmq_bind (sb, "inproc://timeout_test"); + void *frontend = zmq_socket (ctx, ZMQ_DEALER); + assert (frontend); + int rc = zmq_bind (frontend, "inproc://timeout_test"); assert (rc == 0); - // Check whether non-blocking recv returns immediately. - char buf [] = "12345678ABCDEFGH12345678abcdefgh"; - rc = zmq_recv (sb, buf, 32, ZMQ_DONTWAIT); + // Receive on disconnected socket returns immediately + char buffer [32]; + rc = zmq_recv (frontend, buffer, 32, ZMQ_DONTWAIT); assert (rc == -1); assert (zmq_errno() == EAGAIN); + + // Check whether receive timeout is honored + int timeout = 250; + rc = zmq_setsockopt (frontend, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); - // Check whether recv timeout is honoured. - int timeout = 500; - size_t timeout_size = sizeof timeout; - rc = zmq_setsockopt(sb, ZMQ_RCVTIMEO, &timeout, timeout_size); - assert (rc == 0); - void *watch = zmq_stopwatch_start (); - rc = zmq_recv (sb, buf, 32, 0); + void* stopwatch = zmq_stopwatch_start(); + rc = zmq_recv (frontend, buffer, 32, 0); assert (rc == -1); assert (zmq_errno () == EAGAIN); - unsigned long elapsed = zmq_stopwatch_stop (watch); - assert (elapsed > 440000 && elapsed < 550000); + unsigned int elapsed = zmq_stopwatch_stop(stopwatch) / 1000; + assert (elapsed > 200 && elapsed < 300); - // Check whether connection during the wait doesn't distort the timeout. - timeout = 2000; - rc = zmq_setsockopt(sb, ZMQ_RCVTIMEO, &timeout, timeout_size); + // Check that normal message flow works as expected + void *backend = zmq_socket (ctx, ZMQ_DEALER); + assert (backend); + rc = zmq_connect (backend, "inproc://timeout_test"); assert (rc == 0); - pthread_t thread; - rc = pthread_create (&thread, NULL, worker, ctx); - assert (rc == 0); - watch = zmq_stopwatch_start (); - rc = zmq_recv (sb, buf, 32, 0); - assert (rc == -1); - assert (zmq_errno () == EAGAIN); - elapsed = zmq_stopwatch_stop (watch); - assert (elapsed > 1900000 && elapsed < 2100000); - rc = pthread_join (thread, NULL); + rc = zmq_setsockopt (backend, ZMQ_SNDTIMEO, &timeout, sizeof (int)); assert (rc == 0); - // Check that timeouts don't break normal message transfer. - void *sc = zmq_socket (ctx, ZMQ_PUSH); - assert (sc); - rc = zmq_setsockopt(sb, ZMQ_RCVTIMEO, &timeout, timeout_size); - assert (rc == 0); - rc = zmq_setsockopt(sb, ZMQ_SNDTIMEO, &timeout, timeout_size); - assert (rc == 0); - rc = zmq_connect (sc, "inproc://timeout_test"); - assert (rc == 0); - rc = zmq_send (sc, buf, 32, 0); - assert (rc == 32); - rc = zmq_recv (sb, buf, 32, 0); - assert (rc == 32); + rc = zmq_send (backend, "Hello", 5, 0); + assert (rc == 5); + rc = zmq_recv (frontend, buffer, 32, 0); + assert (rc == 5); - // Clean-up. - rc = zmq_close (sc); + // Clean-up + rc = zmq_close (backend); assert (rc == 0); - rc = zmq_close (sb); + + rc = zmq_close (frontend); assert (rc == 0); - rc = zmq_term (ctx); + + rc = zmq_ctx_term (ctx); assert (rc == 0); return 0 ; } - diff -Nru zeromq3-3.2.4+dfsg/tests/testutil.hpp zeromq3-4.0.4/tests/testutil.hpp --- zeromq3-3.2.4+dfsg/tests/testutil.hpp 2012-10-15 03:58:09.000000000 +0000 +++ zeromq3-4.0.4/tests/testutil.hpp 2014-03-10 21:20:14.000000000 +0000 @@ -1,7 +1,5 @@ /* - Copyright (c) 2009-2011 250bpm s.r.o. - Copyright (c) 2007-2011 iMatix Corporation - Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file This file is part of 0MQ. @@ -19,59 +17,263 @@ along with this program. If not, see . */ -#ifndef __ZMQ_TEST_TESTUTIL_HPP_INCLUDED__ -#define __ZMQ_TEST_TESTUTIL_HPP_INCLUDED__ +#ifndef __TESTUTIL_HPP_INCLUDED__ +#define __TESTUTIL_HPP_INCLUDED__ #include "../include/zmq.h" -#include +#include "../include/zmq_utils.h" +#include "platform.hpp" + +// This defines the settle time used in tests; raise this if we +// get test failures on slower systems due to binds/connects not +// settled. Tested to work reliably at 1 msec on a fast PC. +#define SETTLE_TIME 10 // In msec #undef NDEBUG +#include #include +#include +#include + +#if defined _WIN32 +# if defined _MSC_VER +# include +# pragma warning(disable:4996) +# endif +#else +# include +# include +# include +# include +#endif + +// Bounce a message from client to server and back +// For REQ/REP or DEALER/DEALER pairs only -inline void bounce (void *sb, void *sc) +void +bounce (void *server, void *client) { const char *content = "12345678ABCDEFGH12345678abcdefgh"; - // Send the message. - int rc = zmq_send (sc, content, 32, ZMQ_SNDMORE); + // Send message from client to server + int rc = zmq_send (client, content, 32, ZMQ_SNDMORE); assert (rc == 32); - rc = zmq_send (sc, content, 32, 0); + rc = zmq_send (client, content, 32, 0); assert (rc == 32); - // Bounce the message back. - char buf1 [32]; - rc = zmq_recv (sb, buf1, 32, 0); + // Receive message at server side + char buffer [32]; + rc = zmq_recv (server, buffer, 32, 0); assert (rc == 32); + // Check that message is still the same + assert (memcmp (buffer, content, 32) == 0); int rcvmore; size_t sz = sizeof (rcvmore); - rc = zmq_getsockopt (sb, ZMQ_RCVMORE, &rcvmore, &sz); + rc = zmq_getsockopt (server, ZMQ_RCVMORE, &rcvmore, &sz); assert (rc == 0); assert (rcvmore); - rc = zmq_recv (sb, buf1, 32, 0); + rc = zmq_recv (server, buffer, 32, 0); assert (rc == 32); - rc = zmq_getsockopt (sb, ZMQ_RCVMORE, &rcvmore, &sz); + // Check that message is still the same + assert (memcmp (buffer, content, 32) == 0); + rc = zmq_getsockopt (server, ZMQ_RCVMORE, &rcvmore, &sz); assert (rc == 0); assert (!rcvmore); - rc = zmq_send (sb, buf1, 32, ZMQ_SNDMORE); + + // Send two parts back to client + rc = zmq_send (server, buffer, 32, ZMQ_SNDMORE); assert (rc == 32); - rc = zmq_send (sb, buf1, 32, 0); + rc = zmq_send (server, buffer, 32, 0); assert (rc == 32); - // Receive the bounced message. - char buf2 [32]; - rc = zmq_recv (sc, buf2, 32, 0); + // Receive the two parts at the client side + rc = zmq_recv (client, buffer, 32, 0); assert (rc == 32); - rc = zmq_getsockopt (sc, ZMQ_RCVMORE, &rcvmore, &sz); + // Check that message is still the same + assert (memcmp (buffer, content, 32) == 0); + rc = zmq_getsockopt (client, ZMQ_RCVMORE, &rcvmore, &sz); assert (rc == 0); assert (rcvmore); - rc = zmq_recv (sc, buf2, 32, 0); + rc = zmq_recv (client, buffer, 32, 0); assert (rc == 32); - rc = zmq_getsockopt (sc, ZMQ_RCVMORE, &rcvmore, &sz); + // Check that message is still the same + assert (memcmp (buffer, content, 32) == 0); + rc = zmq_getsockopt (client, ZMQ_RCVMORE, &rcvmore, &sz); assert (rc == 0); assert (!rcvmore); +} + +// Same as bounce, but expect messages to never arrive +// for security or subscriber reasons. - // Check whether the message is still the same. - assert (memcmp (buf2, content, 32) == 0); +void +expect_bounce_fail (void *server, void *client) +{ + const char *content = "12345678ABCDEFGH12345678abcdefgh"; + char buffer [32]; + + // Send message from client to server + int rc = zmq_send (client, content, 32, ZMQ_SNDMORE); + assert (rc == 32); + rc = zmq_send (client, content, 32, 0); + assert (rc == 32); + + // Receive message at server side (should not succeed) + int timeout = 150; + rc = zmq_setsockopt (server, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + rc = zmq_recv (server, buffer, 32, 0); + assert (rc == -1); + assert (zmq_errno () == EAGAIN); + + // Send message from server to client to test other direction + rc = zmq_send (server, content, 32, ZMQ_SNDMORE); + assert (rc == 32); + rc = zmq_send (server, content, 32, 0); + assert (rc == 32); + + // Receive message at client side (should not succeed) + rc = zmq_setsockopt (client, ZMQ_RCVTIMEO, &timeout, sizeof (int)); + assert (rc == 0); + rc = zmq_recv (client, buffer, 32, 0); + assert (rc == -1); + assert (zmq_errno () == EAGAIN); +} + +// Receive 0MQ string from socket and convert into C string +// Caller must free returned string. Returns NULL if the context +// is being terminated. +char * +s_recv (void *socket) { + char buffer [256]; + int size = zmq_recv (socket, buffer, 255, 0); + if (size == -1) + return NULL; + if (size > 255) + size = 255; + buffer [size] = 0; + return strdup (buffer); +} + +// Convert C string to 0MQ string and send to socket +int +s_send (void *socket, const char *string) { + int size = zmq_send (socket, string, strlen (string), 0); + return size; } +// Sends string as 0MQ string, as multipart non-terminal +int +s_sendmore (void *socket, const char *string) { + int size = zmq_send (socket, string, strlen (string), ZMQ_SNDMORE); + return size; +} + +#define streq(s1,s2) (!strcmp ((s1), (s2))) +#define strneq(s1,s2) (strcmp ((s1), (s2))) + +const char *SEQ_END = (const char *) 1; + +// Sends a message composed of frames that are C strings or null frames. +// The list must be terminated by SEQ_END. +// Example: s_send_seq (req, "ABC", 0, "DEF", SEQ_END); +void s_send_seq (void *socket, ...) +{ + va_list ap; + va_start (ap, socket); + const char * data = va_arg (ap, const char *); + while (true) + { + const char * prev = data; + data = va_arg (ap, const char *); + bool end = data == SEQ_END; + + if (!prev) { + int rc = zmq_send (socket, 0, 0, end ? 0 : ZMQ_SNDMORE); + assert (rc != -1); + } + else { + int rc = zmq_send (socket, prev, strlen (prev)+1, end ? 0 : ZMQ_SNDMORE); + assert (rc != -1); + } + if (end) + break; + } + va_end (ap); +} + +// Receives message a number of frames long and checks that the frames have +// the given data which can be either C strings or 0 for a null frame. +// The list must be terminated by SEQ_END. +// Example: s_recv_seq (rep, "ABC", 0, "DEF", SEQ_END); +void s_recv_seq (void *socket, ...) +{ + zmq_msg_t msg; + zmq_msg_init (&msg); + + int more; + size_t more_size = sizeof(more); + + va_list ap; + va_start (ap, socket); + const char * data = va_arg (ap, const char *); + + while (true) { + int rc = zmq_msg_recv (&msg, socket, 0); + assert (rc != -1); + + if (!data) + assert (zmq_msg_size (&msg) == 0); + else + assert (strcmp (data, (const char *)zmq_msg_data (&msg)) == 0); + + data = va_arg (ap, const char *); + bool end = data == SEQ_END; + + rc = zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size); + assert (rc == 0); + + assert (!more == end); + if (end) + break; + } + va_end (ap); + + zmq_msg_close (&msg); +} + + +// Sets a zero linger period on a socket and closes it. +void close_zero_linger (void *socket) +{ + int linger = 0; + int rc = zmq_setsockopt (socket, ZMQ_LINGER, &linger, sizeof(linger)); + assert (rc == 0 || errno == ETERM); + rc = zmq_close (socket); + assert (rc == 0); +} + +void setup_test_environment() +{ +#if defined _WIN32 +# if defined _MSC_VER + _set_abort_behavior( 0, _WRITE_ABORT_MSG); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR ); +# endif +#endif +} + +// Provide portable millisecond sleep +// http://www.cplusplus.com/forum/unices/60161/ http://en.cppreference.com/w/cpp/thread/sleep_for +void msleep (int milliseconds) +{ +#ifdef ZMQ_HAVE_WINDOWS + Sleep (milliseconds); +#else + usleep (static_cast (milliseconds) * 1000); +#endif +} + + #endif diff -Nru zeromq3-3.2.4+dfsg/tools/curve_keygen.c zeromq3-4.0.4/tools/curve_keygen.c --- zeromq3-3.2.4+dfsg/tools/curve_keygen.c 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tools/curve_keygen.c 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,58 @@ +/* + Copyright (c) 2007-2013 Contributors as noted in the AUTHORS file + + This file is part of 0MQ. + + This tool generates a CurveZMQ keypair, as two printable strings you can + use in configuration files or source code. The encoding uses Z85, which + is a base-85 format that is described in 0MQ RFC 32, and which has an + implementation in the z85_codec.h source used by this tool. The keypair + always works with the secret key held by one party and the public key + distributed (securely!) to peers wishing to connect to it. + + 0MQ is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + 0MQ is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include + +int main (void) +{ + puts ("This tool generates a CurveZMQ keypair, as two printable strings you can"); + puts ("use in configuration files or source code. The encoding uses Z85, which"); + puts ("is a base-85 format that is described in 0MQ RFC 32, and which has an"); + puts ("implementation in the z85_codec.h source used by this tool. The keypair"); + puts ("always works with the secret key held by one party and the public key"); + puts ("distributed (securely!) to peers wishing to connect to it."); + + char public_key [41]; + char secret_key [41]; + int rc = zmq_curve_keypair (public_key, secret_key); + if (rc != 0) { + if (zmq_errno () == ENOTSUP) { + puts ("To use curve_keygen, please install libsodium and then rebuild libzmq."); + } + exit (1); + } + + puts ("\n== CURVE PUBLIC KEY =="); + puts (public_key); + + puts ("\n== CURVE SECRET KEY =="); + puts (secret_key); + + exit (0); +} diff -Nru zeromq3-3.2.4+dfsg/tools/Makefile.am zeromq3-4.0.4/tools/Makefile.am --- zeromq3-3.2.4+dfsg/tools/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tools/Makefile.am 2013-11-13 17:57:50.000000000 +0000 @@ -0,0 +1,9 @@ +EXTRA_DIST = curve_keygen.c + +INCLUDES = -I$(top_srcdir)/include + +bin_PROGRAMS = curve_keygen + +curve_keygen_LDADD = $(top_builddir)/src/libzmq.la +curve_keygen_SOURCES = curve_keygen.c + diff -Nru zeromq3-3.2.4+dfsg/tools/Makefile.in zeromq3-4.0.4/tools/Makefile.in --- zeromq3-3.2.4+dfsg/tools/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ zeromq3-4.0.4/tools/Makefile.in 2014-03-10 21:42:42.000000000 +0000 @@ -0,0 +1,557 @@ +# Makefile.in generated by automake 1.11.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = curve_keygen$(EXEEXT) +subdir = tools +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/config/libtool.m4 \ + $(top_srcdir)/config/ltoptions.m4 \ + $(top_srcdir)/config/ltsugar.m4 \ + $(top_srcdir)/config/ltversion.m4 \ + $(top_srcdir)/config/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/platform.hpp +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_curve_keygen_OBJECTS = curve_keygen.$(OBJEXT) +curve_keygen_OBJECTS = $(am_curve_keygen_OBJECTS) +curve_keygen_DEPENDENCIES = $(top_builddir)/src/libzmq.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(curve_keygen_SOURCES) +DIST_SOURCES = $(curve_keygen_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +ASCIIDOC = @ASCIIDOC@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBZMQ_EXTRA_CFLAGS = @LIBZMQ_EXTRA_CFLAGS@ +LIBZMQ_EXTRA_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@ +LIBZMQ_EXTRA_LDFLAGS = @LIBZMQ_EXTRA_LDFLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTVER = @LTVER@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +OpenPGM_CFLAGS = @OpenPGM_CFLAGS@ +OpenPGM_LIBS = @OpenPGM_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMLTO = @XMLTO@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +libzmq_have_asciidoc = @libzmq_have_asciidoc@ +libzmq_have_xmlto = @libzmq_have_xmlto@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pgm_basename = @pgm_basename@ +pgm_srcdir = @pgm_srcdir@ +pgm_subdir = @pgm_subdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = curve_keygen.c +INCLUDES = -I$(top_srcdir)/include +curve_keygen_LDADD = $(top_builddir)/src/libzmq.la +curve_keygen_SOURCES = curve_keygen.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign tools/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +curve_keygen$(EXEEXT): $(curve_keygen_OBJECTS) $(curve_keygen_DEPENDENCIES) $(EXTRA_curve_keygen_DEPENDENCIES) + @rm -f curve_keygen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(curve_keygen_OBJECTS) $(curve_keygen_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curve_keygen.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru zeromq3-3.2.4+dfsg/zeromq.spec zeromq3-4.0.4/zeromq.spec --- zeromq3-3.2.4+dfsg/zeromq.spec 2013-09-20 09:58:50.000000000 +0000 +++ zeromq3-4.0.4/zeromq.spec 2014-03-10 21:47:45.000000000 +0000 @@ -1,5 +1,5 @@ Name: zeromq -Version: 3.2.4 +Version: 4.0.4 Release: 1%{?dist} Summary: The ZeroMQ messaging library Group: Applications/Internet @@ -60,7 +60,7 @@ %build %ifarch pentium3 pentium4 athlon i386 i486 i586 i686 x86_64 - %configure --with-pgm --with-pic --with-gnu-ld + %configure --with-pgm --with-pic --with-gnu-ld %else %configure %endif @@ -113,6 +113,7 @@ %{_mandir}/man3/zmq_ctx_get.3.gz %{_mandir}/man3/zmq_ctx_new.3.gz %{_mandir}/man3/zmq_ctx_set.3.gz +%{_mandir}/man3/zmq_ctx_term.3.gz %{_mandir}/man3/zmq_msg_recv.3.gz %{_mandir}/man3/zmq_errno.3.gz %{_mandir}/man3/zmq_getsockopt.3.gz