Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 144296 Details for
Bug 211076
sys-apps/dbus-1.1.4 patch for closing of shared connections
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for dbus_shutdown and shared connection problem
35-unref-no-guid-connections.patch (text/plain), 3.13 KB, created by
Geaaru
on 2008-02-22 07:55:04 UTC
(
hide
)
Description:
Patch for dbus_shutdown and shared connection problem
Filename:
MIME Type:
Creator:
Geaaru
Created:
2008-02-22 07:55:04 UTC
Size:
3.13 KB
patch
obsolete
>diff -pur dbus-1.0.2/dbus/dbus-connection.c dbus-1.0.2.new/dbus/dbus-connection.c >--- dbus-1.0.2/dbus/dbus-connection.c 2006-12-11 21:21:08.000000000 +0200 >+++ dbus-1.0.2.new/dbus/dbus-connection.c 2007-10-29 09:01:00.664474456 +0200 >@@ -1434,6 +1434,23 @@ _dbus_connection_handle_watch (DBusWatch > > _DBUS_DEFINE_GLOBAL_LOCK (shared_connections); > static DBusHashTable *shared_connections = NULL; >+static DBusList *shared_connections_no_guid = NULL; >+ >+static void >+close_connection_on_shutdown (DBusConnection *connection) >+{ >+ DBusMessage *message; >+ >+ dbus_connection_ref (connection); >+ _dbus_connection_close_possibly_shared (connection); >+ >+ /* Churn through to the Disconnected message */ >+ while ((message = dbus_connection_pop_message (connection))) >+ { >+ dbus_message_unref (message); >+ } >+ dbus_connection_unref (connection); >+} > > static void > shared_connections_shutdown (void *data) >@@ -1446,7 +1463,6 @@ shared_connections_shutdown (void *data) > while ((n_entries = _dbus_hash_table_get_n_entries (shared_connections)) > 0) > { > DBusConnection *connection; >- DBusMessage *message; > DBusHashIter iter; > > _dbus_hash_iter_init (shared_connections, &iter); >@@ -1455,17 +1471,7 @@ shared_connections_shutdown (void *data) > connection = _dbus_hash_iter_get_value (&iter); > > _DBUS_UNLOCK (shared_connections); >- >- dbus_connection_ref (connection); >- _dbus_connection_close_possibly_shared (connection); >- >- /* Churn through to the Disconnected message */ >- while ((message = dbus_connection_pop_message (connection))) >- { >- dbus_message_unref (message); >- } >- dbus_connection_unref (connection); >- >+ close_connection_on_shutdown (connection); > _DBUS_LOCK (shared_connections); > > /* The connection should now be dead and not in our hash ... */ >@@ -1476,6 +1482,21 @@ shared_connections_shutdown (void *data) > > _dbus_hash_table_unref (shared_connections); > shared_connections = NULL; >+ >+ if (shared_connections_no_guid != NULL) >+ { >+ DBusConnection *connection; >+ connection = _dbus_list_pop_first (&shared_connections_no_guid); >+ while (connection != NULL) >+ { >+ _DBUS_UNLOCK (shared_connections); >+ close_connection_on_shutdown (connection); >+ _DBUS_LOCK (shared_connections); >+ connection = _dbus_list_pop_first (&shared_connections_no_guid); >+ } >+ } >+ >+ shared_connections_no_guid = NULL; > > _DBUS_UNLOCK (shared_connections); > } >@@ -1585,7 +1606,18 @@ connection_record_shared_unlocked (DBusC > _dbus_connection_ref_unlocked (connection); > > if (guid == NULL) >- return TRUE; /* don't store in the hash */ >+ { >+ _DBUS_LOCK (shared_connections); >+ >+ if (!_dbus_list_prepend (&shared_connections_no_guid, connection)) >+ { >+ _DBUS_UNLOCK (shared_connections); >+ return FALSE; >+ } >+ >+ _DBUS_UNLOCK (shared_connections); >+ return TRUE; /* don't store in the hash */ >+ } > > /* A separate copy of the key is required in the hash table, because > * we don't have a lock on the connection when we are doing a hash
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 211076
:
144294
| 144296