summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-server.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-03-31 08:19:50 +0000
committerHavoc Pennington <hp@redhat.com>2003-03-31 08:19:50 +0000
commit29c71168cd17b11eed65023c97aff401d5305b01 (patch)
tree431a05106d857cf38abbdea74a375326f395485e /dbus/dbus-server.c
parentbc86794f23fa538a405813fb61b531c2eacc9ae1 (diff)
2003-03-31 Havoc Pennington <hp@pobox.com>
* dbus/dbus-transport-unix.c (_dbus_transport_new_for_domain_socket) (_dbus_transport_new_for_tcp_socket): these didn't need the "server" argument since they are always client side * dbus/dbus-server.c (dbus_server_get_address): new function * bus/main.c (main): take the configuration file as an argument. * test/data/valid-config-files/debug-allow-all.conf: new file to use with dispatch.c tests for example * bus/test-main.c (main): require test data dir * bus/bus.c (bus_context_new): change this to take a configuration file name as argument * doc/config-file.txt (Elements): add <servicedir> * bus/system.conf, bus/session.conf: new files * dbus/dbus-bus.c (dbus_bus_get): look for system bus on well-known socket if none set * configure.in: create system.conf and session.conf
Diffstat (limited to 'dbus/dbus-server.c')
-rw-r--r--dbus/dbus-server.c68
1 files changed, 54 insertions, 14 deletions
diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c
index 6b9f17e8..9f70649b 100644
--- a/dbus/dbus-server.c
+++ b/dbus/dbus-server.c
@@ -57,43 +57,68 @@
*
* @param server the server.
* @param vtable the vtable for the subclass.
+ * @param address the server's address
* @returns #TRUE on success.
*/
dbus_bool_t
_dbus_server_init_base (DBusServer *server,
- const DBusServerVTable *vtable)
+ const DBusServerVTable *vtable,
+ const DBusString *address)
{
server->vtable = vtable;
server->refcount = 1;
+ server->address = NULL;
+ server->watches = NULL;
+ server->timeouts = NULL;
+ server->connection_counter = NULL;
+
+ if (!_dbus_string_copy_data (address, &server->address))
+ goto failed;
+
server->watches = _dbus_watch_list_new ();
if (server->watches == NULL)
- return FALSE;
+ goto failed;
server->timeouts = _dbus_timeout_list_new ();
if (server->timeouts == NULL)
- {
- _dbus_watch_list_free (server->watches);
- server->watches = NULL;
- return FALSE;
- }
+ goto failed;
server->connection_counter = _dbus_counter_new ();
if (server->connection_counter == NULL)
+ goto failed;
+
+ server->max_connections = 256; /* same as an X server, seems like a nice default */
+
+ _dbus_data_slot_list_init (&server->slot_list);
+
+ _dbus_verbose ("Initialized server on address %s\n", server->address);
+
+ return TRUE;
+
+ failed:
+ if (server->watches)
{
_dbus_watch_list_free (server->watches);
server->watches = NULL;
+ }
+ if (server->timeouts)
+ {
_dbus_timeout_list_free (server->timeouts);
server->timeouts = NULL;
-
- return FALSE;
}
-
- server->max_connections = 256; /* same as an X server, seems like a nice default */
-
- _dbus_data_slot_list_init (&server->slot_list);
+ if (server->connection_counter)
+ {
+ _dbus_counter_unref (server->connection_counter);
+ server->connection_counter = NULL;
+ }
+ if (server->address)
+ {
+ dbus_free (server->address);
+ server->address = NULL;
+ }
- return TRUE;
+ return FALSE;
}
/**
@@ -116,6 +141,8 @@ _dbus_server_finalize_base (DBusServer *server)
_dbus_watch_list_free (server->watches);
_dbus_timeout_list_free (server->timeouts);
_dbus_counter_unref (server->connection_counter);
+
+ dbus_free (server->address);
}
/**
@@ -445,6 +472,19 @@ dbus_server_get_is_connected (DBusServer *server)
}
/**
+ * Returns the address of the server, as a newly-allocated
+ * string which must be freed by the caller.
+ *
+ * @param server the server
+ * @returns the address or #NULL if no memory
+ */
+char*
+dbus_server_get_address (DBusServer *server)
+{
+ return _dbus_strdup (server->address);
+}
+
+/**
* Sets a function to be used for handling new connections. The given
* function is passed each new connection as the connection is
* created. If the new connection function increments the connection's