mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 10:52:56 +01:00
5d4860ea12
This change simply provides the user with a socket option that sets a user defined name of the next outbound connection: zmq_setsockopt(routerSock,ZMQ_NEXT_IDENTITY,"myname",6); if(0 > zmq_connect(routerSock,"tcp://127.0.0.1:1234")) return 1; ret = zmq_send(routerSock,"myname",6,ZMQ_SNDMORE); zmq_send(routerSock,b.mem,b.used,0); In this example, the socket is immediately given the name "myname", and is capable of immediately sending traffic. This approach is more effective in three ways: 1) It prevents all sorts of malicious peer naming attacks that can cause undefined behavior in existing ROUTER connections. (Two connections are made that both transmit the same name to the ROUTER, the ROUTER behavior is undefined) 2) It allows immediate control of connections made to external parties for STREAM sockets. Something that is not possible right now. Before an outbound connection had no name for STREAM or ROUTER sockets because outbound connections cannot be sent to without first receiving traffic. 3) It is simpler and more general than expecting two ROUTER sockets to handshake on assigned connection names. Plus it allows inline sending to new connections on ROUTER. |
||
---|---|---|
.. | ||
zmq_utils.h | ||
zmq.h |