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);
{
_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;
}
_dbus_delete_file (&tmp, NULL);
}
+ if (server->published_address)
+ _dbus_daemon_unpublish_session_bus_address();
+
HAVE_LOCK_CHECK (server);
}
* @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.
*
*/
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++)
{
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;
}
}
if (server == NULL)
{
dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL);
- goto failed_2;
+ goto failed_4;
}
_dbus_string_free (&port_str);
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);