Commit Graph

599 Commits

Author SHA1 Message Date
Martin Sustrik
5dcbc34396 zmq_poll with no fds behaves decently
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-02-08 14:46:27 +01:00
Martin Sustrik
3f758ab2f4 Don't use RLIMIT_NOFILES in devpoll_t.
The patch allows for running 0MQ on Solaris and HP-UX
even though ulimit for max number of file descriptors
is set to unlimited.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-02-03 09:59:54 +01:00
Martin Sustrik
ca1acc340c RLIMIT_NOFILE not used in poll_t anymore
The problem was that RLIMIT_NOFILE can be set to RLIM_INIFINITY
(and that appears to be default on AIX) which caused 0MQ to fail.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-02-03 08:46:04 +01:00
Martin Sustrik
1b15eba9a9 Fixed the problem of subscription forwarding and PGM interaction
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-28 07:50:21 +01:00
Thijs Terlouw
f7f1dfc86d ZMQ_RECONNECT_IVL_MAX socket option added
It allows for exponential back-off strategy when reconnecting.

Signed-off-by: Thijs Terlouw <thijsterlouw@gmail.com>
2011-01-26 07:01:06 +01:00
Mikko Koppanen
8561a55d2c Remove unnecessary visibility pragmas
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2011-01-20 22:12:25 +01:00
Dhammika Pathirana
c91bf25645 Fix handle connection reset during session init
Patch to handle nmap version probes.

Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2011-01-20 07:52:40 +01:00
Martin Sustrik
56bdba592c Fix cppcheck warnings: Prefer prefix ++/-- operators for non-primitive types.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-18 15:57:45 +01:00
Steven McCoy
667b247e32 Cancel pending timers when decoder for PGM stalls
Otherwise the timer event can raise an input event
causing assertion on unprocessed data.

Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
2011-01-17 14:45:24 +01:00
Martin Sustrik
a348d94c09 Fair queueing of subscriptions added to XPUB socket
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-14 12:38:07 +01:00
Martin Sustrik
58c9830d90 XSUB socket has a subscription distributor
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-14 12:25:54 +01:00
Martin Sustrik
8eae7d8507 'message distribution mechanism' separated from XPUB socket
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-14 12:05:10 +01:00
Martin Sustrik
18f29ded6a Make cppcheck not complain about "'operator=' should return something"
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-13 11:44:23 +01:00
Neale Ferguson
7051387108 Support dynamic generation of C preprocessor definitions for PGM rather than hardcoding them.
Signed-off-by: Neale Ferguson <neale@sinenomine.net>
2011-01-12 09:22:25 +01:00
Martin Sustrik
bd0ba6e89a Size of inproc hwm and swap is sum of peers' hwms and swaps
The meat of the patch was contributed by Douglas Creager.
Martin Sustrik implemented storing peer options in inproc
endpoint repository.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-10 13:53:30 +01:00
Dhammika Pathirana
babdf48aac Fix pipe writer termination
Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2011-01-07 13:28:35 +01:00
Martin Sustrik
8e0049e2fb Disable sending messages on SUB socket
The ability was inherited from XSUB socket.
Now it's properly disabled.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-07 12:59:48 +01:00
Martin Sustrik
472bdcd6b4 Return ETERM from getsockopt(ZMQ_EVETS) if zmq_term() was called
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-05 16:57:51 +01:00
Martin Sustrik
95eebbfffa sunos/gcc3 compilation issue fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-01-03 20:50:24 +01:00
Martin Sustrik
51d2d9b9f8 Yet one more fix for oversized messages.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-20 13:06:36 +01:00
Martin Sustrik
112d0cd52e Fix the segfault when over-sized message is rejected.
The in_progress message inside of decoder was left
uninitialised in such a case.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-20 11:47:41 +01:00
Martin Sustrik
d15e881ea0 unplugged engine tries to manipulate the pollset -- fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-17 16:30:42 +01:00
Dhammika Pathirana
b19ee99bb1 fix race condition in session init
Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2010-12-17 15:30:56 +01:00
Mikko Koppanen
27e83cc525 Fixes assertion on pipe.cpp:237 when swap fills up.
Fixes swap::full () functionality

Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2010-12-15 20:10:27 +01:00
Mikko Koppanen
a46980babe Remove assertions from devices
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2010-12-15 14:41:18 +01:00
Dhammika Pathirana
f749f2d21c add basic uri validations
Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2010-12-13 15:40:26 +01:00
Dhammika Pathirana
22b2b9a2b6 fix overwriting errno on bind failure
Signed-off-by: Dhammika Pathirana <dhammika@gmail.com>
2010-12-13 14:18:47 +01:00
Bob Beaty
fcfad5682e Added Recovery Interval in Milliseconds
For very high-speed message systems, the memory used for recovery can get to
be very large. The corrent limitation on that reduction is the ZMQ_RECOVERY_IVL
of 1 sec. I added in an additional option ZMQ_RECOVERY_IVL_MSEC, which is the
Recovery Interval in milliseconds. If used, this will override the previous
one, and allow you to set a sub-second recovery interval. If not set, the
default behavior is to use ZMQ_RECOVERY_IVL.

