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 allows making a new request on a REQ socket by sending a new message. Without the option set, calling send() after the first message is done will continue to return an EFSM error. It's useful for when a REQ is not getting a response. Previously that meant creating a new socket or switching to DEALER.
* Documentation: The default behavior of REQ sockets is to rely on the ordering of messages to match requests and responses and that is usually sufficient. When this option is set to 1, the REQ socket will prefix outgoing messages with an extra frame containing a request id. That means the full message is (request id, 0, user frames...). The REQ socket will discard all incoming messages that don't begin with these two frames. * Behavior change: When a REQ socket gets an invalid reply, it used to discard the message and return EAGAIN. REQ sockets still discard invalid messages, but keep looking at the next one automatically until a good one is found or there are no more messages. * Add test_req_request_ids.
… and default to NEWS file for popup.