Commit Graph

3437 Commits

Author SHA1 Message Date
Thomas Rodgers
82282d6973 Added test and doc section for ZMQ_SHARED message flag 2014-07-12 18:05:49 -05:00
Thomas Rodgers
3497244c41 Added ZMQ_SHARED message option to zmq_msg_get() 2014-07-12 09:01:27 -05:00
Pieter Hintjens
13ed711448 Merge pull request #1117 from jlauenercern/master
Thread scheduling parameters: Use ZMQ context options instead of environment variables.
2014-07-02 17:49:40 +02:00
Joel Lauener
219310b4f0 Thread scheduling parameters: Use ZMQ context options instead of
environment variables.
2014-07-02 14:41:21 +02:00
Richard Newton
00fe56c4bf Merge pull request #1115 from hurtonm/master
Code cleanup
2014-07-01 09:22:28 +01:00
Richard Newton
bbf597196e Merge pull request #1112 from hintjens/master
Problem: two header files for a single library
2014-07-01 09:21:33 +01:00
Martin Hurton
079ff8b759 Code cleanup 2014-07-01 09:17:19 +02:00
Pieter Hintjens
fa3ae97480 Merge pull request #1114 from PalmStoneGames/master
Add missing socks files
2014-06-29 17:35:50 +02:00
Diego Duclos
a9cb9022fd Add missing socks files 2014-06-29 15:14:54 +02:00
Pieter Hintjens
1b9f67cac6 Merge pull request #1113 from fichtner/socks_include
socks: fix build on FreeBSD
2014-06-27 20:35:59 +02:00
Franco Fichtner
f1207e6af1 socks: fix build on FreeBSD
The fix should be sane on all UNIX-like systems, so there's
no ZMQ_HAVE_FREEBSD involved.  It's likely that other BSDs
stumble across this problem too.
2014-06-27 20:15:08 +02:00
Pieter Hintjens
39f2e8f273 Problem: missing stdlib.h include in curve_keygen.cpp
Solution: fixed this. Also minor code cleanups.
2014-06-27 16:41:27 +02:00
Pieter Hintjens
a087ce55ea Problem: two header files for a single library
Users who need e.g. zmq_curve_keypair() have to remember to include
zmq_utils.h, which is counter-intuitive. The whole library should be
represented by a single include file.

Solution: merge all contents of zmq_utils.h into zmq.h, and deprecate
zmq_utils.h. Existing apps can continue unchanged. New apps can ignore
zmq_utils.h completely.
2014-06-27 15:58:18 +02:00
Richard Newton
7e8dd46631 Merge pull request #1111 from hintjens/master
Problem: zmq_msg_gets did not set errno on unknown properties
2014-06-25 16:38:43 +01:00
Pieter Hintjens
dd05a64462 Problem: zmq_msg_gets did not set errno on unknown properties
Solution: set errno to EINVAL when a property does not exist.

Also fixed test_metadata.cpp to test this case.
2014-06-25 17:28:36 +02:00
Richard Newton
3b505f1f6a Merge pull request #1110 from hintjens/master
Reverted removal of [ ] support
2014-06-25 15:10:07 +01:00
Pieter Hintjens
6e91330a0c Added clarifying comment 2014-06-25 14:37:54 +02:00
Pieter Hintjens
58c067ff0e Revert "Problem: tcp_address.cpp allowed [ and ] around address"
This reverts commit 78a7b469a1.
2014-06-25 14:36:55 +02:00
Richard Newton
47c796276f Merge pull request #1109 from hintjens/master
Set EINVAL on invalid tcp:// endpoint in zmq_connect
2014-06-25 12:41:37 +01:00
Pieter Hintjens
ce8fbb26cb Problem: zmq_connect doesn't return EINVAL on invalid endpoint
Solution: set errno to EINVAL when tcp:// endpoint is invalid (was just
leaving errno to previous value).
2014-06-25 12:48:26 +02:00
Pieter Hintjens
2524e26893 Code cleanups 2014-06-25 12:47:39 +02:00
Pieter Hintjens
859b43f1eb Merge pull request #1107 from jlauenercern/master
Allow change of pthread priority
2014-06-25 11:29:07 +02:00
Joel Lauener
112ef6f172 Allow change of pthread priority
Rationale: In a real-time environment it is sometime mandatory to tune
threads priority and scheduling policy. This is required by our users
who mixes real-time and server threads within
the same process. It's not planned to support this on non-pthread
platforms (e.g. Windows).
2014-06-25 09:51:10 +02:00
Richard Newton
64513d8522 Merge pull request #1106 from hintjens/master
Problem: zmq_connect() does not validate TCP addresses
2014-06-24 13:56:00 +01:00
Pieter Hintjens
78a7b469a1 Problem: tcp_address.cpp allowed [ and ] around address
This syntax is undocumented and has no known meaning. It was in libzmq
since 3.x.

Solution: remove this code.
2014-06-24 14:36:21 +02:00
Pieter Hintjens
deaad00ad9 Problem: zmq_connect() does not validate TCP addresses
Since https://github.com/zeromq/libzmq/commit/350a1a, TCP addresses
get resolved asynchronously, so zmq_connect no longer returned an
error on incorrect addresses.

This is troublesome since we rely on some error checking to catch
blatant errors.

