Simon Giesecke
c215235fb2
Problem: redundant string operations in zmq::udp_engine_t::sockaddr_to_msg
...
Solution: reuse string lengths and use memcpy instead
2019-02-05 03:34:32 -05:00
Simon Giesecke
d451a95234
Problem: redundant code in different preprocessor branches
...
Solution: change preprocessor guard scope
2019-02-05 03:34:32 -05:00
Simon Giesecke
fc6ef0ebff
Problem: zmq::get_peer_ip_address duplicates code from get_socket_address
...
Solution: change to use get_socket_address
2019-02-05 03:34:32 -05:00
Simon Giesecke
2f7a450294
Problem: socks_connecter_t duplicates code around opening and configuring a TCP socket
...
Solution: use tcp_open_socket function
2019-02-05 03:34:32 -05:00
Simon Giesecke
68d520ef68
Problem: tcp_connecter_t and tcp_listener_t duplicate code around opening and configuring a TCP socket
...
Solution: extract common parts into tcp_open_socket function
2019-02-05 03:34:32 -05:00
Simon Giesecke
3f4e64edc0
Problem: bind_to_device unnecessarily accepts a non-const string parameter
...
Solution: add const
2019-02-04 09:29:42 -05:00
Simon Giesecke
12c4b55af8
Problem: socks_connecter_t duplicates code with stream_connecter_base_t
...
Solution: let socks_connecter_t derive from stream_connecter_base_t and remove duplicate code
2019-02-04 09:29:42 -05:00
Luca Boccassi
0411bc159a
Problem: tipc disconnect does not work anymore
...
Solution: change back the indentifier endpoint to the one passed by the
user rather than the resolved one, otherwise when the user passes the
same string to the disconnect call they do not match anymore
2019-02-03 23:01:20 +01:00
Simon Giesecke
f22b0b7483
Problem: test_monitor failing for assertion on endpoint addresses on ZMQ_EVENT_LISTENING event
...
Solution: fix address passed and refactor set_local_address to remove code duplication and unnecessary address parsing when ZMQ_USE_FD is used
2019-02-02 18:33:29 +01:00
Simon Giesecke
54240dccbb
Problem: stream listeners do not provide correct local and remote address information (test_monitor is failing)
...
Solution: query local and remote addresses on accepting a connection
2019-02-02 16:52:15 +01:00
Simon Giesecke
d8b5204f73
Problem: socks_connecter_t does not set local address
...
Solution: query the local address and set it
2019-02-02 15:33:27 +01:00
Simon Giesecke
87082557f0
Problem: stream_connecter_base_t does not set local address
...
Solution: pass the local address by subclasses to create_engine
2019-02-02 15:33:27 +01:00
Simon Giesecke
aec9b130f7
Problem: get_socket_address and get_socket_name not available throughout libzmq and restricted to local address
...
Solution: move to address.hpp/.cpp and generalize
2019-02-02 15:33:27 +01:00
Simon Giesecke
01371398e9
Problem: monitor events are unversioned
...
Solution: add monitor event socket option
2019-02-02 15:33:27 +01:00
Simon Giesecke
2e73554644
Problem: socks_connecter_t, vmci_connecter_t and vmci_listener_t duplicate code with stream_*_base_t
...
Solution: add TODO comments to resolve this debt
2019-02-02 15:23:56 +01:00
Simon Giesecke
b462cc0912
Problem: misleading comments referring to a "library shutdown"
...
Solution: change to refer to the context
2019-02-02 15:23:56 +01:00
Simon Giesecke
9a376fbe24
Problem: code duplication in get_address of ipc/tcp/tipc listener classes
...
Solution: pull up to base class
2019-02-02 15:23:56 +01:00
Simon Giesecke
e162c8bda3
Problem: code duplication around getsockname
...
Solution: also use get_socket_address from base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
2b04946f49
Problem: code duplication around getsockname
...
Solution: also use get_socket_address from base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
c476cf3d14
Problem: implicit cast between signed and unsigned types on some platforms
...
Solution: perform explicit cast
2019-02-01 04:58:57 -05:00
Simon Giesecke
95eb8a7a99
Problem: parts of in_event duplicated across subclasses of stream_listener_base_t
...
Solution: extract function create_engine into base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
93c1843f3e
Problem: duplication across ipc_listener_t, tcp_listener_t, tipc_listener_t
...
Solution: extract common base class stream_listener_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
a40a3b7a34
Problem: several data members in stream_connecter_base_t are visible more than necessary
...
Solution: make them private and adapt initialization order
2019-02-01 04:58:57 -05:00
Simon Giesecke
a766a4b67e
Problem: reconnect_timer_id duplicated and essentially used only in base class
...
Solution: removed definitions and uses in subclasses
2019-02-01 04:58:57 -05:00
Simon Giesecke
bed3b0cfb4
Problem: tipc_listener_t data members not conforming to naming style
...
Solution: add underscore prefix
2019-02-01 04:58:57 -05:00
Simon Giesecke
2a5fb6cb8e
Problem: ipc_listener_t data members not conforming to naming style
...
Solution: add underscore prefix
2019-02-01 04:58:57 -05:00
Simon Giesecke
7e73587741
Problem: duplication in *_event methods across subclasses of stream_connecter_base_t
...
Solution: pull up common code, introduce new create_engine function in base class
2019-02-01 04:58:57 -05:00
Simon Giesecke
a09099a615
Problem: process_term and close duplicated across subclasses of stream_connecter_base_t
...
Solution: pull up
2019-02-01 04:58:57 -05:00
Simon Giesecke
531df586d0
Problem: rm_fd code duplicated across stream_connecter_t subclasses
...
Solution: pull up tcp_connecter_t::rm_handle and use in all subclasses
2019-02-01 04:58:57 -05:00
Simon Giesecke
1a230e89ca
Problem: process_plug, get_new_reconnect_ivl and add_reconnect_timer duplicated across subclasses of stream_connector_base_t
...
Solution: pull up to stream_connector_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
74667ebcba
Problem: destructors of tcp_connecter_t, ipc_connecter_t, tipc_connecter_t contain duplicated code
...
Solution: pull up to stream_connecter_base_t
2019-02-01 04:58:57 -05:00
Simon Giesecke
d6f8d246e2
Problem: data members are duplicated across tcp_connecter_t, ipc_connecter_t, tipc_connecter_t
...
Solution: extract common base class stream_connecter_base_t
2019-02-01 04:58:47 -05:00
Simon Giesecke
361d7168ad
Problem: tipc_connector_t::_handle_valid is redundant
...
Solution: replace by checks against valid value of _handle
2019-02-01 04:33:03 -05:00
Simon Giesecke
a13eb1a9d8
Problem: ipc_connector_t::_handle_valid is redundant
...
Solution: replace by checks against valid value of _handle
2019-02-01 04:33:03 -05:00
Simon Giesecke
065e81879a
Problem: tipc_connector_t::_timer_started is unspecifically named
...
Solution: rename to _reconnect_timer_started
2019-02-01 04:33:03 -05:00
Simon Giesecke
ca87aaed57
Problem: ipc_connector_t::_timer_started is unspecifically named
...
Solution: rename to _reconnect_timer_started
2019-02-01 04:33:03 -05:00
Simon Giesecke
c94ad64876
Problem: tipc_connector_t data members not conforming to naming conventions
...
Solution: add underscore prefix to data members
2019-02-01 04:33:03 -05:00
Simon Giesecke
58063a75a2
Problem: ipc_connector_t data members not conforming to naming conventions
...
Solution: add underscore prefix to data members
2019-02-01 04:33:03 -05:00
Simon Giesecke
4d362887bb
Problem: stream_engine_t::_endpoint is unnecessarily non-const
...
Solution: declare _endpoint const
2019-02-01 04:33:03 -05:00
Simon Giesecke
091df743a8
Problem: stream_engine_t::_peer_address is unnecssarily non-const
...
Solution: extract initialization code into get_peer_address function and declare _peer_address const
2019-02-01 04:33:03 -05:00
Simon Giesecke
ae79b41d4c
Problem: bug in tipc_listener_t::set_address, random port is determined but not used
...
Solution: assign result to address
Fixes #3376
2019-02-01 04:30:20 -05:00
Simon Giesecke
afe48e2b16
Problem: unnecessary explicit definitions/deletions of special member functions in tipc_address_t
...
Solution: remove them
2019-02-01 04:28:35 -05:00
Luca Boccassi
bfb4a868fc
Problem: atomic intrinsics unreliable on PPC64 and RISC-V
...
Solution: prefer CXX11 atomics if they are available to compiler
intrinsics.
test_hwm_pubsub fails 50% of the times on PPC64 and RISC-V with an
apparent memory corruption of messages sent by the application thread
to the I/O thread when using compiler intrinsics.
Switching to CXX11 atomics makes the test reliable again. The
standard API should be preferred anyway, if available.
2019-01-19 21:42:54 +00:00
Luca Boccassi
4a0c83fb12
Problem: yqueue false sharing issues on PPC64
...
Solution: detect cacheline size for aligment purposes at build time
instead of hard-coding it, so that PPC and S390 can align to a value
greater than the 64 bytes default.
Uses libc getconf program, and falls back to the previous value of 64
if not found.
2019-01-19 20:08:14 +00:00
Luca Boccassi
93b3689376
Problem: ZMQ_SOCKET_LIMIT and ZMQ_THREAD_PRIORITY have the same value
...
Solution: remove documents and tests for ZMQ_THREAD_PRIORITY getter. It
never worked and can never work as it has the same value as a get-only
option ZMQ_SOCKET_LIMIT. It cannot be changed without breaking ABI.
Note that the setter works fine as ZMQ_SOCKET_LIMIT is get-only.
2019-01-15 19:58:42 +00:00
Luca Boccassi
e9fd5aae43
Problem: small formatting issue highlighted by clang
...
Solution: fix it with make clang-format-diff
2019-01-09 12:02:58 +00:00
Guido Vranken
731be4bd59
Problem: Compilation error due to comparison between signed and unsigned expressions
...
Solution: Cast the signed expression (which is always positive) to unsigned
Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-01-09 12:36:28 +01:00
Guido Vranken
1a2ed12716
Problem: pointer overflow in zmq::v2_decoder_t::size_ready leading to remote code execution (issue #3351 )
...
Solution: refactor bounds check arithmetic such that no overflow shall occur
Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-01-08 23:39:41 +01:00
Shubham Lagwankar
cc686f15f4
Problem: unused import and inconsistent use of const
...
Solution: remove unused import and fix const placement.
2019-01-02 10:25:21 -05:00
Luca Boccassi
9bd9cbbeea
Problem: race condition in PUSH might break atomicity
...
Solution: if a multi-part message cannot be delivered by a PUSH socket
because the pipe is broken mid-way, drop the rest of the frames so that
the atomicity property is not broken.
2018-12-28 17:55:19 +01:00