X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-server-socket.c;h=ae4b602e8c506c13080ea4de231a379b1272c6b9;hb=61d97215c317a4154df47fbfb882aab60b92fbab;hp=9ce0e72944443b1ae95769f0322cd2d2c652623b;hpb=7c0fbba5b566e339cc71732340b30229f7b0f811;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-server-socket.c b/dbus/dbus-server-socket.c index 9ce0e72..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); @@ -188,7 +187,10 @@ socket_handle_watch (DBusWatch *watch, listen_fd = dbus_watch_get_socket (watch); - client_fd = _dbus_accept_with_noncefile (listen_fd, socket_server->noncefile); + if (socket_server->noncefile) + client_fd = _dbus_accept_with_noncefile (listen_fd, socket_server->noncefile); + else + client_fd = _dbus_accept (listen_fd); if (client_fd < 0) { @@ -232,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; } @@ -247,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); } @@ -266,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. * */ @@ -337,11 +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: - _dbus_noncefile_delete (socket_server->noncefile, NULL); - dbus_free (socket_server->noncefile ); failed_2: for (i = 0 ; i < n_fds ; i++) { @@ -454,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; } } @@ -472,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); @@ -481,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);