0
0
mirror of https://github.com/zeromq/libzmq.git synced 2025-01-21 15:12:03 +08:00

2109 Commits

Author SHA1 Message Date
Pieter Hintjens
5f07d103a7 Merge pull request #838 from Prarrot/master
Fixed compile issue with missing member of socket_base.  Changed ZMQ_NEX...
2014-01-19 00:09:15 -08:00
Tim M
b1920bdf90 Fixed compile issue with missing member of socket_base. Changed ZMQ_NEXT_IDENTITY to ZMQ_NEXT_CONNECT_PEER_ID.
Fixed case where ZMQ_NEXT_CONNECT_PEER_ID is used in ROUTER, and ROUTER does not read the identity message from the connected pipe.
2014-01-18 17:49:54 -08:00
Matt Arsenault
00aeaddf94 Fix unused parameter and variable warnings. 2014-01-18 13:17:29 -08:00
Pieter Hintjens
d82389a788 Merge pull request #834 from Prarrot/master
Updated STREAM and ROUTER sockets to allow for pre-naming of outbound connections
2014-01-17 23:13:07 -08:00
Pieter Hintjens
a66c47f995 Merge pull request #833 from mrvn/pull_store-fd-on-connect
Store socket FD after connect
2014-01-17 23:11:45 -08:00
Tim M
5d4860ea12 Both STREAM and ROUTER sockets suffer from a naming problem on outbound connections. While these connections can be created, they can't be immediately used. Traffic must be received before it can be sent. This prevents practical, minimal usage of STREAM or ROUTER as a true N fan in/out socket.
This change simply provides the user with a socket option that sets a user defined name of the next outbound connection:

zmq_setsockopt(routerSock,ZMQ_NEXT_IDENTITY,"myname",6);
if(0 > zmq_connect(routerSock,"tcp://127.0.0.1:1234")) return 1;
ret = zmq_send(routerSock,"myname",6,ZMQ_SNDMORE);
zmq_send(routerSock,b.mem,b.used,0);

In this example, the socket is immediately given the name "myname", and is capable of immediately sending traffic.

This approach is more effective in three ways:
1) It prevents all sorts of malicious peer naming attacks that can cause undefined behavior in existing ROUTER connections. (Two connections are made that both transmit the same name to the ROUTER, the ROUTER behavior is undefined)
2) It allows immediate control of connections made to external parties for STREAM sockets. Something that is not possible right now. Before an outbound connection had no name for STREAM or ROUTER sockets because outbound connections cannot be sent to without first receiving traffic.
3) It is simpler and more general than expecting two ROUTER sockets to handshake on assigned connection names. Plus it allows inline sending to new connections on ROUTER.
2014-01-17 14:34:39 -08:00
Goswin von Brederlow
afb24b53e6 Add STREAM connect notification.
Adjust test cases to connection notification.
Increase error checking in test cases.
2014-01-17 23:31:51 +01:00
Goswin von Brederlow
92f8f244e2 Store socket FD after connect 2014-01-17 23:30:17 +01:00
Eric Cornelius
88a8be8231 Update pipe.cpp 2014-01-15 18:11:13 -05:00
Eric Cornelius
589fa57afa Corrects ypipe initialization when conflate is NOT enabled.
Fixes LIBZMQ-584
2014-01-15 18:08:45 -05:00
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
Richard Newton
bf06f3bb27 Define NOMINMAN to fix windows build. 2014-01-14 10:27:40 +00:00
Bruno D. Rodrigues
d38a0c43b6 use version-script only for ELF linux 2014-01-13 17:31:56 +00:00
Jeremy Tan
5efee6e0d5 Fix compilation on MinGW-w64 2014-01-13 18:38:59 +08:00
Martin Hurton
e46ec31209 Implement socket_base_t::get_credential member function
The get_credential () member function returns
credential for the last peer we received message for.
The idea is that this function is used to implement user-level API.
2014-01-13 00:40:27 +01:00
Ian Barber
5c4f3cc603 Merge pull request #817 from Debian/symbols
Only export zmq_* symbols
2014-01-12 08:35:05 -08:00
Alessandro Ghedini
245c75aad6 Fix timestamp counter on s390/s390x
Fixes #811
2014-01-12 12:31:40 +01:00
Alessandro Ghedini
27c050845c Only export zmq_* symbols 2014-01-12 12:30:45 +01:00
Martin Hurton
5d41d51ba5 Replace assert with zmq_assert 2014-01-08 21:11:54 +01:00
Martin Hurton
a80fb34765 Fix some comments regarding method overriding 2014-01-08 18:29:35 +01:00
Martin Hurton
d72ceb93be Make it explicit that the probe function doesn't modify passed message 2014-01-08 08:21:13 +01:00
Pieter Hintjens
629221889d Merge pull request #810 from sradomski/master
ZMQ_SRCFD docs and tests
2014-01-06 20:56:23 -08: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
Martin Hurton
96f5fddc45 Simplify ypipe_t and ypipe_base_t template parameters 2014-01-06 11:34:00 +01:00
Stefan Radomski
823b7ebeb0 Removed dead code 2014-01-06 10:33:58 +01:00
Stefan Radomski
f30fb8501e Expose remote FD via zmq_msg_get(&msg, ZMQ_SRCFD)
This patch allows client applications to retrieve the remote endpoint from a message that originated from a tcp socket
2014-01-06 10:31:42 +01:00
AJ Lewis
cd2827fb36 Fix LIBZMQ-576 - Revert "Merge pull request #510 from miniway/master"
This reverts commit f27eb67e1abb0484c41050e454404cce30647b63, reversing
changes made to a3ae0d4c16c892a4e6c96d626a7c8b7068450336.

