1. 01 Jun, 2012 1 commit
  2. 31 May, 2012 1 commit
  3. 28 May, 2012 1 commit
  4. 21 May, 2012 1 commit
  5. 20 May, 2012 2 commits
  6. 04 May, 2012 1 commit
  7. 28 Apr, 2012 1 commit
  8. 21 Apr, 2012 3 commits
    • Sergey KHripchenko's avatar
      add process_commands() to the beginning of zmq_connect() and zmq_bind() · f858321c
      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.
      f858321c
    • Sergey KHripchenko's avatar
      fixes for zmq_unbind() / zmq_disconnect() usage corner cases · 057fab09
      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)
      057fab09
    • Sergey KHripchenko's avatar
      small wording change · 06b2eae8
      Sergey KHripchenko authored
      06b2eae8
  9. 20 Apr, 2012 1 commit
  10. 18 Apr, 2012 1 commit
  11. 17 Apr, 2012 1 commit
  12. 05 Apr, 2012 1 commit
  13. 04 Apr, 2012 1 commit
    • Martin Hurton's avatar
      Flush identity message for inproc transport · b41036aa
      Martin Hurton authored
      The scoket implementation for inproc transfer failed to flush
      identity message. The result was that the identity message
      was not delivered until after the user sent the first message.
      
      The identity message was never delivered if the user
      used the socket only to receive messages.
      b41036aa
  14. 22 Mar, 2012 2 commits
  15. 20 Mar, 2012 1 commit
    • Pieter Hintjens's avatar
      Fixed issues #337, #341, and #340 · 6e71a54b
      Pieter Hintjens authored
      * Implemented new ctx API (_new, _destroy, _get, _set)
      * Removed 'typesafe' macros from zmq.h
      * Added support for MAX_SOCKETS (was tied into change for #337)
      * Created new man pages
      6e71a54b
  16. 19 Mar, 2012 2 commits
  17. 14 Mar, 2012 1 commit
    • boris@boressoft.ru's avatar
      Add WinCE support. · 318ba883
      boris@boressoft.ru authored
      * Added two new files: errno.hpp and errno.cpp. They are required to use errno functionality on WM.
      * zmq.cpp, msg.h: removed inclusion of errno.h because it is included in zmq.h that is also included by .cpp.
      * windows.hpp: process.h is included only for desktop builds.
      * thread.cpp: on CE CreateThread is used instead of __beginthreadex
      * socket_base.cpp, clock.cpp: on CE include cmnintrin.h instead on intrin.h
      * signaler.cpp: on Windows should use special macro around event name (for unicode builds)
      * err.hpp: make it include errno.hpp (my file) instead on errno.h when building for CE
      * err.cpp: use FormatMessage when building for CE (because CE does not have ANSI API functions)
      * zmq.h: do not include errno.h whe building for CE
      * libzmq.vcproj: add tro new files
      318ba883
  18. 18 Feb, 2012 1 commit
  19. 17 Feb, 2012 1 commit
  20. 16 Feb, 2012 1 commit
  21. 15 Feb, 2012 1 commit
  22. 14 Feb, 2012 1 commit
  23. 10 Feb, 2012 1 commit
  24. 08 Feb, 2012 1 commit
  25. 03 Feb, 2012 2 commits
    • skaller's avatar
      Set and arrange propagation of thread safe sockets flag. · 520ad3c2
      skaller authored
      We use a distinct context initialisation function to specify
      all sockets derived therefrom will be thread safe.
      
      However the inheritance is done exclusively in the C interface.
      This is not really correct, but it is chosen to minimise
      interference with the existing C++ code, including any
      construct or other calls within the C++ code base.
      Semantically the C++ code should be unchanged,
      physically some data structures and extra methods are
      provided by they're only used from the C binding.
      520ad3c2
    • skaller's avatar
      Thread Safe Sockets. · 988efbc7
      skaller authored
      1. Reorganise C API socket functions to eliminate bad practice
      of public functions calling other public functions. This should
      be done for msg's too but hasn't been in this patch.
      
      2. Reorganise code in C API socket functions so that the
      socket is cast on one line, the C++ function called on
      the next with the result retained, then the result is returned.
      
      This makes the code much simpler to read and also allows
      pre- and post- call hooks to be inserted easily.
      
      3. Insert pre- and post- call hooks which set and release
      a mutex iff the thread_safe flag is on.
      
      4. Add the thread_safe_flag to base_socket_t initialised to
      false to preserve existing semantics. Add an accessor for
      the flag, add a mutex, and add lock and unlock functions.
      
      Note: as yet no code to actually set the flag.
      988efbc7
  26. 02 Feb, 2012 1 commit
  27. 16 Dec, 2011 1 commit
  28. 06 Nov, 2011 1 commit
  29. 05 Nov, 2011 1 commit
  30. 04 Nov, 2011 1 commit
  31. 01 Nov, 2011 2 commits
  32. 31 Oct, 2011 2 commits