0
0
mirror of https://github.com/zeromq/libzmq.git synced 2025-01-22 15:56:14 +08:00

1106 Commits

Author SHA1 Message Date
Ian Barber
06140daf29 Merge pull request #261 from mkoppanen/windows-build
Windows build
2012-02-17 14:38:02 -08:00
Mikko Koppanen
1bf4067cd8 More fixes for win build 2012-02-17 22:07:52 +00:00
Mikko Koppanen
51b59b40dd Fix build on windows 2012-02-17 22:06:10 +00:00
Mikko Koppanen
9a4fd8a305 Needs explicit cast on solaris 2012-02-17 21:55:06 +00:00
Mikko Koppanen
56aa49ff3d Fix build on solaris 2012-02-17 21:45:17 +00:00
skaller
38e74c9e84 Remove thread safe socket stuff from C binding. 2012-02-18 02:34:18 +11:00
Mikko Koppanen
da1920d944 Revert NULL checks in the API 2012-02-17 09:48:04 +00:00
Pieter Hintjens
ccdb7a6305 Minor cleanups
* Fixed use of ssize_t in zmq_msg_t class
* Corrected error after merge, old reference to inner_fctname (broke build)
2012-02-16 15:55:18 -06:00
Chuck Remes
a457be315b Merge pull request #246 from pieterh/arguments
Return EFAULT if required arguments are null
2012-02-16 13:20:33 -08:00
Chuck Remes
9321dfb845 Merge pull request #248 from pieterh/scattered
Renamed scatter/gather methods, cleaned up source
2012-02-16 13:19:11 -08:00
Ian Barber
2da76a3003 Updating to use getnameinfo rather than inet_ntop 2012-02-16 21:05:02 +00:00
Pieter Hintjens
4b62344023 Merge pull request #252 from gimaker/compact-trie-table
Compact the trie/mtrie node tables where possible, to reduce memory usag...
2012-02-16 10:49:23 -08:00
Pieter Hintjens
c9d124b27e Merge pull request #251 from gimaker/sub-sndhwn-assert
Drop subscription messages when reaching the SNDHWM rather than assertin...
2012-02-16 10:45:13 -08:00
Pieter Hintjens
bfbe556e00 Merge pull request #250 from gimaker/connect-assert
Resolve addresses in the calling thread on connect.
2012-02-16 10:35:48 -08:00
Pieter Hintjens
3ee99ae81f Renamed scatter/gather methods, cleaned up source 2012-02-16 12:30:37 -06:00
Pieter Hintjens
02b81d42ce Changed return type of zmq_msg_size to ssize_t to allow error return 2012-02-16 12:25:58 -06:00
Pieter Hintjens
dc09da4569 Return EFAULT if required arguments are null 2012-02-16 12:25:17 -06:00
Mikko Koppanen
2f44faa7ce Merge pull request #247 from pieterh/sendrecv
Added zmq_msg_send/recv functions
2012-02-16 08:58:03 -08:00
Staffan Gimåker
2cd04c54df Compact the trie/mtrie node tables where possible, to reduce memory usage.
Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-02-16 15:56:19 +01:00
Staffan Gimåker
e18f9da012 Drop subscription messages when reaching the SNDHWM rather than asserting.
This matches the behaviour of zmq_setsockopt(ZMQ_SUBSCRIBE, ...), which also
silently drops subscription messages if the SNDHWM is reached.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-02-16 14:49:47 +01:00
Staffan Gimåker
b9fb48f47b Resolve addresses in the calling thread on connect.
This allows us to actually report an error to the caller on resolve
failure, rather than asserting later on in the io thread.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-02-16 14:42:55 +01:00
Pieter Hintjens
d092f2615c Renamed peek/poke to get/set 2012-02-15 19:28:29 -06:00
Pieter Hintjens
dcc1725a90 Renamed zmq_getmsgopt to zmq_msg_peek
* Added zmq_msg_poke for orthogonality
* Added zmq_msg_more for simplicity
* Fixed up man pages and test program
2012-02-15 18:44:28 -06:00
Pieter Hintjens
fb4748f257 Added zmq_msg_send/recv functions 2012-02-15 15:37:35 -06:00
Pieter Hintjens
a50a8aa364 Revert "more checks for parameters of API functions"
This reverts commit e646ce43c155f9710aa4486abd2daf6d4a30ca5b.
2012-02-14 18:43:33 -06:00
Pieter Hintjens
afe8cd503f Revert "fix warn unused"
- anonymous contributor