Solution add some upfront syntax checking that catches at least the
obvious kinds of errors (invalid characters, wrong or missing port
number).
2014-06-24 14:33:38 +02:00
Richard Newton
407843374d Merge pull request #1105 from hintjens/master
Fixed typo in doc example
2014-06-24 10:38:46 +01:00
Pieter Hintjens
18d222515f Fixed typo in doc example 2014-06-23 20:24:36 +02:00
Pieter Hintjens
1f063dc30a Merge pull request #1103 from ricnewton/master
Fix windows build
2014-06-23 20:23:20 +02:00
Pieter Hintjens
61c2a7d471 Merge pull request #1104 from tristianc/master
Updated spec file for libzmq 4.0.4
2014-06-23 20:23:06 +02:00
Richard Newton
82be399527 Merge pull request #1097 from hintjens/master
Added capabilities API
2014-06-23 13:23:20 +01:00
Richard Newton
369725ab8f Fix windows build 2014-06-23 13:10:43 +01:00
Pieter Hintjens
de3832d2f8 Merge pull request #1101 from hurtonm/master
Fix memory leak in socks connecter
2014-06-23 00:18:36 +02:00
Martin Hurton
b73d1c8fed Fix memory leak in socks connecter 2014-06-23 00:02:15 +02:00
Pieter Hintjens
79d578ef0b Merge pull request #1100 from hurtonm/master
Add support for SOCKS proxies
2014-06-22 23:42:23 +02:00
Martin Hurton
f06ca69ae9 Add support for SOCKS proxies
This is still raw and experimental.
To connect through a SOCKS proxy, set ZMQ_SOCKS_PROXY socket option on
socket before issuing a connect call, e.g.:

    zmq_setsockopt (s, ZMQ_SOCKS_PROXY,
        "127.0.0.1:22222", strlen ("127.0.0.1:22222"));
    zmq_connect (s, "tcp://127.0.0.1:5555");

Known limitations:
- only SOCKS version 5 supported
- authentication not supported
- new option is still undocumented
2014-06-22 23:19:33 +02:00
Pieter Hintjens
883e95b22e Merge pull request #1099 from chrox/master
Fixed build with arm-linux-androideabi toolchain
2014-06-22 12:17:35 +02:00
chrox
bdf6427a00 Fixed build with arm-linux-androideabi toolchain 2014-06-22 18:13:05 +08:00
Pieter Hintjens
8b80197207 Merge pull request #1098 from mgatny/add_gssapi_documentation
Add documentation for GSSAPI options.
2014-06-20 07:14:21 +02:00
Mike Gatny
0a4123fd91 Add documentation for GSSAPI options. 2014-06-19 23:57:48 -04:00
Pieter Hintjens
36db9c0803 Fixed compile error if Kerberos installed 2014-06-19 15:28:04 +02:00
Pieter Hintjens
7242cdf842 Trivial whitespace fixup 2014-06-19 14:56:10 +02:00
Pieter Hintjens
f11d673ba9 Problem: need way to probe library capabilities
As libzmq is compiled with optional transports and security mechanisms,
there is no clean way for applications to determine what capabilities
are actually available in a given libzmq instance.

Solution: provide an API specifically for capability reporting. The
zmq_has () method is meant to be open ended. It accepts a string so
that we can add arbitrary capabilities without breaking existing
applications.

zmq.h also defines ZMQ_HAS_CAPABILITIES when this method is provided.
2014-06-18 15:19:07 +02:00
Pieter Hintjens
27547bc9bc Problem: when libgssapi isn't available, GSSAPI options 'seem' to work
Solution: use same approach as for libsodium/CURVE, i.e. return EINVAL
if the library isn't present when libzmq builds, and the application
still tries to use these options in zmq_getsockopt/setsockopt.
2014-06-17 16:32:47 +02:00
Trevor Bernard
cac5e74d55 Merge pull request #1096 from hintjens/master
Problem: API violations are treated as recoverable errors
2014-06-17 11:29:39 -03:00
Pieter Hintjens
1beb54cef0 Added militant API checking on zmq_getsockopt 2014-06-17 16:24:56 +02:00
Pieter Hintjens
d0667461f0 Fixed build: malformed only defined when needed. 2014-06-17 16:14:19 +02:00
Pieter Hintjens
b4ed3f5506 Problem: API violations are treated as recoverable errors
The example is applications passing invalid arguments to a socket option
and then failing to check the return code. The results can be very hard
to diagnose. Here are some threads that show the pain this causes:

* https://github.com/zeromq/zyre/issues/179
* http://lists.zeromq.org/pipermail/zeromq-dev/2014-June/026388.html

One common argument is that a library should never assert, and should
pass errors back to the calling application. The counter argument is
that when an application is broken enough to pass garbage to libzmq,
it cannot be trusted to handle the resulting errors properly. Empirical
evidence from CZMQ, where we systematically assert on bad arguments, is
that this militant approach makes applications more, not less, robust.

I don't see any valid use cases for returning errors on bad arguments,
with one exception: zmq_setsockopt can be used to probe whether libzmq
was e.g. built with CURVE security. I'd argue that it's nasty to use a
side effect like this. If apps need to probe how libzmq was built, this
should be done explicitly, and for ALL build options, not just CURVE.

There are/were no libzmq test cases that check the return code for an
invalid option.

For now I've enabled militant assertions using --with-militant at
configure time. However I'd like to make this the default setting.
2014-06-17 16:00:55 +02:00
Tristian Celestin
232e6ff761 Merge branch 'master' of https://github.com/tristianc/libzmq 2014-06-17 09:41:48 -04:00
Richard Newton
1d236d81c8 Merge pull request #1090 from hintjens/master
Problem: zmq_ctx_get (ZMQ_MAX_SOCKETS) returns gibberish
2014-06-16 08:45:37 +01:00