Commit Graph

322 Commits

Author SHA1 Message Date
Frederic Tregon
625b618776 Fixed ZMQ_REQ_CORRELATE (see pull request #1730)
Problem: Since pull request #1730 was merged, protocol for REQ socket is
checked at the session level and this check does not take into account
the possibility of a request_id being part of the message. Thus the option
ZMQ_REQ_CORRELATE would no longer work.
This is now fixed: the possiblity of a 4 bytes integer being present
before the delimiter frame is taken into account (whether or not this
breaks the REQ/REP RFC is another issue).
2016-04-02 18:36:29 +02:00
Luca Boccassi
9d94eb11b3 Problem: test_fork causes valgrind false positive
Solution: do not run test_fork if --enable-valgrind is set. Note that
later versions of Valgrind (3.11) not yet available in all
distributions fix this problem, so we might revert in the future.
2016-03-19 21:54:55 +00:00
Luca Boccassi
00e0957640 Problem: false positive on valgrind 3.10
Solution: update builds/valgrind/valgrind.supp to ignore glibc's
__libc_freeres calls. This code runs after the program exits, and
tries to de-allocate memory allocated internally by glibc, so it has
nothing to do with libzmq code. This suppression is added by default
in newer versions of Valgrind, not yet available on older
distributions.
2016-03-19 21:54:52 +00:00
Luca Boccassi
2b2f9046d4 Problem: no Makefile target for Valgrind
Solution: import ax_valgrind_check.m4 macro file to provide a
conveniente automake hook to run Valgrind on all tests.
Add --enable-valgrind to ./configure call and then run make
check-valgrind to run memcheck, helgrind, drd and sgcheck on all
tests. Run check-valgrind-memcheck to run only memcheck.
2016-03-19 21:54:29 +00:00
Luca Boccassi
15fd419f22 Problem: test_large_msg requires 2GB of free RAM
Solution: remove temporarily until proper message limits have been
implemented, then a more granular test case can be added without
such high requirements which are problematic in embedded environment,
build systems, VMs and CI systems
2016-03-16 21:47:58 +00:00
Luca Boccassi
6df753c55a Problem: no code coverage integration
Solution: import ax_code_coverage.m4 from autoconf-archive and use it
in configure.ac and Makefile.am in order to provide a make
check-code-coverage target behind a --enable-code-coverage configure
flag, that can be used to generate a gcov/lcov code coverage report.
Depends on having gcov and lcov installed.
2016-03-13 19:28:23 +00:00
Luca Boccassi
2d9e7b57f9 Problem: make dist does not tar up macros.hpp
Solution: add it to Makefile.am file list
2016-03-06 17:56:24 +00:00
Min RK
d5b66295d4 Deprecate zmq_utils.h
instead of removing it, which breaks downstream builds.
2016-02-18 10:28:07 +01:00
Luca Boccassi
8bee4e2547 Merge pull request #1799 from hintjens/master
Making gyp builds work
2016-02-12 10:40:43 +00:00
Pieter Hintjens
44c3859073 Problem: minor glitch, test_socketopt_hwm <> test_sockopt_hwm
Doesn't affect building, just potentially confusing.

Solution: fix it.
2016-02-12 11:24:35 +01:00
Constantin Rack
22e830bece Merge pull request #1798 from hintjens/master
Getting gyp build working
2016-02-12 10:07:14 +01:00
Pieter Hintjens
fde81d7e07 Problem: can't build using gyp
I'm adding gyp support so that we can easily pull in libzmq
and other C/C++ projects into gyp packages, especially via
node-gyp.

Solution: add gyp definition

This works only for Windows, OS/X, and Linux. We set a single
macro in project.gyp according to the system, and the rest is
done in builds/gyp/platform.hpp. The values in that file are
not dynamic. Your mileage will vary.
2016-02-11 22:41:01 +01:00
Luca Boccassi
0afac59018 Problem: empty files are against ISO C++
Solution: if not building with tweetnacl, do not include its sources
in Makefile.am. CMake already includes them optionally.
2016-02-11 21:05:10 +00:00
Pieter Hintjens
f8ed793f76 Problem: tweetnacl sources are a mess
- they have no copyright / license statement
- they are in some randomish directory structure
- they are a mix of postable and non-portable files
- they do not conform to conditional compile environment

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

Solution: clean up tweetnacl sauce.

- merged code into single tweetnacl.c and .h
- standard copyright header, DJB to AUTHORS
- moved into src/ along with all other source files
- all system and conditional compilation hidden in these files
- thus, they can be compiled and packaged in all cases
- ZMQ_USE_TWEETNACL is set when we're using built-in tweetnacl
- HAVE_LIBSODIUM is set when we're using external libsodium
2016-02-11 18:06:07 +01:00
Pieter Hintjens
b49a60410a Problem: use of libsodium vs. tweetnacl is confused
It's unclear which we need and in the source code, conditional code
treats tweetnacl as a subclass of libsodium, which is inaccurate.

Solution: redesign the configure/cmake API for this:

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

The macros we define in platform.hpp are:

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

As of this patch, the default build of libzmq always has CURVE
security, and always uses tweetnacl.
2016-02-11 13:32:01 +01:00
Luca Boccassi
edc4ee03e8 Problem: ZMQ_USEFD does not follow conventions
Solution: rename socket option (and variables and files) from usefd
to use_fd.
2016-02-09 09:36:14 +00:00
Luca Boccassi
c158178798 Problem: ZMQ_PRE_ALLOCATED_FD is too long
Solution: rename socket option (and variables and files) from
pre_allocated_fd to usefd.
2016-02-08 22:46:34 +00:00
Min RK
2902fd60b9 add --with-tweetnacl to configure
allows building with tweetnacl without cmake
2016-02-08 11:40:50 +01:00
Luca Boccassi
84ad4bf0ff Problem: cannot use new pre-allocated FD with TCP
Solution: parse the value set by the ZMQ_PRE_ALLOCATED_FD sockopt
when creating a new TCP socket and use it if valid.
Add new tests/test_pre_allocated_fd_tcp.cpp unit test.
2016-02-04 16:57:26 +00:00
Luca Boccassi
9b885b7c00 Problem: cannot use new pre-allocated FD with IPC
Solution: parse the value set by the ZMQ_PRE_ALLOCATED_FD sockopt
when creating a new IPC socket and use it if valid.
Add new tests/test_pre_allocated_fd_ipc.cpp unit test.
2016-02-04 16:57:26 +00:00
Pieter Hintjens
6f94af8cca Problem: various errors in build scripts
- zmq_utils.h was removed
- udp_address.cpp and udp_engine.cpp were added

Solution: patch all affected build scripts
2016-02-01 11:18:08 +01:00
somdoron
5ebfd1728f make udp support for radio-dish 2016-01-29 21:17:11 +02:00
somdoron
dc945998a4 missing virtual modifier or session_base 2016-01-28 18:31:05 +02:00
somdoron
b8425a25cf radio-dish pattern 2016-01-27 18:22:48 +02:00
Min RK
5fe75f0e43 truncate rc to INT_MAX
to avoid overflow for large messages

send/recv still succeed for large messages,
but `zmq_msg_size` must be used to get the true size.
2016-01-20 13:43:51 +01:00
Laszlo Boszormenyi (GCS)
be387d5e56 Last bits of Hurd support 2016-01-20 07:18:22 +01:00
Constantin Rack
6d491a4289 Merge pull request #1707 from minrk/tweetnacl
include tweetnacl in dists
2016-01-15 16:04:30 +01:00
Min RK
cf57a88d49 include tweetnacl in dists 2016-01-15 16:01:48 +01:00
Pieter Hintjens
055995e535 Problem: builds directory contains packaging scripts
Specifically, the RedHat tools.

Solution: move this into packaging/
2016-01-15 10:25:38 +01:00
somdoron
aadaf99011 add timers API to libzmq 2015-12-18 12:23:22 +02:00
Ilya Kulakov
68b13fbddb Add the VMCI transport.
VMCI transport allows fast communication between the Host
and a virtual machine, between virtual machines on the same host,
and within a virtual machine (like IPC).

It requires VMware to be installed on the host and Guest Additions
to be installed on a guest.
2015-12-08 13:16:09 +06:00
Constantin Rack
5ba328d7f3 Problem: there is no test for setsockopt ZMQ_TCP_SEND/RECV_BUFFER
Solution: add test case
2015-11-13 10:44:00 +01:00
somdoron
da2bc60abe Removing zmq_pollfd as it is replaced by zmq_poller 2015-10-22 11:52:24 +03:00
somdoron
6501b8089f port zpoller to libzmq as zmq_poller 2015-10-18 21:07:23 +03:00
Pieter Hintjens
50859e40b9 Problem: drop tests on CLIENT/SERVER are misleading
These sockets deal only with single part data (at present), so the
drop tests are misleading / inappropriate.

Solution: remove them.
2015-09-13 12:17:53 +02:00
somdoron
1aaa893e02 add tests for polling on thread safe sockets 2015-08-16 13:57:28 +03:00
sappo
8bf4d1eaaf Problem: Missing src/ prefix for libzmq library in Makefile.am for test_getsockopt_memset
Solution: Add prefix to fix test compilation
2015-08-13 07:13:00 +02:00
Constantin Rack
effc26c695 Merge pull request #1476 from hintjens/master
Problem: lack test case for large stream messages
2015-08-12 10:03:45 +02:00
Rik van der Heijden
c68e9a39bf Merge fix for zeromq/zeromq4-1#52, getsockopt ZMQ_RCVMORE now resets all bits 2015-08-11 21:37:50 +02:00
Pieter Hintjens
5d5cdac161 Problem: source packages lack makefiles for all systems except msvc
Solution: specify the necessary EXTRA_DIST

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

Fixes #1505
2015-08-11 19:34:25 +02:00
Jens Auer
6b9b13be6c Fixed whitespace error. 2015-07-20 22:34:22 +02:00
Jens Auer
23797120ff Fixed #1477 corruption in "zero-copy" raw_decoder for payloads larger than 8192 bytes #1477
Fixed wrong message::init arguments.
2015-07-20 22:22:13 +02:00
Jens Auer
3679793601 "zero-copy" raw_decoder
A memcpy is eliminated when receiving data on a ZMQ_STREAM socket. Instead
of receiving into a static buffer and then copying the data into the
buffer malloced in msg_t::init_size, the raw_decoder allocates the memory
for together with the reference-counter and creates a msg_t object
on top of that memory. This saves the memcpy operation.

For small messages, data is still copied and the receive buffer is reused.
2015-07-05 16:05:46 +02:00
Dylan Cali
a9fd750e1c add tests for #949 2015-06-28 21:23:25 -05:00
Jonathan Reams
cbb3b176a6 Add ZMTP heartbeats
This commit adds ZMTP connection heartbeats described in
http://rfc.zeromq.org/spec:37/ZMTP.
2015-06-24 13:24:53 -04:00
Jens Auer
51cb57e2c9 Fixed wrong handling of shared messages
The shared reference count was not shared but copied. msg_t cannot
store the refcnt itsef but has to store a pointer to an externally
allocated (shared) refcnter. The changes to lmsg are reverted to
use content_t again. Howver, this introduces an allocation in v2_decoder
when creating the message which can be avoided. When allocating the reception
buffer, space is allocated for the maximum number of reference counts
(8192 / max_vsm_size = 8192/64 = 128 zmq:atomic_counter objects). This
increases the buffer by 128*sizeof(atomic_counter) = 128*4 = 512 bytes only.
When creating a message, the refcnt member is set to the address of one of the
pre-allocated atomic_counter_t objects. To do so, a new msg_t type zcmsg
is introduced because msg::copy must discriminate between the message types
when releasing memory.
2015-06-14 13:35:33 +02:00
Min RK
fdb7d68056 test zmq_msg custom free-function
new allocation caused reference counters to lose track on copy
2015-06-08 15:18:53 -07:00
Min RK
f34cc24bd7 test proxy with single REP socket 2015-06-06 21:05:55 -07:00
Richard Newton
9f8b8af926 Fail ZMQ_SNDHWM and ZMQ_RCVHWM setsockopt if already connected. 2015-06-05 10:43:40 +01:00
Pieter Hintjens
e37d715702 Problem: tests/test_socketopt_hwm fails and breaks CI
Solution: mark this as XFAIL
2015-06-04 23:57:50 +02:00
Kapp Arnaud
fb960147ca Introduce a failing test against zmq_setsockpt().
Problem: zmq_setsockpt() returns success when changing the
HWM after a bind or connect() even though the call has no effect.

Solution: Introduce a failing test a reminder we need to patch it.
2015-06-04 01:38:45 +02:00
Pieter Hintjens
74888769d6 Problem: incomplete specs for test_proxy_terminate
Solution: fixed this in Makefile.am
2015-05-01 11:31:45 +02:00
Rik van der Heijden
7b9e9b838d Issue #1382: Do not send data to backend when there are no listeners (+ tests) 2015-05-01 10:39:29 +02:00
Thomas Rodgers
39338e2fe4 Fix autogen.sh warning about trailing whitespace 2015-02-18 12:02:24 -06:00
somdoron
6749c9b3eb thread safety 2015-02-12 18:54:22 +02:00
Florian Ebeling
54b56210ad Problem: curve keygen build cannot be switched off 2015-02-07 15:36:14 +01:00
Florian Ebeling
2d59594a3a Problem: perf tools build cannot be switched off 2015-02-07 15:36:14 +01:00
somdoron
79f162aa7b test the client socket can drop multi frame messages that being sent to it 2015-02-02 16:12:21 +02:00
somdoron
14a19cd5d4 test the server socket can drop multi frame messages that being sent to it 2015-02-02 15:57:30 +02:00
somdoron
862cd41c65 implement client socket type and drop messages when more flag is set on client and server 2015-02-02 11:59:13 +02:00
somdoron
5632b57b4a adds server socket type and routing id to msg 2015-02-02 01:17:37 +02:00
Thomas Rodgers
73bf0fb1a3 Remoe more test_id2fd cruft 2015-01-21 16:44:41 -06:00
Thomas Rodgers
7c0a644625 Remove of ZMQ_IDENTITY_FD socket option
Revert "linking fd to pipe identity via socket option"

This reverts commit fe3e8c5c70.

Conflicts:
	include/zmq.h
	src/pipe.hpp
	src/session_base.cpp
2015-01-09 17:28:50 -06:00
DaiyuHurst
5d084cdfdd Implement a definitive cygwin target for libzmq. 2014-12-29 17:39:19 -05:00
Pieter Hintjens
2de940b422 Problem: need atomic reference counting in several projects
Solution: as libzmq already provides this across all platforms,
expose an atomic counter API. I've not wrapped atomic pointers,
though someone who needs this may want to do so.
2014-12-23 01:14:38 +01:00
somdoron
768b62eb9d xpub welcome msg 2014-11-26 14:20:55 +02:00
somdoron
96e29f1455 Add manual control over subscriptions to Pub 2014-11-26 13:08:39 +02:00
Phillip Mienk
384fbbeca5 Restore structure to targets lost during nonrecursive refactor. 2014-11-03 14:14:18 -08:00
J.T. Conklin
2e0c1a9883 Append to libzmq_la_CPPFLAGS and libzmq_la_LIBADD. 2014-10-16 20:11:33 -07:00
Phillip Mienk
c8ee16940f Require pkg-config, use pkg-config to pull seek libsodium. 2014-10-16 00:37:57 -07:00
Phillip Mienk
00b3bfab10 Remove local pgm configuration option, cleanup configure.ac, remove unused Makefile.am instances. 2014-10-13 19:10:36 -07:00
Phillip Mienk
c6aedc3837 Partial migration to nonrecursive make. 2014-10-10 14:36:12 -07:00
xantares
e273d94db8 include cmake files in tarball 2013-10-23 19:06:29 +02:00
Pieter Hintjens
7041770108 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.
2013-06-28 22:10:22 +02:00
Mikko Koppanen
e62686aca5 RPM packaging improvements
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2011-04-09 08:45:12 +02:00
Mikko Koppanen
fbf1f51468 Upstream the openpgm build fixes. Add DSO symbol visibility to OpenPGM builds
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2011-03-31 18:42:09 +02:00
Martin Sustrik
d4d184a750 Pre-compiled devices removed
Along with the devices, xmlParser which is no longer needed
is removed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-23 17:33:07 +01:00
Martin Sustrik
eeb8e7c8be Merge branch 'maint'
* maint:
  Makefile.am: Add missing files to distribution, improve maintainer-clean
  configure.in: Extract API version from zmq.h
  Added bin directory to ignore list.

Conflicts:
	configure.in
	include/zmq.h
2010-10-15 17:13:36 +02:00
Martin Lucina
3cf01bf56e Makefile.am: Add missing files to distribution, improve maintainer-clean
Add missing files needed for regenerating configure to the distribution;
add MAINTAINERS; improve maintainer-clean to produce a really clean tree.

Signed-off-by: Martin Lucina <mato@kotelna.sk>
2010-10-15 16:53:45 +02:00
Martin Lucina
3b3df731e6 configure.in: Extract API version from zmq.h
* Added a version.sh and relevant changes to configure.in to extract the API
  version from zmq.h at the time autogen.sh is run.
* Moved the version macros to be next to zmq_version in zmq.h and improved
  the comments.
* Modified ZMQ_MAKE_VERSION to use (x) instead of plain x when expanding
  macro parameters.

Signed-off-by: Martin Lucina <mato@kotelna.sk>
2010-10-15 16:53:15 +02:00
Martin Lucina
d4c8de5050 Merge branch 'maint'
* maint:
  Update .gitignore
  doc: Add 0MQ version to XHTML11 backend footer
  build: Generate ChangeLog in 'make dist', ZIP automatically
2010-09-04 17:49:40 +02:00
Martin Lucina
a6d3629fb4 build: Generate ChangeLog in 'make dist', ZIP automatically
Change 'make dist' to generate the Git ChangeLog file, that way it doesn't
have to be manually updated nor kept in Git which causes unnecessary work.

Also change 'make dist' to invoke 'dist-zip' automatically to generate a
ZIP as well as a .tar.gz.

Thanks to http://live.gnome.org/Git/ChangeLog for the inspiration to
automatically generate ChangeLog.
2010-09-04 17:42:12 +02:00
Martin Lucina
35cb1fade6 Add a basic framework for a test suite
The test suite uses the standard automake support. Tests are always built,
but run only when you do a "make check".
2010-08-27 18:35:59 +02:00
Martin Lucina
d844a90690 zmqd: Removing for now, not ready for 2.0.7 2010-06-04 15:00:31 +02:00
Mikko Koppanen
b4cc7b97ec dist-hook for copying zeromq.spec to top-level 2010-05-28 00:50:54 +02:00
Jon Dyte
f40ce4e500 single 0MQ daemon (zmqd) - initial version 2010-05-15 12:37:45 +02:00
Martin Sustrik
ad75d02134 Add MSVC build files to distribution 2010-03-16 15:48:16 +01:00
Martin Sustrik
c08a7f8896 C perf tests are built non-optionally; C++ perf tests removed 2010-03-12 20:02:19 +01:00
Martin Lucina
90944759b6 Removed Java binding from core distribution 2010-03-11 20:12:55 +01:00
Martin Lucina
cc5c30f5dc Fix: OpenPGM is now distributed as .tar.gz 2010-02-24 12:09:24 +01:00
Martin Sustrik
ccd47f1ee8 chat example moved to separate repo 2010-02-24 09:17:05 +01:00
Martin Lucina
60ce5cc82a PGM tarball should be removed on 'distclean', not 'clean' 2010-02-16 19:58:55 +01:00
Martin Lucina
8e9b78af27 Correct path for pgm distclean 2010-02-15 23:59:35 +01:00
Martin Lucina
df0c18ca17 Missed one instance of pgm2 2010-02-15 23:54:49 +01:00
Martin Lucina
80c820d758 Cleaning up more PGM cruft 2010-02-15 23:51:05 +01:00
Martin Lucina
354efc513f Convert documentation to AsciiDoc 2010-02-10 16:18:46 +01:00
malosek
8d339e9596 Fixed newer autotools warningng about AC_CONFIG_MACRO_DIR 2010-01-05 13:46:35 +01:00
malosek
d6da7903d0 removed unused foreign/openpgm/create_custom_gsi_1.patch file 2009-12-31 15:47:44 +01:00
Martin Sustrik
f4ac8d7a44 OpenPGM v1 support removed 2009-12-13 09:56:02 +01:00
Martin Sustrik
bfef2fcd0b autotools build system builds chat example now 2009-12-07 21:52:10 +01:00
malosek
9cff475af8 added libpgm-2.0.17rc2 into the dist package 2009-11-30 18:18:13 +01:00
Martin Sustrik
55b64a02e7 man pages - initial (dummy) version 2009-11-22 08:47:06 +01:00
malosek
14dc1f45cd build system tuning - fixed make dist 2009-10-05 12:28:34 +02:00
malosek
b0c97a5f8b build system tuning 2009-10-05 10:37:49 +02:00
malosek
85cbd7f83c added PGM bus functionality 2009-09-22 15:12:51 +02:00
malosek
1bd6d5e0f6 fixed missing xmlParser in dist package 2009-09-17 11:26:39 +02:00
malosek
1a65504595 ruby directory moved into bindings dir 2009-09-16 17:06:59 +02:00
malosek
c63387ca36 python directory moved into bindings dir 2009-09-16 17:00:32 +02:00
malosek
6bfb9e6aaf java directory moved into bindings directory II 2009-09-16 16:22:23 +02:00
Martin Sustrik
6cfd175e31 forwarder device added 2009-09-14 16:45:53 +02:00
malosek
1a4d6f9119 added OpenPGM sender - ZMQ_PUB 2009-09-11 17:58:37 +02:00
malosek
5acef9fc96 added --with-pgm option, libpgm-1.2.14 build within 0mq build system 2009-09-10 11:21:05 +02:00
malosek
2a4a10c8be build system tuning 2009-09-08 14:54:04 +02:00
malosek
b71c3005e6 include directory split into c and cpp dirs, added --with-c and --with-cpp configure options 2009-09-07 17:06:47 +02:00
Martin Hurton
1f06d99a0f Add Java binding 2009-08-31 16:42:03 +02:00
Martin Sustrik
314deb6185 build system for perf/C and perf/C++ 2009-08-30 15:47:39 +02:00
Martin Sustrik
176879e5bb engine virtualised; chatroom example removed 2009-08-30 08:18:31 +02:00
tamara
1d650934e4 Ruby bidning added 2009-08-29 11:31:32 +02:00
tamara
aacdb7a454 python build fix 2009-08-24 12:04:15 +02:00
tamara
77bc3790fa python extension added 2009-08-24 11:17:16 +02:00
Martin Sustrik
cc3755a16f renamed from zs to zmq 2009-08-03 11:30:13 +02:00
Martin Sustrik
4ed70a9302 initial commit 2009-07-29 12:07:54 +02:00