diff options
-rw-r--r-- | .cvsignore | 4 | ||||
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | bus/.cvsignore | 4 | ||||
-rw-r--r-- | dbus/.cvsignore | 4 | ||||
-rw-r--r-- | dbus/dbus-bus.c | 2 | ||||
-rw-r--r-- | dbus/dbus-connection.c | 21 | ||||
-rw-r--r-- | dbus/dbus-connection.h | 2 | ||||
-rw-r--r-- | dbus/dbus-sysdeps.c | 9 | ||||
-rw-r--r-- | dbus/dbus-sysdeps.h | 4 | ||||
-rw-r--r-- | glib/.cvsignore | 4 | ||||
-rw-r--r-- | qt/.cvsignore | 5 | ||||
-rw-r--r-- | test/.cvsignore | 6 | ||||
-rw-r--r-- | test/data/auth/fail-after-n-attempts.auth-script | 33 | ||||
-rw-r--r-- | test/data/valid-messages/unknown-header-field.message | 14 |
14 files changed, 115 insertions, 4 deletions
@@ -16,3 +16,7 @@ autom4te.cache config.guess config.h config.h.in +*.bb +*.bbg +*.da +*.gcov @@ -1,3 +1,10 @@ +2003-02-16 Havoc Pennington <hp@pobox.com> + + * dbus/dbus-connection.c (dbus_connection_set_change_sigpipe): + allow people to avoid setting SIGPIPE to SIG_IGN + (_dbus_connection_new_for_transport): disable SIGPIPE unless + we've been asked not to + 2003-02-15 Anders Carlsson <andersca@codefactory.se> * dbus/dbus-list.c: (_dbus_list_append_link), diff --git a/bus/.cvsignore b/bus/.cvsignore index 8b966130..2c217808 100644 --- a/bus/.cvsignore +++ b/bus/.cvsignore @@ -5,3 +5,7 @@ Makefile.in *.lo *.la dbus-daemon-1 +*.bb +*.bbg +*.da +*.gcov diff --git a/dbus/.cvsignore b/dbus/.cvsignore index 4ebd42b8..d5539b20 100644 --- a/dbus/.cvsignore +++ b/dbus/.cvsignore @@ -5,3 +5,7 @@ Makefile.in *.lo *.la dbus-test +*.bb +*.bbg +*.gcov +*.da diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c index 776c78ae..99ef5ade 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -1,5 +1,5 @@ /* -*- mode: C; c-file-style: "gnu" -*- */ -/* dbus-bus.h Convenience functions for communicating with the bus. +/* dbus-bus.c Convenience functions for communicating with the bus. * * Copyright (C) 2003 CodeFactory AB * diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 73b9f18e..f97a5e13 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -64,6 +64,8 @@ /** default timeout value when waiting for a message reply */ #define DEFAULT_TIMEOUT_VALUE (15 * 1000) +static dbus_bool_t _dbus_modify_sigpipe = TRUE; + /** Opaque typedef for DBusDataSlot */ typedef struct DBusDataSlot DBusDataSlot; /** DBusDataSlot is used to store application data on the connection */ @@ -480,6 +482,9 @@ _dbus_connection_new_for_transport (DBusTransport *transport) disconnect_link = _dbus_list_alloc_link (disconnect_message); if (disconnect_link == NULL) goto error; + + if (_dbus_modify_sigpipe) + _dbus_disable_sigpipe (); connection->refcount = 1; connection->mutex = mutex; @@ -1684,7 +1689,9 @@ _dbus_allocated_slots_init_lock (void) * Allocates an integer ID to be used for storing application-specific * data on any DBusConnection. The allocated ID may then be used * with dbus_connection_set_data() and dbus_connection_get_data(). - * If allocation fails, -1 is returned. + * If allocation fails, -1 is returned. Again, the allocated + * slot is global, i.e. all DBusConnection objects will + * have a slot with the given integer ID reserved. * * @returns -1 on failure, otherwise the data slot ID */ @@ -1865,6 +1872,18 @@ dbus_connection_get_data (DBusConnection *connection, return res; } +/** + * This function sets a global flag for whether dbus_connection_new() + * will set SIGPIPE behavior to SIG_IGN. + * + * @param will_modify_sigpipe #TRUE to allow sigpipe to be set to SIG_IGN + */ +void +dbus_connection_set_change_sigpipe (dbus_bool_t will_modify_sigpipe) +{ + _dbus_modify_sigpipe = will_modify_sigpipe; +} + /* This must be called with the connection lock not held to avoid * holding it over the free_data callbacks, so it can basically * only be called at last unref diff --git a/dbus/dbus-connection.h b/dbus/dbus-connection.h index 774374e0..5a91ce82 100644 --- a/dbus/dbus-connection.h +++ b/dbus/dbus-connection.h @@ -155,6 +155,8 @@ dbus_bool_t dbus_connection_set_data (DBusConnection *connection, void* dbus_connection_get_data (DBusConnection *connection, int slot); +void dbus_connection_set_change_sigpipe (dbus_bool_t will_modify_sigpipe); + void dbus_connection_set_max_message_size (DBusConnection *connection, long size); long dbus_connection_get_max_message_size (DBusConnection *connection); diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c index e1ae16c3..67677707 100644 --- a/dbus/dbus-sysdeps.c +++ b/dbus/dbus-sysdeps.c @@ -1722,4 +1722,13 @@ _dbus_spawn_async (char **argv, return FALSE; } +/** + * signal (SIGPIPE, SIG_IGN); + */ +void +_dbus_disable_sigpipe (void) +{ + signal (SIGPIPE, SIG_IGN); +} + /** @} end of sysdeps */ diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h index dca12ed3..7805f0fd 100644 --- a/dbus/dbus-sysdeps.h +++ b/dbus/dbus-sysdeps.h @@ -151,7 +151,9 @@ const char *_dbus_errno_to_string (int errnum); dbus_bool_t _dbus_spawn_async (char **argv, DBusError *error); - + +void _dbus_disable_sigpipe (void); + DBUS_END_DECLS; #endif /* DBUS_SYSDEPS_H */ diff --git a/glib/.cvsignore b/glib/.cvsignore index 0d7278ef..2ab9efa8 100644 --- a/glib/.cvsignore +++ b/glib/.cvsignore @@ -5,3 +5,7 @@ Makefile.in *.lo *.la test-dbus-glib +*.bb +*.bbg +*.da +*.gcov diff --git a/qt/.cvsignore b/qt/.cvsignore index 9626b600..b9485851 100644 --- a/qt/.cvsignore +++ b/qt/.cvsignore @@ -4,4 +4,7 @@ Makefile Makefile.in *.lo *.la - +*.bb +*.bbg +*.da +*.gcov diff --git a/test/.cvsignore b/test/.cvsignore index 3a3c50d9..c3d07582 100644 --- a/test/.cvsignore +++ b/test/.cvsignore @@ -9,3 +9,9 @@ echo-server echo-client bus-test unbase64 +*.bb +*.bbg +*.da +*.gcov +break-loader +spawn-test diff --git a/test/data/auth/fail-after-n-attempts.auth-script b/test/data/auth/fail-after-n-attempts.auth-script new file mode 100644 index 00000000..75bd3801 --- /dev/null +++ b/test/data/auth/fail-after-n-attempts.auth-script @@ -0,0 +1,33 @@ +## this tests that after retrying too often we fail + +SERVER +NO_CREDENTIALS + +# 1 +SEND 'AUTH EXTERNAL USERNAME_BASE64' +EXPECT_COMMAND REJECTED +EXPECT_STATE WAITING_FOR_INPUT + +# 2 +SEND 'AUTH EXTERNAL USERNAME_BASE64' +EXPECT_COMMAND REJECTED +EXPECT_STATE WAITING_FOR_INPUT + +# 3 +SEND 'AUTH EXTERNAL USERNAME_BASE64' +EXPECT_COMMAND REJECTED +EXPECT_STATE WAITING_FOR_INPUT + +# 4 +SEND 'AUTH EXTERNAL USERNAME_BASE64' +EXPECT_COMMAND REJECTED +EXPECT_STATE WAITING_FOR_INPUT + +# 5 +SEND 'AUTH EXTERNAL USERNAME_BASE64' +EXPECT_COMMAND REJECTED +EXPECT_STATE WAITING_FOR_INPUT + +# 6 +SEND 'AUTH EXTERNAL USERNAME_BASE64' +EXPECT_STATE NEED_DISCONNECT diff --git a/test/data/valid-messages/unknown-header-field.message b/test/data/valid-messages/unknown-header-field.message new file mode 100644 index 00000000..18ab379c --- /dev/null +++ b/test/data/valid-messages/unknown-header-field.message @@ -0,0 +1,14 @@ +## message with a 'name' header field and unknown 'unkn' field + +## VALID_HEADER includes a LENGTH Header and LENGTH Body +VALID_HEADER +FIELD_NAME name +TYPE STRING +STRING 'org.freedesktop.Foo' +FIELD_NAME unkn +TYPE INT32 +INT32 0xfeeb +ALIGN 8 +END_LENGTH Header +START_LENGTH Body +END_LENGTH Body |