X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-server-socket.c;h=8e31da9d59f6f43a9bba9d5e92405c675ad601f2;hb=818e62f15f30f284f4cfddf5725972975b97ce52;hp=dbd721388c6ea85fbcc934b5d21589001802521b;hpb=01ae2cb79376acb65b876c6620477fde86e6ef12;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index dbd7213..8e31da9 100644 --- a/dbus/dbus-server-socket.c +++ b/dbus/dbus-server-socket.c @@ -89,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); @@ -236,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; } @@ -251,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); } @@ -270,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. * */ @@ -343,12 +345,6 @@ _dbus_server_new_for_socket (int *fds, 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++) { @@ -461,16 +457,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; } } @@ -479,7 +477,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); @@ -488,6 +486,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);