Commit f5cf6756 authored by Havoc Pennington's avatar Havoc Pennington

2005-01-20 Havoc Pennington <hp@redhat.com>

	* doc/dbus-tutorial.xml: replace > with &gt;

	* bus/services.c (bus_registry_acquire_service): validate the name
	and return a better error if it's no good.

	* doc/dbus-specification.xml: note NO_AUTO_START change

	* dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
	from AUTO_START, we're toggling the default

	* bus/dispatch.c: adapt the tests to change of auto-start default
parent 2abdb13e
2005-01-20 Havoc Pennington <hp@redhat.com>
* doc/dbus-tutorial.xml: replace > with &gt;
* bus/services.c (bus_registry_acquire_service): validate the name
and return a better error if it's no good.
* doc/dbus-specification.xml: note NO_AUTO_START change
* dbus/dbus-protocol.h (DBUS_HEADER_FLAG_NO_AUTO_START): change
from AUTO_START, we're toggling the default
* bus/dispatch.c: adapt the tests to change of auto-start default
2005-01-18 Havoc Pennington <hp@redhat.com>
* rename dbus-daemon-1 to dbus-daemon throughout
......
......@@ -983,7 +983,7 @@ check_double_hello_message (BusContext *context,
if (message == NULL)
return TRUE;
if (!dbus_connection_send (connection, message, &serial))
{
dbus_message_unref (message);
......@@ -1524,8 +1524,8 @@ check_hello_connection (BusContext *context)
* but the correct thing may include OOM errors.
*/
static dbus_bool_t
check_nonexistent_service_activation (BusContext *context,
DBusConnection *connection)
check_nonexistent_service_no_auto_start (BusContext *context,
DBusConnection *connection)
{
DBusMessage *message;
dbus_uint32_t serial;
......@@ -1541,6 +1541,8 @@ check_nonexistent_service_activation (BusContext *context,
if (message == NULL)
return TRUE;
dbus_message_set_auto_start (message, FALSE);
flags = 0;
if (!dbus_message_append_args (message,
DBUS_TYPE_STRING, &nonexistent,
......@@ -1628,8 +1630,8 @@ check_nonexistent_service_activation (BusContext *context,
* but the correct thing may include OOM errors.
*/
static dbus_bool_t
check_nonexistent_service_auto_activation (BusContext *context,
DBusConnection *connection)
check_nonexistent_service_auto_start (BusContext *context,
DBusConnection *connection)
{
DBusMessage *message;
dbus_uint32_t serial;
......@@ -1642,8 +1644,6 @@ check_nonexistent_service_auto_activation (BusContext *context,
if (message == NULL)
return TRUE;
dbus_message_set_auto_start (message, TRUE);
if (!dbus_connection_send (connection, message, &serial))
{
......@@ -2387,8 +2387,8 @@ check_got_service_info (DBusMessage *message)
* but the correct thing may include OOM errors.
*/
static dbus_bool_t
check_existent_service_activation (BusContext *context,
DBusConnection *connection)
check_existent_service_no_auto_start (BusContext *context,
DBusConnection *connection)
{
DBusMessage *message;
DBusMessage *base_service_message;
......@@ -2408,6 +2408,8 @@ check_existent_service_activation (BusContext *context,
if (message == NULL)
return TRUE;
dbus_message_set_auto_start (message, FALSE);
flags = 0;
if (!dbus_message_append_args (message,
DBUS_TYPE_STRING, &existent,
......@@ -2611,8 +2613,8 @@ check_existent_service_activation (BusContext *context,
* but the correct thing may include OOM errors.
*/
static dbus_bool_t
check_segfault_service_activation (BusContext *context,
DBusConnection *connection)
check_segfault_service_no_auto_start (BusContext *context,
DBusConnection *connection)
{
DBusMessage *message;
dbus_uint32_t serial;
......@@ -2628,6 +2630,8 @@ check_segfault_service_activation (BusContext *context,
if (message == NULL)
return TRUE;
dbus_message_set_auto_start (message, FALSE);
segv_service = "org.freedesktop.DBus.TestSuiteSegfaultService";
flags = 0;
if (!dbus_message_append_args (message,
......@@ -2717,8 +2721,8 @@ check_segfault_service_activation (BusContext *context,
* but the correct thing may include OOM errors.
*/
static dbus_bool_t
check_segfault_service_auto_activation (BusContext *context,
DBusConnection *connection)
check_segfault_service_auto_start (BusContext *context,
DBusConnection *connection)
{
DBusMessage *message;
dbus_uint32_t serial;
......@@ -2731,8 +2735,6 @@ check_segfault_service_auto_activation (BusContext *context,
if (message == NULL)
return TRUE;
dbus_message_set_auto_start (message, TRUE);
if (!dbus_connection_send (connection, message, &serial))
{
......@@ -2813,8 +2815,8 @@ check_segfault_service_auto_activation (BusContext *context,
* but the correct thing may include OOM errors.
*/
static dbus_bool_t
check_existent_service_auto_activation (BusContext *context,
DBusConnection *connection)
check_existent_service_auto_start (BusContext *context,
DBusConnection *connection)
{
DBusMessage *message;
DBusMessage *base_service_message;
......@@ -2833,8 +2835,6 @@ check_existent_service_auto_activation (BusContext *context,
if (message == NULL)
return TRUE;
dbus_message_set_auto_start (message, TRUE);
text = TEST_ECHO_MESSAGE;
if (!dbus_message_append_args (message,
DBUS_TYPE_STRING, &text,
......@@ -3164,32 +3164,32 @@ bus_dispatch_test (const DBusString *test_data_dir)
check1_try_iterations (context, "create_and_hello",
check_hello_connection);
check2_try_iterations (context, foo, "nonexistent_service_activation",
check_nonexistent_service_activation);
check2_try_iterations (context, foo, "nonexistent_service_no_auto_start",
check_nonexistent_service_no_auto_start);
check2_try_iterations (context, foo, "segfault_service_activation",
check_segfault_service_activation);
check2_try_iterations (context, foo, "segfault_service_no_auto_start",
check_segfault_service_no_auto_start);
check2_try_iterations (context, foo, "existent_service_activation",
check_existent_service_activation);
check2_try_iterations (context, foo, "existent_service_no_auto_start",
check_existent_service_no_auto_start);
check2_try_iterations (context, foo, "nonexistent_service_auto_activation",
check_nonexistent_service_auto_activation);
check2_try_iterations (context, foo, "nonexistent_service_auto_start",
check_nonexistent_service_auto_start);
check2_try_iterations (context, foo, "segfault_service_auto_activation",
check_segfault_service_auto_activation);
check2_try_iterations (context, foo, "segfault_service_auto_start",
check_segfault_service_auto_start);
#if 0
/* Note: need to resolve some issues with the testing code in order to run
* this in oom (handle that we sometimes don't get replies back from the bus
* when oom happens, without blocking the test).
*/
check2_try_iterations (context, foo, "existent_service_auto_activation",
check_existent_service_auto_activation);
check2_try_iterations (context, foo, "existent_service_auto_auto_start",
check_existent_service_auto_start);
#endif
if (!check_existent_service_auto_activation (context, foo))
_dbus_assert_not_reached ("existent service auto activation failed");
if (!check_existent_service_auto_start (context, foo))
_dbus_assert_not_reached ("existent service auto start failed");
_dbus_verbose ("Disconnecting foo, bar, and baz\n");
......
......@@ -24,6 +24,7 @@
#include <dbus/dbus-hash.h>
#include <dbus/dbus-list.h>
#include <dbus/dbus-mempool.h>
#include <dbus/dbus-marshal-validate.h>
#include "driver.h"
#include "services.h"
......@@ -283,12 +284,14 @@ bus_registry_acquire_service (BusRegistry *registry,
retval = FALSE;
if (_dbus_string_get_length (service_name) == 0)
if (!_dbus_validate_bus_name (service_name, 0,
_dbus_string_get_length (service_name)))
{
dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
"Zero-length service name is not allowed");
dbus_set_error (error, DBUS_ERROR_INVALID_ARGS,
"Requested bus name \"%s\" is not valid",
_dbus_string_get_const_data (service_name));
_dbus_verbose ("Attempt to acquire zero-length service name\n");
_dbus_verbose ("Attempt to acquire invalid service name\n");
goto out;
}
......@@ -296,7 +299,7 @@ bus_registry_acquire_service (BusRegistry *registry,
if (_dbus_string_get_byte (service_name, 0) == ':')
{
/* Not allowed; only base services can start with ':' */
dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
dbus_set_error (error, DBUS_ERROR_INVALID_ARGS,
"Cannot acquire a service starting with ':' such as \"%s\"",
_dbus_string_get_const_data (service_name));
......
......@@ -2207,8 +2207,8 @@ dbus_message_set_auto_start (DBusMessage *message,
_dbus_return_if_fail (!message->locked);
_dbus_header_toggle_flag (&message->header,
DBUS_HEADER_FLAG_AUTO_START,
auto_start);
DBUS_HEADER_FLAG_NO_AUTO_START,
!auto_start);
}
/**
......@@ -2223,8 +2223,8 @@ dbus_message_get_auto_start (DBusMessage *message)
{
_dbus_return_val_if_fail (message != NULL, FALSE);
return _dbus_header_get_flag (&message->header,
DBUS_HEADER_FLAG_AUTO_START);
return !_dbus_header_get_flag (&message->header,
DBUS_HEADER_FLAG_NO_AUTO_START);
}
......
......@@ -142,7 +142,7 @@ extern "C" {
/* Header flags */
#define DBUS_HEADER_FLAG_NO_REPLY_EXPECTED 0x1
#define DBUS_HEADER_FLAG_AUTO_START 0x2
#define DBUS_HEADER_FLAG_NO_AUTO_START 0x2
/* Header fields */
#define DBUS_HEADER_FIELD_INVALID 0
......
......@@ -757,10 +757,10 @@
to return the reply despite this flag.</entry>
</row>
<row>
<entry><literal>AUTO_START</literal></entry>
<entry><literal>NO_AUTO_START</literal></entry>
<entry>0x2</entry>
<entry>This message automatically launches an owner
for the destination name before the message is delivered.
<entry>This message should not automatically launch an owner
for the destination name.
</entry>
</row>
</tbody>
......@@ -1027,8 +1027,8 @@
flag and reply anyway.
</para>
<para>
If a message has the flag <literal>AUTO_START</literal> and the
destination name does not exist, then a program to own the destination
Unless a message has the flag <literal>NO_AUTO_START</literal>, if the
destination name does not exist then a program to own the destination
name will be started before the message is delivered. The message
will be held until the new program is successfully started or has
failed to start; in case of failure, an error will be returned. This
......
......@@ -408,7 +408,7 @@
method call on a particular object instance, a number of
nested components have to be named:
<programlisting>
Address -> [Bus Name] -> Path -> Interface -> Method
Address -&gt; [Bus Name] -&gt; Path -&gt; Interface -&gt; Method
</programlisting>
The bus name is in brackets to indicate that it's optional -- you only
provide a name to route the method call to the right application
......@@ -467,7 +467,7 @@ main (int argc, char **argv)
if (connection == NULL)
{
g_printerr ("Failed to open connection to bus: %s\n",
error->message);
error-&gt;message);
g_error_free (error);
exit (1);
}
......@@ -490,7 +490,7 @@ main (int argc, char **argv)
DBUS_TYPE_INVALID))
{
g_printerr ("Failed to complete ListNames call: %s\n",
error->message);
error-&gt;message);
g_error_free (error);
exit (1);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment