[zeromq-dev] Best way to punt on a ZMQ_REQ?
matt_weinstein at yahoo.com
Thu Jun 10 23:03:14 CEST 2010
PS I noticed this comment in pub.cpp -- I'm wondering if tearing down
the sockets will clean up this problem? (I don't own the thread, so I
can't wait for completion on the socket.)
// The pipe is full...
// When this happens, we simply return an error.
// This makes REP sockets vulnerable to DoS attack when
// misbehaving requesters stop collecting replies.
// TODO: Tear down the underlying connection (?)
On Jun 10, 2010, at 4:16 PM, Matt Weinstein wrote:
> I'm using a ZMQ_REQ socket to send a query to a server, and I need to
> timeout if the response isn't received on time.
> The best way would seem to be to zmq::poll with a timeout (not working
> for me at present, see my prior email). Alternatively I could use
> ZMQ_NOBLOCK and a sleep loop, but that's ugly.
> In any event, after I go away I'm left with a socket that's in the
> wrong state for the next request, which may arrive before the last
> request. I don't see any way of resetting a socket, so I'm presuming
> my best bet is to tear down the socket and use a new one for the next
> Meanwhile, what happens to the server at the other end of the request,
> still holding pieces of state through a zmq::queue via a ZMQ_XREP
> I'm presuming tearing down the ZMQ_REQ side will just purge the
> relevant data, and the reply will go into the ether? Or will the
> server get an EFSM or some such when it tries to send() back on its
> REP stream?
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
More information about the zeromq-dev