X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-server-socket.c;h=ae4b602e8c506c13080ea4de231a379b1272c6b9;hb=b5d36dc27d1905d4d46ad7f0097f0ea0e0776adb;hp=6a8717af511c0dd5649447f437dd7732a32c7788;hpb=6db588b8544e117241a3be2c595dfc8fdcdc8f59;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index 6a8717a..ae4b602 100644 --- a/dbus/dbus-server-socket.c +++ b/dbus/dbus-server-socket.c @@ -21,6 +21,7 @@ * */ +#include #include "dbus-internals.h" #include "dbus-server-socket.h" #include "dbus-transport-socket.h" @@ -88,10 +89,8 @@ handle_new_client_fd_and_unlock (DBusServer *server, DBusConnection *connection; DBusTransport *transport; DBusNewConnectionFunction new_connection_function; - DBusServerSocket* socket_server; void *new_connection_data; - socket_server = (DBusServerSocket*)server; _dbus_verbose ("Creating new client connection with fd %d\n", client_fd); HAVE_LOCK_CHECK (server); @@ -235,6 +234,7 @@ socket_disconnect (DBusServer *server) { _dbus_server_remove_watch (server, socket_server->watch[i]); + _dbus_watch_invalidate (socket_server->watch[i]); _dbus_watch_unref (socket_server->watch[i]); socket_server->watch[i] = NULL; } @@ -250,6 +250,9 @@ socket_disconnect (DBusServer *server) _dbus_delete_file (&tmp, NULL); } + if (server->published_address) + _dbus_daemon_unpublish_session_bus_address(); + HAVE_LOCK_CHECK (server); } @@ -269,7 +272,7 @@ static const DBusServerVTable socket_vtable = { * @param fds list of file descriptors. * @param n_fds number of file descriptors * @param address the server's address - * @param use_nonce whether to create and use a nonce for authentication + * @param noncefile to be used for authentication (NULL if not needed) * @returns the new server, or #NULL if no memory. * */ @@ -340,14 +343,9 @@ _dbus_server_new_for_socket (int *fds, SERVER_UNLOCK (server); + _dbus_server_trace_ref (&socket_server->base, 0, 1, "new_for_socket"); return (DBusServer*) socket_server; - failed_3: - if (socket_server->noncefile) - { - _dbus_noncefile_delete (socket_server->noncefile, NULL); - dbus_free (socket_server->noncefile ); - } failed_2: for (i = 0 ; i < n_fds ; i++) { @@ -460,16 +458,18 @@ _dbus_server_new_for_tcp_socket (const char *host, noncefile = dbus_new0 (DBusNonceFile, 1); if (noncefile == NULL) { + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); goto failed_2; } - if (!_dbus_noncefile_create (noncefile, NULL)) - goto failed_2; + if (!_dbus_noncefile_create (noncefile, error)) + goto failed_3; if (!_dbus_string_append (&address, ",noncefile=") || !_dbus_address_append_escaped (&address, _dbus_noncefile_get_path (noncefile))) { - goto failed_2; + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); + goto failed_4; } } @@ -478,7 +478,7 @@ _dbus_server_new_for_tcp_socket (const char *host, if (server == NULL) { dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - goto failed_2; + goto failed_4; } _dbus_string_free (&port_str); @@ -487,6 +487,12 @@ _dbus_server_new_for_tcp_socket (const char *host, return server; + failed_4: + _dbus_noncefile_delete (noncefile, NULL); + + failed_3: + dbus_free (noncefile); + failed_2: for (i = 0 ; i < nlisten_fds ; i++) _dbus_close_socket (listen_fds[i], NULL);