91 Commits

Author SHA1 Message Date
Martin Hurton
ed076d4620 Fix bug in reporting protocol errors 2014-05-18 08:30:40 +02:00
Martin Hurton
7d3fa3afcb Tell the session why the engine has stopped 2014-05-17 21:04:38 +02:00
Martin Hurton
22d6a97403 Split plain_mechanism into client and server part 2014-05-12 06:10:56 +02:00
Will Strang
afe5fd87e9 Issue #1017: add ZMQ_HANDSHAKE_IVL time limit on connection handshake 2014-05-09 13:54:24 +00:00
Martin Hurton
934560b559 NULL: Implement ERROR handling
NULL mechanism sends ERROR command rather than READY command when ZAP
handler rejects the ZAP request (status code != "200"). The body of
ERROR command contains the status code as returned by ZAP handler.
2014-05-07 16:49:56 +02:00
Martin Hurton
0be8144176 Update mechanism API so we can check for ERROR status 2014-05-06 17:08:56 +02:00
Martin Hurton
dcd1f2038e Minor renaming 2014-05-05 19:52:53 +02:00
Martin Hurton
f2807d11a0 Remove i_properties interface
We use metadata_t directly. No need for generic interface now.
2014-05-03 21:03:49 +02:00
Pieter Hintjens
b06474312d ZAP vs. ZMTP metadata priority fixed 2014-05-02 23:14:27 +02:00
Pieter Hintjens
84ed81c014 Added test_metadata
- also prioritize ZAP metadata over ZMTP metadata in case application
  uses same names.
2014-05-02 22:21:50 +02:00
Martin Hurton
8d82cc2a0b Include ZMTP properties in message metadata
Metadata are built in stream_engine now.
This makes it easy to extend metadata with user-defined properties.
2014-05-02 12:45:14 +02:00
Martin Hurton
b9c2748146 Add metadata to received messages 2014-05-01 17:30:51 +02:00
Pieter Hintjens
39ccfea036 Added more scaffolding for security
- additional messages to help people debugging security errors
2014-04-29 22:21:58 +02:00
Chris Laws
09647fa916 src/gssapi_client.cpp 2014-04-25 13:47:07 +09:30
Mike Gatny
a4a0dc6644 Split up gssapi mechanism into client and server. 2014-04-24 14:17:05 -07:00
Mike Gatny
4b1c851db4 Stubbed in gssapi security mechanism. 2014-04-24 14:17:05 -07:00
Matt Arsenault
00aeaddf94 Fix unused parameter and variable warnings. 2014-01-18 13:17:29 -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
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
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
Martin Hurton
5d41d51ba5 Replace assert with zmq_assert 2014-01-08 21:11:54 +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
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
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
Martin Hurton
973d13d545 Code cleanup 2013-12-03 15:59:34 +01:00
Martin Hurton
cf14c54102 Fix issue #763 2013-11-30 21:25:18 +01:00
Martin Hurton
05d5962872 Signal that the peer performed orderly shutdown 2013-11-07 21:40:26 +01: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
7a960ff29c useless checks were removed 2013-10-04 21:54:52 +03:00
Pieter Hintjens
e42a0a4074 Added test case for issue 566
* Tests dealer-to-router connection 100 times
* This was failing in ZMQ v4.0.0 RC1
2013-09-26 14:18:40 +02:00
Martin Hurton
be25cfdf35 Call flush after writing the identity message 2013-09-26 09:40:23 +02:00
Pieter Hintjens
28b0a5fa27 Updated libzmq to match RFC 23, 24, 25, 26
* Command names changed from null terminated to length-specified
* Command frames use the correct flag (bit 2)
* test_stream acts as test case for command frames
* Some code cleanups
2013-09-04 17:59:45 +02:00
Martin Hurton
4a5358f4d0 Implement ZAP for NULL mechanism 2013-07-18 10:59:39 +02:00
Martin Hurton
53bc53da04 Update PLAIN mechanism to the latest ZAP revision 2013-07-18 10:59:34 +02:00
Martin Hurton
d65231be1c Update CURVE mechanism to the latest ZAP revision 2013-07-18 10:59:31 +02:00
Martin Hurton
afe9afa2a5 Set socket buffers before establishing TCP connection
The window scale option carried in SYN segment is computed from socket's
receive buffer size. So we need to set this buffer size before calling
connect or bind.
2013-06-30 07:30:51 +02:00
Ian Barber
694543e3a2 Merge branch 'master' of git://github.com/zeromq/libzmq 2013-06-22 10:59:16 +01:00
Ian Barber
f4c51db842 Fix small streamengine issue w/ term and handshake
Also tidy up monitor test a little.
2013-06-22 10:58:16 +01:00
Martin Hurton
8af208fab7 Implement ZMTP/3.0 CURVE mechanism 2013-06-22 11:48:44 +02:00
Martin Hurton
20a7978d67 Stop ZMTP handshake when an unexpected message comes 2013-06-22 08:12:11 +02:00
Martin Hurton
2928c91a6d Implement ZAP and integrate it with PLAIN mechanism 2013-06-06 13:28:21 +02:00
Ian Barber
9a0b2c8970 Pieter's change to fix memory leak on mechanism 2013-05-29 21:58:20 +01:00
Pieter Hintjens
f909b9c722 plain_mechanism now uses options.as_server
- we need to switch to PLAIN according to options.mechanism
- we need to catch case when both peers are as-server (or neither is)
- and to use username/password from options, for client
2013-05-17 17:21:59 +01:00
Martin Hurton
182a224bb0 Use socket options to select security mechanism 2013-05-17 15:49:59 +02:00
Martin Hurton
4eecda8af3 Implement ZMTP/3.0 PLAIN mechanism
This implements protocol handshake.
We still need to design and implement 1) API changes so a user
can set username and password, and 2) a mechanism for engine
to authenticate users.
2013-05-14 11:20:13 +02:00
Martin Hurton
d47295db70 Abstract security mechanism 2013-05-14 10:52:52 +02:00
Martin Hurton
cd4d8bb15a Implement ZMTP/3.0 NULL mechanism 2013-04-28 14:13:40 +02:00
Lourens Naudé
b5e5e10126 Fix return code redeclaration for platforms with SO_NOSIGPIPE 2013-04-23 23:01:14 +01:00