Issues with fork and dbus_server_disconnect when using unix domain sockets
johnp at redhat.com
Wed Nov 19 12:24:30 PST 2008
One of the Red Hat engineers is having an issue with the d-bus server api deleting the socket file when disconnecting after a fork (note he wishes to avoid fork and exec or threads which would route around this issue). Basically he has a main process which opens up a d-bus server socket to listen for requests. On each request he forks a child process to handle the request and needs to close the socket so that the child does not try to process requests itself, however in socket_disconnect in the file dbus-server-socket.c we unlink the file. I notice there is the api _dbus_server_socket_own_filename which if not called will make sure socket_disconnect does not unlink the file. However, there is no API to specify that I don't want to own the file name when creating a server. I'm not sure what the best fix is here. I think adding API to specify that the parent program will take care of cleaning up files on disk is the least invasive fix.
John (J5) Palmieri
Red Hat, Inc.
More information about the dbus