Hello community,

here is the log from the commit of package evolution-ews for openSUSE:Factory 
checked in at 2018-04-19 15:23:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evolution-ews (Old)
 and      /work/SRC/openSUSE:Factory/.evolution-ews.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "evolution-ews"

Thu Apr 19 15:23:00 2018 rev:85 rq:596137 version:3.28.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/evolution-ews/evolution-ews.changes      
2018-03-26 12:53:55.341129039 +0200
+++ /work/SRC/openSUSE:Factory/.evolution-ews.new/evolution-ews.changes 
2018-04-19 15:23:02.310796347 +0200
@@ -1,0 +2,7 @@
+Mon Apr  9 21:22:15 UTC 2018 - bjorn....@gmail.com
+
+- Update to version 3.28.1:
+  + Bugs fixed: bgo#794116, bgo#788202, bgo#794924, bgo#794815.
+  + Updated translations.
+
+-------------------------------------------------------------------

Old:
----
  evolution-ews-3.28.0.tar.xz

New:
----
  evolution-ews-3.28.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ evolution-ews.spec ++++++
--- /var/tmp/diff_new_pack.H3l4sb/_old  2018-04-19 15:23:02.894772759 +0200
+++ /var/tmp/diff_new_pack.H3l4sb/_new  2018-04-19 15:23:02.898772597 +0200
@@ -19,7 +19,7 @@
 # _version needs to be %{version} stripped to major.minor.micro only...
 %define _version %(echo %{version} | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+')
 Name:           evolution-ews
-Version:        3.28.0
+Version:        3.28.1
 Release:        0
 Summary:        Exchange Connector for Evolution, compatible with Exchange 
2007 and later
 License:        LGPL-2.1-only

++++++ evolution-ews-3.28.0.tar.xz -> evolution-ews-3.28.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/CMakeLists.txt 
new/evolution-ews-3.28.1/CMakeLists.txt
--- old/evolution-ews-3.28.0/CMakeLists.txt     2018-03-12 09:55:42.000000000 
+0100
+++ new/evolution-ews-3.28.1/CMakeLists.txt     2018-04-09 11:50:45.000000000 
+0200
@@ -4,7 +4,7 @@
 cmake_policy(VERSION 3.1)
 
 project(evolution-ews
-       VERSION 3.28.0
+       VERSION 3.28.1
        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.28.0/NEWS 
new/evolution-ews-3.28.1/NEWS
--- old/evolution-ews-3.28.0/NEWS       2018-03-12 09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/NEWS       2018-04-09 11:50:45.000000000 +0200
@@ -1,3 +1,15 @@
+Evolution-EWS 3.28.1 2018-04-09
+-------------------------------
+
+Bug Fixes:
+       Bug 794116 - Delete messages in chunks to not exceed maximum limit 
(Milan Crha)
+       Bug 788202 - Convert Task dates to time zone set in Evolution (Milan 
Crha)
+       Bug 794924 - Reading EWS contact list aborts after error (Milan Crha)
+       Bug 794815 - Forgive errors when fetching events (Milan Crha)
+
+Translations:
+       Andika Triwidada (id)
+
 Evolution-EWS 3.28.0 2018-03-12
 -------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/po/id.po 
new/evolution-ews-3.28.1/po/id.po
--- old/evolution-ews-3.28.0/po/id.po   2018-03-12 09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/po/id.po   2018-04-09 11:50:45.000000000 +0200
@@ -5,67 +5,67 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: evolution-ews master\n"
+"Project-Id-Version: evolution-ews gnome-3-28\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-11-30 17:15+0000\n"
-"PO-Revision-Date: 2017-12-05 14:42+0700\n"
-"Last-Translator: Kukuh Syafaat <syafaatku...@gmail.com>\n"
+"POT-Creation-Date: 2018-03-12 15:07+0000\n"
+"PO-Revision-Date: 2018-03-15 20:51+0700\n"
+"Last-Translator: Andika Triwidada <and...@gmail.com>\n"
 "Language-Team: Indonesian <gn...@i15n.org>\n"
 "Language: id\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 2.0.6\n"
 
 #: ../org.gnome.Evolution-ews.metainfo.xml.in.h:1
-#: ../src/camel/camel-ews-provider.c:79
+#: ../src/camel/camel-ews-provider.c:81
 #: ../src/configuration/e-ews-config-lookup.c:251
 msgid "Exchange Web Services"
 msgstr "Layanan Web Exchange"
 
 #: ../org.gnome.Evolution-ews.metainfo.xml.in.h:2
-#: ../src/camel/camel-ews-provider.c:81
+#: ../src/camel/camel-ews-provider.c:83
 msgid "For accessing Exchange servers using Web Services"
 msgstr "Untuk mengakses server Exchange memakai Layanan Web"
 
-#: ../src/addressbook/e-book-backend-ews.c:2957
+#: ../src/addressbook/e-book-backend-ews.c:2971
 msgid "Failed to update GAL:"
 msgstr "Failed to update GAL:"
 
-#: ../src/addressbook/e-book-backend-ews.c:3116
+#: ../src/addressbook/e-book-backend-ews.c:3132
 msgid ""
 "Cannot save contact list, it’s only supported on EWS Server 2010 or later"
 msgstr ""
 "Tak bisa menyimpan daftar kontak, itu hanya didukung pada EWS Server 2010 "
 "atau setelahnya"
 
-#: ../src/addressbook/e-book-backend-ews.c:3209
+#: ../src/addressbook/e-book-backend-ews.c:3225
 msgid "Failed to set contact photo:"
 msgstr "Gagal mengatur foto kontak:"
 
-#: ../src/calendar/e-cal-backend-ews.c:1573
+#: ../src/calendar/e-cal-backend-ews.c:1591
 msgctxt "FreeBusyType"
 msgid "Free"
 msgstr "Luang"
 
-#: ../src/calendar/e-cal-backend-ews.c:1576
+#: ../src/calendar/e-cal-backend-ews.c:1594
 msgctxt "FreeBusyType"
 msgid "Busy"
 msgstr "Sibuk"
 
-#: ../src/calendar/e-cal-backend-ews.c:1578
+#: ../src/calendar/e-cal-backend-ews.c:1596
 msgctxt "FreeBusyType"
 msgid "Out of Office"
 msgstr "Keluar Kantor"
 
-#: ../src/calendar/e-cal-backend-ews.c:1580
+#: ../src/calendar/e-cal-backend-ews.c:1598
 msgctxt "FreeBusyType"
 msgid "Tentative"
 msgstr "Sementara"
 
-#: ../src/calendar/e-cal-backend-ews.c:3188
+#: ../src/calendar/e-cal-backend-ews.c:3211
 #, c-format
 msgid "Cannot find user “%s” between attendees"
 msgstr "Tak bisa temukan pengguna “%s” diantara yang hadir"
@@ -118,58 +118,58 @@
 msgid "Cannot perform actions on the folder while in offline mode"
 msgstr "Tak bisa melakukan aksi pada folder ketika dalam mode luring"
 
-#: ../src/camel/camel-ews-provider.c:45
+#: ../src/camel/camel-ews-provider.c:47
 msgid "Checking for new mail"
 msgstr "Sedang memeriksa surat baru"
 
-#: ../src/camel/camel-ews-provider.c:47
+#: ../src/camel/camel-ews-provider.c:49
 msgid "C_heck for new messages in all folders"
 msgstr "C_ek pesan baru dalam semua folder"
 
-#: ../src/camel/camel-ews-provider.c:49
+#: ../src/camel/camel-ews-provider.c:51
 msgid "_Listen for server change notifications"
 msgstr "_Dengarkan notifikasi perubahan server"
 
-#: ../src/camel/camel-ews-provider.c:52
+#: ../src/camel/camel-ews-provider.c:54
 msgid "Options"
 msgstr "Opsi"
 
-#: ../src/camel/camel-ews-provider.c:54
+#: ../src/camel/camel-ews-provider.c:56
 msgid "_Apply filters to new messages in Inbox on this server"
 msgstr "Ter_apkan penyaring pada pesan baru dalam Kotak Masuk pada server ini"
 
-#: ../src/camel/camel-ews-provider.c:56
+#: ../src/camel/camel-ews-provider.c:58
 msgid "Check new messages for _Junk contents"
 msgstr "Periksa pesan baru untuk isi _Spam"
 
-#: ../src/camel/camel-ews-provider.c:58
+#: ../src/camel/camel-ews-provider.c:60
 msgid "Only check for Junk messages in the IN_BOX folder"
 msgstr "Ha_nya periksa pesan SPAM pada folder IN_BOX"
 
-#: ../src/camel/camel-ews-provider.c:60
+#: ../src/camel/camel-ews-provider.c:62
 msgid "Synchroni_ze remote mail locally in all folders"
 msgstr "_Sinkronkan surat jauh ke lokal di semua folder"
 
-#: ../src/camel/camel-ews-provider.c:64
+#: ../src/camel/camel-ews-provider.c:66
 msgid "Connection"
 msgstr "Koneksi"
 
 #. Translators: '%s' is preplaced with a widget, where "
 #. * user can select how long the timeout should be.
-#: ../src/camel/camel-ews-provider.c:68
+#: ../src/camel/camel-ews-provider.c:70
 #, c-format
 msgid "Connection _timeout (in seconds) %s"
 msgstr "Tenggang wak_tu koneksi (dalam detik) %s"
 
-#: ../src/camel/camel-ews-provider.c:70
+#: ../src/camel/camel-ews-provider.c:72
 msgid "Override _User-Agent header value"
 msgstr "Timpa nilai header _User-Agent"
 
-#: ../src/camel/camel-ews-provider.c:96
+#: ../src/camel/camel-ews-provider.c:98
 msgid "NTLM"
 msgstr "NTLM"
 
-#: ../src/camel/camel-ews-provider.c:98
+#: ../src/camel/camel-ews-provider.c:100
 msgid ""
 "This option will connect to the Exchange server using a plaintext password "
 "with NTLM authentication."
@@ -177,11 +177,11 @@
 "Opsi ini akan menyambung ke server Exchange menggunakan sandi teks polos "
 "dengan otentikasi NTLM."
 
-#: ../src/camel/camel-ews-provider.c:106
+#: ../src/camel/camel-ews-provider.c:108
 msgid "Basic"
 msgstr "Dasar"
 
-#: ../src/camel/camel-ews-provider.c:108
+#: ../src/camel/camel-ews-provider.c:110
 msgid ""
 "This option will connect to the Exchange server using a plaintext password "
 "with Basic authentication."
@@ -189,11 +189,11 @@
 "Opsi ini akan menyambung ke server Exchange menggunakan sandi teks polos "
 "dengan otentikasi Dasar."
 
-#: ../src/camel/camel-ews-provider.c:116
+#: ../src/camel/camel-ews-provider.c:118
 msgid "Kerberos"
 msgstr "Kerberos"
 
-#: ../src/camel/camel-ews-provider.c:118
+#: ../src/camel/camel-ews-provider.c:120
 msgid ""
 "This option will connect to the Exchange server using a Kerberos/GSSAPI "
 "authentication."
@@ -252,30 +252,30 @@
 msgid "Updating foreign folders"
 msgstr "Memutakhirkan folder asing"
 
-#: ../src/camel/camel-ews-store.c:2057
+#: ../src/camel/camel-ews-store.c:2075
 #, c-format
 msgid "No such folder: %s"
 msgstr "Tak ada folder begitu: %s"
 
-#: ../src/camel/camel-ews-store.c:2355
+#: ../src/camel/camel-ews-store.c:2373
 msgid "Cannot list EWS public folders in offline mode"
 msgstr "Tak bisa membaca daftar folder publik EWS dalam mode luring"
 
-#: ../src/camel/camel-ews-store.c:2428
+#: ../src/camel/camel-ews-store.c:2446
 msgid "Cannot find any EWS public folders"
 msgstr "Tak bisa temukan folder publik EWS manapun"
 
-#: ../src/camel/camel-ews-store.c:2537
+#: ../src/camel/camel-ews-store.c:2555
 #, c-format
 msgid "Cannot create folder “%s”, folder already exists"
 msgstr "Tak bisa membuat folder “%s”, folder telah ada"
 
-#: ../src/camel/camel-ews-store.c:2552
+#: ../src/camel/camel-ews-store.c:2570
 #, c-format
 msgid "Parent folder %s does not exist"
 msgstr "Folder induk %s tidak ada"
 
-#: ../src/camel/camel-ews-store.c:2562
+#: ../src/camel/camel-ews-store.c:2580
 #, c-format
 msgid ""
 "Cannot create folder under “%s”, it is used for folders of other users only"
@@ -283,129 +283,129 @@
 "Tak bisa membuat folder di bawah “%s”, itu hanya dipakai bagi folder "
 "pengguna lain"
 
-#: ../src/camel/camel-ews-store.c:2572
+#: ../src/camel/camel-ews-store.c:2590
 #, c-format
 msgid "Cannot create folder under “%s”, it is used for public folders only"
 msgstr ""
 "Tak bisa membuat folder di bawah “%s”, itu hanya dipakai bagi folder publik"
 
-#: ../src/camel/camel-ews-store.c:2676
+#: ../src/camel/camel-ews-store.c:2694
 #, c-format
 msgid "Folder does not exist"
 msgstr "Folder tidak ada"
 
-#: ../src/camel/camel-ews-store.c:2686
+#: ../src/camel/camel-ews-store.c:2704
 #, c-format
 msgid "Cannot remove folder “%s”, it is used for folders of other users only"
 msgstr ""
 "Tak bisa menghapus folder “%s”, itu hanya dipakai bagi folder pengguna lain"
 
-#: ../src/camel/camel-ews-store.c:2697
+#: ../src/camel/camel-ews-store.c:2715
 #, c-format
 msgid "Cannot remove folder “%s”, it is used for public folders only"
 msgstr "Tak bisa menghapus folder “%s”, itu hanya dipakai bagi folder publik"
 
-#: ../src/camel/camel-ews-store.c:2853
+#: ../src/camel/camel-ews-store.c:2871
 #, c-format
 msgid "Folder %s does not exist"
 msgstr "Folder %s tidak ada"
 
-#: ../src/camel/camel-ews-store.c:2862
+#: ../src/camel/camel-ews-store.c:2880
 #, c-format
 msgid "No change key record for folder %s"
 msgstr "Tidak ada catatan kunci perubahan bagi folder %s"
 
-#: ../src/camel/camel-ews-store.c:2905
+#: ../src/camel/camel-ews-store.c:2923
 #, c-format
 msgid "Cannot both rename and move a folder at the same time"
 msgstr "Tak bisa sekaligus mengubah nama dan memindah folder di saat yang sama"
 
-#: ../src/camel/camel-ews-store.c:2939
+#: ../src/camel/camel-ews-store.c:2957
 #, c-format
 msgid "Cannot find folder ID for parent folder %s"
 msgstr "Tak bisa temukan ID folder bagi folder induk %s"
 
-#: ../src/camel/camel-ews-store.c:2991 ../src/camel/camel-ews-transport.c:315
+#: ../src/camel/camel-ews-store.c:3009 ../src/camel/camel-ews-transport.c:318
 #, c-format
 msgid "Exchange server %s"
 msgstr "Server Exchange %s"
 
-#: ../src/camel/camel-ews-store.c:2994
+#: ../src/camel/camel-ews-store.c:3012
 #, c-format
 msgid "Exchange service for %s on %s"
 msgstr "Layanan Exchange untuk %s pada %s"
 
-#: ../src/camel/camel-ews-store.c:3038
+#: ../src/camel/camel-ews-store.c:3056
 #, c-format
 msgid "Could not locate Trash folder"
 msgstr "Tak bisa temukan folder Tong Sampah"
 
-#: ../src/camel/camel-ews-store.c:3098
+#: ../src/camel/camel-ews-store.c:3116
 #, c-format
 msgid "Could not locate Junk folder"
 msgstr "Tak bisa temukan folder Sampah"
 
-#: ../src/camel/camel-ews-store.c:3289
+#: ../src/camel/camel-ews-store.c:3307
 msgid "Cannot subscribe EWS folders in offline mode"
 msgstr "Tak bisa berlangganan folder EWS dalam mode luring"
 
-#: ../src/camel/camel-ews-store.c:3312
+#: ../src/camel/camel-ews-store.c:3330
 #, c-format
 msgid "Cannot subscribe folder “%s”, no public folder available"
 msgstr "Tak bisa berlangganan folder “%s”, tak ada folder publik yang tersedia"
 
-#: ../src/camel/camel-ews-store.c:3322
+#: ../src/camel/camel-ews-store.c:3340
 #, c-format
 msgid "Cannot subscribe folder “%s”, folder not found"
 msgstr "Tak bisa berlangganan folder “%s”, folder tak ditemukan"
 
-#: ../src/camel/camel-ews-store.c:3413
+#: ../src/camel/camel-ews-store.c:3431
 msgid "Cannot unsubscribe EWS folders in offline mode"
 msgstr "Tak bisa berhenti berlangganan folder EWS dalam mode luring"
 
-#: ../src/camel/camel-ews-store.c:3530
+#: ../src/camel/camel-ews-store.c:3548
 #, c-format
 msgid "You must be working online to complete this operation"
 msgstr "Anda mesti daring untuk menuntaskan operasi ini"
 
-#: ../src/camel/camel-ews-store.c:3574 ../src/camel/camel-ews-store.c:3611
+#: ../src/camel/camel-ews-store.c:3592 ../src/camel/camel-ews-store.c:3629
 msgid "Unsetting the “Out of Office” status"
 msgstr "Sedang menghapus status \"Di Luar Kantor\""
 
-#: ../src/camel/camel-ews-transport.c:318
+#: ../src/camel/camel-ews-transport.c:321
 #, c-format
 msgid "Exchange mail delivery via %s"
 msgstr "Pengantaran surel Exchange melalui %s"
 
-#: ../src/camel/camel-ews-transport.c:367
+#: ../src/camel/camel-ews-transport.c:370
 msgid "Cannot send message with no From address"
 msgstr "Tak bisa mengirim pesan tanpa alamat Dari"
 
-#: ../src/camel/camel-ews-transport.c:373
+#: ../src/camel/camel-ews-transport.c:376
 msgid "Exchange server cannot send message with multiple From addresses"
 msgstr "Server Exchange tak bisa mengirim pesan dengan alamat Dari berganda"
 
-#: ../src/camel/camel-ews-transport.c:383
+#: ../src/camel/camel-ews-transport.c:386
 msgid "Failed to read From address"
 msgstr "Gagal membaca alamat Dari"
 
-#: ../src/camel/camel-ews-transport.c:393
+#: ../src/camel/camel-ews-transport.c:396
 #, c-format
 msgid "Service not connected"
 msgstr "Layanan tidak tersambung"
 
-#: ../src/collection/e-ews-backend.c:489
+#: ../src/collection/e-ews-backend.c:522
 #: ../src/configuration/e-mail-config-ews-gal.c:274
 msgid "Global Address List"
 msgstr "Daftar Alamat Global"
 
-#: ../src/collection/e-ews-backend.c:926
+#: ../src/collection/e-ews-backend.c:959
 #, 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:1014
+#: ../src/collection/e-ews-backend.c:1047
 #, c-format
 msgid "Data source “%s” does not represent an Exchange Web Services folder"
 msgstr ""
@@ -448,56 +448,56 @@
 msgid "Unable to retrieve folder size information"
 msgstr "Tak bisa mengambil informasi ukuran folder"
 
-#: ../src/configuration/e-ews-config-utils.c:747
+#: ../src/configuration/e-ews-config-utils.c:754
 msgid "Folder Sizes"
 msgstr "Ukuran Folder"
 
-#: ../src/configuration/e-ews-config-utils.c:750
+#: ../src/configuration/e-ews-config-utils.c:757
 msgid "_Close"
 msgstr "_Tutup"
 
-#: ../src/configuration/e-ews-config-utils.c:764
+#: ../src/configuration/e-ews-config-utils.c:771
 msgid "Fetching folder list…"
-msgstr "Mengambil daftar folder..."
+msgstr "Mengambil daftar folder…"
 
-#: ../src/configuration/e-ews-config-utils.c:917
+#: ../src/configuration/e-ews-config-utils.c:924
 #, c-format
 msgid "Cannot edit permissions of folder “%s”, choose other folder."
 msgstr "Tak bisa menyunting hak akses folder “%s”, pilih folder lain."
 
-#: ../src/configuration/e-ews-config-utils.c:994
+#: ../src/configuration/e-ews-config-utils.c:1001
 msgid "Folder Sizes..."
 msgstr "Ukuran Folder..."
 
-#: ../src/configuration/e-ews-config-utils.c:1001
+#: ../src/configuration/e-ews-config-utils.c:1008
 msgid "Subscribe to folder of other user..."
 msgstr "Berlangganan ke folder milik pengguna lain…"
 
-#: ../src/configuration/e-ews-config-utils.c:1010
-#: ../src/configuration/e-ews-config-utils.c:1314
-#: ../src/configuration/e-ews-config-utils.c:1345
-#: ../src/configuration/e-ews-config-utils.c:1376
-#: ../src/configuration/e-ews-config-utils.c:1407
+#: ../src/configuration/e-ews-config-utils.c:1017
+#: ../src/configuration/e-ews-config-utils.c:1321
+#: ../src/configuration/e-ews-config-utils.c:1352
+#: ../src/configuration/e-ews-config-utils.c:1383
+#: ../src/configuration/e-ews-config-utils.c:1414
 msgid "Permissions..."
 msgstr "Izin…"
 
-#: ../src/configuration/e-ews-config-utils.c:1012
+#: ../src/configuration/e-ews-config-utils.c:1019
 msgid "Edit EWS folder permissions"
 msgstr "Sunting hak akses folder EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1316
+#: ../src/configuration/e-ews-config-utils.c:1323
 msgid "Edit EWS calendar permissions"
 msgstr "Sunting hak akses kalender EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1347
+#: ../src/configuration/e-ews-config-utils.c:1354
 msgid "Edit EWS tasks permissions"
 msgstr "Sunting hak akses tugas EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1378
+#: ../src/configuration/e-ews-config-utils.c:1385
 msgid "Edit EWS memos permissions"
 msgstr "Sunting hak akses memo EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1409
+#: ../src/configuration/e-ews-config-utils.c:1416
 msgid "Edit EWS contacts permissions"
 msgstr "Sunting hak akses kontak EWS"
 
@@ -877,50 +877,110 @@
 msgid "Include _subfolders"
 msgstr "Sertakan _subfolder"
 
-#: ../src/configuration/e-mail-config-ews-autodiscover.c:220
+#: ../src/configuration/e-mail-config-ews-autodiscover.c:229
 msgid "Querying Autodiscover service"
 msgstr "Mengquery layanan Autodiscover"
 
-#: ../src/configuration/e-mail-config-ews-autodiscover.c:317
+#: ../src/configuration/e-mail-config-ews-autodiscover.c:326
 msgid "Fetch _URL"
 msgstr "_URL Ambil"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:138
+#: ../src/configuration/e-mail-config-ews-backend.c:178
 msgid "Configuration"
 msgstr "Konfigurasi"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:156
+#: ../src/configuration/e-mail-config-ews-backend.c:196
 msgid "User_name:"
 msgstr "_Nama pengguna:"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:170
+#: ../src/configuration/e-mail-config-ews-backend.c:210
 msgid "_Host URL:"
 msgstr "URL _Host:"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:189
+#: ../src/configuration/e-mail-config-ews-backend.c:229
 msgid "OAB U_RL:"
 msgstr "U_RL OAB:"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:203
+#: ../src/configuration/e-mail-config-ews-backend.c:243
 msgid "Open _Mailbox of other user"
 msgstr "Buka _Kotak surat pengguna lain"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:237
+#: ../src/configuration/e-mail-config-ews-backend.c:277
 msgid "S_earch..."
 msgstr "_Cari…"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:248
+#: ../src/configuration/e-mail-config-ews-backend.c:288
 msgid "Authentication"
 msgstr "Otentikasi"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:400
+#: ../src/configuration/e-mail-config-ews-backend.c:315
+msgid "_Override Office365 OAuth2 settings"
+msgstr "Timpa setelan _OAuth2 Office365"
+
+#: ../src/configuration/e-mail-config-ews-backend.c:319
+msgid "Help…"
+msgstr "Bantuan…"
+
+#. Translators: 'Tenant' here means a term used by Microsoft to identify a 
company or organization in an Office 365 world.
+#. You probably do not want to translate it. More for example here: 
https://powerbi.microsoft.com/en-us/blog/what-is-a-tenant/
+#: ../src/configuration/e-mail-config-ews-backend.c:328
+msgid "_Tenant:"
+msgstr "_Tenant:"
+
+#. Translators: 'Tenant' here means a term used by Microsoft to identify a 
company or organization in an Office 365 world.
+#. You probably do not want to translate it. More for example here: 
https://powerbi.microsoft.com/en-us/blog/what-is-a-tenant/
+#: ../src/configuration/e-mail-config-ews-backend.c:353
+msgid "There is not set any default tenant"
+msgstr "Tidak diatur tenant baku apapun"
+
+#. Translators: 'Tenant' here means a term used by Microsoft to identify a 
company or organization in an Office 365 world.
+#. You probably do not want to translate it. More for example here: 
https://powerbi.microsoft.com/en-us/blog/what-is-a-tenant/
+#: ../src/configuration/e-mail-config-ews-backend.c:356
+#, c-format
+msgid "Default tenant is “%s”"
+msgstr "Tenant baku adalah \"%s\""
+
+#: ../src/configuration/e-mail-config-ews-backend.c:358
+msgid "Application I_D:"
+msgstr "I_D Aplikasi:"
+
+#: ../src/configuration/e-mail-config-ews-backend.c:381
+msgid "There is not set any default application ID"
+msgstr "Tidak diatur ID aplikasi baku apapun"
+
+#: ../src/configuration/e-mail-config-ews-backend.c:382
+#, c-format
+msgid "Default application ID is “%s”"
+msgstr "ID aplikasi baku adalah \"%s\""
+
+#: ../src/configuration/e-mail-config-ews-backend.c:384
+msgid "_Redirect URI:"
+msgstr "U_RI pengalihan:"
+
+#: ../src/configuration/e-mail-config-ews-backend.c:406
+#: ../src/configuration/e-mail-config-ews-backend.c:409
+#, c-format
+msgid "Default redirect URI is “%s”"
+msgstr "URI pengalihan baku adalah \"%s\""
+
+#: ../src/configuration/e-mail-config-ews-backend.c:581
 msgid "Host URL cannot be empty"
 msgstr "URL host tak boleh kosong"
 
-#: ../src/configuration/e-mail-config-ews-backend.c:405
+#: ../src/configuration/e-mail-config-ews-backend.c:586
 msgid "User name cannot be empty"
 msgstr "Nama pengguna tak boleh kosong"
 
+#. Translators: 'Tenant' here means a term used by Microsoft to identify a 
company or organization in an Office 365 world.
+#. You probably do not want to translate it. More for example here: 
https://powerbi.microsoft.com/en-us/blog/what-is-a-tenant/
+#: ../src/configuration/e-mail-config-ews-backend.c:604
+msgid "Tenant cannot be empty"
+msgstr "Tenant tak boleh kosong"
+
+#: ../src/configuration/e-mail-config-ews-backend.c:609
+msgid "Application ID cannot be empty"
+msgstr "ID aplikasi tak boleh kosong"
+
 #: ../src/configuration/e-mail-config-ews-delegates-page.c:417
 msgctxt "PermissionsLevel"
 msgid "Reviewer (can read items)"
@@ -1136,107 +1196,124 @@
 
 #: ../src/configuration/module-ews-configuration.error.xml.h:4
 msgid "Failed to retrieve “Out of Office” settings."
-msgstr "Gagal mengambil pengaturan \"Di Luar Kantor\""
+msgstr "Gagal mengambil pengaturan \"Di Luar Kantor\"."
 
 #: ../src/configuration/module-ews-configuration.error.xml.h:5
 msgid "Failed to retrieve “Delegates” settings."
-msgstr "Gagal mengambil pengaturan \"Delegasi\""
+msgstr "Gagal mengambil pengaturan \"Delegasi\"."
 
 #: ../src/configuration/module-ews-configuration.error.xml.h:6
 msgid "Your Exchange account “{0}” has the status set as “Out of Office”."
 msgstr "Akun Exchange \"{0}\" memiliki status \"Di Luar Kantor\"."
 
+#: ../src/server/camel-sasl-xoauth2-office365.c:23
+#| msgid "Out of Office"
+msgid "OAuth2 (Office365)"
+msgstr "OAuth2 (Office365)"
+
+#: ../src/server/camel-sasl-xoauth2-office365.c:24
+msgid ""
+"This option will use an OAuth 2.0 access token to connect to the Office365."
+"com server"
+msgstr ""
+"Opsi ini akan memakai token akses OAuth 2.0 untuk menyambung ke server "
+"Office365.com"
+
 #: ../src/server/e-ews-camel-common.c:376
 #, c-format
 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:733
+#: ../src/server/e-ews-connection.c:759
 msgid "Operation Cancelled"
 msgstr "Operasi Dibatalkan"
 
-#: ../src/server/e-ews-connection.c:789
-#, c-format
-msgid "Password expired. Change password at “%s”."
-msgstr "Kata sandi kedaluwarsa. Ganti kata sandi di \"%s\""
-
-#: ../src/server/e-ews-connection.c:792
-msgid "Password expired."
-msgstr "Kata sandi kedaluwarsa."
-
-#: ../src/server/e-ews-connection.c:891
+#: ../src/server/e-ews-connection.c:880
 msgid "Authentication failed"
 msgstr "Otentikasi gagal"
 
-#: ../src/server/e-ews-connection.c:913
+#: ../src/server/e-ews-connection.c:902
 #, c-format
 msgid "No response: %s"
 msgstr "Tak ada respon: %s"
 
-#: ../src/server/e-ews-connection.c:976
+#: ../src/server/e-ews-connection.c:965
 #, 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:982
+#: ../src/server/e-ews-connection.c:971
 #, 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:2804
+#: ../src/server/e-ews-connection.c:2900
 #, c-format
 msgid "Failed to parse autodiscover response XML"
 msgstr "Gagal mengurai XML respon autodiscover"
 
-#: ../src/server/e-ews-connection.c:2811
+#: ../src/server/e-ews-connection.c:2907
 #, c-format
 msgid "Failed to find <Autodiscover> element"
 msgstr "Gagal menemukan elemen <Autodiscover>"
 
-#: ../src/server/e-ews-connection.c:2822
+#: ../src/server/e-ews-connection.c:2918
 #, c-format
 msgid "Failed to find <Response> element"
 msgstr "Gagal menemukan elemen <Response>"
 
-#: ../src/server/e-ews-connection.c:2833
+#: ../src/server/e-ews-connection.c:2929
 #, c-format
 msgid "Failed to find <Account> element"
 msgstr "Gagal menemukan elemen <Account>"
 
-#: ../src/server/e-ews-connection.c:2858
+#: ../src/server/e-ews-connection.c:2954
 #, 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:2949
+#: ../src/server/e-ews-connection.c:3045
 msgid "URL cannot be NULL"
 msgstr "URL tak boleh NULL"
 
-#: ../src/server/e-ews-connection.c:2957
+#: ../src/server/e-ews-connection.c:3053
 #, c-format
 msgid "URL “%s” is not valid"
 msgstr "URL “%s” tak valid"
 
-#: ../src/server/e-ews-connection.c:3047
+#: ../src/server/e-ews-connection.c:3144
 msgid "Email address is missing a domain part"
 msgstr "Alamat surel kurang bagian domain"
 
-#: ../src/server/e-ews-connection.c:3371
+#: ../src/server/e-ews-connection.c:3499
 msgid "Failed to parse oab XML"
 msgstr "Gagal mengurai XML oab"
 
-#: ../src/server/e-ews-connection.c:3379
+#: ../src/server/e-ews-connection.c:3507
 msgid "Failed to find <OAB> element\n"
 msgstr "Gagal menemukan elemen <OAB>\n"
 
-#: ../src/server/e-ews-connection.c:4686
+#: ../src/server/e-ews-connection.c:4814
 msgid "No items found"
 msgstr "Tak temukan butir"
 
+#: ../src/server/e-ews-connection-utils.c:197
+#, c-format
+msgid "Password expired. Change password at “%s”."
+msgstr "Kata sandi kedaluwarsa. Ganti kata sandi di \"%s\"."
+
+#: ../src/server/e-ews-connection-utils.c:200
+msgid "Password expired."
+msgstr "Kata sandi kedaluwarsa."
+
+#: ../src/server/e-ews-connection-utils.c:427
+msgid "Unknown error"
+msgstr "Galat tak dikenal"
+
 #: ../src/server/e-ews-folder.c:728
 msgid "Cannot add folder, unsupported folder type"
 msgstr "Tak bisa menambah folder, tipe folder tak didukung"
@@ -1245,43 +1322,8 @@
 msgid "Cannot add folder, master source not found"
 msgstr "Tak bisa menambah folder, sumber induk tak ditemukan"
 
-#~ msgid "The backend does not support bulk additions"
-#~ msgstr "Backend tak mendukung penambahan masal"
-
-#~ msgid "The backend does not support bulk modifications"
-#~ msgstr "Backend tak mendukung pengubahan masal"
-
-#~ msgid "Wait till syncing is done"
-#~ msgstr "Menunggu sampai penyelarasan selesai"
-
-#~ msgid "Processing contacts in %s %d%% completed... "
-#~ msgstr "Memroses kontak dalam %s %d%% komplit..."
-
-#~ msgid "Syncing contacts..."
-#~ msgstr "Menyelaraskan kontak…"
-
-#~ msgid "Requested to delete an unrelated cursor"
-#~ msgstr "Diminta menghapus sebuah kursor yang tak berhubungan"
-
-#~ msgid "EWS does not support bulk removals"
-#~ msgstr "EWS tak mendukung penghapusan masa"
-
-#~ msgid "Unknown error"
-#~ msgstr "Galat tak dikenal"
-
-#~ msgid "EWS does not support bulk additions"
-#~ msgstr "EWS tak mendukung penambahan masal"
-
-#~ msgid "EWS does not support bulk modifications"
-#~ msgstr "EWS tak mendukung pengubahan masal"
-
-#~ msgid ""
-#~ "Exchange server cannot send message as '%s', when the account was "
-#~ "configured for address '%s'"
-#~ msgstr ""
-#~ "Server Exchange tak bisa mengirim pesan sebagai '%s', ketika akun ditata "
-#~ "bagi alamat '%s'"
-
-#~ msgctxt "ForeignFolder"
-#~ msgid "%s - %s"
-#~ msgstr "%s - %s"
+#. Translators: This is a user-visible string, display name of an OAuth2 
service.
+#: ../src/server/e-oauth2-service-office365.c:124
+msgctxt "OAuth2Service"
+msgid "Office365"
+msgstr "Office365"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-ews-3.28.0/src/addressbook/e-book-backend-ews.c 
new/evolution-ews-3.28.1/src/addressbook/e-book-backend-ews.c
--- old/evolution-ews-3.28.0/src/addressbook/e-book-backend-ews.c       
2018-03-12 09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/addressbook/e-book-backend-ews.c       
2018-04-09 11:50:45.000000000 +0200
@@ -1541,6 +1541,39 @@
        }
 }
 
