[zeromq-dev] zmq and abstract unix domain sockets

Martin Sustrik sustrik at 250bpm.com
Wed Dec 8 09:21:07 CET 2010


Hi Moritz,

> The problem is that abstract unix domain sockets of the style
> "\0mysocketname" are accepted, but not handled correctly. I posted some
> example here: http://paste.pocoo.org/show/300124/
>
> There are three options how to handle that:
> 1. There's no problem. There should be a valid path given for a unix
> domain socket and if you do something else you're on your own. Then that
> should be documented.
> 2. Throw a readable error if someone tries to use an abstract unix
> domain socket.
> 3. Support abstract unix domain sockets through they are only valid in
> GNU/Linux systems.
>
> I think #1 is a bad style, #2 would be ok and #3 is the hyper über cool
> solution zmq stands for.

I think the primary question to ask is: Do we want to strive for 
portability on 0MQ-API level or rather do we want to expose useful 
non-portable hacks?

Both views have their merit of course and it's not obvious which 
direction to take.

Similar problem is resolving the NIC names. These are different on 
different OSes (eth0, en0, e1000g etc.) but auto-resolve is kind of 
convenient. Still, I've seen people arguing that raw IP addresses should 
be used instead.

That's the conceptual problem -- it would be interesting to know what 
are the opinions on it.

 From technical point of view, using \0-prefixed paths is a problem with 
current API as the connection string passed to both zmq_connect and 
zmq_bind in standard C zero-terminated string. Thus, the \0 character in 
the connection string effectively terminates it.

We could switch to standard POSIX-style addresses -- addr_zmq structure 
containing fixed buffer and length -- however, that is an backward 
incompatible change and cannot be done before major version number bump 
(3.0).

Martin




More information about the zeromq-dev mailing list