I think you are creating new socket at step 4, then "Router" will assign new socket identites to incoming peers. https://github.com/zeromq/libzmq/blob/9c6aa1e9e00ab11a1c716e1fd2f1c56030972e30/src/router.cpp#L437 That's why you cannot send replies to a client with same identity.
On Fri, Feb 7, 2014 at 10:51 PM, Justin Karneges <jus...@affinix.com> wrote: > Hi, > > 1) ROUTER in program A is set to connect to a bind socket in program B. > 2) Both programs are started, and the connection is established. > 3) A determines B's socket identity out-of-band, and is able to send > messages to B. > 3) B is terminated and the connection is lost. > 4) B is started again, and the connection is re-established. > 5) A determines B's socket identity out-of-band, and is no longer able > to send messages to B. > > It seems this problem does not happen if B retains the same socket > identity across reconnects. However, if it uses a random identity (to be > discovered out-of-band by A), then routing will never work again after > the first restart of B. The A program must be restarted in order to make > things right again. > > My guess is that each connect queue on a ROUTER socket is somehow bound > for life against the first identity it sees. Is this intentional behavior? > > Thanks, > Justin > _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > http://lists.zeromq.org/mailman/listinfo/zeromq-dev >
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev