Issue with _dbus_write_socket on windows

Ralf Habacker ralf.habacker at
Sat Nov 18 10:54:14 PST 2006

Havoc Pennington schrieb:
> 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?). 
Because _pipe fits in the current read/write implementation of dbus
> But maybe these handles are interchangeable? I don't know.
We have a working _pipe implementation, which had required very less 
effort. Using the native api is possible in some areas, but needs more 
knowledge as using the platform independent c runtime.

Currently we are concentrated to get this stuff running with as less as 
possible efforts. Nice looking will be a later aim.
> 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.
This requires to rename some more references to dbus_read/write_socket 
in main.c and bus.c
> 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.
There are poeple with different programming background working on this 
part. Some are more unix as windows knowledged and have to investigate 
how things runs on windows and using the c runtime as much as possible 
decrease required time for implemenation features. Contributions like 
Timothy has made will help to speed up the nice making :-)


More information about the dbus mailing list