| > Also some of the suggestions are downright dangerous You give only one example, which I've rebutted below. I disagree with the assertion as a whole. > this is another failure state that you add to every single connection, and which every single client has to handle They already have to handle the node disappearing. The only difference is that you can sever the connection from particular handles via the process containing the node/socket, if it chooses to. Otherwise, there is no difference. > I read the preceeding explanation as saying "here is a security guarantee that clients can rely on" What particular guarantee is that? The whole point of the post was that you have the same guarantees, from a security perspective, with file descriptors. > What is the alternative? Having unix domain sockets sprinkled somewhere in the file system where everyone with the right permissions can access them? I think you've misunderstood me. Unix domain sockets do NOT have to be associated with a path in the file system (see socketpair function). You can have some kind of arbiter process (aka the D-Bus daemon) which hands out socket connections, just as you need (with Bus1) some way of handing out handles. This is exactly how D-Bus works right now. > Maybe the ordering doesn't have to be globally consistent, but better safe than sorry. So you build a whole new, Linux-only, IPC mechanism because it might be important to have global ordering, even though no-one's been able to identify a use case in which it matters? |
Let me clarify: this is exactly how D-Bus conceptually works right now. In practice of course D-Bus acts as a multiplexor for the communications also. It is, however, possible to send one half of a socket pair via a D-Bus message.