Hello community, here is the log from the commit of package evolution-ews for openSUSE:Factory checked in at 2017-07-21 22:42:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/evolution-ews (Old) and /work/SRC/openSUSE:Factory/.evolution-ews.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "evolution-ews" Fri Jul 21 22:42:52 2017 rev:74 rq:511106 version:3.24.4 Changes: -------- --- /work/SRC/openSUSE:Factory/evolution-ews/evolution-ews.changes 2017-06-28 10:33:31.474820698 +0200 +++ /work/SRC/openSUSE:Factory/.evolution-ews.new/evolution-ews.changes 2017-07-21 22:43:23.715544747 +0200 @@ -1,0 +2,7 @@ +Mon Jul 17 11:02:47 UTC 2017 - [email protected] + +- Update to version 3.24.4: + + Bugs fixed: bgo#784332, bgo#784058, bgo#784775. + + Updated translations. + +------------------------------------------------------------------- Old: ---- evolution-ews-3.24.3.tar.xz New: ---- evolution-ews-3.24.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ evolution-ews.spec ++++++ --- /var/tmp/diff_new_pack.ZW1E8N/_old 2017-07-21 22:43:25.127345594 +0200 +++ /var/tmp/diff_new_pack.ZW1E8N/_new 2017-07-21 22:43:25.127345594 +0200 @@ -17,7 +17,7 @@ Name: evolution-ews -Version: 3.24.3 +Version: 3.24.4 Release: 0 # This should be updated upon major version changes; it should match BASE_VERSION as defined in configure.in. %define evolution_base_version 3.24 ++++++ evolution-ews-3.24.3.tar.xz -> evolution-ews-3.24.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/CMakeLists.txt new/evolution-ews-3.24.4/CMakeLists.txt --- old/evolution-ews-3.24.3/CMakeLists.txt 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/CMakeLists.txt 2017-07-17 10:47:01.000000000 +0200 @@ -4,7 +4,7 @@ cmake_policy(VERSION 3.1) project(evolution-ews - VERSION 3.24.3 + VERSION 3.24.4 LANGUAGES C) set(PROJECT_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=evolution-ews") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/NEWS new/evolution-ews-3.24.4/NEWS --- old/evolution-ews-3.24.3/NEWS 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/NEWS 2017-07-17 10:47:01.000000000 +0200 @@ -1,3 +1,15 @@ +Evolution-EWS 3.24.4 2017-07-17 +------------------------------- + +Bug Fixes: + Bug 784332 - EXDATE missed in recurring events (Milan Crha) + Bug 784058 - Ignores Exchange backoff response (Milan Crha) + Bug 784775 - PublicDL members replaced with DL aliases in online GAL (Milan Crha) + +Translations: + Piotr Drąg (pl) + Kukuh Syafaat (id) + Evolution-EWS 3.24.3 2017-06-19 ------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/po/id.po new/evolution-ews-3.24.4/po/id.po --- old/evolution-ews-3.24.3/po/id.po 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/po/id.po 2017-07-17 10:47:01.000000000 +0200 @@ -8,8 +8,8 @@ "Project-Id-Version: evolution-ews master\n" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "product=evolution-ews&keywords=I18N+L10N&component=Miscellaneous / EWS Core\n" -"POT-Creation-Date: 2017-03-20 11:28+0000\n" -"PO-Revision-Date: 2017-03-20 22:59+0700\n" +"POT-Creation-Date: 2017-07-10 12:33+0000\n" +"PO-Revision-Date: 2017-07-11 10:12+0700\n" "Last-Translator: Kukuh Syafaat <[email protected]>\n" "Language-Team: Indonesian <[email protected]>\n" "Language: id\n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.8.11\n" +"X-Generator: Poedit 2.0.2\n" #: ../evolution-ews.metainfo.xml.in.h:1 ../src/camel/camel-ews-provider.c:79 msgid "Exchange Web Services" @@ -106,7 +106,7 @@ msgid "Unable to create cache file" msgstr "Tak bisa membuat berkas singgahan" -#: ../src/camel/camel-ews-folder.c:585 ../src/camel/camel-ews-folder.c:677 +#: ../src/camel/camel-ews-folder.c:585 ../src/camel/camel-ews-folder.c:678 #, c-format msgid "Unable to create cache path “%s”: %s" msgstr "Tak bisa membuat path singgahan “%s”: %s" @@ -114,22 +114,22 @@ #. Translators: The first %s consists of the source file name, #. the second %s of the destination file name and #. the third %s of the error message. -#: ../src/camel/camel-ews-folder.c:691 +#: ../src/camel/camel-ews-folder.c:692 #, c-format msgid "Failed to move message cache file from “%s” to “%s”: %s" msgstr "Gagal memindah berkas singgahan pesan dari “%s” to “%s”: %s" -#: ../src/camel/camel-ews-folder.c:1498 +#: ../src/camel/camel-ews-folder.c:1536 #, c-format msgid "Could not load summary for %s" msgstr "Tak bisa memuat ringkasan untuk %s" -#: ../src/camel/camel-ews-folder.c:1942 +#: ../src/camel/camel-ews-folder.c:1980 #, c-format msgid "Refreshing folder “%s”" msgstr "Menyegarkan folder “%s”" -#: ../src/camel/camel-ews-folder.c:2088 +#: ../src/camel/camel-ews-folder.c:2126 #, c-format msgid "Cannot perform actions on the folder while in offline mode" msgstr "Tak bisa melakukan aksi pada folder ketika dalam mode luring" @@ -396,18 +396,18 @@ msgid "Service not connected" msgstr "Layanan tidak tersambung" -#: ../src/collection/e-ews-backend.c:419 +#: ../src/collection/e-ews-backend.c:464 #: ../src/configuration/e-mail-config-ews-gal.c:274 msgid "Global Address List" msgstr "Daftar Alamat Global" -#: ../src/collection/e-ews-backend.c:855 +#: ../src/collection/e-ews-backend.c:900 #, c-format msgid "Could not determine a suitable folder class for a new folder named “%s”" msgstr "" "Tak bisa menentukan kelas folder yang cocok bagi folder baru bernama “%s”" -#: ../src/collection/e-ews-backend.c:943 +#: ../src/collection/e-ews-backend.c:988 #, c-format msgid "Data source “%s” does not represent an Exchange Web Services folder" msgstr "" @@ -1115,66 +1115,80 @@ msgid "CreateItem call failed to return ID for new message" msgstr "Pemanggilan CreateItem gagal mengembalikan ID bagi pesan baru" -#: ../src/server/e-ews-connection.c:722 +#: ../src/server/e-ews-connection.c:732 msgid "Operation Cancelled" msgstr "Operasi Dibatalkan" -#: ../src/server/e-ews-connection.c:788 +#: ../src/server/e-ews-connection.c:800 msgid "Authentication failed" msgstr "Otentikasi gagal" -#: ../src/server/e-ews-connection.c:809 +#: ../src/server/e-ews-connection.c:821 #, c-format msgid "No response: %s" msgstr "Tak ada respon: %s" -#: ../src/server/e-ews-connection.c:2528 +#: ../src/server/e-ews-connection.c:884 +#, c-format +msgid "Exchange server is busy, waiting to retry (%d:%02d minute)" +msgid_plural "Exchange server is busy, waiting to retry (%d:%02d minutes)" +msgstr[0] "" +"Server Exchange sedang sibuk, menunggu untuk mencoba lagi (%d:%02d menit)" + +#: ../src/server/e-ews-connection.c:890 +#, c-format +msgid "Exchange server is busy, waiting to retry (%d second)" +msgid_plural "Exchange server is busy, waiting to retry (%d seconds)" +msgstr[0] "" +"Server Exchange sedang sibuk, menunggu untuk mencoba lagi (%d detik)" + +#: ../src/server/e-ews-connection.c:2652 #, c-format msgid "Failed to parse autodiscover response XML" msgstr "Gagal mengurai XML respon autodiscover" -#: ../src/server/e-ews-connection.c:2535 +#: ../src/server/e-ews-connection.c:2659 #, c-format msgid "Failed to find <Autodiscover> element" msgstr "Gagal menemukan elemen <Autodiscover>" -#: ../src/server/e-ews-connection.c:2546 +#: ../src/server/e-ews-connection.c:2670 #, c-format msgid "Failed to find <Response> element" msgstr "Gagal menemukan elemen <Response>" -#: ../src/server/e-ews-connection.c:2557 +#: ../src/server/e-ews-connection.c:2681 #, c-format msgid "Failed to find <Account> element" msgstr "Gagal menemukan elemen <Account>" -#: ../src/server/e-ews-connection.c:2582 +#: ../src/server/e-ews-connection.c:2706 #, c-format msgid "Failed to find <ASUrl> and <OABUrl> in autodiscover response" msgstr "Gagal menemukan <ASUrl> dan <OABUrl> dalam respon autodiscover" -#: ../src/server/e-ews-connection.c:2673 +#: ../src/server/e-ews-connection.c:2797 msgid "URL cannot be NULL" msgstr "URL tak boleh NULL" -#: ../src/server/e-ews-connection.c:2681 +#: ../src/server/e-ews-connection.c:2805 #, c-format msgid "URL “%s” is not valid" msgstr "URL “%s” tak valid" -#: ../src/server/e-ews-connection.c:2771 +#: ../src/server/e-ews-connection.c:2895 msgid "Email address is missing a domain part" msgstr "Alamat surel kurang bagian domain" -#: ../src/server/e-ews-connection.c:3093 +#: ../src/server/e-ews-connection.c:3217 msgid "Failed to parse oab XML" msgstr "Gagal mengurai XML oab" -#: ../src/server/e-ews-connection.c:3101 +#: ../src/server/e-ews-connection.c:3225 msgid "Failed to find <OAB> element\n" msgstr "Gagal menemukan elemen <OAB>\n" -#: ../src/server/e-ews-connection.c:4406 +#: ../src/server/e-ews-connection.c:4530 msgid "No items found" msgstr "Tak temukan butir" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/po/pl.po new/evolution-ews-3.24.4/po/pl.po --- old/evolution-ews-3.24.3/po/pl.po 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/po/pl.po 2017-07-17 10:47:01.000000000 +0200 @@ -1,15 +1,15 @@ # Polish translation for evolution-ews. -# Copyright © 2010-2016 the evolution-ews authors. +# Copyright © 2010-2017 the evolution-ews authors. # This file is distributed under the same license as the evolution-ews package. -# Piotr Drąg <[email protected]>, 2010-2016. -# Aviary.pl <[email protected]>, 2010-2016. +# Piotr Drąg <[email protected]>, 2010-2017. +# Aviary.pl <[email protected]>, 2010-2017. # msgid "" msgstr "" "Project-Id-Version: evolution-ews\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-18 15:52+0100\n" -"PO-Revision-Date: 2016-12-18 15:53+0100\n" +"POT-Creation-Date: 2017-07-10 16:20+0200\n" +"PO-Revision-Date: 2017-07-10 16:23+0200\n" "Last-Translator: Piotr Drąg <[email protected]>\n" "Language-Team: Polish <[email protected]>\n" "Language: pl\n" @@ -43,25 +43,25 @@ msgid "The backend does not support bulk modifications" msgstr "Mechanizm nie obsługuje modyfikacji całości" -#: ../src/addressbook/e-book-backend-ews.c:2080 +#: ../src/addressbook/e-book-backend-ews.c:2083 msgid "Wait till syncing is done" msgstr "Oczekiwanie na ukończenie synchronizacji" -#: ../src/addressbook/e-book-backend-ews.c:2563 +#: ../src/addressbook/e-book-backend-ews.c:2566 #, c-format msgid "Processing contacts in %s %d%% completed... " msgstr "Przetwarzanie kontaktów w %s %d%% ukończono… " -#: ../src/addressbook/e-book-backend-ews.c:3206 +#: ../src/addressbook/e-book-backend-ews.c:3209 msgid "Syncing contacts..." msgstr "Synchronizowanie kontaktów…" -#: ../src/addressbook/e-book-backend-ews.c:3391 +#: ../src/addressbook/e-book-backend-ews.c:3394 #: ../src/configuration/e-ews-search-user.c:363 msgid "Searching..." msgstr "Wyszukiwanie…" -#: ../src/addressbook/e-book-backend-ews.c:4395 +#: ../src/addressbook/e-book-backend-ews.c:4398 msgid "Requested to delete an unrelated cursor" msgstr "Zażądano usunięcia niepowiązanego kursora" @@ -81,32 +81,32 @@ msgid "EWS does not support bulk modifications" msgstr "EWS nie obsługuje modyfikacji całości" -#: ../src/calendar/e-cal-backend-ews.c:2405 +#: ../src/calendar/e-cal-backend-ews.c:2433 #, c-format msgid "Cannot find user “%s” between attendees" msgstr "Nie można odnaleźć użytkownika „%s” na liście uczestników" -#: ../src/camel/camel-ews-folder.c:374 +#: ../src/camel/camel-ews-folder.c:375 #, c-format msgid "Unable to open mimecontent temporary file!" msgstr "Nie można otworzyć tymczasowego pliku treści MIME." -#: ../src/camel/camel-ews-folder.c:382 +#: ../src/camel/camel-ews-folder.c:383 #, c-format msgid "Unable to generate parser from mimecontent!" msgstr "Nie można utworzyć parsera z treści MIME." -#: ../src/camel/camel-ews-folder.c:391 +#: ../src/camel/camel-ews-folder.c:392 #, c-format msgid "Unable to parse meeting request mimecontent!" msgstr "Nie można przetworzyć treści MIME żądania spotkania." -#: ../src/camel/camel-ews-folder.c:450 +#: ../src/camel/camel-ews-folder.c:451 #, c-format msgid "Unable to create cache file" msgstr "Nie można utworzyć pliku bufora" -#: ../src/camel/camel-ews-folder.c:584 ../src/camel/camel-ews-folder.c:676 +#: ../src/camel/camel-ews-folder.c:585 ../src/camel/camel-ews-folder.c:678 #, c-format msgid "Unable to create cache path “%s”: %s" msgstr "Nie można utworzyć ścieżki bufora „%s”: %s" @@ -114,23 +114,23 @@ #. Translators: The first %s consists of the source file name, #. the second %s of the destination file name and #. the third %s of the error message. -#: ../src/camel/camel-ews-folder.c:690 +#: ../src/camel/camel-ews-folder.c:692 #, c-format msgid "Failed to move message cache file from “%s” to “%s”: %s" msgstr "" "Przeniesienie pliku bufora wiadomości z „%s” do „%s” się nie powiodło: %s" -#: ../src/camel/camel-ews-folder.c:1476 +#: ../src/camel/camel-ews-folder.c:1536 #, c-format msgid "Could not load summary for %s" msgstr "Nie można wczytać zestawienia dla %s" -#: ../src/camel/camel-ews-folder.c:1916 +#: ../src/camel/camel-ews-folder.c:1980 #, c-format msgid "Refreshing folder “%s”" msgstr "Odświeżanie katalogu „%s”" -#: ../src/camel/camel-ews-folder.c:2058 +#: ../src/camel/camel-ews-folder.c:2126 #, c-format msgid "Cannot perform actions on the folder while in offline mode" msgstr "Nie można wykonać działań na katalogu w trybie offline" @@ -404,19 +404,19 @@ msgid "Service not connected" msgstr "Usługa nie jest połączona" -#: ../src/collection/e-ews-backend.c:419 +#: ../src/collection/e-ews-backend.c:464 #: ../src/configuration/e-mail-config-ews-gal.c:274 msgid "Global Address List" msgstr "Ogólna lista adresowa" -#: ../src/collection/e-ews-backend.c:855 +#: ../src/collection/e-ews-backend.c:900 #, c-format msgid "Could not determine a suitable folder class for a new folder named “%s”" msgstr "" "Nie można ustalić odpowiedniej klasy katalogów dla nowego katalogu o nazwie " "„%s”" -#: ../src/collection/e-ews-backend.c:943 +#: ../src/collection/e-ews-backend.c:988 #, c-format msgid "Data source “%s” does not represent an Exchange Web Services folder" msgstr "Źródło danych „%s” nie przedstawia katalog Exchange Web Services" @@ -1140,69 +1140,88 @@ "Zwrócenie identyfikatora dla nowej wiadomości przez wywołanie CreateItem się " "nie powiodło" -#: ../src/server/e-ews-connection.c:722 +#: ../src/server/e-ews-connection.c:732 msgid "Operation Cancelled" msgstr "Anulowano działanie" -#: ../src/server/e-ews-connection.c:788 +#: ../src/server/e-ews-connection.c:800 msgid "Authentication failed" msgstr "Uwierzytelnienie się nie powiodło" -#: ../src/server/e-ews-connection.c:809 +#: ../src/server/e-ews-connection.c:821 #, c-format msgid "No response: %s" msgstr "Brak odpowiedzi: %s" -#: ../src/server/e-ews-connection.c:2528 +#: ../src/server/e-ews-connection.c:884 +#, c-format +msgid "Exchange server is busy, waiting to retry (%d:%02d minute)" +msgid_plural "Exchange server is busy, waiting to retry (%d:%02d minutes)" +msgstr[0] "" +"Serwer Exchange jest zajęty, oczekiwanie na ponowienie (%d∶%02d minuta)" +msgstr[1] "" +"Serwer Exchange jest zajęty, oczekiwanie na ponowienie (%d∶%02d minuty)" +msgstr[2] "" +"Serwer Exchange jest zajęty, oczekiwanie na ponowienie (%d∶%02d minut)" + +#: ../src/server/e-ews-connection.c:890 +#, c-format +msgid "Exchange server is busy, waiting to retry (%d second)" +msgid_plural "Exchange server is busy, waiting to retry (%d seconds)" +msgstr[0] "Serwer Exchange jest zajęty, oczekiwanie na ponowienie (%d sekunda)" +msgstr[1] "Serwer Exchange jest zajęty, oczekiwanie na ponowienie (%d sekundy)" +msgstr[2] "Serwer Exchange jest zajęty, oczekiwanie na ponowienie (%d sekund)" + +#: ../src/server/e-ews-connection.c:2652 #, c-format msgid "Failed to parse autodiscover response XML" msgstr "" "Przetworzenie XML odpowiedzi automatycznego wykrywania się nie powiodło" -#: ../src/server/e-ews-connection.c:2535 +#: ../src/server/e-ews-connection.c:2659 #, c-format msgid "Failed to find <Autodiscover> element" msgstr "Odnalezienie elementu <Autodiscover> się nie powiodło" -#: ../src/server/e-ews-connection.c:2546 +#: ../src/server/e-ews-connection.c:2670 #, c-format msgid "Failed to find <Response> element" msgstr "Odnalezienie elementu <Response> się nie powiodło" -#: ../src/server/e-ews-connection.c:2557 +#: ../src/server/e-ews-connection.c:2681 #, c-format msgid "Failed to find <Account> element" msgstr "Odnalezienie elementu <Account> się nie powiodło" -#: ../src/server/e-ews-connection.c:2582 +#: ../src/server/e-ews-connection.c:2706 #, c-format msgid "Failed to find <ASUrl> and <OABUrl> in autodiscover response" msgstr "" "Odnalezienie elementów <ASUrl> i <OABUrl> w odpowiedzi automatycznego " "wykrywania się nie powiodło" -#: ../src/server/e-ews-connection.c:2673 +#: ../src/server/e-ews-connection.c:2797 msgid "URL cannot be NULL" msgstr "Adres URL nie może wynosić NULL" -#: ../src/server/e-ews-connection.c:2681 +#: ../src/server/e-ews-connection.c:2805 #, c-format msgid "URL “%s” is not valid" msgstr "Adres URL „%s” nie jest prawidłowy" -#: ../src/server/e-ews-connection.c:2771 +#: ../src/server/e-ews-connection.c:2895 msgid "Email address is missing a domain part" msgstr "W adresie e-mail brakuje części domeny" -#: ../src/server/e-ews-connection.c:3093 +#: ../src/server/e-ews-connection.c:3217 msgid "Failed to parse oab XML" msgstr "Przetworzenie XML „oab” się nie powiodło" -#: ../src/server/e-ews-connection.c:3101 +#: ../src/server/e-ews-connection.c:3225 msgid "Failed to find <OAB> element\n" msgstr "Odnalezienie elementu <OAB> się nie powiodło\n" -#: ../src/server/e-ews-connection.c:4363 +#: ../src/server/e-ews-connection.c:4530 msgid "No items found" msgstr "Nie odnaleziono elementów" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/src/addressbook/e-book-backend-ews.c new/evolution-ews-3.24.4/src/addressbook/e-book-backend-ews.c --- old/evolution-ews-3.24.3/src/addressbook/e-book-backend-ews.c 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/src/addressbook/e-book-backend-ews.c 2017-07-17 10:47:01.000000000 +0200 @@ -3457,12 +3457,15 @@ EEwsItem *contact_item = c ? c->data : NULL; EContact *contact = NULL; const gchar *str; + gboolean is_public_dl = FALSE; if (g_strcmp0 (mb->mailbox_type, "PublicDL") == 0) { contact = e_contact_new (); if (!ebews_get_dl_info_gal (ebews, contact, mb, NULL)) { g_clear_object (&contact); + } else { + is_public_dl = TRUE; } } @@ -3480,7 +3483,7 @@ e_contact_set (contact, E_CONTACT_FULL_NAME, mb->name); str = e_contact_get_const (contact, E_CONTACT_EMAIL_1); - if (!str || !*str || (contact_item && e_ews_item_get_item_type (contact_item) == E_EWS_ITEM_TYPE_CONTACT)) { + if (!str || !*str || (!is_public_dl && contact_item && e_ews_item_get_item_type (contact_item) == E_EWS_ITEM_TYPE_CONTACT)) { /* Cleanup first, then re-add only SMTP addresses */ e_contact_set (contact, E_CONTACT_EMAIL_1, NULL); e_contact_set (contact, E_CONTACT_EMAIL_2, NULL); @@ -3494,7 +3497,7 @@ str = e_contact_get_const (contact, E_CONTACT_EMAIL_1); if (!str || !*str) { e_contact_set (contact, E_CONTACT_EMAIL_1, mb->email); - } else if (mb->email && (!mb->routing_type || g_ascii_strcasecmp (mb->routing_type, "SMTP") == 0)) { + } else if (!is_public_dl && mb->email && (!mb->routing_type || g_ascii_strcasecmp (mb->routing_type, "SMTP") == 0)) { EContactField fields[3] = { E_CONTACT_EMAIL_2, E_CONTACT_EMAIL_3, E_CONTACT_EMAIL_4 }; gchar *emails[3]; gint ii, ff = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/src/calendar/e-cal-backend-ews.c new/evolution-ews-3.24.4/src/calendar/e-cal-backend-ews.c --- old/evolution-ews-3.24.3/src/calendar/e-cal-backend-ews.c 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/src/calendar/e-cal-backend-ews.c 2017-07-17 10:47:01.000000000 +0200 @@ -3418,6 +3418,7 @@ if (icalcomp) { ECalComponent *comp, *cache_comp = NULL; icalproperty *icalprop, *freebusy; + struct icaltimetype itt; const EwsId *item_id; ECalComponentId *id; const GSList *l = NULL; @@ -3522,6 +3523,22 @@ } } + /* The EXDATE sent by the server can be date-time format with timezone, while + the event start time can be date-only. This breaks the rules, thus correct + it and make also EXDATE date-only. */ + itt = icalcomponent_get_dtstart (icalcomp); + if (icaltime_is_valid_time (itt) && itt.is_date) { + for (icalprop = icalcomponent_get_first_property (icalcomp, ICAL_EXDATE_PROPERTY); + icalprop; + icalprop = icalcomponent_get_next_property (icalcomp, ICAL_EXDATE_PROPERTY)) { + itt = icalproperty_get_exdate (icalprop); + itt.is_date = 1; + icalproperty_set_exdate (icalprop, itt); + + icalproperty_remove_parameter_by_kind (icalprop, ICAL_TZID_PARAMETER); + } + } + /* Exchange sets an ORGANIZER on all events. RFC2445 says: * * This property MUST NOT be specified in an iCalendar diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-ews-3.24.3/src/server/e-ews-connection.c new/evolution-ews-3.24.4/src/server/e-ews-connection.c --- old/evolution-ews-3.24.3/src/server/e-ews-connection.c 2017-06-19 12:21:32.000000000 +0200 +++ new/evolution-ews-3.24.4/src/server/e-ews-connection.c 2017-07-17 10:47:01.000000000 +0200 @@ -700,10 +700,13 @@ if (ews_node->cancellable) g_object_unref (ews_node->cancellable); - /* the 'simple' holds reference on 'cnc' and this function - * is called in a dedicated thread, which 'cnc' joins on dispose, - * thus to avoid race condition, unref the object in its own thread */ - e_ews_connection_utils_unref_in_thread (ews_node->simple); + if (ews_node->simple) { + /* the 'simple' holds reference on 'cnc' and this function + * is called in a dedicated thread, which 'cnc' joins on dispose, + * thus to avoid race condition, unref the object in its own thread */ + e_ews_connection_utils_unref_in_thread (ews_node->simple); + } + g_free (ews_node); } @@ -782,7 +785,9 @@ { EwsNode *enode = (EwsNode *) data; ESoapResponse *response; + ESoapParameter *param; gint log_level; + gint wait_ms = 0; if (g_cancellable_is_cancelled (enode->cancellable)) goto exit; @@ -830,13 +835,119 @@ e_soap_response_dump_response (response, stdout); } + param = e_soap_response_get_first_parameter_by_name (response, "detail", NULL); + if (param) + param = e_soap_parameter_get_first_child_by_name (param, "ResponseCode"); + if (param) { + gchar *value; + + value = e_soap_parameter_get_string_value (param); + if (value && ews_get_error_code (value) == EWS_CONNECTION_ERROR_SERVERBUSY) { + param = e_soap_response_get_first_parameter_by_name (response, "detail", NULL); + if (param) + param = e_soap_parameter_get_first_child_by_name (param, "MessageXml"); + if (param) { + param = e_soap_parameter_get_first_child_by_name (param, "Value"); + if (param) { + g_free (value); + + value = e_soap_parameter_get_property (param, "Name"); + if (g_strcmp0 (value, "BackOffMilliseconds") == 0) { + wait_ms = e_soap_parameter_get_int_value (param); + } + } + } + } + + g_free (value); + } + + if (wait_ms > 0) { + GCancellable *cancellable = enode->cancellable; + EFlag *flag; + + if (cancellable) + g_object_ref (cancellable); + g_object_ref (msg); + + flag = e_flag_new (); + while (wait_ms > 0 && !g_cancellable_is_cancelled (cancellable) && msg->status_code != SOUP_STATUS_CANCELLED) { + gint64 now = g_get_monotonic_time (); + gint left_minutes, left_seconds; + + left_minutes = wait_ms / 60000; + left_seconds = (wait_ms / 1000) % 60; + + if (left_minutes > 0) { + camel_operation_push_message (cancellable, + g_dngettext (GETTEXT_PACKAGE, + "Exchange server is busy, waiting to retry (%d:%02d minute)", + "Exchange server is busy, waiting to retry (%d:%02d minutes)", left_minutes), + left_minutes, left_seconds); + } else { + camel_operation_push_message (cancellable, + g_dngettext (GETTEXT_PACKAGE, + "Exchange server is busy, waiting to retry (%d second)", + "Exchange server is busy, waiting to retry (%d seconds)", left_seconds), + left_seconds); + } + + e_flag_wait_until (flag, now + (G_TIME_SPAN_MILLISECOND * (wait_ms > 1000 ? 1000 : wait_ms))); + + now = g_get_monotonic_time () - now; + now = now / G_TIME_SPAN_MILLISECOND; + + if (now >= wait_ms) + wait_ms = 0; + wait_ms -= now; + + camel_operation_pop_message (cancellable); + } + + e_flag_free (flag); + + g_object_unref (response); + + if (g_cancellable_is_cancelled (cancellable) || + msg->status_code == SOUP_STATUS_CANCELLED) { + g_clear_object (&cancellable); + g_object_unref (msg); + } else { + EwsNode *new_node; + + new_node = ews_node_new (); + new_node->msg = E_SOAP_MESSAGE (msg); /* takes ownership */ + new_node->pri = enode->pri; + new_node->cb = enode->cb; + new_node->cnc = enode->cnc; + new_node->simple = enode->simple; + + enode->simple = NULL; + + QUEUE_LOCK (enode->cnc); + enode->cnc->priv->jobs = g_slist_prepend (enode->cnc->priv->jobs, new_node); + QUEUE_UNLOCK (enode->cnc); + + if (cancellable) { + new_node->cancellable = g_object_ref (cancellable); + new_node->cancel_handler_id = g_cancellable_connect ( + cancellable, G_CALLBACK (ews_cancel_request), new_node, NULL); + } + + g_clear_object (&cancellable); + } + + goto exit; + } + if (enode->cb != NULL) enode->cb (response, enode->simple); g_object_unref (response); exit: - g_simple_async_result_complete_in_idle (enode->simple); + if (enode->simple) + g_simple_async_result_complete_in_idle (enode->simple); ews_active_job_done (enode->cnc, enode); }
