668 Commits

Author SHA1 Message Date
Martin Sustrik
ceb5e1a073 Deallocation functions in zmq.h and msg_t class are consistent.
The two functions had different calling conventions (C vs. C++).
It is fixed now.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-03 23:20:43 +02:00
Martin Sustrik
5e329ba7ca Minor patch to keep ICC compiler happy
ICC doesn't recognise that assert(false) terminates the program
and thus complains that certain functions have no return values.
This patch supplies dummy return values to keep the compiler happy.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-03 23:16:03 +02:00
Martin Sustrik
6ecec9bbf1 Current inpipe remains unchaged in XREP when other pipe terminates
When an inpipe terminated within XREP, it was erased from the array
and thus current_in (which is an index) pointed to a different
element in the array. This caused problems when we were in the
middle of reading a multipart message.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-02 19:28:51 +02:00
Martin Sustrik
e5d4cd39e1 Yet one more fix related to PUB socket and multipart messages
This patch fixes the activation of the pipes, when they pass
from passive state directly to active.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-05-02 19:26:30 +02:00
Martin Sustrik
eb9bc1b064 Message atomicity problem in PUB socket fixed.
Reaching the HWM caused breaking message atomicity when the
flow was reestablished - initial parts of multipart messages
may have been lost.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-30 06:48:18 +02:00
Martin Sustrik
fe2e772dd5 pgm_socket uses binary version of UUID
pgm_socket used textural form of UUID to generate GSIs.
The recent patch that removed support for textual UUIDs
broke the functionality. This patch fixes the problem.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-30 06:47:36 +02:00
Martin Sustrik
96213d5735 WSAENETUNREACH is a valid networking error
Till now, 0MQ asserted on Windows when connect () returned
WSAENETUNREACH.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-29 07:23:30 +02:00
Martin Sustrik
b2eb84f8ca Substantial simplification of uuid_t
The string format of UUID is not used in 0MQ. Further on,
it turns out that UUIDs have fixed microarchitecture-agnostic
binary layout (see RFC4122). Thus, the conversion to string
and back to binary can be avoided.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-29 07:19:22 +02:00
Martin Sustrik
10fbc78e5c Assert during SUB socket termination fixed.
Fair queueing algorithm was checking whether the current pipe
is not closed in the middle of reading a multipart message.
However, this is OK when the socket is closing down.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-22 07:51:24 +02:00
Martin Sustrik
e0246e32d7 Message-related functionality factored out into msg_t class.
This patch addresses serveral issues:
1. It gathers message related functionality scattered over whole
   codebase into a single class.
2. It makes zmq_msg_t an opaque datatype. Internals of the class
   don't pollute zmq.h header file.
3. zmq_msg_t size decreases from 48 to 32 bytes. That saves ~33%
   of memory in scenarios with large amount of small messages.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-21 22:27:48 +02:00