+static void
+ebb_ews_mailbox_to_contact (EBookBackendEws *bbews,
+                           EContact **contact,
+                           GHashTable *values,
+                           const EwsMailbox *mb)
+{
+       CamelInternetAddress *addr;
+       gchar *value;
+
+       if (!mb->name && !mb->email)
+               return;
+
+       addr = camel_internet_address_new ();
+
+       camel_internet_address_add (addr, mb->name, mb->email ? mb->email : "");
+       value = camel_address_encode (CAMEL_ADDRESS (addr));
+
+       if (value && (!values || g_hash_table_lookup (values, value) == NULL)) {
+               EVCardAttribute *attr;
+
+               attr = e_vcard_attribute_new (NULL, EVC_EMAIL);
+               e_vcard_attribute_add_value (attr, value);
+               e_vcard_append_attribute (E_VCARD (*contact), attr);
+
+               if (values)
+                       g_hash_table_insert (values, g_strdup (value), 
GINT_TO_POINTER (1));
+       } else {
+               g_free (value);
+       }
+
+       g_object_unref (addr);
+}
+
 static gboolean
 ebb_ews_traverse_dl (EBookBackendEws *bbews,
                     EContact **contact,
@@ -1556,6 +1589,7 @@
                gboolean includes_last;
                gboolean ret = FALSE;
                const gchar *ident;
+               GError *local_error = NULL;
 
                if (mb->item_id && mb->item_id->id)
                        ident = mb->item_id->id;
@@ -1569,15 +1603,30 @@
 
                g_hash_table_insert (items, g_strdup (ident), GINT_TO_POINTER 
(1));
 
-               if (!e_ews_connection_expand_dl_sync (
+               ret = e_ews_connection_expand_dl_sync (
                        bbews->priv->cnc,
                        EWS_PRIORITY_MEDIUM,
                        mb,
                        &members,
                        &includes_last,
                        cancellable,
-                       error))
-                       return FALSE;
+                       &local_error);
+
+               if (!ret) {
+                       if (g_error_matches (local_error, EWS_CONNECTION_ERROR, 
EWS_CONNECTION_ERROR_NAMERESOLUTIONNORESULTS)) {
+                               g_clear_error (&local_error);
+                               if (mb->email && *mb->email)
+                                       ebb_ews_mailbox_to_contact (bbews, 
contact, values, mb);
+
+                               ret = TRUE;
+                               members = NULL;
+                       } else {
+                               if (local_error)
+                                       g_propagate_error (error, local_error);
+
+                               return FALSE;
+                       }
+               }
 
                for (l = members; l; l = l->next) {
                        ret = ebb_ews_traverse_dl (bbews, contact, items, 
values, l->data, cancellable, error);
@@ -1588,27 +1637,7 @@
                g_slist_free_full (members, (GDestroyNotify) 
e_ews_mailbox_free);
                return ret;
        } else {
-               EVCardAttribute *attr;
-               CamelInternetAddress *addr;
-               gchar *value = NULL;
-
-               if (mb->name == NULL && mb->email == NULL)
-                       return TRUE;
-
-               addr = camel_internet_address_new ();
-               attr = e_vcard_attribute_new (NULL, EVC_EMAIL);
-
-               camel_internet_address_add (addr, mb->name, mb->email ? 
mb->email : "");
-               value = camel_address_encode (CAMEL_ADDRESS (addr));
-
-               if (value && g_hash_table_lookup (values, value) == NULL) {
-                       e_vcard_attribute_add_value (attr, value);
-                       e_vcard_append_attribute (E_VCARD (*contact), attr);
-
-                       g_hash_table_insert (values, g_strdup (value), 
GINT_TO_POINTER (1));
-               }
-
-               g_object_unref (addr);
+               ebb_ews_mailbox_to_contact (bbews, contact, values, mb);
 
                return TRUE;
        }
@@ -1765,6 +1794,7 @@
                EwsMailbox *mb;
                GSList *members = NULL;
                gboolean includes_last;
+               GError *local_error = NULL;
 
                if (e_ews_item_get_item_type (item) == E_EWS_ITEM_TYPE_ERROR)
                        continue;
@@ -1774,15 +1804,21 @@
                mb->item_id = (EwsId *) id;
 
                d_name = e_ews_item_get_subject (item);
-               if (!e_ews_connection_expand_dl_sync (
+               if (e_ews_connection_expand_dl_sync (
                        bbews->priv->cnc, EWS_PRIORITY_MEDIUM, mb, &members,
-                       &includes_last, cancellable, error))
-                       goto cleanup;
-
-               ret = ebb_ews_contacts_append_dl (bbews, id, d_name, members, 
contacts, cancellable, error);
+                       &includes_last, cancellable, &local_error)) {
+                       ret = ebb_ews_contacts_append_dl (bbews, id, d_name, 
members, contacts, cancellable, error);
+                       g_slist_free_full (members, (GDestroyNotify) 
e_ews_mailbox_free);
+               } else {
+                       ret = g_error_matches (local_error, 
EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_NAMERESOLUTIONNORESULTS);
+                       if (ret) {
+                               g_clear_error (&local_error);
+                       } else if (local_error) {
+                               g_propagate_error (error, local_error);
+                       }
+               }
 
                g_free (mb);
-               g_slist_free_full (members, (GDestroyNotify) 
e_ews_mailbox_free);
 
                if (!ret)
                        goto cleanup;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-ews-3.28.0/src/calendar/e-cal-backend-ews.c 
new/evolution-ews-3.28.1/src/calendar/e-cal-backend-ews.c
--- old/evolution-ews-3.28.0/src/calendar/e-cal-backend-ews.c   2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/calendar/e-cal-backend-ews.c   2018-04-09 
11:50:45.000000000 +0200
@@ -38,6 +38,7 @@
 #include <libical/icalproperty.h>
 #include <libical/icalparameter.h>
 
+#include <calendar/gui/calendar-config.h>
 #include <calendar/gui/itip-utils.h>
 
 #include "server/e-source-ews-folder.h"
@@ -418,13 +419,14 @@
                }
 
                if (item_type == E_EWS_ITEM_TYPE_TASK) {
+                       icaltimezone *user_timezone = 
calendar_config_get_icaltimezone ();
                        const gchar *percent_complete;
 
                        /*start date*/
                        has_this_date = FALSE;
                        e_ews_item_task_has_start_date (item, &has_this_date);
                        if (has_this_date) {
-                               start_date = icaltime_from_timet_with_zone 
(e_ews_item_get_start_date (item), 0, utc_zone);
+                               start_date = icaltime_from_timet_with_zone 
(e_ews_item_get_start_date (item), 0, user_timezone);
                                start_date.is_date = 1;
                                icalprop = icalproperty_new_dtstart 
(start_date);
                                icalcomponent_add_property (icalcomp, icalprop);
@@ -453,7 +455,7 @@
                        /*due date*/
                        e_ews_item_task_has_due_date (item, &has_this_date);
                        if (has_this_date) {
-                               due_date = icaltime_from_timet_with_zone 
(e_ews_item_get_due_date (item), 0, utc_zone);
+                               due_date = icaltime_from_timet_with_zone 
(e_ews_item_get_due_date (item), 0, user_timezone);
                                due_date.is_date = 1;
                                icalprop = icalproperty_new_due (due_date);
                                icalcomponent_add_property (icalcomp, icalprop);
@@ -463,7 +465,7 @@
                        has_this_date = FALSE;
                        e_ews_item_task_has_complete_date (item, 
&has_this_date);
                        if (has_this_date) {
-                               complete_date = icaltime_from_timet_with_zone 
(e_ews_item_get_complete_date (item), 0, utc_zone);
+                               complete_date = icaltime_from_timet_with_zone 
(e_ews_item_get_complete_date (item), 0, user_timezone);
                                icalprop = icalproperty_new_completed 
(complete_date);
                                icalcomponent_add_property (icalcomp, icalprop);
                        }
@@ -517,7 +519,7 @@
 
                if (!vcomp) {
                        if (mime_content)
-                               g_warn_if_reached ();
+                               g_warning ("%s: Failed to parse mime 
content:---%s---", G_STRFUNC, mime_content);
                        return NULL;
                }
 
@@ -1048,9 +1050,14 @@
                        break;
                } else {
                        ECalComponent *comp;
+                       GError *local_error = NULL;
 
-                       comp = ecb_ews_item_to_component_sync (cbews, item, 
cancellable, error);
+                       comp = ecb_ews_item_to_component_sync (cbews, item, 
cancellable, &local_error);
                        if (!comp) {
+                               if (!local_error)
+                                       continue;
+
+                               g_propagate_error (error, local_error);
                                success = FALSE;
                                break;
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/src/camel/camel-ews-folder.c 
new/evolution-ews-3.28.1/src/camel/camel-ews-folder.c
--- old/evolution-ews-3.28.0/src/camel/camel-ews-folder.c       2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/camel/camel-ews-folder.c       2018-04-09 
11:50:45.000000000 +0200
@@ -2446,9 +2446,9 @@
 
        cnc = camel_ews_store_ref_connection (ews_store);
 
-       ret = e_ews_connection_delete_items_sync (
+       ret = e_ews_connection_delete_items_in_chunks_sync (
                cnc, EWS_PRIORITY_MEDIUM, deleted_items, delete_type,
-               EWS_SEND_TO_NONE, FALSE, cancellable, error);
+               EWS_SEND_TO_NONE, EWS_NONE_OCCURRENCES, cancellable, error);
 
        g_object_unref (cnc);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/src/server/CMakeLists.txt 
new/evolution-ews-3.28.1/src/server/CMakeLists.txt
--- old/evolution-ews-3.28.0/src/server/CMakeLists.txt  2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/server/CMakeLists.txt  2018-04-09 
11:50:45.000000000 +0200
@@ -54,6 +54,7 @@
 
 target_compile_options(evolution-ews PUBLIC
        ${CAMEL_CFLAGS}
+       ${EVOLUTION_CALENDAR_CFLAGS}
        ${LIBEBACKEND_CFLAGS}
        ${LIBECAL_CFLAGS}
        ${LIBEDATACAL_CFLAGS}
@@ -69,6 +70,7 @@
        ${CMAKE_SOURCE_DIR}/src
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CAMEL_INCLUDE_DIRS}
+       ${EVOLUTION_CALENDAR_INCLUDE_DIRS}
        ${LIBEBACKEND_INCLUDE_DIRS}
        ${LIBECAL_INCLUDE_DIRS}
        ${LIBEDATACAL_INCLUDE_DIRS}
@@ -79,6 +81,7 @@
 
 target_link_libraries(evolution-ews
        ${CAMEL_LDFLAGS}
+       ${EVOLUTION_CALENDAR_LDFLAGS}
        ${LIBEBACKEND_LDFLAGS}
        ${LIBECAL_LDFLAGS}
        ${LIBEDATACAL_LDFLAGS}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-ews-3.28.0/src/server/e-ews-calendar-utils.c 
new/evolution-ews-3.28.1/src/server/e-ews-calendar-utils.c
--- old/evolution-ews-3.28.0/src/server/e-ews-calendar-utils.c  2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/server/e-ews-calendar-utils.c  2018-04-09 
11:50:45.000000000 +0200
@@ -19,6 +19,8 @@
 
 #include "evolution-ews-config.h"
 
+#include <calendar/gui/calendar-config.h>
+
 #include "e-ews-message.h"
 
 #include "e-ews-calendar-utils.h"
@@ -218,6 +220,7 @@
                          icaltimetype *tt,
                          gboolean with_timezone)
 {
+       struct icaltimetype local_tt;
        gchar *str;
        gchar *tz_ident = NULL;
 
@@ -245,6 +248,13 @@
                }
        }
 
+       if (tt->is_date) {
+               local_tt = *tt;
+               local_tt.zone = calendar_config_get_icaltimezone ();
+               local_tt = icaltime_from_timet_with_zone 
(icaltime_as_timet_with_zone (local_tt, local_tt.zone), FALSE, 
icaltimezone_get_utc_timezone ());
+               tt = &local_tt;
+       }
+
        str = g_strdup_printf (
                "%04d-%02d-%02dT%02d:%02d:%02d%s",
                tt->year, tt->month, tt->day,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/src/server/e-ews-connection.c 
new/evolution-ews-3.28.1/src/server/e-ews-connection.c
--- old/evolution-ews-3.28.0/src/server/e-ews-connection.c      2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/server/e-ews-connection.c      2018-04-09 
11:50:45.000000000 +0200
@@ -4892,6 +4892,8 @@
 ews_affected_tasks_to_str (EwsAffectedTaskOccurrencesType affected_tasks)
 {
        switch (affected_tasks) {
+               case EWS_NONE_OCCURRENCES:
+                       return NULL;
                case EWS_ALL_OCCURRENCES:
                        return "AllOccurrences";
                case EWS_SPECIFIED_OCCURRENCE_ONLY:
@@ -5033,7 +5035,7 @@
                        msg, "SendMeetingCancellations",
                        ews_send_cancels_to_str (send_cancels), NULL, NULL);
 
-       if (affected_tasks)
+       if (affected_tasks != EWS_NONE_OCCURRENCES)
                e_soap_message_add_attribute (
                        msg, "AffectedTaskOccurrences",
                        ews_affected_tasks_to_str (affected_tasks), NULL, NULL);
@@ -5160,6 +5162,69 @@
 
        return success;
 }
+
+gboolean
+e_ews_connection_delete_items_in_chunks_sync (EEwsConnection *cnc,
+                                             gint pri,
+                                             const GSList *ids,
+                                             EwsDeleteType delete_type,
+                                             EwsSendMeetingCancellationsType 
send_cancels,
+                                             EwsAffectedTaskOccurrencesType 
affected_tasks,
+                                             GCancellable *cancellable,
+                                             GError **error)
+{
+       const GSList *iter;
+       guint total_ids = 0, done_ids = 0;
+       gboolean success = TRUE;
+
+       g_return_val_if_fail (E_IS_EWS_CONNECTION (cnc), FALSE);
+
+       g_object_ref (cnc);
+
+       iter = ids;
+
+       while (success && iter) {
+               guint n_ids;
+               const GSList *tmp_iter;
+
+               for (tmp_iter = iter, n_ids = 0; tmp_iter && n_ids < 
EWS_MOVE_ITEMS_CHUNK_SIZE; tmp_iter = g_slist_next (tmp_iter), n_ids++) {
+                       /* Only check bounds first, to avoid unnecessary 
allocations */
+               }
+
+               if (tmp_iter) {
+                       GSList *shorter = NULL;
+
+                       if (total_ids == 0)
+                               total_ids = g_slist_length ((GSList *) ids);
+
+                       for (n_ids = 0; iter && n_ids < 
EWS_MOVE_ITEMS_CHUNK_SIZE; iter = g_slist_next (iter), n_ids++) {
+                               shorter = g_slist_prepend (shorter, iter->data);
+                       }
+
+                       shorter = g_slist_reverse (shorter);
+
+                       success = e_ews_connection_delete_items_sync (cnc, pri, 
shorter, delete_type, send_cancels,
+                               affected_tasks, cancellable, error);
+
+                       g_slist_free (shorter);
+
+                       done_ids += n_ids;
+               } else {
+                       success = e_ews_connection_delete_items_sync (cnc, pri, 
iter, delete_type, send_cancels,
+                               affected_tasks, cancellable, error);
+
+                       iter = NULL;
+                       done_ids = total_ids;
+               }
+
+               if (total_ids > 0)
+                       camel_operation_progress (cancellable, 100 * (gdouble) 
done_ids / (gdouble) total_ids);
+       }
+
+       g_object_unref (cnc);
+
+       return success;
+}
 
 static xmlXPathObjectPtr
 xpath_eval (xmlXPathContextPtr ctx,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/src/server/e-ews-connection.h 
new/evolution-ews-3.28.1/src/server/e-ews-connection.h
--- old/evolution-ews-3.28.0/src/server/e-ews-connection.h      2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/server/e-ews-connection.h      2018-04-09 
11:50:45.000000000 +0200
@@ -107,7 +107,8 @@
 } EwsSendMeetingCancellationsType;
 
 typedef enum {
-       EWS_ALL_OCCURRENCES = 1,
+       EWS_NONE_OCCURRENCES = 0,
+       EWS_ALL_OCCURRENCES,
        EWS_SPECIFIED_OCCURRENCE_ONLY
 } EwsAffectedTaskOccurrencesType;
 
@@ -626,7 +627,15 @@
                                                 EwsAffectedTaskOccurrencesType 
affected_tasks,
                                                 GCancellable *cancellable,
                                                 GError **error);
-
+gboolean       e_ews_connection_delete_items_in_chunks_sync
+                                               (EEwsConnection *cnc,
+                                                gint pri,
+                                                const GSList *ids,
+                                                EwsDeleteType delete_type,
+                                                
EwsSendMeetingCancellationsType send_cancels,
+                                                EwsAffectedTaskOccurrencesType 
affected_tasks,
+                                                GCancellable *cancellable,
+                                                GError **error);
 void           e_ews_connection_delete_item    (EEwsConnection *cnc,
                                                 gint pri,
                                                 EwsId *id,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.28.0/src/server/e-ews-item.c 
new/evolution-ews-3.28.1/src/server/e-ews-item.c
--- old/evolution-ews-3.28.0/src/server/e-ews-item.c    2018-03-12 
09:55:42.000000000 +0100
+++ new/evolution-ews-3.28.1/src/server/e-ews-item.c    2018-04-09 
11:50:45.000000000 +0200
@@ -29,6 +29,8 @@
 #include <glib/gstdio.h>
 #include <glib/gprintf.h>
 #include <libsoup/soup-misc.h>
+#include <libedataserver/libedataserver.h>
+
 #include "e-ews-item.h"
 #include "e-ews-item-change.h"
 
@@ -1028,6 +1030,7 @@
 
                /* The order is maintained according to the order in soap 
response */
                if (!g_ascii_strcasecmp (name, "MimeContent")) {
+                       gchar *charset;
                        guchar *data;
                        gsize data_len = 0;
 
@@ -1038,6 +1041,20 @@
                                g_free (data);
                                return FALSE;
                        }
+
+                       charset = e_soap_parameter_get_property (subparam, 
"CharacterSet");
+                       if (g_strcmp0 (charset, "UTF-8") == 0 &&
+                           !g_utf8_validate ((const gchar *) data, data_len, 
NULL)) {
+                               gchar *tmp;
+
+                               tmp = e_util_utf8_data_make_valid ((const gchar 
*) data, data_len);
+                               if (tmp) {
+                                       g_free (data);
+                                       data = (guchar *) tmp;
+                               }
+                       }
+                       g_free (charset);
+
                        priv->mime_content = (gchar *) data;
 
                        g_free (value);


Reply via email to