https://zeromq.jira.com/browse/LIBZMQ-576

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.
2014-01-02 11:05:39 -06:00
Pieter Hintjens
b3b9e046ee Updated copyright statements for 2014 2014-01-02 12:00:57 +01:00
Pieter Hintjens
ff45caabd1 Fixed copyrights on TIPC code
- corporate copyright statements sit in AUTHORS file
2014-01-02 11:54:13 +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
3ad8c61190 Whitespace fixes 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
Wouter Overmeire
a5f4d823a5 fix doc typo 2013-12-24 15:00:43 +01:00
Alex Grönholm
b554757cf0 Fixed setting TCP keepalive parameters on Windows 2013-12-22 02:55:18 +02:00
Pieter Hintjens
bf3702395c Fixed wildcard IPC endpoint and added test case 2013-12-20 14:28:54 +01:00
Pieter Hintjens
62f3fdf3b7 Fixed indentation 2013-12-20 14:17:35 +01:00
Pieter Hintjens
8ba1311e34 Fixed use of deprecated tempnam 2013-12-19 21:06:32 +01:00
Trevor Bernard
10a6641ef2 Fix issue #788 - Only allow a single connect per endpoint for SUB, REQ, and DEALER sockets 2013-12-14 23:40:34 -04:00
KIU Shueng Chuan
7f22995e35 use mutex implementation if fixed signaler_port!=5905 2013-12-12 00:39:01 +08: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
Brandon Carpenter
af808203d7 Fix failing test case in test_filter_ipc.
Add explicit check for primary group.
2013-12-06 00:46:14 -08:00
Pieter Hintjens
f5b6bd70f3 Merge pull request #775 from pijyoi/master
use enum retired_fd instead of -1
2013-12-05 03:25:12 -08:00
KIU Shueng Chuan
fd8d6d471f use enum retired_fd instead of -1
using -1 causes a warning on Windows platform because SOCKET is unsigned.
2013-12-05 07:04:21 +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
Brandon Carpenter
8662f44efa Intial IPC accept filter support.
Adds sets of process (Linux only), user, and group IDs for filtering
connections from peer processes over IPC transport.  If all of the
filter sets are empty, every connection is accepted.  Otherwise,
credentials for a connecting process are checked against the filter sets
and the connection is only accepted if a match is found.

This commit is part of LIBZMQ-568 and only adds the filter sets and
implements the filter in the IPC accept method.  The interface for
adding IDs to filter sets are included in a separate commit.

