Issue with _dbus_write_socket on windows

Havoc Pennington hp at redhat.com
Fri Nov 17 12:36:45 PST 2006


Hi,

Looking at the code you guys have in svn, it seems like the big question 
is how the session bus gets started. On unix, we have two answers:

  - normally, the session bus is started by X init scripts and then
    located with an environment variable

  - as a fallback, the bus can be autolaunched and then have its address
    stored in a file in the home directory that is
    per-machine-per-X-display

On Windows, I think just one answer is probably fine:

  - the bus is always autolaunched, and only one instance of
    it exists at a time (using whatever mechanism tbd)

My guess is that the --print-address is not useful because the mechanism 
for ensuring uniqueness will have to have a way to get the address of an 
existing bus that someone *didn't* spawn themselves. Which means there's 
no point having a special alternate mechanism if you did spawn the bus 
yourself.

If you did it the way you are now, it looks like you're passing a handle 
from _pipe() down to the child. Looking at MSDN, I get the impression 
that this kind of handle is not interoperable with the native handles 
e.g. if you used CreatePipe() (why not use CreatePipe() btw?). But maybe 
these handles are interchangeable? I don't know.

In any case, I would not name the thing in question here write_stream() 
since this can't be just any stream; it can't be a socket; it has to be 
a pipe. So I'd name the function write_pipe() or write_file_handle() or 
something like that. I don't know Windows well enough to make the right 
choice.

In general all the _pipe(), _open() API is some kind of weird 
unix-compat hack that wraps the real Windows API isn't it? For this 
windows-specific code I don't see much point using this unix compat API.

Havoc



More information about the dbus mailing list