Commit Graph

470 Commits

Author SHA1 Message Date
Min RK
3130b913fc specify that groups shall be UTF8
group being a `char *` is logically a text type, which needs an encoding.

Declare in the API that groups shall be UTF8-encoded,
matching the `zmq_msg_gets` API, which is the other user-facing `char *` API,
which has the same definition.

This allows bindings to provide text-type APIs,
which they cannot do if arbitrary bytes are allowed
2017-08-17 16:12:53 +02:00
Simon Giesecke
63779094d3 Problem: new ZMQ_MSG_PROPERTY_* defines were not mentioned in the documentation
Solution: add documentation
2017-08-04 12:46:41 +02:00
Simon Giesecke
7a16c292b7 Problem: Documentation mentions a message property "Resource", which does not exist
Solution: Remove from documentation
2017-08-04 10:34:48 +02:00
Brian Russell
b963542e8f Add socket option BINDTODEVICE
Linux now supports Virtual Routing and Forwarding (VRF) as per:

https://www.kernel.org/doc/Documentation/networking/vrf.txt

In order for an application to bind or connect to a socket with an
address in a VRF, they need to first bind the socket to the VRF device:

    setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1);

Note "dev" is the VRF device, eg. VRF "blue", rather than an interface
enslaved to the VRF.

Add a new socket option, ZMQ_BINDTODEVICE, to bind a socket to a device.
In general, if a socket is bound to a device, eg. an interface, only
packets received from that particular device are processed by the socket.

If device is a VRF device, then subsequent binds/connects to that socket
use addresses in the VRF routing table.
2017-07-31 15:31:47 +01:00
Marc Sune
609c131249 Problem: adapt, clarify docs ZMQ_ROUTER_MANDATORY
Solution:

* Document the new behaviour when generating 'ZMQ_POLLOUT' events
  for ZMQ_ROUTER sockets with 'ZMQ_ROUTER_MANDATORY' set to `1`
* Add clarifications for 'ZMQ_ROUTER' socket when
  'ZMQ_ROUTER_MANDATORY' is set to `1`
2017-07-14 18:49:14 +02:00
Emanuel Koczwara
cb54a6b24a Update zmq.txt
Fixed minor typo.
2017-06-23 18:57:33 +02:00
Jim Garlick
568feb1c7f gssapi: document NAMETYPE options in get/setsockopt(3)
Problem: GSSAPI NAMETYPE options were not documented in man
pages for zmq_getsockopt() and zmq_setsockopt().

Solution: add new options to these manual pages.
2017-04-24 16:13:10 -07:00
Jim Garlick
48f72844ad gssapi: add zmq_gssapi.7 to MAN7 in Makefile.am
Problem: zmq_gssapi.7 was not mentioned in doc/Makefile.am

Solution: add man page to MAN7 in doc/Makefile.am
2017-04-21 13:08:48 -07:00
Jim Garlick
8bd3f03cd4 gssapi: add NAMETYPE socket opts to zmq_gssapi.7
Problem: new GSSAPI socket options are not documented.

Solution: add PRINCIPAL NAMES section to zmq_gssapi.7
2017-04-21 13:08:48 -07:00
Jim Garlick
c371824b5b gssapi: document ZMQ_GSSAPI_PRINCIPAL as optional
Problem: the ZMQ_GSSAPI_PRINCIPAL socket option is described
as mandatory in the zmq_gssapi(7) manual page.  In fact it
is optional.

