0
0
mirror of https://github.com/zeromq/libzmq.git synced 2025-01-22 07:29:31 +08:00

131 Commits

Author SHA1 Message Date
Lourens Naudé
ce4d321684 Revert "Merge pull request #473 from methodmissing/fix-engine-endpoint"
This reverts commit 1a18c7b0a816e10f8a8a770b2141d47f661f0302, reversing
changes made to bef9a41bdb991b867981317e0e20ee174ecd6fea.
2012-11-17 10:06:09 +00:00
Lourens Naudé
fdf162a117 [LIBZMQ-450] Copy the stream engine endpoint - string reference caused memory corruption 2012-11-16 17:21:07 +00:00
Martin Hurton
c543b2ce8c Resolve LIBZMQ-465 2012-11-13 12:33:30 +01:00
Martin Hurton
41dc2e6049 Resolve LIBZMQ-459
Ref: https://zeromq.jira.com/browse/LIBZMQ-459
2012-11-06 09:35:55 +01:00
Martin Hurton
9d8eb1f9b9 Style fixes 2012-10-30 12:18:30 +01:00
Pieter Hintjens
4bc405a366 Merge pull request #452 from hshardeesi/master
New socket option (ZMQ_ROUTER_RAW_SOCK) for ZMQ_ROUTER sockets
2012-10-29 21:00:15 -07:00
Martin Hurton
3aa30329d1 Use correct types when returning value in read/write methods 2012-10-29 10:46:33 +01:00
Hardeep
83387b4073 Added support for non-zmq tcp client connections to router socket.
- Created a new option ZMQ_ROUTER_RAW_SOCK
    - Added new raw_encoder and raw_decoder to receive and send messages in raw form to remote client
    - Added test case file tests/test_raw_sock.cpp

    o To create a raw router sock set the ZMQ_ROUTER_RAW_SOCK option
    o ZMQ_MSGMORE flag is ignored for non-id messages
    o To terminate a remote connection send id message followed by zero length data message
2012-10-29 00:03:36 -07:00
Martin Hurton
82d7238f08 Make socket IO more robust
See also https://zeromq.jira.com/browse/LIBZMQ-433
2012-09-29 11:36:52 +02:00
Lourens Naudé
759d453368 Significantly reworked the monitoring infrastructure with a more granular per socket API and to play well with monitoring endpoints in application threads 2012-09-21 12:53:31 +01:00
Martin Hurton
2a41c8d7b4 Simplify initial handshaking 2012-09-05 20:17:34 +02:00
Martin Hurton
3f6148abdf Implement new message encoder/decoder
This is supposed to become part of the ZMTP/1.1.

The main differences from the ZMTP/1.0 framing protocol are:
- flags field comes first, followed by the length field
- long messages are signaled using a flag rather then 0xff escape
- length field does not include the flags field, 0 is a valid value
2012-09-05 20:17:22 +02:00
Martin Hurton
8672f5829e Introduce abstract interface for message encoder/decoder 2012-09-05 18:31:27 +02:00
Martin Hurton
d9307c9ff0 Make ZMQ interoperate with ZMQ 2.x SUB sockets
Since ZMQ 2.x does not support subscription forwarding, it's not
possible to use ZMQ 2.x SUB socket to receive messages from a PUB
socket.

This patch adds some compatibility layer so that ZMQ 2.x SUB socket
receives messages from PUB socket.
2012-09-02 22:46:26 +02:00
Martin Hurton
dfc0222ee6 Decouple encoder_t and decoder_t from session_base_t
This patch introduces i_msg_sink and i_msg_source interfaces. This
allows us to make message encoder and decoder more general.
2012-09-02 22:46:26 +02:00
Martin Hurton
1bca4f6f03 Extend ZTP/1.0 protocol
The new protocol adds support for protocol version and  exchanges the
socket type, so that the library can reject a connection when the
sockets do not match.

The protocol was designed so that it's possible to detect and fully
support ZTP/1.0 peers.

When a new connection is set up, peers exchange greeting messages. The
greeting message encodes both the protocol verion and the socket type.
The format of the greeting message is as follows:

    greeting    = tag1, adaptation, tag2, version, length, socket_type
    tag1        = BYTE / 0xff
    adaptation  = 8 BYTES
    tag2        = BYTE / 0x7f
    version     = BYTE / 1
    length      = BYTE / 1
    socket_type = BYTE

The protocol does not define the value of adaptation field.

When interoperability with ZTP/1.0 peers is required, the adaptaion
encodes, in network byte order, the length of identity message increased
by 1. When adaptaion consists of eight zeros, the current
implementatatio of 0MQ 2.x closes the connection.

This patch supports both ZTP/1.0 and new protocol.
2012-09-02 22:46:26 +02:00
Sebastian Lauwers
a622328a9c Fix reordering compile errors 2012-08-04 23:54:31 +02:00
Lourens Naudé
9dc248f6ab Fix invalid address metadata for ZMQ_EVENT_DISCONNECTED 2012-08-04 11:41:33 +01:00
Alessandro Ghedini
4bd78bb4cf Check if SO_NOSIGPIPE is defined 2012-06-06 15:08:00 +02:00
Martin Hurton
d0b9005ef0 Don't assume SOCKET_ERROR is -1 on Windows 2012-05-27 23:38:33 +02:00
Martin Hurton
ac53f1a728 Remove unnecessary casts 2012-05-27 23:38:16 +02:00
Martin Hurton
52ed4cdccf Remove dead code 2012-05-27 15:18:38 +02:00
Lourens Naudé
c38aecdc50 Merge branch 'master' into events 2012-05-04 02:35:22 +01:00
Lourens Naudé
5c6f72c17c ZMQ_MONITOR socket option registers a callback / event sink for changes in socket state 2012-05-04 02:32:46 +01:00
Martin Hurton
776563fcff Fix issue #264
Before this patch, the stream engine terminated itself
whenever it had detected an IO error. If this happened
when sending a message, the engine lost all
in-flight messages, messages waiting to be decoded,
and the last decoded message that had not been accepted,
if there was one.

The new behaviour is to terminate the engine only after
the input error has been detected and the last decoded
2012-04-29 17:40:59 +02:00
Mikko Koppanen
70cf2d41ba ETIMEDOUT is a valid error code here. Fixes intermittent assertion failure on laggy networks 2012-04-10 09:55:10 +09:00
Martin Sustrik
fc17bd4117 ENOTCONN on recv() on TCP socket is treated decently (issue 254)
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-22 14:48:35 +01:00
Martin Sustrik
8e21d64c97 Copyright dates adjusted to reflect reality
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-01 18:06:11 +01:00
Martin Sustrik
ac7717b7b3 250bpm copyrights added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-10-31 16:20:30 +01:00
Martin Sustrik
f78d9b6bfc Session class separated into socket-type-specific sessions
This is a preliminary patch allowing for socket-type-specific
functionality in the I/O thread. For example, message format
can be checked asynchronously and misbehaved connections dropped
straight away.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-09-15 10:00:23 +02:00
Martin Sustrik
b3bac17607 tcp_engine renamed to stream engine
The engine was not used exclusively for TCP connections.
Rather it was used to handle any socket with SOCK_STREAM
semantics. The class was renamed to reflect its true function.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-08-16 12:44:34 +02:00