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);
 }


Reply via email to