Martin Sustrik
581697695a Message validity is checked in the runtime
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-19 08:08:15 +02:00
Martin Sustrik
e3dc0b25d9 OpenPGM compilation error on OSX fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-18 08:55:51 +02:00
Martin Sustrik
590ad2510b Error handling for accept on Cygwin fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-15 07:59:28 +02:00
Martin Sustrik
5444064c1a Minor cleanup of preprocessor definitions for OpenPGM
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-13 10:33:54 +02:00
Martin Sustrik
6191213a57 Code dealing with messages moved to msg.cpp
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-12 14:20:49 +02:00
Martin Sustrik
3b636d7d18 zmq_utils implementation moved to zmq_utils.cpp
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-12 10:00:29 +02:00
Martin Sustrik
e6fd193760 OpenPGM now doesn't redefine bool, we can drop the workaround
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-12 09:22:22 +02:00
Martin Sustrik
b96fe15bb6 Run-time checking for context & socket validity added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-09 09:35:34 +02:00
Martin Sustrik
4b52cf949f TCP and IPC connection initiation allow for multiple properties
So far the only property passed on connection initiation was
identity. The mechanism was now made extensible. Additional
properties are needed to introduce functionality such as
checking the peer's socket type, "subports" etc.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-04 17:53:49 +02:00
Martin Sustrik
475ba3849d Issue with error checking on Win32 platform fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-04 12:49:39 +02:00
Martin Sustrik
1842628b90 Unreferenced variable removed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-04-04 12:12:06 +02:00
Pieter Hintjens
3e655227bd Fixed memory leak with threads on win32
Signed-off-by: Pieter Hintjens <ph@imatix.com>
2011-04-02 09:22:41 +02:00
Mikko Koppanen
fbf1f51468 Upstream the openpgm build fixes. Add DSO symbol visibility to OpenPGM builds
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2011-03-31 18:42:09 +02:00
Martin Sustrik
d36d9a378a Comments improvement
related to fairness while reading/writing large messages

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-27 19:41:32 +02:00
Martin Sustrik
17fdb5e3a8 zmq_recv() returns size of the message even if it's truncated
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-27 09:50:25 +02:00
Martin Sustrik
82dbef360c Memory leak in zmq_recv fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-26 11:05:55 +01:00
Martin Sustrik
abb184a051 ZMQ_NOBLOCK renamed ZMQ_DONTWAIT
Done because of POSIX compliance

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-26 10:38:40 +01:00
Martin Sustrik
bc4a1ce334 ZMQ_HWM split into ZMQ_SNDHWM and ZMQ_RCVHWM
These new options allow to control the maximum size of the
inbound and outbound message pipe separately.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 16:47:33 +01:00
Martin Sustrik
507718ee1a ZMQ_HWM type changed to int
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 15:43:03 +01:00
Martin Sustrik
bd9d7715eb ZMQ_RATE and ZMQ_RECOVERY_IVL types cahnged to int
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 15:18:20 +01:00
Martin Sustrik
d61f067f5b ZMQ_EVENTS type changed to int
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 15:07:23 +01:00
Martin Sustrik
23bd3726a5 ZMQ_RCVMORE type changed to int
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 14:59:43 +01:00
Martin Sustrik
17e82a3611 ZMQ_SNDBUF and ZMQ_RCVBUF type changed to int
This mimics POSIX specification.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 14:48:50 +01:00
Martin Sustrik
a2252de2bc ZMQ_RECOVERY_IVL and ZMQ_RECOVERY_IVL_MSEC reconciled
There's only one option now -- ZMQ_RECOVRY_IVL --
and it's measured in milliseconds.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 14:36:40 +01:00
Martin Sustrik
8463b4d55e SWAP functionality removed
On-disk storage should be implemented in devices rather than
in 0MQ core. 0MQ is a networking library and there's no point
in storing network buffers on disk.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 12:27:06 +01:00
Martin Sustrik
fb27a000d9 send/recv was changed to send/recv/sendmsg/recvmsg
send/recv now complies with POSIX by using raw buffers instead
of message objects and by returning number of bytes sent/recvd
instead of 0/-1.

The return value is changed accordingly for sendmsg and recvmsg.

Note that related man pages will be fixed in a separate patch.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 11:53:55 +01:00
Martin Sustrik
d4e83d2601 C++ binding removed from the core
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-24 10:18:06 +01:00
Martin Sustrik
941be8d217 zmq_device removed
Devices are basically applications on top of 0MQ stack. They
should reside in separate libraties.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-23 17:44:16 +01:00
Martin Sustrik
b45b68ae4a ZMQ_MCAST_LOOP removed
Multicast loopback is not a real multicast, rather a kernel-space
simulation. Moreover, it tends to be rather unreliable and lossy.
Removing the option will force users to use transports better
suited for the job, such as inproc or ipc.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-23 17:01:39 +01:00
Martin Sustrik
f5e6d67948 Timeout in zmq_poll is in milliseconds
The old timeout in microsecond haven't been compliant with
POSIX and was impractical at the same time.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-23 15:50:18 +01:00
Martin Sustrik
1619b3d84a Message atomicity bug in load-balancer fixed
If the peer getting the message have disconnected in the middle
of multiplart message, the remaining part of the message went
to a different peer. This patch fixes the issue.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-20 20:52:54 +01:00
Martin Sustrik
92c7c18367 Message atomicity problem solved in PUB socket
When new peer connects to a PUB socket while it is in the middle
of sending of multi-part messages, it gets just the remaining
part of the message, i.e. message atomicity is broken.

This patch drops the tail part of the message and starts sending
to the peer only when new message is started.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-20 11:50:51 +01:00
Martin Sustrik
f5015f4c93 Incorrect errno reported from tcp_listener_t::set_address
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-16 13:48:40 +01:00
Martin Sustrik
32ded2b457 Duplicate identities now checked with zmq_connect
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-16 13:26:23 +01:00
Jon Dyte
b79d07b8bc reset socket state when identity message cannot be written to xrep
Signed-off-by: Jon Dyte <jon@totient.co.uk>
2011-03-16 09:54:03 +01:00
Martin Sustrik
7045a4a213 Dead code removed from named_session.cpp
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-15 13:11:20 +01:00
Martin Sustrik
f987f4b3e2 FreeBSD complation error fixed
There was an error in pgm_receiver wrt strict aliasing.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-14 20:29:00 +01:00
Martin Sustrik
2970d6c30b Remove obsolete assert from pgm_socket.cpp
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-14 07:11:30 +01:00
Martin Sustrik
7b95c5920c Windows build fixed
Compilation of ip.cpp have failed because EPROTONOSUPPORT
was undefined. Including zmq.h should help as the error
code is defined there.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-09 16:34:37 +01:00
Brett Cameron
b00be2651c Different fixed to make OpenVMS port work.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-03-08 14:39:52 +01:00