This reverts commit 7b7d404269cc9bb28e1954ed38dbeb8f63079fd1.
2012-02-14 18:43:33 -06:00
Ian Barber
b6c97230ed Merge branch 'master' of https://github.com/zeromq/libzmq 2012-02-14 23:10:15 +00:00
Ian Barber
b5d3373905 Moving to std::string in options 2012-02-14 23:10:06 +00:00
Pieter Hintjens
a908ccbf35 Merge pull request #241 from skaller/master
provide type safe sockets and contexts
2012-02-13 08:55:58 -08:00
niXman
e646ce43c1 more checks for parameters of API functions 2012-02-12 20:10:52 +04:00
skaller
4807935605 Implement type safe sockets and contexts. 2012-02-12 10:15:51 +11:00
Ian Barber
770f84331f Allowing value 0, and moving code to get_address functions based on feedback 2012-02-11 15:09:03 +00:00
Ian Barber
91bf4944da Merge branch 'master' of https://github.com/zeromq/libzmq 2012-02-11 15:08:23 +00:00
niXman
7b7d404269 fix warn unused 2012-02-10 13:39:34 +04:00
Ian Barber
7fa14f3823 Merge branch 'master' of https://github.com/zeromq/libzmq 2012-02-08 22:06:50 +00:00
Ian Barber
7b32c9cb51 Adding ZMQ_LAST_ENDPOINT for wildcard support on TCP and IPC sockets 2012-02-08 22:06:46 +00:00
skaller
c3f7543ebe Fix uio support.
We have to use an incomplete type in the interface.
The definition of iovec is only in the implementation.
This appears to following existing practice in 0MQ.
It seems a bit flakey that zmq.h is not included in zmq.cpp,
which is normal practice to ensure the implementation matches
the specified interface. YMMV. I follow 0MQ style.
2012-02-08 13:15:47 +11:00
skaller
970a005399 Provide interface.
Also move iovec definition from implementation to interface.
Not clear to me at present if an incomplete type should
be used to avoid gratuitously including <sys/uio.h> in
the interface. The interface can't be used with this include.
2012-02-08 12:58:35 +11:00
skaller
383a49dadf Implement zmq_recvmmsg. 2012-02-08 11:45:36 +11:00
skaller
531835bba8 Implement zmq_sendv.
Posix style send multiple messages using scatter/gather array.
2012-02-08 03:20:25 +11:00
skaller
759b2e01fd Fix comments to conform to style guide. 2012-02-04 12:34:06 +11:00
skaller
520ad3c2d7 Set and arrange propagation of thread safe sockets flag.
We use a distinct context initialisation function to specify
all sockets derived therefrom will be thread safe.

However the inheritance is done exclusively in the C interface.
This is not really correct, but it is chosen to minimise
interference with the existing C++ code, including any
construct or other calls within the C++ code base.
Semantically the C++ code should be unchanged,
physically some data structures and extra methods are
provided by they're only used from the C binding.
2012-02-04 02:17:35 +11:00
skaller
988efbc73a Thread Safe Sockets.
1. Reorganise C API socket functions to eliminate bad practice
of public functions calling other public functions. This should
be done for msg's too but hasn't been in this patch.

2. Reorganise code in C API socket functions so that the
socket is cast on one line, the C++ function called on
the next with the result retained, then the result is returned.

This makes the code much simpler to read and also allows
pre- and post- call hooks to be inserted easily.

3. Insert pre- and post- call hooks which set and release
a mutex iff the thread_safe flag is on.