IPC accept filtering is supported only on Linux and OS X.
2013-12-04 14:12:29 -08:00
Martin Hurton
973d13d545 Code cleanup 2013-12-03 15:59:34 +01:00
Brian Knox
ff292d62d0 changing zmq_proxy_steerable to not use null terminated strings 2013-12-01 20:29:03 +00:00
Martin Hurton
cf14c54102 Fix issue #763 2013-11-30 21:25:18 +01:00
KIU Shueng Chuan
bd41087ab9 make win32 signaler support ephemeral ports 2013-11-28 18:25:28 +08:00
Richard Newton
abbe704d9e Fix windows build for type of service. 2013-11-25 09:25:23 +00:00
Chris Laws
38bceca9ca Add ability to set and get DSCP socket option 2013-11-25 13:31:21 +10:30
KIU Shueng Chuan
7bd0b6ada1 remove all asserts during critical section
the size of the critical section is reduced by only entering the critical
section right before the bind().
2013-11-12 01:12:24 +08:00
KIU Shueng Chuan
cf8ba925b4 return error to caller on bind error 2013-11-12 00:07:06 +08:00
Ian Barber
51fa803d63 Merge pull request #751 from psl-felipefarinon/master
Removing C++11 code.
2013-11-11 05:51:12 -08:00
psl-felipefarinon
31cf53f025 issue #583 removing C++11 code. 2013-11-11 10:20:28 -02:00
Bruno D. Rodrigues
750426037d 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 2013-11-10 10:19:19 +00:00
Martin Hurton
05d5962872 Signal that the peer performed orderly shutdown 2013-11-07 21:40:26 +01:00
Richard Newton
7a510b4b60 Fix formatting. 2013-11-07 17:50:29 +00:00
Richard Newton
90425cd5d6 Merge branch 'master' of https://github.com/zeromq/libzmq 2013-11-07 17:47:44 +00:00
Richard Newton
89ecf2de79 Merge pull request #744 from psl-felipefarinon/master
Fixing broken build issue #583
2013-11-07 09:47:29 -08:00
Richard Newton
568cc1adaa Get maximum number of sockets it can handle from poller_t 2013-11-07 17:46:19 +00:00
psl-felipefarinon
485db41a43 Fixing broken build issue #583 2013-11-07 15:21:42 -02:00
Richard Newton
998c10a1b7 Merge pull request #741 from hintjens/master
Simplified error handling for make_fdpair on Windows
2013-11-07 08:48:48 -08:00
Pieter Hintjens
de5a787868 Merge pull request #742 from psl-felipefarinon/master
Fixing issue #583. Using low resolution timer for clock::now_ms
2013-11-07 08:12:48 -08:00
psl-felipefarinon
b8a9f299fb Fixing issue #583. Using low resolution timer for clock::now_ms 2013-11-07 14:06:54 -02:00
Pieter Hintjens
51f8571933 Simplified fdpair reset after fork 2013-11-07 15:30:25 +01:00
Pieter Hintjens
2be70dca1a Simplified error handling for make_fdpair on Windows 2013-11-07 15:26:56 +01:00
Pieter Hintjens
c573f6b812 Fix for issue 574 2013-11-07 14:59:53 +01:00
Richard Newton
844689ed9a Fix race condition on shutdown 2013-11-06 15:19:04 +00:00
Erik Hugne
edbfae3141 zmq: change TIPC default lookup domain when connecting
By default, TIPC uses a closest first approach to find
a publication that can satisfy your connection request.
Any publication on the local node will automatically
be chosen for all requests, even if you're trying to
spread it out over multiple machines.
We fix this by widening the default lookup scope.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
2013-11-05 13:28:07 +01:00
Pieter Hintjens
5e6aa58a14 Fixed issue 578 - corrected type usage 2013-11-04 16:04:13 +01:00
Pieter Hintjens
d7c8021afc Fixed issue 578 2013-11-04 15:39:20 +01:00
Pieter Hintjens
027990a112 Merge pull request #732 from Hugne/tipc
zmq: narrow condition to include TIPC in build/test
2013-11-01 07:14:00 -07:00
Erik Hugne
58ac87def1 zmq: narrow condition to include TIPC in build/test
As TIPC transport for 0MQ will only work on post 3.8
Linux kernels where nonblocking connect was added,
we add AC_RUN test to check for this functionality.
Should the test fail, tipc is excluded from build/test.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
2013-11-01 14:59:31 +01:00
Pieter Hintjens
299068b571 Merge pull request #731 from mbarbisan/master
Shorten ZMQ_ROUTER_REASSIGN_IDENTITIES to ZMQ_ROUTER_HANDOVER. Also, add...
2013-11-01 06:30:27 -07:00
Erik Hugne
632677e805 ricnewton review comment
Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
2013-11-01 11:17:10 +01:00
Erik Hugne
eab85b5295 zmq: add support for TIPC transport
A ZeroMQ application can opt for TIPC based sockets
using the TIPC port name format:
zmq_bind(sb, "tipc://{type,lower,upper}");
zmq_connect(sc, "tipc://{type,inst}");

