diff options
author | Havoc Pennington <hp@redhat.com> | 2003-03-31 08:19:50 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-03-31 08:19:50 +0000 |
commit | 29c71168cd17b11eed65023c97aff401d5305b01 (patch) | |
tree | 431a05106d857cf38abbdea74a375326f395485e /dbus/dbus-server.c | |
parent | bc86794f23fa538a405813fb61b531c2eacc9ae1 (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.c | 68 |
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 |