diff options
author | Stefan Walter <stefw@src.gnome.org> | 2008-02-21 23:07:37 +0000 |
---|---|---|
committer | Stefan Walter <stefw@src.gnome.org> | 2008-02-21 23:07:37 +0000 |
commit | ffa3565e734d8d1343778495d60c66a930f00ab5 (patch) | |
tree | 90e3671752e215bb5949f070de1ac5952e14431a | |
parent | a667fede35d3f39ee80382036bf3855ecbe6371c (diff) | |
download | gnome-keyring-ffa3565e734d8d1343778495d60c66a930f00ab5.tar.gz |
Shutdown socket connections properly. This may fix the hang problems
* daemon/gkr-daemon-io.c:
* library/gnome-keyring.c: Shutdown socket connections properly.
This may fix the hang problems described in bug #503278
svn path=/trunk/; revision=1088
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | daemon/gkr-daemon-io.c | 1 | ||||
-rw-r--r-- | library/gnome-keyring.c | 6 |
3 files changed, 12 insertions, 1 deletions
@@ -1,3 +1,9 @@ +2008-02-21 Stef Walter <stef@memberwebs.com> + + * daemon/gkr-daemon-io.c: + * library/gnome-keyring.c: Shutdown socket connections properly. + This may fix the hang problems described in bug #503278 + 2008-02-14 Stef Walter <stef@memberwebs.com> * library/gnome-keyring-proto.c: Build fix due to glib diff --git a/daemon/gkr-daemon-io.c b/daemon/gkr-daemon-io.c index eadba83b..07162082 100644 --- a/daemon/gkr-daemon-io.c +++ b/daemon/gkr-daemon-io.c @@ -346,6 +346,7 @@ client_worker_done (GkrAsyncWorker *worker, gpointer result, gpointer user_data) gnome_keyring_application_ref_free (client->app_ref); } + shutdown (client->sock, SHUT_RDWR); close (client->sock); g_free (client); } diff --git a/library/gnome-keyring.c b/library/gnome-keyring.c index 985ecbea..78c86211 100644 --- a/library/gnome-keyring.c +++ b/library/gnome-keyring.c @@ -252,6 +252,8 @@ operation_free (GnomeKeyringOperation *op) (*op->destroy_reply_data) (op->reply_data); gkr_buffer_uninit (&op->send_buffer); gkr_buffer_uninit (&op->receive_buffer); + + shutdown (op->socket, SHUT_RDWR); close (op->socket); g_free (op); } @@ -520,8 +522,10 @@ start_operation (GnomeKeyringOperation *op) g_source_remove (op->io_watch); op->io_watch = 0; } - if (op->socket >= 0) + if (op->socket >= 0) { + shutdown (op->socket, SHUT_RDWR); close (op->socket); + } op->socket = connect_to_daemon (TRUE); if (op->socket < 0) { |