1. 17 May, 2017 1 commit
    • Luca Boccassi's avatar
      Problem: REP leaves label msgs for dead REQ in pipe · bdc676f6
      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
      bdc676f6
  2. 16 May, 2017 1 commit
  3. 10 May, 2017 1 commit
  4. 24 Feb, 2017 2 commits
  5. 25 Apr, 2016 1 commit
  6. 21 Feb, 2016 1 commit
    • Osiris's avatar
      Problem: Several problems found by Coverity Static Analyzer · b3d5fa63
      Osiris authored
      Solution: The Coverity Static Code Analyzer was used on libzmq code and found
      many issues with uninitialized member variables, some redefinition of variables
      hidding previous instances of same variable name and a couple of functions
      where return values were not checked, even though all other occurrences were
      checked (e.g. init_size() return).
      b3d5fa63
  7. 18 Feb, 2016 1 commit
  8. 07 Feb, 2016 1 commit
  9. 06 Feb, 2016 1 commit
  10. 05 Feb, 2016 1 commit
  11. 28 Jan, 2016 1 commit
  12. 20 Nov, 2015 1 commit
  13. 11 Sep, 2015 2 commits
  14. 06 Sep, 2015 1 commit
  15. 21 Aug, 2015 2 commits
  16. 19 Aug, 2015 1 commit
    • Kapp Arnaud's avatar
      Problem: Identity frame from router has no metadata · 370b8c9b
      Kapp Arnaud authored
      The routing id (identity) frame return when reading from
      a router doesn't have the same metadata as the "real"
      message that follows.
      For example, The ZAP "User-Id" property is missing.
      
      This patch attach the "data message"'s metadata
      to the "identity message" when it is read from the router.
      370b8c9b
  17. 14 Aug, 2015 1 commit
  18. 02 Jun, 2015 1 commit
  19. 23 Jan, 2015 1 commit
    • Pieter Hintjens's avatar
      Problem: commit afb24b53 broke ZMQ_STREAM contract · 6ced7027
      Pieter Hintjens authored
      Symptom is that ZMQ_STREAM sockets in 4.1.0 and 4.1.1 generate zero
      sized messages on each new connection, unlike 4.0.x which did not do
      this.
      
      Person who made this commit also changed test cases so that contract
      breakage did not show. Same person was later banned for persistently
      poor form in CZMQ contributions.
      
      Solution: enable connect notifications on ZMQ_STREAM sockets using a
      new ZMQ_STREAM_NOTIFY setting. By default, socket does not deliver
      notifications, and behaves as in 4.0.x.
      
      Fixes #1316
      6ced7027
  20. 22 Jan, 2015 1 commit
  21. 20 Jan, 2015 1 commit
    • Topher Brown's avatar
      Close messages that failed to send · 866a0465
      Topher Brown authored
      pipe_t.write only takes control of the underlying message memory when it
      succeeds. When it returns failure, we must close the message ourselves to
      clean up that memory.
      
      This patch is sponsored by FarSounder, Inc (farsounder.com)
      866a0465
  22. 09 Jan, 2015 2 commits
  23. 08 Jan, 2015 1 commit
  24. 30 Apr, 2014 1 commit
  25. 21 Jan, 2014 1 commit
  26. 20 Jan, 2014 1 commit
  27. 19 Jan, 2014 3 commits
  28. 17 Jan, 2014 1 commit
    • Tim M's avatar
      Both STREAM and ROUTER sockets suffer from a naming problem on outbound… · 5d4860ea
      Tim M authored
      Both STREAM and ROUTER sockets suffer from a naming problem on outbound connections. While these connections can be created, they can't be immediately used. Traffic must be received before it can be sent. This prevents practical, minimal usage of STREAM or ROUTER as a true N fan in/out socket.
      
      This change simply provides the user with a socket option that sets a user defined name of the next outbound connection:
      
      zmq_setsockopt(routerSock,ZMQ_NEXT_IDENTITY,"myname",6);
      if(0 > zmq_connect(routerSock,"tcp://127.0.0.1:1234")) return 1;
      ret = zmq_send(routerSock,"myname",6,ZMQ_SNDMORE);
      zmq_send(routerSock,b.mem,b.used,0);
      
      In this example, the socket is immediately given the name "myname", and is capable of immediately sending traffic.
      
      This approach is more effective in three ways:
      1) It prevents all sorts of malicious peer naming attacks that can cause undefined behavior in existing ROUTER connections. (Two connections are made that both transmit the same name to the ROUTER, the ROUTER behavior is undefined)
      2) It allows immediate control of connections made to external parties for STREAM sockets. Something that is not possible right now. Before an outbound connection had no name for STREAM or ROUTER sockets because outbound connections cannot be sent to without first receiving traffic.
      3) It is simpler and more general than expecting two ROUTER sockets to handshake on assigned connection names. Plus it allows inline sending to new connections on ROUTER.
      5d4860ea
  29. 12 Jan, 2014 1 commit
  30. 02 Jan, 2014 1 commit
  31. 01 Jan, 2014 2 commits
  32. 01 Nov, 2013 1 commit
  33. 31 Oct, 2013 1 commit