Solution: Describe ZMQ_GSSAPI_PRINCIPAL as optional.
If unspecified, default credentials are used.
2017-04-20 09:42:06 -07:00
Takeshi Abe
c7ce4a1cea Problem: typo in the zmq_socket doc
Solution: fix it
2017-02-23 10:29:25 +09:00
Luca Boccassi
5f8d87bf32 Problem: typo in the zmq_has doc
Solution: fix it
2017-01-19 21:00:15 +00:00
Asmod4n
b7cd6e8a85
add test and documentation for "draft" capability 2017-01-19 20:50:18 +01:00
Constantin Rack
d532f2e4d8 Merge pull request #2290 from bluca/doc_proxy_eintr
Problem: zmq_proxy* may return EINTR other than ETERM
2017-01-03 21:21:11 +01:00
Luca Boccassi
28c7abf821 Problem: zmq_proxy* may return EINTR other than ETERM
Solution: mention this in the documentation
2017-01-03 15:34:08 +01:00
Patrik Wenger
1b3df75b87 fix typos 2017-01-03 12:45:33 +01:00
Luca Boccassi
200649fd57 Problem: new handshake event monitoring undocumented
Solution: add them to the event monitor manpage
2016-12-30 23:40:22 +01:00
Luca Boccassi
2afba0085f Problem: documentation does not warn about ZMQ_EVENT_ALL and new events
Solution: add a note pointing out that when new events are added the
ZMQ_EVENT_ALL mask will start returning them, so applications that
can't handle that transparently should not use it and instead pick
only the event types they want.
Creating a new event type and having monitors with ZMQ_EVENT_ALL
return them will not be considered a backward incompatible change
even though the flow of events will change.
2016-12-30 23:27:56 +01:00
Luca Boccassi
113feb60a2 Problem: ZMQ_MSG_T_SIZE draft but not in DRAFT section
Solution: move it there, add it to src/zmq_draft.h and clarify in the
documentation and in the NEWS file that this option is not yet stable
2016-12-29 21:07:39 +01:00
Luca Boccassi
3dc016cab3 Problem: no documentation for ZMQ_SOCKS_PROXY
Solution: add paragraphs to zmq_get/setsockopt man pages
2016-12-26 14:54:58 +01:00
Luca Boccassi
baf32a1985 Problem: no documentation for zmq_curve_public
Solution: add manpage
2016-12-26 14:54:58 +01:00
Richard Janis Goldschmidt
ec25fd2ada Add a single sentence explaining what a context is 2016-11-21 14:11:33 +01:00
Luca Boccassi
8a286bb842 Problem: no documentation for ZMQ_MSG_T_SIZE ctx option
Solution: mention it in zmq_ctx_get manpage
2016-11-20 12:51:25 +00:00
Andreas Rottmann
5d176cbe98 Document terminating NUL behavior in API more explicitly
This addresses #2169.
2016-11-16 19:56:18 +01:00
Thomas Braun
a151ac5936 Problem: Invalid markup in zmq_socket.txt
Solution: Fix it.
2016-10-07 16:37:30 +02:00
WGH
eb0e0dda4e doc/zmq_socket.txt: clarify that ROUTER can be blocking 2016-10-03 23:39:34 +03:00
Patrik Wenger
7e07ff3e5b fix markup syntax on zmq_tipc(7) page 2016-09-25 19:19:13 +02:00
Patrik Wenger
18e0451092 Problem: documentation markup unrecognized
The effect can be seen on http://api.zeromq.org/4-2:zmq-getsockopt at
options ZMQ_USE_FD and ZMQ_RATE.

Solution: fix length of squiggly line under option title
2016-09-21 21:39:01 +02:00
KIU Shueng Chuan
5340215613 Problem: zmq_stream doc is confusing regarding ZMQ_SNDMORE flag
Solution: fix it.

The documentation first states that the ZMQ_SNDMORE flag is ignored on
data frames. Then it states that omitting the ZMQ_SNDMORE flag has
consequences. The example HTTP server code further muddies the situation
with a similar comment.

The implementation of ZMQ_STREAM only accepts two-part messages.
The first part is an identity frame while the second and last part is
the data frame.

As with any multipart message, all parts except the last need the
ZMQ_SNDMORE flag. The second and last part would normally omit the
ZMQ_SNDMORE flag to mark the end of the multipart message.

However, the ZMQ_STREAM implementation ignores the ZMQ_SNDMORE flag on
the data frame rather than requiring that it be omitted. The latter
behaviour would have been more consistent with the other ZeroMQ
sockets.
2016-08-13 20:37:24 +08:00
Ricardo Catalinas Jiménez
c86e07dbc8 Problem: update zmq_setsockopt doc with new flag name 2016-06-03 13:57:30 +01:00
hitstergtd
4809926c10 Problem: zmq_setsockopt(3) man page formatting
Solution:
- Update formatting and remove redundant parts from ZMQ_PROBE_ROUTER,
ZMQ_USE_FD, ZMQ_TCP_MAXRT, ZMQ_TCP_TOS
- Only cosmetic changes to the content
- These changes already merged on api.zeromq.org by me
2016-05-01 20:32:22 +01:00
somdoron
fee84134e7 UDP and Radio-dish documentation 2016-04-29 12:17:17 +03:00
Pieter Hintjens
9eb74d4df4 Problem: ZMQ_SERVER man page is wrong
It says that ZMQ_SERVER never blocks; whereas it does block on
sending to a client whose pipe is full.

Solution: fix it.
2016-04-04 13:13:27 +02:00
Frederic Tregon
e45dfe3bc7 Fixed issue #1695 (ZMQ_REQ_CORRELATE)
Problem: when using ZMQ_REQ_RELAXED + ZMQ_REQ_CORRELATE and two 'send' are
executed in a row and no server is available at the time of the sends,
then the internal request_id used to identify messages gets corrupted and
the two messages end up with the same request_id. The correlation no
longer works in that case and you may end up with the wrong message.