'type' is the service ID, and 'lower/upper' can be
used for service partitioning or basic load
balancing.

ZeroMQ TIPC transport requires a kernel >= 3.8
(nonblocking connect support for TIPC).

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
2013-11-01 10:09:22 +01:00
Mark Barbisan
5e71475d45 Shorten ZMQ_ROUTER_REASSIGN_IDENTITIES to ZMQ_ROUTER_HANDOVER. Also, added a test for the HANDOVER functionality. 2013-11-01 00:03:00 -04:00
Pieter Hintjens
bc88b88804 Merge pull request #729 from mbarbisan/master
Fixed LIBZMQ-556: ROUTER socket does not support reconnection from clients with multiple NICs
2013-10-31 11:01:55 -07:00
Mark Barbisan
3825f3b300 Add support to the ROUTER socket to reassign identities upon name collision. 2013-10-30 23:45:46 -04:00
NetImperia
c75ed69af3 Update tcp_connecter.cpp
Crash Fix: Assertion failed: Permission denied (..\..\..\src\tcp_connecter.cpp:279) on windows 8
2013-10-30 18:16:06 -07:00
Pieter Hintjens
eaba5dfe37 Renamed test_router_raw_empty to test_stream_empty
* The ZMQ_ROUTER_RAW API was deprecated in favor of ZMQ_STREAM
* Same issue hit router.cpp, which I've fixed
2013-10-28 21:00:42 +01:00
MinRK
96ee8bb9d9 add missing msg->init for ROUTER_RAW with empty message 2013-10-27 22:50:04 -07:00
xantares
e273d94db8 include cmake files in tarball 2013-10-23 19:06:29 +02:00
Pieter Hintjens
406e6051e4 Cleaned up the code
- removed unnecessary malloc
- spaces, not tabs to indent
- renamed control states to be more logical
- renamed SUSPEND to PAUSE, feels more accurate
- fixed indentation, which was off in places
2013-10-21 10:51:59 +02:00
Pieter Hintjens
08c91c0f94 Merge pull request #712 from lalebarde/master
add proxy control flow and test
2013-10-21 01:39:09 -07:00
Richard Newton
1b8daed9db Use consistant integer type in raw_decoder 2013-10-18 14:20:30 +01:00
Laurent Alebarde
e33a382f8d new zmq_proxy is zmq_proxy_steerable to respect C API 2013-10-18 15:01:05 +02:00
Laurent Alebarde
1b75d1ecb5 add proxy control flow and test 2013-10-18 11:12:48 +02:00
Martin Hurton
7ecab54ac3 Load identity message to decoder at start 2013-10-11 14:32:38 +02:00
Martin Hurton
b35c08beb4 Rename engine's methods to improve code readability 2013-10-09 20:26:38 +02:00
Volodymyr Korniichuk
433ea35b6c Typo in type name "emTPy_slots_t"
https://zeromq.jira.com/browse/LIBZMQ-565
2013-10-08 00:40:30 +03:00
Pieter Hintjens
283e52357c Merge pull request #700 from hashstat/master
Add documentation on Linux ipc abstract namespace support and a bug fix.
2013-10-07 11:50:36 -07:00
Brandon Carpenter
e0f4d603c2 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.
2013-10-07 10:42:39 -07:00
Pieter Hintjens
1a20220817 Merge pull request #699 from ezhikus/free_and_delete
It is safe to "free(NULL)" and "delete NULL"
2013-10-05 00:22:26 -07:00
Volodymyr Korniichuk
7a960ff29c useless checks were removed 2013-10-04 21:54:52 +03:00
Brandon Carpenter
31cdbd2afa 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.
2013-10-04 11:33:52 -07:00
Martin Hurton
88882e31cd Stop curve handshake when cookie box verification fails 2013-10-04 08:21:43 +02:00
MinRK
4577956964 return NULL and set EINVAL on bad z85 input
asserts aren't appropriate for checking user input.
2013-09-29 13:07:51 -07:00