[pan2] use save_server_info with g_idle_add in threads to avoid race conditions
- From: Heinrich MÃller <henmull src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pan2] use save_server_info with g_idle_add in threads to avoid race conditions
- Date: Sun, 22 Apr 2012 18:20:17 +0000 (UTC)
commit e0d530b11a0d30ab4c71b6259494ca4ea9f14ae4
Author: Heinrich MÃller <henmull src gnome org>
Date: Sun Apr 22 19:49:16 2012 +0200
use save_server_info with g_idle_add in threads to avoid race conditions
pan/data/cert-store.cc | 22 ++++++++++++++++++++--
1 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/pan/data/cert-store.cc b/pan/data/cert-store.cc
index 081aea5..cbfbfc2 100644
--- a/pan/data/cert-store.cc
+++ b/pan/data/cert-store.cc
@@ -58,6 +58,22 @@ using namespace pan;
namespace pan
{
+ struct SaveCBStruct
+ {
+ CertStore& cs;
+ Data& data;
+ const Quark& server;
+ SaveCBStruct(CertStore& store, const Quark& s, Data& d) : cs(store), server(s), data(d) {}
+ };
+
+ gboolean
+ save_server_props_cb (gpointer gp)
+ {
+ SaveCBStruct* data (static_cast<SaveCBStruct*>(gp));
+ data->data.save_server_info(data->server);
+ return false;
+ }
+
int
verify_callback(gnutls_session_t session)
{
@@ -206,7 +222,8 @@ namespace pan
fail:
s->cert.clear();
gnutls_x509_crt_deinit (cert);
- _data.save_server_info(server);
+ SaveCBStruct cbstruct(*this, server, _data);
+ g_idle_add (save_server_props_cb, &cbstruct);
return false;
@@ -328,7 +345,8 @@ namespace pan
_data.set_server_cert(server, buf);
- _data.save_server_info(server);
+ SaveCBStruct cbstruct(*this, server, _data);
+ g_idle_add (save_server_props_cb, &cbstruct);
FILE * fp = fopen(buf, "wb");
if (!fp) return false;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]