Solution: make a copy of the request_id instance member before sending it
down the pipe.
2016-03-20 20:38:18 +01:00
Luca Boccassi
4366d7edf9 Problem: doc/Makefile.am ignores --without-docs
Solution: add the document files to the MAN_DOC and MAN_HTML targets
in doc/Makefile.am only if BUILD_DOC and INSTALL_MAN are set,
otherwise leave the targets empty to avoid errors in make distcheck.
2016-03-06 18:34:25 +00:00
Pieter Hintjens
62c66ae7f7 Problem: test_large_msg kills my system temporarily
And I'm on a reasonably sized laptop. I think allocating INT_MAX
memory is dangerous in a test case.

Solution: expose this as a context option. I've used ZMQ_MAX_MSGSZ
and documented it and implemented the API. However I don't know how
to get the parent context for a socket, so the code in zmq.cpp is
still unfinished.
2016-02-09 10:55:09 +01:00
Pieter Hintjens
7470c00d4d Problem: ZMQ_TCP_RECV_BUFFER/SEND_BUFFER are redundant
These options are confusing and redundant. Their names suggest
they apply to the tcp:// transport, yet they are used for all
stream protocols. The methods zmq::set_tcp_receive_buffer and
zmq::set_tcp_send_buffer don't use these values at all, they use
ZMQ_SNDBUF and ZMQ_RCVBUF.

Solution: merge these new options into ZMQ_SNDBUF and ZMQ_RCVBUF.

This means defaulting these two options to 8192, and removing the
new options. We now have ZMQ_SNDBUF and ZMQ_RCVBUF being used both
for TCP socket control, and for input/output buffering.

Note: the default for SNDBUF and RCVBUF are otherwise 4096.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
884c7f78e9 Problem: zmq_getsockopt wrongly referred to ZMQ_THREADSAFE
The proper name is ZMQ_THREAD_SAFE

Solution: fix in the documentation.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
7f6ed167fc Problem: ZMQ_XPUB_VERBOSE_UNSUBSCRIBE is clumsy
This option has a few issues. The name is long and clumsy. The
functonality is not smooth: one must set both this and
ZMQ_XPUB_VERBOSE at the same time, or things will break mysteriously.

Solution: rename to ZMQ_XPUB_VERBOSER and make an atomic option.

That is, implicitly does ZMQ_XPUB_VERBOSE.
2016-02-09 10:53:52 +01:00
Pieter Hintjens
da8ce55a14 Problem: ZMQ_TCP_RETRANSMIT_TIMEOUT is a clumsy name
Solution: rename to ZMQ_MAXRT

This is the option name used on Windows, so easier to use and
remember.
2016-02-09 10:53:52 +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
Pieter Hintjens
a1f51b695f Problem: unclear rules for passing null arguments
Solution: be more explicit in the code, and in the zmq_recv man
page (which is the most unobvious case). Assert if length is not
zero and buffer is nonetheless null.
2016-02-06 14:13:13 +01:00
Luca Boccassi
4bcbb3055e Problem: cannot use pre-allocated FDs. Fixes #777
Solution: add new [set|get]sockopt ZMQ_PRE_ALLOCATED_FD to allow
users to let ZMQ use a pre-allocated file descriptor instead of
allocating a new one. Update [set|get]sockopt documentation and
test accordingly.

The main use case for this feature is a socket-activated systemd
service. For more information about this feature see:
http://0pointer.de/blog/projects/socket-activation.html
2016-02-04 16:57:26 +00:00
Pieter Hintjens
44c6b0484e Revert "Revert "Problem: deprecated use and reference of zmq_term"" 2016-02-01 23:00:06 +01:00
Pieter Hintjens
1708bfefb7 Revert "Problem: deprecated use and reference of zmq_term" 2016-02-01 22:41:51 +01:00
Constantin Rack
a26bb743d4 Problem: docs are still referring to deprecated zmq_term
Solution: Replace with `zmq_ctx_term`
2016-02-01 22:00:35 +01:00
Pieter Hintjens
2566c02a9e Problem: CLIENT and SERVER don't check SNDMORE
These sockets don't handle multipart data, so if callers send it,
they drop frames, and things break silently.

Solution: if the caller tries to use ZMQ_SNDMORE, return -1 and
set errno to EINVAL.
2015-12-29 17:00:06 +01:00
Ilya Kulakov
3caa637e1b Add special interface to represent local VMCI context. 2015-12-14 19:20:27 +06:00
Pieter Hintjens
4dcfb23e2e Problem: zmq_vmci man page claims to be zmq_ipc man page
Solution: fix this.
2015-12-09 10:45:12 +01:00