Signed-off-by: Bob Beaty <rbeaty@peak6.com>
2010-12-09 21:42:58 +01:00
Martin Sustrik
8d6cafe066 All devices conflated into a single implementation.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-06 22:57:29 +01:00
Martin Sustrik
ec61751e17 options.type correctly set for PUB/SUB/XPUB/XSUB
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-06 22:36:10 +01:00
Martin Sustrik
2daa0bb49d XSUB accepts (un)subscriptions in form of messages.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-05 09:48:52 +01:00
Martin Sustrik
c80e7b80cc XPUB and XSUB socket types added.
These are just placeholders. At the moment XPUB behaves th same
as PUB and XSUB as SUB.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-04 23:14:38 +01:00
Martin Sustrik
17d7e6ede0 Merge branch 'maint'
* maint:
  Remove unnecessary cast in kevent_delete

Conflicts:
	src/kqueue.cpp

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-12-01 10:27:24 +01:00
Martin Lucina
289b1f5ced Remove unnecessary cast in kevent_delete
Fixes the build on NetBSD where the compiler complains about casting NULL
to (int).

Signed-off-by: Martin Lucina <mato@kotelna.sk>
2010-12-01 10:25:31 +01:00
Steven McCoy
28db150aaf Fix thread thunker scope for MSVC.
Signed-off-by: Steven McCoy <steven.mccoy@miru.hk>
2010-11-29 10:52:22 +01:00
Martin Sustrik
325dd2f091 Functions passed to pthread_create are declared as extern "C"
So far these were declared as C++ static functions which
was incorrect and caused warnings with SunStudio.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-27 22:19:43 +01:00
Martin Lucina
c9584096e0 Control symbol exports using -fvisibility
On systems using GCC 4.0 or newer which support symbol visibility in shared
libraries, use -fvisibility=hidden and only export explict API functions
defined in zmq.cpp. We do not enable -fvisibility on MinGW since this uses a
separate mechanism (__declspec).

Signed-off-by: Martin Lucina <mato@kotelna.sk>
2010-11-25 17:12:31 +01:00
Martin Sustrik
734624be76 Typo fixed in a comment.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-25 14:05:43 +01:00
Martin Sustrik
ac40680ea2 Problem with blob_t initialisation fixed.
HP's version of STL doesn't allow for initialisation of basic_string
(blob_t) using NULL pointer, while SGI's implementation is OK with
that. Fixed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-19 12:35:06 +01:00
Mikko Koppanen
b83d0a1bc0 Remove unnecessary conditional
This conditional is unnecessary as BUILD_PGM can be negated in the test.

Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2010-11-17 15:07:59 +01:00
Mikko Koppanen
da3327cf87 Build refactoring
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2010-11-15 17:02:36 +01:00
Martin Sustrik
f77c8ca47f Merge branch 'maint'
* maint:
  Couple of patches for AIX build
2010-11-13 18:16:13 +01:00
Martin Sustrik
ffcb0baa73 Couple of patches for AIX build
- RAND_bytes function resides in crypto library
- pollfd on AIX used 'reqevents' instead of events and 'retnevents'
  instead of 'revents'

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-13 18:08:18 +01:00
Chia-liang Kao
a2500ae348 Fix a bug that zmq_poll's select backend spins when timeout=-1, due to
ptimeout not properly recalculated after first pass.

Signed-off-by: Chia-liang Kao <clkao@clkao.org>
2010-11-12 19:16:00 +01:00
Martin Sustrik
8abe67357a Merge branch 'maint'
* maint:
  Fix socket_t::recv() hang scenario where initial call to process_commands() eats signal

Conflicts:
	src/socket_base.cpp
2010-11-12 14:47:26 +01:00
Marc Rossi
f7123de943 Fix socket_t::recv() hang scenario where initial call to process_commands() eats signal
Added block boolean var to second process_commands() invocation for blocking sockets
instead of always using true.  This prevents the process_commands() call from hanging
when a message is received with an empty queue after the call to xrecv() but
prior to the initial call to process_commands() invoked when ++ticks == inbound_poll_rate.

Signed-off-by: Marc Rossi <mrossi19@gmail.com>
2010-11-12 14:38:25 +01:00
Martin Sustrik
c0217027cc Coding style cleanup in mailbox.cpp
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-06 08:02:14 +01:00
Martin Sustrik
9da84a5239 signaler renamed to mailbox
For historical reasons queue to transfer commands between
threads was called 'signaler'. Given that it was used to
pass commands rather than signals it was renamed to 'mailbox',
see Erlang mailboxes.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-05 17:39:51 +01:00
Martin Sustrik
9cfdb441f4 slots renamed to tids
Threads were so far identified by integers called 'slots'.
This patch renames them to more comprehensible 'tid's (thread IDs).

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2010-11-05 16:38:52 +01:00
Martin Lucina
1b39bcd883 Automatically resize signalling socket buffer if full
If the socketpair used by signaler_t fills up, this can lead to deadlock.
This patch provides partial resolution by attempting to resize SO_SNDBUF on
the writer side, and if that fails we shall at least assert rather than
hang.

I've also refactored the signaler_t code to make the platform-dependent
parts clearer and have tested both the MSG_DONTWAIT and standard POSIX path
in recv.

The Win32 implementation currently does not implement resizing as I'm not
convinced that it's safe, but it will also assert like other platforms if
signaler_t::send() cannot succeed.

The OpenVMS implementation has been carried forward but is untested.

Signed-off-by: Martin Lucina <mato@kotelna.sk>
2010-11-04 17:54:47 +01:00