- 20 Aug, 2017 6 commits
-
-
Simon Giesecke authored
Problem: test_zap_unsuccessful_status_500 and test_curve_security_with_bogus_client_credentials sometimes fail, particulary on slow/valgrind runs Solutio: relax test assertion
-
sigiesec authored
Problem: no tests for client-side events for successful handshake and authentication failure in handshake Solution: added tests for CURVE, add emitting of client-side event in curve_client_t; add ZAP code 300/500 tests for all mechanisms; suppress sending an error message for ZAP code 300
-
Luca Boccassi authored
Solution: do it to avoid leaks. Even though they are below 33 bytes so it's all allocated on the stack, the small message size might change in the future.
-
Luca Boccassi authored
Solution: fix it
-
Simon Giesecke authored
Solution: relaxed assertion to accept 10% of the SNDHWM, and updated documentation accordingly
-
sigiesec authored
Solution: align assertions with specification of ZMQ_SNDHWM (actual number of enqueueable messages may be lower)
-
- 19 Aug, 2017 1 commit
-
-
Luca Boccassi authored
Solution: use LIBZMQ_UNUSED where necessary
-
- 18 Aug, 2017 4 commits
-
-
Luca Boccassi authored
Solution: monitor new events only if DRAFT APIs are enabled, and convert to new event types. Same for DRAFT socket options.
-
Luca Boccassi authored
Solution: remove the second one to fix build failure
-
sigiesec authored
Solution: extracted common base class curve_mechanism_base_t
-
sigiesec authored
Solution: redesign ZMQ_HANDSHAKE_FAILED_* events, introduce new class of ZMQ_HANDSHAKE_FAILED_AUTH events
-
- 17 Aug, 2017 4 commits
-
-
sigiesec authored
Solution: added ZAP tests for PLAIN
-
sigiesec authored
Solution: added ZAP tests for NULL
-
sigiesec authored
Solution: Move ZAP tests to own file test_security_zap.cpp, move common code to testutil_security.hpp
-
sigiesec authored
Solution: as a first step, parametrize mechanism configuration in CURVE tests
-
- 15 Aug, 2017 2 commits
-
-
Simon Giesecke authored
* Problem: no test case with CURVE encryption and large identity Solution: added test case (currently crashing) * Problem: possible buffer overflow in mechanism_t::add_property Solution: add target buffer length parameter and check the buffer is sufficiently large * Problem: test cases accidentally excluded from build Solution: remove #if/#endif * Problem: possible buffer overruns related to metadata at various locations Solution: allocate buffer large enough for actual metadata, reduce code duplication * Problem: syntax error related to pointer type conversion Solution: change argument type of make_command_with_basic_properties to const char * * Problem: large metadata may cause an assertion in produce_initiate Solution: Allow metadata of arbitrary size in produce_initiate
-
Simon Giesecke authored
* Extracted connect_vanilla_socket function * Problem: no tests for ZMTP-CURVE protocol errors Solution: added two test cases with erroneous HELLO commands * Problem: insufficient tests for ZMTP-CURVE protocol errors Solution: added two test cases with erroneous HELLO command version * Problem: test HELLO message is invalid apart from deliberate errors Solution: create cryptographically correct HELLO message add tweetnacl.c to test_security_curve * Problem: nonce is incorrect, build fails with GCC Solution: use correct non prefix * Problem: make builds are failing Solution: transfer CMake changes to (auto)make files * Problem: nonce is incorrect, build fails with GCC Solution: use correct non prefix * Problem: make builds are failing Solution: transfer CMake changes to (auto)make files * Problem: no test with INITIATE command with invalid length Solution: added test case * Problem: code duplication between test_security_curve.cpp and curve_client.cpp Solution: extracted parts of zmq::curve_client_t::produce_hello into reusable function * Problem: code duplication between test_security_curve.cpp and curve_client.cpp Solution: extracted further parts of zmq::curve_client_t into reusable functions added missing file * Problem: mechanism_t::add_property can be declared static Solution: declare mechanism_t::add_property static * Problem: intermediate crypto data needs to be passed between static function calls to curve_client_tools_t Solution: add non-static member functions * Problem: msg_t instance may be closed twice Solution: remove offending close * Problem: prepare_hello uses static curve_client_tools_t::produce_hello Solution: Use non-static curve_client_tools_t::produce_hello * Problem: no test with invalid command name where INITIATE command is expected Solution: added test case * Problem: make builds are failing due to curve_client_tools.hpp not being found Solution: add curve_client_tools.hpp to list of source files * Problem: wrong initializer order in zmq::curve_client_t Solution: reorder * Problem: under non-Windows systems, test fails because random_open was not called Solution: call random_open/random_close within test * Problem: conflict between custom function htonll and macro definition on Darwin Solution: define htonll function only if not defined as a macro * Problem: nullptr not defined on all platforms Solution: replace nullptr by NULL * Problem: libsodium builds not working Solution: adapt compile and link file sets for libsodium builds * Problem: Makefile.am broken Solution: Fix syntax * Problem: no tests for garbage encrypted cookie or content in INITIATE Solution: added test cases * Problem: test cases accidentally excluded from build Solution: remove #if/#endif * Solution: some error cases are unreachable Problem: for the time being, added some comments without changing the code * Added comments on hard-to-test cases
-
- 08 Aug, 2017 1 commit
-
-
Simon Giesecke authored
* Problem: missing test for status code 300, inadequate assertion for status code 500 Solution: add test, change assertion (currently test fails) * Problem: gcc compiler error deprecated conversion from string constant Solution: declare variable as const * Problem: in case of ZAP handler returning a status code other than 200, no appropriate event is emitted Solution: immediately emit event after receiving reply from ZAP handler * Problem: endpoint address is not included in zap-reply monitor event Solution: added functions to retrieve endpoint address in zmq::i_engine and zmq::session_base_t removed unused code block in zmq::stream_engine_t::next_handshake_command * Problem: wrong formatting Solution: fix formatting * Problem: test fails because of EPIPE Solution: add EPIPE/ECONNRESET/ECONNAGAIN handling for more test cases
-
- 07 Aug, 2017 5 commits
-
-
Simon Giesecke authored
* Problem: CI failure on Appveyor with err==ECONNRESET Solution: ignore ECONNRESET analogous to EPIPE * Problem: blocking test execution Solution: added more debug output, do not wait for monitor infinitely without output
-
Simon Giesecke authored
Solution: do not assert on ZAP protocol error when connection was closed by client
-
Simon Giesecke authored
Solution: add sleep
-
Luca Boccassi authored
Solution: expect that error, which can happen on very slow machines due to a client timimng out or RST before the connection is accepted by the server
-
Luca Boccassi authored
Solution: refactor the ZAP thread to avoid creating the socket in the main thread and using it in the ZAP thread, and also to eliminate races at shutdown use another inproc control socket to signal termination to the thread
-
- 05 Aug, 2017 1 commit
-
-
Luca Boccassi authored
Solution: ignore ECONNRESET as with EPIPE - it can happen on very slow machines when the engine sends data to the peer and then tries to read from the TCP socket before the peer has read
-
- 04 Aug, 2017 5 commits
-
-
Luca Boccassi authored
Solution: bump timeout from 20 to 60 seconds
-
Simon Giesecke authored
Solution: add workaround at another place, unify two code fragments to remove duplication
-
Simon Giesecke authored
Solution: removed code duplication improved global variable naming added assertions on number of ZAP requests handled added assertion on monitor event to test_curve_security_with_plain_client_credentials
-
Simon Giesecke authored
* Problem: no tests for ZAP protocol errors Solution: added first test for a bogus version number in ZAP reply * Problem: no tests for ZAP protocol errors Solution: added more test cases * Problem: cannot compile without ZMQ_BUILD_DRAFT_API Solution: conditionally compile parts that depend on draft API * Problem: test_security_curve times out in CI Solution: Increase timeout for this test to 20 seconds
-
Simon Giesecke authored
Solution: add workaround for EPIPE error
-
- 03 Aug, 2017 2 commits
-
-
Luca Boccassi authored
Solution: use the wildcard endpoint instead
-
Simon Giesecke authored
* Fixing #2002 one way of doing it * Mechanisms can implement a new method `error_detail()` * This error detail have three values for the moment: no_detail (default), protocol, encryption. + generic enough to make sense for all mechanisms. - low granularity level on information. * Fixing #2002: implementation of the error details The ZMQ_EVENT_HANDSHAKE_FAILED event carries the error details as value. * Removed Microsoft extenstion for enum member access This was leading to compilation error under linux. * Adaptation of CURVE test cases * Monitoring event: changed API for detailed events Removed ZMQ_EVENT_HANDSHAKE_FAILED and replaced it by: - ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL, - ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL, - ZMQ_EVENT_HANDSHAKE_FAILED_ENCRYPTION Adaptation of text case `security_curve` * Removed event value comparison This was introduced for the previous API model adaptation * Removed the prints in std output and added missing details `current_error_detail` was not set in every protocol error cases * Fixed initialization of current_error_detail * Fixed error in greeting test case The handshake failure due to mechanism mismatch in greeting is actually a protocol error. The error handling method consider it like so and send a protocol handshake failure monitoring event instead of no_detail. Fixed the test_security_curve expectation as well. * Upgraded tests of monitoring events The tests check the number of monitoring events received * Problem: does not build under Linux or without ZMQ_DRAFT_API Solution: - properly use ZMQ_DRAFT_API conditional compilation - use receive timeouts instead of Sleep * Problem: duplicate definition of variable 'timeout' Solution: merged definitions * Problem: inconsistent timing dependencies Solution: reduce timing dependency by using timeouts at more places * Problem: assertion failure under Linux due to unexpected monitor event Solution: output event type to aid debugging * Problem: erroneous assertion code * Problem: assertion failure with a garbage server key due to an extra third event Solution: changed assertion to expect three events (needs to be checked) * Problem: extra include directive to non-existent file Solution: removed include directive * Problem: assertion failure on appveyor for unknown reason Solution: improve debug output * Problem: no build with libsodium and draft api Solution: add build configurations with libsodium and draft api * Problem: assertion failure on CI Solution: change assertion to reflect actual behaviour on CI (at least temporarily) * Problem: error in condition in assertion code * Problem: assertion failure on CI Solution: generalize assertion to match behavior on CI * Problem: assertion failures on CI Solution: removed inconsistent assertion on no monitor events before flushing improved debuggability by converting function into macro * Problem: diverging test code for three analogous test cases with garbage key Solution: extract common code into function * Problem: does not build without ZMQ_BUILD_DRAFT_API Solution: introduce dummy variable * Attempt to remove workaround regarding ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL again * Problem: EAGAIN error after handshake complete if there is no more data in inbuffer Solution: Skip tcp_read attempt in that case * Problem: handshaking event emitted after handshaking failed Solution: use stream_engine_t::handshaking instead of mechanism_t::status() to determine whether still handshaking * Include error code in debug output * Improve debugging output: output flushed events * Split up ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL into ZMQ_EVENT_HANDSHAKE_FAILED_ZMTP and ZMQ_EVENT_HANDSHAKE_FAILED_ZAP * Fixed compilation without ZMQ_BUILD_DRAFT_API * Renamed ZMQ_EVENT_HANDSHAKE_SUCCEED to ZMQ_EVENT_HANDSHAKE_SUCCEEDED for language consistency * Renamed ZMQ_EVENT_HANDSHAKE_SUCCEED to ZMQ_EVENT_HANDSHAKE_SUCCEEDED for language consistency * Renamed ZMQ_EVENT_HANDSHAKE_SUCCEED to ZMQ_EVENT_HANDSHAKE_SUCCEEDED for language consistency * Fixed assert_monitor_event (require event instead of allowing no event) Reverted erroneous change to handshaking condition Renamed test_wrong_key to test_garbage_key Generalized assumption in test_garbage_key to allow for ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL with error == EPIPE * Better isolate test cases from each other by providing a fresh context & server for each * Added diagnostic output * Changed assertion to reflect actual behavior on CI * Fixed formatting, observe maximum line length * Fixed formatting, observe maximum line length * Increase timeout to check if this fixes valgrind run * Close server with close_zero_linger * Increase timeout to check if this fixes valgrind run * Increase timeout to check if this fixes valgrind run * Generalize assertion to also work with valgrind * Fixed formatting * Add more diagnostic output * Generalize assertion to also work with valgrind
-
- 31 Jul, 2017 2 commits
-
-
Luca Boccassi authored
Solution: move definition in the DRAFT section of the header
-
Brian Russell authored
Linux now supports Virtual Routing and Forwarding (VRF) as per: https://www.kernel.org/doc/Documentation/networking/vrf.txt In order for an application to bind or connect to a socket with an address in a VRF, they need to first bind the socket to the VRF device: setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1); Note "dev" is the VRF device, eg. VRF "blue", rather than an interface enslaved to the VRF. Add a new socket option, ZMQ_BINDTODEVICE, to bind a socket to a device. In general, if a socket is bound to a device, eg. an interface, only packets received from that particular device are processed by the socket. If device is a VRF device, then subsequent binds/connects to that socket use addresses in the VRF routing table.
-
- 22 Jun, 2017 1 commit
-
-
Luca Boccassi authored
Solution: remove the pipe from the real trie when a peer disconnects. Also add a unit test that exercises the behaviour by reconnecting a different socket and sending a message that matches. Fixes #2601 and introduced by #2042
-
- 21 Jun, 2017 1 commit
-
-
Luca Boccassi authored
Solution: fix unit test to bind after setting the option.
-
- 14 Jun, 2017 1 commit
-
-
Iban Cereijo authored
Solution: use lower case ws2_32.lib to enable cross compilation from platforms with case-sensitive filesystems. When cross compiling the tests with Mingw-w64, CMake cannot locate Ws2_32.lib
-
- 13 Jun, 2017 1 commit
-
-
Luca Boccassi authored
Solution: revert change that made ZAP mandatory. The "Stonehouse" pattern, where CURVE is used only for encryption and without authentication, is a valid use case so we should still support it. Also restore CURVE testing in the test_heartbeat. Fixes #2594
-
- 18 May, 2017 1 commit
-
-
Luca Boccassi authored
Solution: remove server socket from poller before closing it Fixes #2581
-
- 17 May, 2017 1 commit
-
-
Luca Boccassi authored
Solution: roll back the pipe if writing messages other than the first fails in router::xsend. Roll it back also when the pipe is terminating. Also add test case that reproduces the memory leak when ran with valgrind. Fixes #2567
-
- 16 May, 2017 1 commit
-
-
BJovke authored
-