summaryrefslogtreecommitdiffstats
path: root/server/sbus/sssd_dbus_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/sbus/sssd_dbus_server.c')
-rw-r--r--server/sbus/sssd_dbus_server.c171
1 files changed, 0 insertions, 171 deletions
diff --git a/server/sbus/sssd_dbus_server.c b/server/sbus/sssd_dbus_server.c
deleted file mode 100644
index a859cbabc..000000000
--- a/server/sbus/sssd_dbus_server.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- SSSD
-
- Service monitor - D-BUS features
-
- Copyright (C) Stephen Gallagher 2008
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#include <sys/time.h>
-#include "tevent.h"
-#include "util/util.h"
-#include "dbus/dbus.h"
-#include "sbus/sssd_dbus.h"
-#include "sbus/sssd_dbus_private.h"
-
-static int sbus_server_destructor(void *ctx);
-
-/*
- * new_connection_callback
- * Actions to be run upon each new client connection
- * Must either perform dbus_connection_ref() on the
- * new connection or else close the connection with
- * dbus_connection_close()
- */
-static void sbus_server_init_new_connection(DBusServer *dbus_server,
- DBusConnection *dbus_conn,
- void *data)
-{
- struct sbus_connection *server;
- struct sbus_connection *conn;
- int ret;
-
- DEBUG(5,("Entering.\n"));
- server = talloc_get_type(data, struct sbus_connection);
- if (!server) {
- return;
- }
-
- DEBUG(5,("Adding connection %p.\n", dbus_conn));
- ret = sbus_init_connection(server, server->ev,
- dbus_conn, server->server_intf,
- SBUS_CONN_TYPE_PRIVATE, &conn);
- if (ret != 0) {
- dbus_connection_close(dbus_conn);
- DEBUG(5,("Closing connection (failed setup)"));
- return;
- }
-
- dbus_connection_ref(dbus_conn);
-
- DEBUG(5,("Got a connection\n"));
-
- /*
- * Initialize connection-specific features
- * This may set a more detailed destructor, but
- * the default destructor will always be chained
- * to handle connection cleanup.
- * This function (or its callbacks) should also
- * set up connection-specific methods.
- */
- ret = server->srv_init_fn(conn, server->srv_init_data);
- if (ret != EOK) {
- DEBUG(1,("Initialization failed!\n"));
- dbus_connection_close(dbus_conn);
- talloc_zfree(conn);
- }
-}
-
-/*
- * dbus_new_server
- * Set up a D-BUS server, integrate with the event loop
- * for handling file descriptor and timed events
- */
-int sbus_new_server(TALLOC_CTX *mem_ctx,
- struct tevent_context *ev,
- const char *address,
- struct sbus_interface *intf,
- struct sbus_connection **_server,
- sbus_server_conn_init_fn init_fn, void *init_pvt_data)
-{
- struct sbus_connection *server;
- DBusServer *dbus_server;
- DBusError dbus_error;
- dbus_bool_t dbret;
- char *tmp;
-
- *_server = NULL;
-
- /* Set up D-BUS server */
- dbus_error_init(&dbus_error);
- dbus_server = dbus_server_listen(address, &dbus_error);
- if (!dbus_server) {
- DEBUG(1,("dbus_server_listen failed! (name=%s, message=%s)\n",
- dbus_error.name, dbus_error.message));
- if (dbus_error_is_set(&dbus_error)) dbus_error_free(&dbus_error);
- return EIO;
- }
-
- tmp = dbus_server_get_address(dbus_server);
- DEBUG(3, ("D-BUS Server listening on %s\n", tmp));
- free(tmp);
-
- server = talloc_zero(mem_ctx, struct sbus_connection);
- if (!server) {
- return ENOMEM;
- }
-
- server->ev = ev;
- server->type = SBUS_SERVER;
- server->dbus.server = dbus_server;
- server->server_intf = intf;
- server->srv_init_fn = init_fn;
- server->srv_init_data = init_pvt_data;
-
- talloc_set_destructor((TALLOC_CTX *)server, sbus_server_destructor);
-
- /* Set up D-BUS new connection handler */
- dbus_server_set_new_connection_function(server->dbus.server,
- sbus_server_init_new_connection,
- server, NULL);
-
- /* Set up DBusWatch functions */
- dbret = dbus_server_set_watch_functions(server->dbus.server,
- sbus_add_watch,
- sbus_remove_watch,
- sbus_toggle_watch,
- server, NULL);
- if (!dbret) {
- DEBUG(4, ("Error setting up D-BUS server watch functions"));
- talloc_free(server);
- return EIO;
- }
-
- /* Set up DBusTimeout functions */
- dbret = dbus_server_set_timeout_functions(server->dbus.server,
- sbus_add_timeout,
- sbus_remove_timeout,
- sbus_toggle_timeout,
- server, NULL);
- if (!dbret) {
- DEBUG(4,("Error setting up D-BUS server timeout functions"));
- dbus_server_set_watch_functions(server->dbus.server,
- NULL, NULL, NULL, NULL, NULL);
- talloc_free(server);
- return EIO;
- }
-
- *_server = server;
- return EOK;
-}
-
-static int sbus_server_destructor(void *ctx)
-{
- struct sbus_connection *server;
-
- server = talloc_get_type(ctx, struct sbus_connection);
- dbus_server_disconnect(server->dbus.server);
- return 0;
-}