Attempt to fix disconnect not respecting linger

Looks like linger is honoured properly, but shutting down the session
causes the pipe termination to come from that side - because the local
pipe then shuts down right away it seems to trigger a terminated on the
other end instead of waiting. This way we trigger the termination from
the local end and then terminate the session.
This commit is contained in:
Ian Barber
2013-08-18 07:50:53 +01:00
parent ed272fe56d
commit cb35fd7bfe
2 changed files with 16 additions and 9 deletions

View File

@@ -158,10 +158,11 @@ namespace zmq
private:
// Creates new endpoint ID and adds the endpoint to the map.
void add_endpoint (const char *addr_, own_t *endpoint_);
void add_endpoint (const char *addr_, own_t *endpoint_, pipe_t *pipe);
// Map of open endpoints.
typedef std::multimap <std::string, own_t *> endpoints_t;
typedef std::pair <own_t *, pipe_t*> endpoint_pipe_t;
typedef std::multimap <std::string, endpoint_pipe_t> endpoints_t;
endpoints_t endpoints;
// Map of open inproc endpoints.