diff --git a/.cvsignore b/.cvsignore index 4f73b7f..c5dd8fe 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -evolution-data-server-1.11.3.tar.bz2 +evolution-data-server-1.11.4.tar.bz2 diff --git a/evolution-data-server-1.11.3-camel-imap-folder.patch b/evolution-data-server-1.11.3-camel-imap-folder.patch deleted file mode 100644 index c8cc36b..0000000 --- a/evolution-data-server-1.11.3-camel-imap-folder.patch +++ /dev/null @@ -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) diff --git a/evolution-data-server-1.11.3-exchange-hierarchy-webdav.patch b/evolution-data-server-1.11.3-exchange-hierarchy-webdav.patch deleted file mode 100644 index 5f437ee..0000000 --- a/evolution-data-server-1.11.3-exchange-hierarchy-webdav.patch +++ /dev/null @@ -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; - diff --git a/evolution-data-server-1.8.0-fix-camel-malloc.patch b/evolution-data-server-1.8.0-fix-camel-malloc.patch deleted file mode 100644 index 30e53de..0000000 --- a/evolution-data-server-1.8.0-fix-camel-malloc.patch +++ /dev/null @@ -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) { diff --git a/evolution-data-server-1.9.92-e-passwords.patch b/evolution-data-server-1.9.92-e-passwords.patch index 772ae55..625097f 100644 --- a/evolution-data-server-1.9.92-e-passwords.patch +++ b/evolution-data-server-1.9.92-e-passwords.patch @@ -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 */ diff --git a/evolution-data-server.spec b/evolution-data-server.spec index f1aa615..810faad 100644 --- a/evolution-data-server.spec +++ b/evolution-data-server.spec @@ -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 - 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 - 1.11.3-3.fc8 - Add patch for GNOME bug #224277 (Camel IMAP security flaw). diff --git a/sources b/sources index 7d5ca3a..f6d6ee8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -5437a67b2ac574f1a50fa263a7c2026b evolution-data-server-1.11.3.tar.bz2 +dceb76b7c8a603ba7d7138287906482b evolution-data-server-1.11.4.tar.bz2