Commit Graph

308 Commits

Author SHA1 Message Date
Andre Caron
17651b9276 Adds support for detecting ZMQ_STREAM disconnections.
When a ZMQ_STREAM socket connection is broken (intentionally, via `shutdown()`
or accidentally via client crash or network failure), there is no way for the
application to dertermine that it should drop per-connection data (such as
buffers).

This contribution makes sure the application receives a 0-length message to
notify it that the connection has been broken.  This is symmetric with the
process of closing the connection from within the application (where the
application sends a 0-length message to tell ZeroMQ to close the connection).

Conflicts:
	CMakeLists.txt
2014-01-14 17:20:46 -08:00
Stefan Radomski
23ea1b2b64 typo in docs 2014-01-07 01:13:46 +01:00
Stefan Radomski
3aeaa6fab1 ZMQ_SRCFD docs and tests
Also moved the fd field from message content to message itself
2014-01-07 01:09:51 +01:00
Pieter Hintjens
5bf96f64b0 Removed ZMQ_ZAP_IPC_CREDS option
- This seems redundant; is there a use case for NOT providing
  the IPC credentials to the ZAP authenticator?

- More, why is IPC authentication done via libzmq instead of ZAP?
  Is it because we're missing the transport type on the ZAP request?
2014-01-01 17:39:14 +01:00
Pieter Hintjens
adf5b45d71 Reordered socket options
- put into alphabetical order
- there was no consistency in previous ordering
2014-01-01 16:28:30 +01:00
Pieter Hintjens
49a2902c82 Fixed issue #801 2014-01-01 15:36:47 +01:00
Pieter Hintjens
9d9592f830 Whitespace fixes
Minor layout fix

Whitespace fix
2014-01-01 15:36:33 +01:00
KIU Shueng Chuan
5fa3f0a045 doc bugfix: ZMQ_MSGMORE should be ZMQ_SNDMORE 2013-12-23 23:06:18 +08:00
Alexey Melnichuk
b7a2248e22 Update doc for zmq_proxy_steerable [ci skip] 2013-12-17 15:27:55 +03:00
Brandon Carpenter
a018ef5e86 Add support for extending ZAP request address with IPC peer credentials.
Another take on LIBZMQ-568 to allow filtering IPC connections, this time
using ZAP.  This change is backward compatible.  If the
ZMQ_ZAP_IPC_CREDS option is set, the user, group, and process IDs of the
peer process are appended to the address (separated by colons) of a ZAP
request; otherwise, nothing changes.  See LIBZMQ-568 and zmq_setsockopt
documentation for more information.
2013-12-06 14:28:44 -08:00
Brandon Carpenter
dc9b1309b9 Shortened ZMQ_IPC_ACCEPT_FILTER_[UGP]ID to ZMQ_IPC_FILTER_[UGP]ID. 2013-12-06 09:58:10 -08:00
Pieter Hintjens
e48ca50663 Merge pull request #774 from shubred1/master
Updated documentation for zmq_disconnect() and zmq_setsockopt().
2013-12-05 03:23:12 -08:00
Brandon Carpenter
2252322acc Add IPC accept filter socket options.
Adds ZMQ_IPC_ACCEPT_FILTER_{PID,UID,GID} socket options to add processs,
user, and group IDs to the IPC filter sets. Fixes LIBZMQ-568.
2013-12-04 14:23:13 -08:00
Shane Hubred
c7693bedea Updated documentation for zmq_disconnect() and zmq_setsockopt(). 2013-12-04 15:02:49 -06:00
Chris Laws
38bceca9ca Add ability to set and get DSCP socket option 2013-11-25 13:31:21 +10:30
Mathias Hablützel
3535a1d7ea
Fixed typo in documentation about zmq_proxy_steerable() 2013-11-15 15:31:09 +01:00
Pieter Hintjens
c89518d33d Added links to RFCs for socket patterns 2013-11-13 13:57:57 +01:00
Mark Barbisan
e84f17bbb4 Modified the zmq_setsockopt documentation to include the ZMQ_ROUTER_HANDOVER option 2013-11-06 23:21:28 -05:00
Erik Hugne
bbbccebbe7 zmq: add TIPC manpage
Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
2013-11-05 13:02:41 +01:00
Denis Mingulov
bdf8bc3193 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.

