- 26 Apr, 2012 1 commit
-
-
Martin Hurton authored
The recv function accepted flags parameter but this was unused.
-
- 25 Apr, 2012 4 commits
-
-
Ian Barber authored
Mention limitation of the device implementation
-
Martin Hurton authored
+ fix whitespace errors + drop some unnecessary parens
-
Pieter Hintjens authored
Rename XREP/XREQ to ROUTER/DEALER in tests
-
Pieter Hintjens authored
xsub: fix memory leak
-
- 24 Apr, 2012 4 commits
-
-
Martin Hurton authored
-
Martin Hurton authored
The implementation of the send call for XSUB socket failed to release and initialise empty message when duplicate subscription was detected.
-
Ian Barber authored
Atomic operations for armv7a
-
Patrick Trantham authored
This commit implements atomic operations for the armv7a architecture using gcc inline assembly. This offers higher performance compared to pthread mutexes. Tested on an am3517 evm, clocked at 600MHz: ./inproc_thr 200 1000000 ------------------------ 53-60K messages / sec, pthread mutexes 73-90K messages / sec, assembly atomic ops ./inproc_lat 200 1000000 ------------------------ average latency: 42.234 [us], pthread mutexes average latency: 35.496 [us], assembly atomic ops
-
- 21 Apr, 2012 9 commits
-
-
Pieter Hintjens authored
add process_commands() to the beginning of zmq_connect() and zmq_bind()
-
Sergey KHripchenko authored
I believe there was a conception that zmq_connect() and zmq_bind() will be called only at the socket creation time and therefore don't need it. Now it is not true anymore.
-
Pieter Hintjens authored
ZMQ BUG FOUND + fixes for zmq_unbind() / zmq_disconnect() usage corner cases
-
Sergey KHripchenko authored
1. when we call zmq_bind()/zmq_connect() to create endpoint we send ourselfs(through launch_child()) command to process_own(endpoint) (and add it to own_t::owned) in the application thread we could call zmq_unbind() / zmq_disconnect() _BEFORE_ we run process_own() in ZMQ thread and in this situation we will be unable to find it in own_t::owned. in other words own_t::owned.find(endpoint) will not be deleted but it will be deleted from socket_base_t::endpoints. 2. when you zmq_unbind() the lisnening TCP/IPC socket was terminated only in destructor... so the whole ZMQ_LINGER time listening TCP/IPC socket was able to accept() new connections but unable to handle them. this all geting even worse since unfortunately zmq has a bug and '*_listener_t' object not terminated untill the socket's zmq_close(). AT LEAST FOR PUSH SOCKETS. Everything is ok for SUB sockets. Easy to reproduce without my fix: zmq_socket(PUSH) zmq_bind(tcp); // connect to it from PULL socket zmq_unbind(tcp); sleep(forever) // netstat -anp | grep 'tcp listening socket' With my fix you could see that after zmq_unbind(tcp) all previously connected tcp sessions will not be finished untill the zmq_close(socket) regardless of ZMQ_LINGER value. (*_listener_t terminates all owned session_base_t(connect=false) and they call pipe_t::terminate() which in turn should call session_base_t::terminated() but this never happens)
-
Sergey KHripchenko authored
it works but rises very serious questions. Please add license header by your choice. This file for 99% resemble crossroads-io/tests/shutdown.cpp
-
Sergey KHripchenko authored
-
Pieter Hintjens authored
fix for: [zeromq-dev] head builds again but two failing tests
-
Sergey KHripchenko authored
-
Sergey KHripchenko authored
-
- 20 Apr, 2012 3 commits
-
-
Pieter Hintjens authored
2nd try wuth sock->unbind() and sock->disconnect(). now with const char*'s argument
-
Sergey KHripchenko authored
make[2]: Entering directory `/home/laotse/src/abs/zeromq-git/src/libzmq-build/src' CXX libzmq_la-address.lo address.cpp: In destructor 'zmq::address_t::~address_t()': address.cpp:41:29: error: deleting object of polymorphic class type 'zmq::tcp_address_t' which has non-virtual destructor might cause undefined behaviour [-Werror=delete-non-virtual-dtor] cc1plus: all warnings being treated as errors
-
Sergey KHripchenko authored
-
- 19 Apr, 2012 1 commit
-
-
Ian Barber authored
Fixed issue #358
-
- 18 Apr, 2012 5 commits
-
-
Pieter Hintjens authored
implement zmq_unbind(),zmq_disconnect(), zmq->sock->getsockopt(ZMQ_LAST_ENDPOINT_ID)
-
Sergey KHripchenko authored
-
Pieter Hintjens authored
-
Ian Barber authored
fix bug in zmq::tcp_address_t::resolve_interface() where resolved interface ip overwrited by 0.0.0.0
-
Sergey KHripchenko authored
fix bug in zmq::tcp_address_t::resolve_interface() where all resolved interface ip's overwrited by 0.0.0.0
-
- 17 Apr, 2012 2 commits
-
-
Pieter Hintjens authored
Small patch to instantiate clock_t once
-
Ian Barber authored
socket. Thus, it is shared between subsequent calls to xs_recv (and xs_send). That in turn significantly limits the number of invocations of getimeofday (or similar) when timeouts are used and recv/send is called in a tight loop.
-
- 16 Apr, 2012 2 commits
-
-
Pieter Hintjens authored
Update socket docs
-
Ian Barber authored
-
- 13 Apr, 2012 2 commits
-
-
Ian Barber authored
some spaces cleanups + delete unused anymore zmq::max_sockets + some minor code chages
-
Sergey KHripchenko authored
-
- 12 Apr, 2012 2 commits
-
-
Pieter Hintjens authored
Implement ZMQ_TCP_ACCEPT_FILTER setsockopt() for listening TCP sockets.
-
Sergey KHripchenko authored
Assign arbitrary number of filters that will be applied for each new TCP transport connection on a listening socket. If no filters applied, then TCP transport allows connections from any ip. If at least one filter is applied then new connection source ip should be matched. To clear all filters call zmq_setsockopt(socket, ZMQ_TCP_ACCEPT_FILTER, NULL, 0). Filter is a null-terminated string with ipv6 or ipv4 CIDR. For example: localhost 127.0.0.1 mail.ru/24 ::1 ::1/128 3ffe:1:: 3ffe:1::/56 Returns -1 if the filter couldn't be assigned(format error or ipv6 filter with ZMQ_IPV4ONLY set) P.S. The only thing that worries me is that I had to re-enable 'default assign by reference constructor/operator' for 'tcp_address_t' (and for my inherited class tcp_address_mask_t) to store it in std::vector in 'options_t'...
-
- 11 Apr, 2012 2 commits
-
-
Pieter Hintjens authored
Fix issue #335
-
Martin Hurton authored
The CreateEvent function requests EVENT_ALL_ACCESS access rights when the event object already exists. This causes problems when the event object is created from a service. The solution is to call OpenEvent function when the CreateEvent failed due to access control. The proper solution would be to use CreateEventEx function, but this one is not available on Windows XP.
-
- 10 Apr, 2012 3 commits
-
-
Pieter Hintjens authored
C++ style comments result in compile errors with non-c99 C compiler
-
jdc8 authored
-
Pieter Hintjens authored
Handle ETIMEDOUT
-