couple problems with the current IPC code: 1- startup requires the client process to periodically try to connect. currently, we use a 50 ms timeout. this hurts startup performance. instead, we should have the daemon (the child process) tell us when to connect. this can be done using an anonymous pipe. all platforms should be happy with this approach. 2- pike noticed that ipcIService::getClientID always fails. turns out ipcService::OnConnectionEstablished wasn't running. 3- XP_UNIX implementation depends on the necko socket transport. this means that it isn't possible to do IPC from the socket transport thread. in turn, that means we cannot use this IPC to implement a shared certificate database. we need custom code in the XP_UNIX IPC client to read/write a PR_AF_LOCAL domain socket. there's not much code required for this. in fact, the amount of code is on par with the amount of glue code required to use necko's socket transport! :-/ 4- ipcTransport.h shouldn't have all those ifdefs. things should be better factored. attaching a patch that fixes all of these problems.
ok, patch (plus review nits from timeless and axel over irc) is checked in.