4. Add the thread_safe_flag to base_socket_t initialised to
false to preserve existing semantics. Add an accessor for
the flag, add a mutex, and add lock and unlock functions.

Note: as yet no code to actually set the flag.
2012-02-04 01:41:09 +11:00
skaller
4dd6ce0639 Add mission ; character 2012-02-04 00:10:01 +11:00
Daniel Norberg
79f753bf56 xpub: free received subscription messages 2012-02-03 11:04:46 +01:00
Chuck Remes
93db782a1d Merge branch 'libzmq-268' of git://git.lucina.net/libzmq 2012-02-02 14:17:30 -06:00
Chuck Remes
762bcff73f Merge branch 'libzmq-303' of git://git.lucina.net/libzmq 2012-02-02 14:14:56 -06:00
Chuck Remes
c54ad48c9b Merge branch 'libzmq-205' of git://git.lucina.net/libzmq 2012-02-02 14:09:37 -06:00
Martin Lucina
0319cb2cd1 Fix data loss for PUB/SUB and unidirectional transports (LIBZMQ-268)
With the introduction of subscription forwarding, the first message sent
on a PUB socket using a unidirectional transport (e.g. PGM) is always
lost due to the "subscribe to all" being done asynchronously.

This patch fixes the problem and also refactors the code to have a single
point where the "subscribe to all" is performed.

Signed-off-by: Martin Lucina <martin@lucina.net>
2012-02-02 13:07:48 +01:00
Staffan Gimåker
e6c97c5ecc Reduce memory usage of mtrie.
Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-30 09:47:33 +01:00
Martin Lucina
1925c92fe9 Merge branches 'libzmq-205' and 'libzmq-303' 2012-01-30 01:57:18 +01:00
Pieter Hintjens
281dcd2544 Merge pull request #221 from fidlej/master
Updated connector open() doc strings.
2012-01-27 14:48:43 -08:00
Pieter Hintjens
676d4f4e18 Merge pull request #222 from gimaker/trie-pruning
Fix for LIBZMQ-305
2012-01-27 14:48:17 -08:00
Pieter Hintjens
0c94cd036a Merge pull request #223 from gimaker/libzmq-310
Throw away unexpected data received by XPUB sockets, rather than asserting
2012-01-27 14:47:36 -08:00
Pieter Hintjens
95f6a07403 Merge pull request #224 from vortechs2000/master
Patch from Mikko Koppanen for #LIBZMQ-301
2012-01-27 14:47:14 -08:00
m
c4f2240851 Fix: runtime patch for when system has clock_gettime but does not support CLOCK_MONOTONIC. 2012-01-27 12:40:56 -08:00
m
b5dbff8ed4 Fix basic_string<unsigned char> not implemented in stdc++ 3 2012-01-27 12:24:14 -08:00
m
99df984be1 Fix bad combination of gcc3, -Werror and private destructor. 2012-01-27 12:23:32 -08:00
Staffan Gimåker
bc4d1b6002 Fixed segfault bug sometimes happening when pruning the trie/mtrie.
The cause behind the segfault was next.node being deleted but count still
being non-zero.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-26 14:12:11 +01:00
AJ Lewis
2e0c4330fa Patch from Mikko Koppanen for #LIBZMQ-301
Add the '-Ae' flag and check for gethrtime() on HPUX

Check if CLOCK_MONOTONIC defined before using it - if not, use
gethrtime() if it's available, otherwise fall back to the old
behavior.

Signed-off-by: AJ Lewis <aj.lewis@quantum.com>
2012-01-19 13:09:23 -06:00
Staffan Gimåker
36215656eb Throw away unexpected data received by XPUB sockets, rather than asserting.
Fixes LIBZMQ-310.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-09 12:19:59 +01:00
Martin Lucina
c34a144365 Fix pgm_receiver.cpp: zmq_assert (pending_bytes == 0) (LIBZMQ-205)
This patch fixes the problem described in LIBZMQ-205. The assertion itself
is probably caused by previously queued POLLIN events arriving after POLLIN
has been disabled on the socket.

