- Update to 1.11.4

- Remove patch for RH bug #202309 (fixed upstream).
- Remove patch for GNOME bug #312854 (fixed upstream).
- Remove patch for GNOME bug #447414 (fixed upstream).
This commit is contained in:
Matthew Barnes 2007-06-18 20:44:32 +00:00
parent 1b27cacacc
commit 3be76c61a2
7 changed files with 183 additions and 269 deletions

View File

@ -1 +1 @@
evolution-data-server-1.11.3.tar.bz2
evolution-data-server-1.11.4.tar.bz2

View File

@ -1,20 +0,0 @@
--- evolution-data-server-1.11.3/camel/providers/imap/camel-imap-folder.c.camel-imap-folder 2007-05-10 05:26:55.000000000 -0400
+++ evolution-data-server-1.11.3/camel/providers/imap/camel-imap-folder.c 2007-06-15 12:19:22.000000000 -0400
@@ -656,7 +656,7 @@ imap_rescan (CamelFolder *folder, int ex
uid = g_datalist_get_data (&data, "UID");
flags = GPOINTER_TO_UINT (g_datalist_get_data (&data, "FLAGS"));
- if (!uid || !seq || seq > summary_len) {
+ if (!uid || !seq || seq > summary_len || seq < 0) {
g_datalist_clear (&data);
continue;
}
@@ -2790,7 +2790,7 @@ parse_fetch_response (CamelImapFolder *i
if (*response != '*' || *(response + 1) != ' ')
return NULL;
- seq = strtol (response + 2, &response, 10);
+ seq = strtoul (response + 2, &response, 10);
if (seq == 0)
return NULL;
if (g_ascii_strncasecmp (response, " FETCH (", 8) != 0)

View File

@ -1,11 +0,0 @@
--- evolution-data-server-1.11.3/servers/exchange/storage/exchange-hierarchy-webdav.c.exchange-hierarchy-webdav 2007-04-18 06:10:13.000000000 -0400
+++ evolution-data-server-1.11.3/servers/exchange/storage/exchange-hierarchy-webdav.c 2007-06-14 14:49:33.000000000 -0400
@@ -419,7 +419,7 @@ xfer_folder (ExchangeHierarchy *hier, EF
exchange_hierarchy_removed_folder (hier, source);
exchange_hierarchy_new_folder (hier, dest);
scan_subtree (hier, dest, mode);
- physical_uri = (char *) e_folder_get_physical_uri (source);
+ physical_uri = g_strdup (e_folder_get_physical_uri (source));
g_object_unref (dest);
ret_code = EXCHANGE_ACCOUNT_FOLDER_OK;

View File

@ -1,32 +0,0 @@
--- evolution-data-server-1.8.0/camel/camel-object.c.fix-camel-malloc 2006-09-26 16:26:00.000000000 -0400
+++ evolution-data-server-1.8.0/camel/camel-object.c 2006-09-26 16:35:32.000000000 -0400
@@ -455,9 +455,13 @@
/* maybe it was just version 0 afterall */
return 0;
}
+
+ count = MIN(count, CAMEL_ARGV_MAX);
/* we batch up the properties and set them in one go */
- if (!(argv = g_try_malloc ((gulong)(sizeof (*argv) + (count - CAMEL_ARGV_MAX) * sizeof (argv->argv[0])))))
+ argv = g_try_malloc(sizeof(CamelArgV) -
+ ((CAMEL_ARGV_MAX - count) * sizeof(CamelArg)));
+ if (argv == NULL)
return -1;
argv->argc = 0;
@@ -536,9 +540,12 @@
we also need an argv to store the results - bit messy */
count = g_slist_length(props);
+ count = MIN(count, CAMEL_ARGV_MAX);
- arggetv = g_malloc0(sizeof(*arggetv) + (count - CAMEL_ARGV_MAX) * sizeof(arggetv->argv[0]));
- argv = g_malloc0(sizeof(*argv) + (count - CAMEL_ARGV_MAX) * sizeof(argv->argv[0]));
+ arggetv = g_malloc0(sizeof(CamelArgGetV) -
+ ((CAMEL_ARGV_MAX - count) * sizeof(CamelArgGet)));
+ argv = g_malloc0(sizeof(CamelArgV) -
+ ((CAMEL_ARGV_MAX - count) * sizeof(CamelArg)));
l = props;
i = 0;
while (l) {

View File

@ -1,5 +1,5 @@
--- evolution-data-server-1.11.2/libedataserverui/e-passwords.h.e-passwords 2007-04-18 06:10:16.000000000 -0400
+++ evolution-data-server-1.11.2/libedataserverui/e-passwords.h 2007-05-31 22:51:17.000000000 -0400
--- evolution-data-server-1.11.4/libedataserverui/e-passwords.h.e-passwords 2007-04-18 06:10:16.000000000 -0400
+++ evolution-data-server-1.11.4/libedataserverui/e-passwords.h 2007-06-18 16:19:44.000000000 -0400
@@ -28,45 +28,65 @@
G_BEGIN_DECLS
@ -97,8 +97,8 @@
G_END_DECLS
--- evolution-data-server-1.11.2/libedataserverui/e-passwords.c.e-passwords 2007-04-18 06:10:16.000000000 -0400
+++ evolution-data-server-1.11.2/libedataserverui/e-passwords.c 2007-05-31 23:55:51.000000000 -0400
--- evolution-data-server-1.11.4/libedataserverui/e-passwords.c.e-passwords 2007-06-17 23:25:35.000000000 -0400
+++ evolution-data-server-1.11.4/libedataserverui/e-passwords.c 2007-06-18 16:26:02.000000000 -0400
@@ -23,18 +23,29 @@
*/
@ -269,16 +269,17 @@
+ * fully migrate to GNOME Keyring or whatever software supercedes it.
+ * Evolution is one of the few remaining GNOME-2 applications that
+ * still uses the deprecated ~/.gnome2-private directory. */
+
+ return g_build_filename (g_get_home_dir (),
+ ".gnome2_private", "Evolution", NULL);
+}
- /* As soon as a password window is up we stop; it will
- re-invoke us when it has been closed down */
- LOCK();
- while (password_dialog == NULL && (msg = (EPassMsg *)e_dlist_remhead(&request_list))) {
- UNLOCK();
+ return g_build_filename (g_get_home_dir (),
+ ".gnome2_private", "Evolution", NULL);
+}
- msg->dispatch(msg);
+static gchar *
+ep_key_file_get_group (const gchar *component)
+{
@ -295,8 +296,7 @@
+ * continue to do the same for backward-compatibility. */
+
+ gchar *normalized_key, *cp;
- msg->dispatch(msg);
+
+ normalized_key = g_strdup (key);
+ for (cp = normalized_key; *cp != '\0'; cp++)
+ if (*cp == '/' || *cp == '=')
@ -310,10 +310,10 @@
+{
+ gchar *filename;
+ GError *error = NULL;
+
+ filename = ep_key_file_get_filename ();
- LOCK();
+ filename = ep_key_file_get_filename ();
+
+ if (!g_file_test (filename, G_FILE_TEST_EXISTS))
+ goto exit;
+
@ -379,17 +379,11 @@
+
+ gchar *password;
+ gsize length;
- e_passwords_init();
+
+ password = (gchar *) g_base64_decode (encoded_password, &length);
+ password = g_realloc (password, length + 1);
+ password[length] = '\0';
- msg = g_malloc0(sizeof(*msg));
- msg->dispatch = dispatch;
- msg->msg.reply_port = e_msgport_new();
-#ifdef ENABLE_THREADS
- msg->ismain = pthread_equal(pthread_self(), main_thread);
+
+ return password;
+}
+
@ -403,9 +397,15 @@
+
+ password_cache = g_hash_table_new_full (
+ g_str_hash, g_str_equal, g_free, g_free);
+
- e_passwords_init();
+ express_queue = g_async_queue_new ();
+
- msg = g_malloc0(sizeof(*msg));
- msg->dispatch = dispatch;
- msg->msg.reply_port = e_msgport_new();
-#ifdef ENABLE_THREADS
- msg->ismain = pthread_equal(pthread_self(), main_thread);
+#ifdef WITH_GNOME_KEYRING
+ if (!gnome_keyring_is_available ()) {
+ key_file = g_key_file_new ();
@ -486,7 +486,8 @@
static void
-ep_msg_send(EPassMsg *msg)
+ep_msg_free (EPassMsg *msg)
+{
{
- int needidle = 0;
+ e_flag_free (msg->done);
+ g_slice_free (EPassMsg, msg);
+}
@ -515,18 +516,17 @@
+ e_flag_free (data->done);
+ g_slice_free (EPassDialogData, data);
+}
+
+static gboolean
+ep_dialog_run (EPassMsg *msg)
{
- int needidle = 0;
+ /* This function must run in the main thread. */
- LOCK();
- e_dlist_addtail(&request_list, (EDListNode *)&msg->msg);
- if (!idle_id) {
- if (!msg->ismain)
- idle_id = g_idle_add(ep_idle_dispatch, NULL);
+static gboolean
+ep_dialog_run (EPassMsg *msg)
+{
+ /* This function must run in the main thread. */
+
+ EPassDialogData *data = msg->data;
+ GtkBox *box;
+ GtkWidget *dialog;
@ -651,15 +651,15 @@
+ep_clear_passwords_keyfile (EPassMsg *msg)
{
- char *path;
-
- path = g_strdup_printf ("/Evolution/Passwords-%s", msg->component);
+ gchar *group;
+ GError *error = NULL;
- path = g_strdup_printf ("/Evolution/Passwords-%s", msg->component);
+ group = ep_key_file_get_group (msg->component);
- gnome_config_private_clean_section (path);
- gnome_config_private_sync_file ("/Evolution");
-
+ group = ep_key_file_get_group (msg->component);
- g_free (path);
+ g_key_file_remove_group (key_file, group, &error);
+ if (error == NULL)
@ -835,11 +835,16 @@
- gpointer okey, value;
- char *path, *pass64;
- int len, state, save;
-
+ gchar *group, *key, *password;
- if (g_hash_table_lookup_extended (passwords, msg->key, &okey, &value)) {
- /* add it to the on-disk cache of passwords */
- path = password_path (msg->component, okey);
+ gchar *group, *key, *password;
+ password = g_hash_table_lookup (password_cache, msg->key);
+ if (password == NULL) {
+ g_warning ("Password for key \"%s\" not found", msg->key);
+ return;
+ }
- len = strlen (value);
- pass64 = g_malloc0 ((len + 2) * 4 / 3 + 1);
@ -849,20 +854,14 @@
- gnome_config_private_set_string (path, pass64);
- g_free (path);
- g_free (pass64);
+ password = g_hash_table_lookup (password_cache, msg->key);
+ if (password == NULL) {
+ g_warning ("Password for key \"%s\" not found", msg->key);
+ return;
+ }
+ group = ep_key_file_get_group (msg->component);
+ key = ep_key_file_normalize_key (msg->key);
+ password = ep_password_encode (password);
- /* now remove it from our session hash */
- g_hash_table_remove (passwords, msg->key);
- g_free (okey);
- g_free (value);
+ group = ep_key_file_get_group (msg->component);
+ key = ep_key_file_normalize_key (msg->key);
+ password = ep_password_encode (password);
+
+ g_hash_table_remove (password_cache, msg->key);
+ g_key_file_set_string (key_file, group, key, password);
+ ep_key_file_save ();
@ -898,7 +897,7 @@
EUri *uri = e_uri_new (msg->key);
if (!strcmp (uri->protocol, "ldap") && !uri->user) {
@@ -486,27 +703,17 @@ ep_forget_password_keyring (EPassMsg *ms
@@ -486,12 +703,7 @@ ep_forget_password_keyring (EPassMsg *ms
uri->user = keycopy;
}
@ -910,32 +909,16 @@
- }
+ g_hash_table_remove (password_cache, msg->key);
if (!uri->host && !uri->user) {
if (!uri->host && !uri->user)
/* No need to remove from keyring for pass phrases */
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
return;
}
result = gnome_keyring_get_default_keyring_sync (&default_keyring);
if (!default_keyring) {
- if (gnome_keyring_create_sync ("default", NULL) != GNOME_KEYRING_RESULT_OK) {
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
- return;
- }
+ if (gnome_keyring_create_sync ("default", NULL) != GNOME_KEYRING_RESULT_OK)
+ return;
default_keyring = g_strdup ("default");
}
@@ -567,35 +774,44 @@ ep_forget_password_keyring (EPassMsg *ms
}
@@ -563,36 +775,45 @@ ep_forget_password_keyring (EPassMsg *ms
g_free (default_keyring);
-
exit:
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
-
e_uri_free(uri);
}
#endif
@ -947,17 +930,17 @@
- char *path;
+ gchar *group, *key;
+ GError *error = NULL;
+
+ g_hash_table_remove (password_cache, msg->key);
+
+ group = ep_key_file_get_group (msg->component);
+ key = ep_key_file_normalize_key (msg->key);
- if (g_hash_table_lookup_extended (passwords, msg->key, &okey, &value)) {
- g_hash_table_remove (passwords, msg->key);
- memset (value, 0, strlen (value));
- g_free (okey);
- g_free (value);
+ g_hash_table_remove (password_cache, msg->key);
+
+ group = ep_key_file_get_group (msg->component);
+ key = ep_key_file_normalize_key (msg->key);
+
+ g_key_file_remove_key (key_file, group, key, &error);
+ if (error == NULL)
+ ep_key_file_save ();
@ -993,7 +976,7 @@
#ifdef WITH_GNOME_KEYRING
static void
@@ -605,11 +821,11 @@ ep_get_password_keyring (EPassMsg *msg)
@@ -602,11 +823,11 @@ ep_get_password_keyring (EPassMsg *msg)
GnomeKeyringAttributeList *attributes;
GnomeKeyringAttribute attribute;
GnomeKeyringResult result;
@ -1008,9 +991,9 @@
} else {
EUri *uri = e_uri_new (msg->key);
@@ -683,284 +899,154 @@ ep_get_password_keyring (EPassMsg *msg)
}
@@ -681,284 +902,154 @@ ep_get_password_keyring (EPassMsg *msg)
e_uri_free (uri);
}
-
- if (!msg->noreply)
@ -1030,7 +1013,20 @@
- passwd = g_hash_table_lookup (passwords, msg->key);
- if (passwd) {
- msg->password = g_strdup(passwd);
- } else {
+ password = g_hash_table_lookup (password_cache, msg->key);
+ if (password != NULL) {
+ msg->password = g_strdup (password);
+ return;
+ }
+
+ group = ep_key_file_get_group (msg->component);
+ key = ep_key_file_normalize_key (msg->key);
+
+ password = g_key_file_get_string (key_file, group, key, &error);
+ if (password != NULL) {
+ msg->password = ep_password_decode (password);
+ g_free (password);
} else {
- /* not part of the session hash, look it up in the on disk db */
- path = password_path (msg->component, msg->key);
- encoded = gnome_config_private_get_string_with_default (path, NULL);
@ -1039,49 +1035,47 @@
- msg->password = decode_base64 (encoded);
- g_free (encoded);
- }
+ password = g_hash_table_lookup (password_cache, msg->key);
+ if (password != NULL) {
+ msg->password = g_strdup (password);
+ return;
}
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
-}
+ group = ep_key_file_get_group (msg->component);
+ key = ep_key_file_normalize_key (msg->key);
-static void
-ep_add_password (EPassMsg *msg)
-{
- gpointer okey, value;
-
- if (g_hash_table_lookup_extended (passwords, msg->key, &okey, &value)) {
- g_hash_table_remove (passwords, msg->key);
- g_free (okey);
- g_free (value);
+ password = g_key_file_get_string (key_file, group, key, &error);
+ if (password != NULL) {
+ msg->password = ep_password_decode (password);
+ g_free (password);
+ } else {
+ g_warning ("%s", error->message);
+ g_error_free (error);
}
- g_hash_table_insert (passwords, g_strdup (msg->key), g_strdup (msg->oldpass));
-
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
+ g_free (group);
+ g_free (key);
}
static void
-ep_add_password (EPassMsg *msg)
+ep_get_password (EPassMsg *msg)
{
- gpointer okey, value;
-
- if (g_hash_table_lookup_extended (passwords, msg->key, &okey, &value)) {
- g_hash_table_remove (passwords, msg->key);
- g_free (okey);
- g_free (value);
- }
-
- g_hash_table_insert (passwords, g_strdup (msg->key), g_strdup (msg->oldpass));
-
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
+#ifdef WITH_GNOME_KEYRING
+ if (gnome_keyring_is_available ())
+ ep_get_password_keyring (msg);
+ else
+ ep_get_password_keyfile (msg);
+#else
+ ep_get_password_keyfile (msg);
+#endif
}
-static void ep_ask_password(EPassMsg *msg);
-
static void
-pass_response(GtkDialog *dialog, int response, void *data)
+ep_get_password (EPassMsg *msg)
+ep_add_password (EPassMsg *msg)
{
- EPassMsg *msg = data;
- int type = msg->flags & E_PASSWORDS_REMEMBER_MASK;
@ -1090,41 +1084,60 @@
-
- if (response == GTK_RESPONSE_OK) {
- msg->password = g_strdup(gtk_entry_get_text((GtkEntry *)msg->entry));
-
+ gchar *key = g_strdup (msg->key);
+ gchar *password = g_strdup (msg->password);
- if (type != E_PASSWORDS_REMEMBER_NEVER) {
- int noreply = msg->noreply;
-
+ g_hash_table_insert (password_cache, key, password);
+}
- *msg->remember = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (msg->check));
-
+static void
+ep_ask_password (EPassMsg *msg)
+{
+ EPassDialogData *data = msg->data;
+ gchar *password;
+ gint remember;
- msg->noreply = 1;
-
+ /* Open the express queue for this key. This allows us to catch
+ * incoming operations on this key while waiting for the user to
+ * provide a password. Once we have the password, immediately
+ * process any messages in the express queue. */
+ g_async_queue_lock (express_queue);
+ express_key = msg->key;
+ g_async_queue_unlock (express_queue);
- if (*msg->remember || type == E_PASSWORDS_REMEMBER_FOREVER) {
- msg->oldpass = msg->password;
- ep_add_password(msg);
- }
#ifdef WITH_GNOME_KEYRING
-#ifdef WITH_GNOME_KEYRING
- if (*msg->remember && type == E_PASSWORDS_REMEMBER_FOREVER) {
- if (gnome_keyring_is_available())
- ep_remember_password_keyring(msg);
- else
- ep_remember_password_file(msg);
- }
+ if (gnome_keyring_is_available ())
+ ep_get_password_keyring (msg);
+ else
+ ep_get_password_keyfile (msg);
#else
-#else
- if (*msg->remember && type == E_PASSWORDS_REMEMBER_FOREVER)
- ep_remember_password_file(msg);
-#endif
-
+ if (data->flags & E_PASSWORDS_REPROMPT)
+ ep_get_password (msg);
- msg->noreply = noreply;
- }
- }
-
+ /* Run the password dialog in the main thread. */
+ g_idle_add ((GSourceFunc) ep_dialog_run, msg);
- gtk_widget_destroy((GtkWidget *)dialog);
- password_dialog = NULL;
-
+ /* Wait for the user to respond. */
+ e_flag_wait (data->done);
- /* ok, here things get interesting, we suck up any pending
- * operations on this specific password, and return the same
- * result or ignore other operations */
@ -1137,8 +1150,7 @@
- if ((mw->dispatch == (gnome_keyring_is_available() ? ep_forget_password_keyring : ep_forget_password_file)
-#else
- if ((mw->dispatch == ep_forget_password_file
+ ep_get_password_keyfile (msg);
#endif
-#endif
-#ifdef WITH_GNOME_KEYRING
- || mw->dispatch == (gnome_keyring_is_available() ? ep_get_password_keyring : ep_get_password_file)
-#else
@ -1153,51 +1165,6 @@
- }
- mw = mn;
- mn = (EPassMsg *)mn->msg.ln.next;
- }
- UNLOCK();
+}
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
+static void
+ep_add_password (EPassMsg *msg)
+{
+ gchar *key = g_strdup (msg->key);
+ gchar *password = g_strdup (msg->password);
- ep_idle_dispatch(NULL);
+ g_hash_table_insert (password_cache, key, password);
}
static void
-ep_ask_password(EPassMsg *msg)
+ep_ask_password (EPassMsg *msg)
{
- GtkWidget *vbox;
- int type = msg->flags & E_PASSWORDS_REMEMBER_MASK;
- guint noreply = msg->noreply;
- AtkObject *a11y;
+ EPassDialogData *data = msg->data;
+ gchar *password;
+ gint remember;
+
+ /* Open the express queue for this key. This allows us to catch
+ * incoming operations on this key while waiting for the user to
+ * provide a password. Once we have the password, immediately
+ * process any messages in the express queue. */
+ g_async_queue_lock (express_queue);
+ express_key = msg->key;
+ g_async_queue_unlock (express_queue);
+
+ if (data->flags & E_PASSWORDS_REPROMPT)
+ ep_get_password (msg);
+
+ /* Run the password dialog in the main thread. */
+ g_idle_add ((GSourceFunc) ep_dialog_run, msg);
+
+ /* Wait for the user to respond. */
+ e_flag_wait (data->done);
+
+ /* If the user cancelled the dialog then we need to dispatch
+ * any messages that we trapped in the express queue. */
+ if (data->response != GTK_RESPONSE_OK) {
@ -1207,10 +1174,27 @@
+ ep_msg_dispatch (msg);
+ g_async_queue_unlock (express_queue);
+ return;
+ }
}
- UNLOCK();
-
- if (!msg->noreply)
- e_msgport_reply(&msg->msg);
- ep_idle_dispatch(NULL);
-}
-
-static void
-ep_ask_password(EPassMsg *msg)
-{
- GtkWidget *vbox;
- int type = msg->flags & E_PASSWORDS_REMEMBER_MASK;
- guint noreply = msg->noreply;
- AtkObject *a11y;
+ remember = data->flags & E_PASSWORDS_REMEMBER_MASK;
- msg->noreply = 1;
+ remember = data->flags & E_PASSWORDS_REMEMBER_MASK;
+ if (remember == E_PASSWORDS_REMEMBER_NEVER)
+ goto cleanup;
- /*password_dialog = (GtkDialog *)e_error_new(msg->parent, "mail:ask-session-password", msg->prompt, NULL);*/
- password_dialog = (GtkDialog *)gtk_message_dialog_new (msg->parent,
@ -1219,26 +1203,25 @@
- GTK_BUTTONS_OK_CANCEL,
- "%s", msg->prompt);
- gtk_window_set_title(GTK_WINDOW(password_dialog), msg->title);
+ if (remember == E_PASSWORDS_REMEMBER_NEVER)
+ goto cleanup;
+ if (data->remember || remember == E_PASSWORDS_REMEMBER_FOREVER)
+ ep_add_password (msg);
- gtk_widget_ensure_style (GTK_WIDGET (password_dialog));
- gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (password_dialog)->vbox), 0);
- gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (password_dialog)->action_area), 12);
+ if (data->remember || remember == E_PASSWORDS_REMEMBER_FOREVER)
+ ep_add_password (msg);
- gtk_dialog_set_default_response(password_dialog, GTK_RESPONSE_OK);
+ if (data->remember && remember == E_PASSWORDS_REMEMBER_FOREVER)
+ ep_remember_password (msg);
- gtk_dialog_set_default_response(password_dialog, GTK_RESPONSE_OK);
+cleanup:
- vbox = gtk_vbox_new (FALSE, 12);
- gtk_widget_show (vbox);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (password_dialog)->vbox), vbox, TRUE, FALSE, 0);
- gtk_container_set_border_width((GtkContainer *)vbox, 12);
-
- msg->entry = gtk_entry_new ();
+cleanup:
+ password = g_strdup (msg->password);
- a11y = gtk_widget_get_accessible (msg->entry);
- atk_object_set_description (a11y, msg->prompt);
@ -1262,8 +1245,14 @@
- g_free (msg->password);
- msg->password = NULL;
- }
- }
+ password = g_strdup (msg->password);
+ /* Close the express queue and process any messages there. */
+ g_async_queue_lock (express_queue);
+ express_key = NULL;
+ while ((msg = g_async_queue_try_pop_unlocked (express_queue))) {
+ msg->password = g_strdup (password);
+ e_flag_set (msg->done);
}
+ g_async_queue_unlock (express_queue);
- /* static password, shouldn't be remembered between sessions,
- but will be remembered within the session beyond our control */
@ -1283,17 +1272,10 @@
- if ((msg->flags & E_PASSWORDS_DISABLE_REMEMBER))
- gtk_widget_set_sensitive(msg->check, FALSE);
- gtk_widget_show (msg->check);
+ /* Close the express queue and process any messages there. */
+ g_async_queue_lock (express_queue);
+ express_key = NULL;
+ while ((msg = g_async_queue_try_pop_unlocked (express_queue))) {
+ msg->password = g_strdup (password);
+ e_flag_set (msg->done);
}
- }
-
- msg->noreply = noreply;
+ g_async_queue_unlock (express_queue);
-
- g_signal_connect(password_dialog, "response", G_CALLBACK (pass_response), msg);
- gtk_widget_show((GtkWidget *)password_dialog);
+ g_free (password);
@ -1383,7 +1365,7 @@
*
* Set the offline-state of the application. This is a work-around
* for having the backends fully offline aware, and returns a
@@ -972,10 +1055,11 @@ e_passwords_shutdown (void)
@@ -967,10 +1058,11 @@ e_passwords_shutdown (void)
* FIXME: This is not a permanent api, review post 2.0.
**/
void
@ -1398,7 +1380,7 @@
}
/**
@@ -986,150 +1070,137 @@ e_passwords_set_online(int state)
@@ -981,151 +1073,138 @@ e_passwords_set_online(int state)
void
e_passwords_forget_passwords (void)
{
@ -1603,7 +1585,8 @@
+ * @key: key to store the password under, or NULL
* @prompt: prompt string
* @type: whether or not to offer to remember the password,
@@ -1146,241 +1217,44 @@ e_passwords_add_password (const char *ke
* and for how long.
@@ -1140,241 +1219,44 @@ e_passwords_add_password (const char *ke
* return value is non-%NULL and @remember_type is not
* E_PASSWORDS_DO_NOT_REMEMBER.
**/
@ -1873,8 +1856,8 @@
- return (char *)plain;
+ return password;
}
--- evolution-data-server-1.11.2/libedataserver/e-msgport.h.e-passwords 2007-04-18 06:10:18.000000000 -0400
+++ evolution-data-server-1.11.2/libedataserver/e-msgport.h 2007-05-31 22:51:17.000000000 -0400
--- evolution-data-server-1.11.4/libedataserver/e-msgport.h.e-passwords 2007-04-18 06:10:18.000000000 -0400
+++ evolution-data-server-1.11.4/libedataserver/e-msgport.h 2007-06-18 16:19:44.000000000 -0400
@@ -54,7 +54,7 @@ typedef struct _EMsgPort EMsgPort;
/* header for any message */

View File

@ -25,8 +25,8 @@
### Abstract ###
Name: evolution-data-server
Version: 1.11.3
Release: 3%{?dist}
Version: 1.11.4
Release: 1%{?dist}
License: LGPL
Group: System Environment/Libraries
Summary: Backend data server for Evolution
@ -45,9 +45,6 @@ Patch11: evolution-data-server-1.8.0-no-gnome-common.patch
# RH bug #202309
Patch12: evolution-data-server-1.7.91-maybe-fix-crash.patch
# RH bug #203915
Patch13: evolution-data-server-1.8.0-fix-camel-malloc.patch
# GNOME bug #363695
Patch14: evolution-data-server-1.9.1-kill-ememory.patch
@ -66,12 +63,6 @@ Patch19: evolution-data-server-1.10.1-camel-folder-summary-crash.patch
# RH bug #215634
Patch20: evolution-data-server-1.10.1-camel-certdb-nss-cert-get.patch
# GNOME bug #312584
Patch21: evolution-data-server-1.11.3-exchange-hierarchy-webdav.patch
# GNOME bug #447414
Patch22: evolution-data-server-1.11.3-camel-imap-folder.patch
### Dependencies ###
Requires: GConf2
@ -154,15 +145,12 @@ evolution-data-server.
%patch10 -p1 -b .ldaphack
%patch11 -p1 -b .no-gnome-common
%patch12 -p1 -b .maybe-fix-crash
%patch13 -p1 -b .fix-camel-malloc
%patch14 -p1 -b .kill-ememory
%patch15 -p1 -b .e-flag
%patch16 -p1 -b .e-passwords
%patch18 -p1 -b .code-cleanup
%patch19 -p1 -b .camel-folder-symmary-crash
%patch20 -p1 -b .camel-certdb-nss-cert-get
%patch21 -p1 -b .exchange-hierarchy-webdav
%patch22 -p1 -b .camel-imap-folder
mkdir -p krb5-fakeprefix/include
mkdir -p krb5-fakeprefix/lib
@ -387,6 +375,12 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/pkgconfig/libexchange-storage-%{eds_api_version}.pc
%changelog
* Mon Jun 18 2007 Matthew Barnes <mbarnes@redhat.com> - 1.11.4-1.fc8
- Update to 1.11.4
- Remove patch for RH bug #202309 (fixed upstream).
- Remove patch for GNOME bug #312854 (fixed upstream).
- Remove patch for GNOME bug #447414 (fixed upstream).
* Fri Jun 15 2007 Matthew Barnes <mbarnes@redhat.com> - 1.11.3-3.fc8
- Add patch for GNOME bug #224277 (Camel IMAP security flaw).

View File

@ -1 +1 @@
5437a67b2ac574f1a50fa263a7c2026b evolution-data-server-1.11.3.tar.bz2
dceb76b7c8a603ba7d7138287906482b evolution-data-server-1.11.4.tar.bz2