1. 16 Nov, 2017 1 commit
  2. 25 Oct, 2017 1 commit
    • f18m's avatar
      Change ZMQ_THREAD_AFFINITY to… · 2aa0e6fd
      f18m authored
      Change ZMQ_THREAD_AFFINITY to ZMQ_THREAD_AFFINITY_CPU_ADD/ZMQ_THREAD_AFFINITY_CPU_REMOVE. Avoid prefix thread names when no prefix was set.
      2aa0e6fd
  3. 24 Oct, 2017 1 commit
  4. 17 Oct, 2017 1 commit
  5. 16 Oct, 2017 1 commit
    • f18m's avatar
      Background threads enhancements (#2778) · bfbb4ff2
      f18m authored
      * Background thread scheduling 
      
      - add ZMQ_THREAD_AFFINITY ctx option; set all thread scheduling options
      from the context of the secondary thread instead of using the main
      process thread context!
      - change ZMQ_THREAD_PRIORITY to support setting NICE of the background
      thread when using SCHED_OTHER
      bfbb4ff2
  6. 09 Oct, 2017 1 commit
  7. 19 Sep, 2017 3 commits
  8. 07 Sep, 2017 3 commits
  9. 06 Sep, 2017 1 commit
  10. 01 Sep, 2017 1 commit
  11. 19 Aug, 2017 1 commit
  12. 18 Aug, 2017 3 commits
  13. 16 Aug, 2017 1 commit
  14. 04 Aug, 2017 1 commit
  15. 03 Aug, 2017 1 commit
    • Simon Giesecke's avatar
      Replace console output by monitoring events for curve security issues (#2645) · 5d4e30eb
      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
      5d4e30eb
  16. 31 Jul, 2017 2 commits
    • Luca Boccassi's avatar
      Problem: ZMQ_BINDTODEVICE is DRAFT but not DRAFT · 415bdbc1
      Luca Boccassi authored
      Solution: move definition in the DRAFT section of the header
      415bdbc1
    • Brian Russell's avatar
      Add socket option BINDTODEVICE · b963542e
      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.
      b963542e
  17. 25 Apr, 2017 1 commit
    • Jim Garlick's avatar
      gssapi: renumber socket options · c978d3bb
      Jim Garlick authored
      Problem: GSSAPI NAMETYPE socket option numbers were modified
      +1000 when moved to DRAFT section, but should use the definitive
      values while in DRAFT to minimize disruption later.
      
      Solution: renumber the socket options
      c978d3bb
  18. 24 Apr, 2017 1 commit
    • Jim Garlick's avatar
      gssapi: move new options to DRAFT section · 9fbf2e2e
      Jim Garlick authored
      Problem: The new GSSAPI NAMESPACE options should have been
      added to the DRAFT section of the API so they can be changed
      until stabilized.
      
      Solution:
      - Move defines to the DRAFT section of zmq.h
      - Duplicate them in zmq_draft.h, as is the local custom
      - Compile only if defined (ZMQ_BUILD_DRAFT_API)
      - Refactor internals slightly to avoid #ifdef hell
      9fbf2e2e
  19. 21 Apr, 2017 1 commit
    • Jim Garlick's avatar
      gssapi: add NAMETYPE socket options · 0b185e82
      Jim Garlick authored
      Problem: principals are looked up unconditionally
      with the GSS_C_NT_HOSTBASED_SERVICE name type.
      
      Solution: Add two new socket options to set the name type
      for ZMQ_GSSAPI_PRINCIPAL and ZMQ_GSSAPI_SERVICE_PRINCIPAL:
      
      ZMQ_GSSAPI_PRINCIPAL_NAMETYPE
      ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE
      
      They take an integer argument which must be one of
      ZMQ_GSSAPI_NT_HOSTBASED (0) - default
      ZMQ_GSSAPI_NT_USER_NAME (1)
      ZMQ_GSSAPI_NT_KRB5_PRINCIPAL (2)
      
      These correspond to GSSAPI name types of:
      GSS_C_NT_HOSTBASED_SERVICE
      GSS_C_NT_USER_NAME
      GSS_KRB5_NT_PRINCIPAL_NAME
      
      Fixes #2542
      0b185e82
  20. 26 Mar, 2017 1 commit
  21. 11 Mar, 2017 1 commit
  22. 18 Feb, 2017 1 commit
  23. 31 Dec, 2016 1 commit
  24. 30 Dec, 2016 2 commits
    • Vincent Tellier's avatar
      Code formatting + reverted hard error handshake fail · 48bc75e8
      Vincent Tellier authored
       - Moved new events in draft section + added to zmq_draft.h
       - Removed the remainning tabs
       - Reverted the hard error (back to soft error) in curve_server.cpp
      
      => The feature doesn't works anymore
      48bc75e8
    • Vincent Tellier's avatar
      Fixed issue #2227 · b6e9e0c2
      Vincent Tellier authored
      Added two new monitoring events:
       - ZMQ_EVENT_HANDSHAKE_SUCCEED is raised once the encryption handshake succeed
       - ZMQ_EVENT_HANDSHAKE_FAILED is raised when it failed
      Both events are raised on server and client side.
      b6e9e0c2
  25. 29 Dec, 2016 1 commit
  26. 05 Dec, 2016 1 commit
    • Luca Boccassi's avatar
      Problem: 4.2.0 won't compile on AIX 7.1 · 57db5f2a
      Luca Boccassi authored
      Solution: restore inclusion of poll.h if using poll before zmq.h as
      it was originally, as AIX redefines the POSIX structures and provides
      compatibility macros.
      Also add alternative aliases for 32 bit AIX's pollitem struct:
        events -> reqevents
        revents -> rtnevents
      57db5f2a
  27. 20 Nov, 2016 1 commit
  28. 08 Nov, 2016 1 commit
  29. 01 Nov, 2016 1 commit
  30. 28 Oct, 2016 2 commits
    • Luca Boccassi's avatar
      Problem: MS VC++ build broken · 2484d1c8
      Luca Boccassi authored
      Solution: try to detect architecture if building with VC++ and
      hardcode pointer size accordingly.
      Expressions are not allowed inside declspec intrinsics, which
      includes other intrinsics.
      2484d1c8
    • Luca Boccassi's avatar
      Problem: pointer union for zmq_msg_t is a hack · df367a66
      Luca Boccassi authored
      Solution: use compiler's alignment attributes instead which is
      clearer and less of a hack.
      Pointer alignment violations causing crashes on architectures
      such as sparc64 and aarch64.
      This also avoid triggering ABI checkers as the change is compatible
      even though applications that suffer from the bug should rebuild to
      take advantage of the fix.
      df367a66
  31. 27 Sep, 2016 1 commit