The following additional bugs have been fixed as part of debugging this
problem:

- pgm_receiver_t does not flush messages written to the session in all
  cases which can lead to a stalled reader. Add calls to session->flush ()
  in the appropriate places.

- ensure to restart polling when a pending message is flushed in
  activate_in ().

Signed-off-by: Martin Lucina <martin@lucina.net>
2012-01-04 11:48:41 +01:00
Staffan Gimåker
19129edc60 Prune redundant nodes in the trie.
Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-03 16:24:44 +01:00
Staffan Gimåker
6fa9ffebe5 Prune redundant nodes in the mtrie.
Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-01-03 16:24:16 +01:00
Martin Lucina
029e28865d Fix assertion in pgm_sender_t::plug() (LIBZMQ-303)
Opening any PGM socket gives this assertion. The problem is in
pgm_sender_t::plug() which is incorrectly testing the return value from
session::write().

Signed-off-by: Martin Lucina <martin@lucina.net>
2011-12-25 02:57:04 +01:00
Ivo Danihelka
1d8b132d36 Updated connector open() doc strings.
Signed-off-by: Ivo Danihelka <ivo@danihelka.net>
2011-12-21 16:33:16 +01:00
Martin Sustrik
3fbe8ac3c3 Dont wait for pending subscription commands on shutdown
When (X)SUB socket is being shut down there may be pending
outbound subscription commands in the pipes. In such case
we want to close the socket immediately instead of waiting
for the commands to be sent.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-12-17 23:42:45 +01:00
Martin Sustrik
91fdedf25c Fix polling on XREP socket
When polling on XREP socket in incoming message part was prefetched,
but not the identity of sender. The problem is fixed by this patch.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-12-17 10:14:32 +01:00
Martin Sustrik
f9eb763293 zmq_sendmsg and zmq_recvmsg checks for NULL message object
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-12-16 07:04:38 +01:00
Stuart Webster
3fb5c11b03 Added MSVC10 solution and project files for Windows
These include configurations for both Win32 and x64 platforms. All project
settings have been normalised in property sheets (the ".props" files under
builds/msvc/properties) to simplify maintenance. Build artefacts are all
generated in platform-specific subfolders of bin, lib and obj directories.

Also enables the use of precompiled headers with MSVC10.

This significantly reduces the time required to compile libzmq with Visual
Studio on Windows. It should have no impact on other platforms.

Signed-off-by: Stuart Webster <sw_webster@hotmail.com>
2011-12-15 14:03:43 +01:00
Martin Lucina
a9e03336b0 A synchronous connect() failure in ipc_connecter can result in Assertion
failed: s == retired_fd (ipc_connecter.cpp:174), as reported in LIBZMQ-294.

This patch fixes the bug, and also an identical problem in tcp_connecter
which has not hit people since TCP connect() usually completes via the
asynchronous code path (poll, out_event).

Signed-off-by: Martin Lucina <martin@lucina.net>
2011-12-15 13:23:40 +01:00
Mika Fischer
aaac96d94a This makes clock_t insensitive to the system clock being reset by NTP or
the sysadmin, which could previously cause long hangs for instance in
zmq_poll.

Signed-off-by: Mika Fischer <mika.fischer@zoopnet.de>
2011-12-03 13:07:30 +01: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
5a6503e5c2 Bug in XREP and XREQ fixed (issue 280)
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-15 13:56:59 +01:00
Martin Sustrik
83975c1b21 Missing "defined" tokens added
The missing tokens broke the build if you used -Werror -Wundef

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-15 08:40:46 +01:00
Martin Sustrik
21bca4dbe4 Bug concerining identity in XREQ socket fixed (issue 280)
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-14 11:15:20 +01:00
Martin Sustrik
1c239708ab Couple of bugs in XREP handling of identities fixed.
wq:
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-13 10:33:49 +01:00
Martin Sustrik
f8b0055026 Hangup in signaler creation on Windows fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-10 23:38:08 +01:00
AJ Lewis
c79abee6bc Get AIX 6.1 compiling again by making msg_t class explicit
Older versions of gcc have problems with in-line forward declarations
when there's a naming conflict with a global symbol.