Also for zmq_msg_get example - declaration of zmq_msg_t variable is added
(like it is done in other examples).
2013-11-04 15:19:34 +02:00
Pieter Hintjens
c2c0f39d36 Fixed ref to zmq_socket_monitor 2013-10-28 11:48:34 +01:00
Pieter Hintjens
87718c6102 Clarified use of secret/public keys 2013-10-23 16:03:40 +02:00
Pieter Hintjens
09426ff308 Fixed man page for CURVE key options 2013-10-23 12:04:40 +02:00
Laurent Alebarde
984c2e94e4 small fix inzmq_proxy_steerable doc 2013-10-18 16:40:21 +02:00
Laurent Alebarde
99b13638eb add doc to zmq_proxy_steerable 2013-10-18 16:35:54 +02:00
Jens Henrik Hertz
f0a0e4d817 Update zmq_msg_init_data.txt 2013-10-14 20:27:23 +02:00
Pieter Hintjens
50a1973ee6 Identity can only be set on sockets that can connect to ROUTER 2013-10-09 19:53:18 +02:00
Brandon Carpenter
ae7fad48a8 Add note on Linux abstract namespace to ipc documentation. 2013-10-07 10:41:20 -07:00
Dylan Cali
0b4ce80853 fix minor typo in zmq_ctx_get doc example 2013-10-02 02:59:44 -05:00
Pieter Hintjens
fd4d125d8e 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
2013-09-30 15:14:02 +02:00
Pieter Hintjens
5e609be345 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.
2013-09-20 15:30:04 +02:00
Pieter Hintjens
0997a8b753 Removed inaccurate note in zmq_poll man page 2013-09-20 14:39:35 +02:00
Pieter Hintjens
71c9ae8b18 Built zmq_send_const man page properly 2013-09-20 14:28:06 +02:00
Pieter Hintjens
9e66685c08 Reformatted text 2013-09-17 13:33:27 +02:00
Pieter Hintjens
576e3ca5e0 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
2013-09-15 20:13:44 +02:00
Pieter Hintjens
345bf146f1 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).
2013-09-12 18:03:23 +02:00
Richard Newton
ccf0e61b77 Merge remote-tracking branch 'upstream/master' 2013-09-10 13:30:11 +01:00
Richard Newton
64e1c181f7 Implement non-blocking shutdown command that unblocks other threads waiting on blocking operations. 2013-09-10 13:30:00 +01:00
Martin Hurton
25c89cace1 Merge pull request #649 from hintjens/master
Fixed minor error in NULL mechanism (spec was wrong)
2013-09-09 12:12:36 -07:00
Pieter Hintjens
6725c4644f 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.
2013-09-09 20:40:34 +02:00
Sebastien Pierre
f9188841b0 Clarified zmq_socket.txt ZMQ_STREAM section, added example 2013-09-04 14:58:07 -04:00
Guido Goldstein
455739f942 Fixed markup so documentation can be built. 2013-08-29 09:35:17 +02:00
Ian Barber
d485404aab Merge pull request #626 from dkrikun/master
Add ZMQ_CONFLATE socket option
2013-08-20 14:37:52 -07:00
danielkr
f59c1a5c5a Update doc for ZMQ_CONFLATE socket option 2013-08-17 23:55:00 +03:00
Uli Köhler
e23d3963d3 Fix doc typo 2013-08-17 20:39:10 +02:00
Uli Köhler
e2c322cf80 Implemented zmq_send_const 2013-08-17 20:22:50 +02:00
Christian Kamm
423ca36b17 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.
2013-08-03 14:35:18 +02:00
Christian Kamm
a0cc87a9d9 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.
2013-07-28 11:43:38 +02:00
Christian Kamm
b9646f2aac 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.
2013-07-26 21:38:21 +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