Signed-off-by: AJ Lewis <aj.lewis@quantum.com>

Expand the original patch to all such forward declarations.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-09 15:22:20 +01:00
Martin Sustrik
89962a8256 Uninitialised FSM state in REQ session fixed (issue 278)
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-08 14:49:15 +01:00
Chuck Remes
93529d8c5d Add zmq_getmsgopt to the API
The new function allows to retrieve options (flags)
from zmq_msg_t.

Signed-off-by: Chuck Remes <cremes@mac.com>
Renamed from zmq_msg_flags to zmq_getmsgopt
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-06 14:03:51 +01:00
Martin Sustrik
bb66f3cc3b Bug in trie fixed (issue 277)
When there were both '0' and '255' subnodes in (mtrie)
the removal of the node resulted in an infinite loop.
Fixed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-05 16:05:18 +01:00
Martin Sustrik
a756956781 Use identities in inproc transport
Previous patches have missed the case when the identity should
be sent from an inproc endpoint. Fixed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-05 09:57:17 +01:00
Brett Cameron
de1d32daae Fix getaddrinfo calls to work on OpenVMS
Signed-off by: Brett Cameron <Brett.Cameron@hp.com>
2011-11-04 14:15:06 +01:00
Martin Sustrik
50a9ee6e73 MSVC build fixed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-04 10:02:49 +01:00
Martin Sustrik
05ce301f35 Merge branch 'master' of github.com:zeromq/libzmq 2011-11-04 09:48:25 +01:00
Martin Sustrik
a4843b65d2 Identities re-introduced
However, the "durable socket" behaviour wasn't re-added.
Identities are used solely for routing in REQ/REP pattern.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-04 08:00:47 +01:00
Martin Sustrik
d20ea25b8c ZMQ_IDENTITY option re-introduced
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-02 14:33:58 +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
8a0f5f7650 Miru copyrights added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-01 14:46:18 +01:00
Martin Sustrik
7842c71073 LABELS and COMMANDs removed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-01 13:39:54 +01:00
Martin Sustrik
626099aa2a VTCP transport removed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-10-31 16:37:20 +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
4b832ea374 Revert the early dropping of request and replies for disconnected clients
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-10-31 15:56:39 +01:00
Martin Sustrik
dee8b2360a New style ROUTER socket removed.
Signed-off-by: Martin Sustrik <sustrik@turist.(none)>
2011-10-31 15:44:42 +01:00
Perry Kundert
09574a6104 Corrected discarding of remainder of message when request ID invalid
When zmq::req_t::xrecv detects that a response has no request ID
label, or the ID is the wrong size, it would return an EAGAIN, but
would not discard the remainder of the message.  This could allow the
remainder of the message to incorrectly "leak" into a future response,
if it is crafted to look like a reply with a valid response ID.
Discard all remaining message blocks, if the ID is invalid in any way.
2011-10-29 14:47:53 +02:00
Bernd Prager
52bab42212 Missing bracket added
Signed-off: Martin Sustrik <sustrik@250bpm.com>
2011-10-27 17:11:28 +02:00
Ben Gray
9e000c8f26 Patch for issue LIBZMQ-275. Dealing with VSM in distribution when pipes fail to write.
Signed-off-by: Ben Gray <ben@benjamg.com>
2011-10-27 13:59:54 +02:00
Paul Betts
1b706ac028 Enable exceptions raising on assert on Win32
This patch changes the Win32 version to call RaiseException instead of abort
(which eventually calls TerminateProcess). This allows crash dumps to be sent
correctly instead of the process disappearing.

Signed-off-by: Paul Betts <paul@paulbetts.org>
2011-10-27 11:48:58 +02:00
Martin Sustrik
a8362abf11 Enable exceptions raising on assert on Win32
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-10-27 11:21:01 +02:00