Hello community,

here is the log from the commit of package evolution-ews for openSUSE:Factory 
checked in at 2018-11-08 09:44:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evolution-ews (Old)
 and      /work/SRC/openSUSE:Factory/.evolution-ews.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "evolution-ews"

Thu Nov  8 09:44:07 2018 rev:91 rq:644298 version:3.30.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/evolution-ews/evolution-ews.changes      
2018-10-17 08:18:22.510941724 +0200
+++ /work/SRC/openSUSE:Factory/.evolution-ews.new/evolution-ews.changes 
2018-11-08 09:44:22.317389527 +0100
@@ -1,0 +2,13 @@
+Wed Oct 24 09:39:46 UTC 2018 - [email protected]
+
+- Update to version 3.30.2:
+  + Enable only Notification reminders in the calendar.
+  + Treat 'Unknown' ResponseType as Needs-Action.
+  + Collection backend schedules two 'populate' requests after
+    going online.
+  + Bugs fixed: glgo#GNOME/evolution-ews#18,
+    glgo#GNOME/evolution-ews#19, glgo#GNOME/evolution-ews#21,
+    glgo#GNOME/evolution-ews#23.
+  + Updated translations.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ evolution-ews.spec ++++++
--- /var/tmp/diff_new_pack.4vUJuI/_old  2018-11-08 09:44:22.805388958 +0100
+++ /var/tmp/diff_new_pack.4vUJuI/_new  2018-11-08 09:44:22.813388948 +0100
@@ -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.30.1
+Version:        3.30.2
 Release:        0
 Summary:        Exchange Connector for Evolution, compatible with Exchange 
2007 and later
 License:        LGPL-2.1-only

++++++ evolution-ews-3.30.1.tar.xz -> evolution-ews-3.30.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/CMakeLists.txt 
new/evolution-ews-3.30.2/CMakeLists.txt
--- old/evolution-ews-3.30.1/CMakeLists.txt     2018-09-24 09:15:45.000000000 
+0200
+++ new/evolution-ews-3.30.2/CMakeLists.txt     2018-10-22 10:24:30.000000000 
+0200
@@ -4,7 +4,7 @@
 cmake_policy(VERSION 3.1)
 
 project(evolution-ews
-       VERSION 3.30.1
+       VERSION 3.30.2
        LANGUAGES C)
 set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-ews/issues/";)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/NEWS 
new/evolution-ews-3.30.2/NEWS
--- old/evolution-ews-3.30.1/NEWS       2018-09-24 09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/NEWS       2018-10-22 10:24:30.000000000 +0200
@@ -1,3 +1,20 @@
+Evolution-EWS 3.30.2 2018-10-22
+-------------------------------
+
+Bug Fixes:
+       I#18 - Crashes when reading EWS Global Address List (Milan Crha)
+       I#19 - Country is forgotten along the way to exchange server (Milan 
Crha)
+       I#21 - Meeting with attachment cannot be saved in 2010 (Milan Crha)
+       I#23 - Autodiscovery uses EXCH URLs instead of EXPR (Milan Crha)
+
+Miscellaneous:
+       Enable only Notification reminders in the calendar (Milan Crha)
+       Treat 'Unknown' ResponseType as Needs-Action (Milan Crha)
+       Collection backend schedules two 'populate' requests after going online 
(Milan Crha)
+
+Translations:
+       Daniel Mustieles (es)
+
 Evolution-EWS 3.30.1 2018-09-24
 -------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/po/es.po 
new/evolution-ews-3.30.2/po/es.po
--- old/evolution-ews-3.30.1/po/es.po   2018-09-24 09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/po/es.po   2018-10-22 10:24:30.000000000 +0200
@@ -13,8 +13,8 @@
 msgstr ""
 "Project-Id-Version: evolution-ews master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/evolution-ews/issues\n";
-"POT-Creation-Date: 2018-06-04 15:28+0000\n"
-"PO-Revision-Date: 2018-06-22 09:35+0200\n"
+"POT-Creation-Date: 2018-09-03 15:26+0000\n"
+"PO-Revision-Date: 2018-10-02 15:19+0200\n"
 "Last-Translator: Daniel Mustieles <[email protected]>\n"
 "Language-Team: es <[email protected]>\n"
 "Language: es\n"
@@ -22,7 +22,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 #: ../org.gnome.Evolution-ews.metainfo.xml.in.h:1
 #: ../src/camel/camel-ews-provider.c:81
@@ -35,18 +35,18 @@
 msgid "For accessing Exchange servers using Web Services"
 msgstr "Para acceder a servidores Exchange usando servicios web"
 
-#: ../src/addressbook/e-book-backend-ews.c:3272
+#: ../src/addressbook/e-book-backend-ews.c:3349
 msgid "Failed to update GAL:"
 msgstr "Falló al actualizar GAL:"
 
-#: ../src/addressbook/e-book-backend-ews.c:3433
+#: ../src/addressbook/e-book-backend-ews.c:3510
 msgid ""
 "Cannot save contact list, it’s only supported on EWS Server 2010 or later"
 msgstr ""
 "No se puede guardar la lista de contactos. Esto sólo se soporta en EWS "
 "server 2010 o posterior"
 
-#: ../src/addressbook/e-book-backend-ews.c:3526
+#: ../src/addressbook/e-book-backend-ews.c:3603
 msgid "Failed to set contact photo:"
 msgstr "Falló al establecer la foto del contacto:"
 
@@ -70,7 +70,7 @@
 msgid "Tentative"
 msgstr "Provisional"
 
-#: ../src/calendar/e-cal-backend-ews.c:3303
+#: ../src/calendar/e-cal-backend-ews.c:3308
 #, c-format
 msgid "Cannot find user “%s” between attendees"
 msgstr "No se puede encontrar al usuario «%s» entre los asistentes"
@@ -108,17 +108,17 @@
 msgid "Failed to move message cache file from “%s” to “%s”: %s"
 msgstr "Falló al mover el archivo de la caché de mensajes de «%s» a «%s»: %s"
 
-#: ../src/camel/camel-ews-folder.c:1806
+#: ../src/camel/camel-ews-folder.c:1814
 #, c-format
 msgid "Could not load summary for %s"
 msgstr "No se pudo cargar el resumen para %s"
 
-#: ../src/camel/camel-ews-folder.c:2266
+#: ../src/camel/camel-ews-folder.c:2287
 #, c-format
 msgid "Refreshing folder “%s”"
 msgstr "Actualizando carpeta «%s»"
 
-#: ../src/camel/camel-ews-folder.c:2446
+#: ../src/camel/camel-ews-folder.c:2471
 #, c-format
 msgid "Cannot perform actions on the folder while in offline mode"
 msgstr ""
@@ -262,30 +262,30 @@
 msgid "Updating foreign folders"
 msgstr "Actualizando carpetas externas"
 
-#: ../src/camel/camel-ews-store.c:2076
+#: ../src/camel/camel-ews-store.c:2084
 #, c-format
 msgid "No such folder: %s"
 msgstr "No existe la carpeta: %s"
 
-#: ../src/camel/camel-ews-store.c:2374
+#: ../src/camel/camel-ews-store.c:2382
 msgid "Cannot list EWS public folders in offline mode"
 msgstr "No se pueden listar las carpetas EWS en modo desconectado"
 
-#: ../src/camel/camel-ews-store.c:2447
+#: ../src/camel/camel-ews-store.c:2455
 msgid "Cannot find any EWS public folders"
 msgstr "No se puede encontrar ninguna carpeta EWS pública"
 
-#: ../src/camel/camel-ews-store.c:2556
+#: ../src/camel/camel-ews-store.c:2564
 #, c-format
 msgid "Cannot create folder “%s”, folder already exists"
 msgstr "No se puede crear la carpeta «%s», la carpeta ya existe"
 
-#: ../src/camel/camel-ews-store.c:2571
+#: ../src/camel/camel-ews-store.c:2579
 #, c-format
 msgid "Parent folder %s does not exist"
 msgstr "La carpeta padre %s no existe"
 
-#: ../src/camel/camel-ews-store.c:2581
+#: ../src/camel/camel-ews-store.c:2589
 #, c-format
 msgid ""
 "Cannot create folder under “%s”, it is used for folders of other users only"
@@ -293,105 +293,103 @@
 "No se puede crear la carpeta bajo «%s», sólo la usan carpetas de otros "
 "usuarios"
 
-#: ../src/camel/camel-ews-store.c:2591
+#: ../src/camel/camel-ews-store.c:2599
 #, c-format
 msgid "Cannot create folder under “%s”, it is used for public folders only"
 msgstr ""
 "No se puede crear la carpeta bajo «%s», se usa sólo para carpetas públicas"
 
-#: ../src/camel/camel-ews-store.c:2695
+#: ../src/camel/camel-ews-store.c:2703
 #, c-format
 msgid "Folder does not exist"
 msgstr "La carpeta no existe"
 
-#: ../src/camel/camel-ews-store.c:2705
+#: ../src/camel/camel-ews-store.c:2713
 #, c-format
 msgid "Cannot remove folder “%s”, it is used for folders of other users only"
 msgstr ""
 "No se puede eliminar la carpeta «%s», sólo la usan carpetas de otros usuarios"
 
-#: ../src/camel/camel-ews-store.c:2716
+#: ../src/camel/camel-ews-store.c:2724
 #, c-format
 msgid "Cannot remove folder “%s”, it is used for public folders only"
 msgstr "No se puede quitar la carpeta «%s», se usa sólo para carpetas públicas"
 
-#: ../src/camel/camel-ews-store.c:2875
+#: ../src/camel/camel-ews-store.c:2883
 #, c-format
 msgid "Folder %s does not exist"
 msgstr "La carpeta %s no existe"
 
-#: ../src/camel/camel-ews-store.c:2884
+#: ../src/camel/camel-ews-store.c:2892
 #, c-format
 msgid "No change key record for folder %s"
 msgstr "No hay cambios en registros clave de la carpeta %s"
 
-#: ../src/camel/camel-ews-store.c:2927
+#: ../src/camel/camel-ews-store.c:2935
 #, c-format
 msgid "Cannot both rename and move a folder at the same time"
 msgstr "No se puede renombrar y mover una carpeta al mismo tiempo"
 
-#: ../src/camel/camel-ews-store.c:2961
+#: ../src/camel/camel-ews-store.c:2969
 #, c-format
 msgid "Cannot find folder ID for parent folder %s"
 msgstr "No se puede encontrar el ID de carpeta para la carpeta padre %s"
 
-#: ../src/camel/camel-ews-store.c:3013 ../src/camel/camel-ews-transport.c:318
+#: ../src/camel/camel-ews-store.c:3021 ../src/camel/camel-ews-transport.c:318
 #, c-format
 msgid "Exchange server %s"
 msgstr "Servidor Exchange %s"
 
-#: ../src/camel/camel-ews-store.c:3016
+#: ../src/camel/camel-ews-store.c:3024
 #, c-format
 msgid "Exchange service for %s on %s"
 msgstr "Servicio Exchange para %s en %s"
 
-#: ../src/camel/camel-ews-store.c:3060
+#: ../src/camel/camel-ews-store.c:3068
 #, c-format
 msgid "Could not locate Trash folder"
 msgstr "No se pudo localizar la carpeta de la Papelera"
 
-#: ../src/camel/camel-ews-store.c:3120
+#: ../src/camel/camel-ews-store.c:3128
 #, c-format
 msgid "Could not locate Junk folder"
 msgstr "No se puedo encontrar la carpeta de Correo no deseado"
 
-#: ../src/camel/camel-ews-store.c:3311
+#: ../src/camel/camel-ews-store.c:3319
 msgid "Cannot subscribe EWS folders in offline mode"
 msgstr "No se puede suscribir a las carpetas EWS en modo desconectado"
 
-#: ../src/camel/camel-ews-store.c:3334
+#: ../src/camel/camel-ews-store.c:3342
 #, c-format
 msgid "Cannot subscribe folder “%s”, no public folder available"
 msgstr ""
 "No se puede suscribir a la carpeta «%s», no hay ninguna carpeta pública "
 "disponible"
 
-#: ../src/camel/camel-ews-store.c:3344
+#: ../src/camel/camel-ews-store.c:3352
 #, c-format
 msgid "Cannot subscribe folder “%s”, folder not found"
 msgstr ""
 "No se puede suscribir a la carpeta «%s», no se ha encontrado la carpeta"
 
-#: ../src/camel/camel-ews-store.c:3435
+#: ../src/camel/camel-ews-store.c:3443
 msgid "Cannot unsubscribe EWS folders in offline mode"
 msgstr "No se puede desuscribir de las carpetas EWS en modo desconectado"
 
-#: ../src/camel/camel-ews-store.c:3552
+#: ../src/camel/camel-ews-store.c:3560
 #, c-format
 msgid "You must be working online to complete this operation"
 msgstr "Debe estar conectado para completar esta operación"
 
-#: ../src/camel/camel-ews-store.c:3596 ../src/camel/camel-ews-store.c:3633
+#: ../src/camel/camel-ews-store.c:3604 ../src/camel/camel-ews-store.c:3641
 msgid "Unsetting the “Out of Office” status"
 msgstr "Quitando el estado de «Estoy fuera de la oficina»."
 
 #: ../src/camel/camel-ews-store.h:56
-#| msgid "Updating foreign folders"
 msgid "Foreign Folders"
 msgstr "Carpetas externas"
 
 #: ../src/camel/camel-ews-store.h:58
-#| msgid "Folder"
 msgid "Public Folders"
 msgstr "Carpetas públicas"
 
@@ -450,7 +448,6 @@
 "contendrá sólo la dirección de correo-e principal"
 
 #: ../src/configuration/e-book-config-ews.c:113
-#| msgid "Failed to set contact photo:"
 msgid "_Fetch contact photos"
 msgstr "_Obtener fotos del contacto"
 
@@ -507,45 +504,54 @@
 msgid "Fetching folder list…"
 msgstr "Obteniendo lista de carpetas…"
 
-#: ../src/configuration/e-ews-config-utils.c:924
+#: ../src/configuration/e-ews-config-utils.c:834
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:765
+#| msgid "Subscribe to folder of other EWS user..."
+msgid "Subscribe to folder of other EWS user…"
+msgstr "Suscribirse a la carpeta de otro usuario EWS…"
+
+#: ../src/configuration/e-ews-config-utils.c:1015
 #, c-format
 msgid "Cannot edit permissions of folder “%s”, choose other folder."
 msgstr ""
 "No se pueden editar los permisos de la carpeta «%s», elija otra carpeta."
 
-#: ../src/configuration/e-ews-config-utils.c:1001
-msgid "Folder Sizes..."
-msgstr "Tamaño de carpetas…"
-
-#: ../src/configuration/e-ews-config-utils.c:1008
-msgid "Subscribe to folder of other user..."
+#: ../src/configuration/e-ews-config-utils.c:1092
+#| msgid "Folder Sizes"
+msgid "Folder Sizes…"
+msgstr "Tamaño de carpetas…"
+
+#: ../src/configuration/e-ews-config-utils.c:1099
+#| msgid "Subscribe to folder of other user..."
+msgid "Subscribe to folder of other user…"
 msgstr "Suscribirse a la carpeta de otro usuario…"
 
-#: ../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..."
+#: ../src/configuration/e-ews-config-utils.c:1108
+#: ../src/configuration/e-ews-config-utils.c:1444
+#: ../src/configuration/e-ews-config-utils.c:1482
+#: ../src/configuration/e-ews-config-utils.c:1520
+#: ../src/configuration/e-ews-config-utils.c:1558
+#| msgid "Permissions"
+msgid "Permissions…"
 msgstr "Permisos…"
 
-#: ../src/configuration/e-ews-config-utils.c:1019
+#: ../src/configuration/e-ews-config-utils.c:1110
 msgid "Edit EWS folder permissions"
 msgstr "Editar permisos de la carpeta EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1323
+#: ../src/configuration/e-ews-config-utils.c:1446
 msgid "Edit EWS calendar permissions"
 msgstr "Editar permisos del calendario EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1354
+#: ../src/configuration/e-ews-config-utils.c:1484
 msgid "Edit EWS tasks permissions"
 msgstr "Editar permisos de las tareas EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1385
+#: ../src/configuration/e-ews-config-utils.c:1522
 msgid "Edit EWS memos permissions"
 msgstr "Editar permisos de notas EWS"
 
-#: ../src/configuration/e-ews-config-utils.c:1416
+#: ../src/configuration/e-ews-config-utils.c:1560
 msgid "Edit EWS contacts permissions"
 msgstr "Editar permisos de contactos EWS"
 
@@ -612,7 +618,8 @@
 msgstr "Personalizado"
 
 #: ../src/configuration/e-ews-edit-folder-permissions.c:265
-msgid "Writing folder permissions, please wait..."
+#| msgid "Writing folder permissions, please wait..."
+msgid "Writing folder permissions, please wait…"
 msgstr "Escribiendo permisos de la carpeta, espere…"
 
 #: ../src/configuration/e-ews-edit-folder-permissions.c:779
@@ -630,129 +637,131 @@
 msgid "Unknown"
 msgstr "Desconocido"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:869
-#: ../src/configuration/e-ews-search-user.c:429
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:993
+#: ../src/configuration/e-ews-edit-folder-permissions.c:871
+#: ../src/configuration/e-ews-search-user.c:431
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:995
 msgid "Name"
 msgstr "Nombre"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:875
+#: ../src/configuration/e-ews-edit-folder-permissions.c:877
 msgid "Permission level"
 msgstr "Nivel de permisos"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:927
-msgid "Edit EWS folder permissions..."
-msgstr "Editar permisos de la carpeta de EWS…"
+#: ../src/configuration/e-ews-edit-folder-permissions.c:929
+#| msgid "Edit EWS folder permissions"
+msgid "Edit EWS folder permissions…"
+msgstr "Editar permisos de la carpeta EWS…"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:952
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:674
+#: ../src/configuration/e-ews-edit-folder-permissions.c:954
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:786
 msgid "Account:"
 msgstr "Cuenta"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:980
+#: ../src/configuration/e-ews-edit-folder-permissions.c:982
 msgid "Folder name:"
 msgstr "Nombre de carpeta:"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1003
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1005
 msgid "Folder ID:"
 msgstr "ID de la carpeta:"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1067
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1069
 msgid "Permissions"
 msgstr "Permisos"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1089
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1091
 msgid "Permi_ssion level:"
 msgstr "Nivel de permi_sos:"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1123
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1125
 msgctxt "Permissions"
 msgid "Read"
 msgstr "Leer"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1135
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1202
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1137
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1204
 msgctxt "Permissions"
 msgid "None"
 msgstr "Nadie"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1141
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1143
 msgctxt "Permissions"
 msgid "Free/Busy time"
 msgstr "Tiempo libre/ocupado"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1146
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1148
 msgctxt "Permissions"
 msgid "Free/Busy time, subject, location"
 msgstr "Tiempo libre/ocupado, asunto, ubicación"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1152
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1154
 msgctxt "Permissions"
 msgid "Full Details"
 msgstr "Detalles completos"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1158
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1160
 msgctxt "Permissions"
 msgid "Write"
 msgstr "Escritura"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1170
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1172
 msgctxt "Permissions"
 msgid "Create items"
 msgstr "Crear elementos"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1174
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1176
 msgctxt "Permissions"
 msgid "Create subfolders"
 msgstr "Crear subcarpetas"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1178
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1180
 msgctxt "Permissions"
 msgid "Edit own"
 msgstr "Edición propia"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1182
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1184
 msgctxt "Permissions"
 msgid "Edit all"
 msgstr "Editar todo"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1190
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1192
 msgctxt "Permissions"
 msgid "Delete items"
 msgstr "Eliminar elementos"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1207
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1209
 msgctxt "Permissions"
 msgid "Own"
 msgstr "Propio"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1212
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1214
 msgctxt "Permissions"
 msgid "All"
 msgstr "Todos"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1218
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1220
 msgctxt "Permissions"
 msgid "Other"
 msgstr "Otro"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1230
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1232
 msgctxt "Permissions"
 msgid "Folder owner"
 msgstr "Propietario de la carpeta"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1234
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1236
 msgctxt "Permissions"
 msgid "Folder contact"
 msgstr "Contacto de la carpeta"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1238
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1240
 msgctxt "Permissions"
 msgid "Folder visible"
 msgstr "Carpeta visible"
 
-#: ../src/configuration/e-ews-edit-folder-permissions.c:1311
-msgid "Reading folder permissions, please wait..."
+#: ../src/configuration/e-ews-edit-folder-permissions.c:1313
+#| msgid "Reading folder permissions, please wait..."
+msgid "Reading folder permissions, please wait…"
 msgstr "Leyendo permisos de la carpeta, espere…"
 
 #: ../src/configuration/e-ews-ooo-notificator.c:182
@@ -793,27 +802,29 @@
 "primeros"
 
 #: ../src/configuration/e-ews-search-user.c:355
-#: ../src/configuration/e-ews-search-user.c:538
+#: ../src/configuration/e-ews-search-user.c:540
 msgid "Search for a user"
 msgstr "Buscar un usuario"
 
 #: ../src/configuration/e-ews-search-user.c:363
-msgid "Searching..."
+#| msgid "Searching..."
+msgid "Searching…"
 msgstr "Buscando…"
 
-#: ../src/configuration/e-ews-search-user.c:435
+#: ../src/configuration/e-ews-search-user.c:437
 msgid "E-mail"
 msgstr "Correo-e"
 
-#: ../src/configuration/e-ews-search-user.c:472
-msgid "Choose EWS user..."
+#: ../src/configuration/e-ews-search-user.c:474
+#| msgid "Choose EWS user..."
+msgid "Choose EWS user…"
 msgstr "Elegir usuario EWS…"
 
-#: ../src/configuration/e-ews-search-user.c:495
+#: ../src/configuration/e-ews-search-user.c:497
 msgid "_Search:"
 msgstr "Bu_scar:"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:97
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:103
 #: ../src/server/e-ews-folder.c:776
 #, c-format
 msgid "Cannot add folder, folder already exists as “%s”"
@@ -822,35 +833,36 @@
 #. Translators: The '%s' is replaced with user name, to whom the foreign 
mailbox belongs.
 #. * Example result: "Mailbox — John Smith"
 #.
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:107
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:113
 #, c-format
 msgctxt "ForeignFolder"
 msgid "Mailbox — %s"
 msgstr "Buzón - %s"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:275
-msgid "Cannot test foreign folder availability while in offline mode"
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:281
+#| msgid "Cannot test foreign folder availability while in offline mode"
+msgid "Cannot test foreign folder availability when the account is offline"
 msgstr ""
-"No se puede probar la disponibilidad de la carpeta externa en modo "
-"desconectado"
+"No se puede probar la disponibilidad de la carpeta externa con la cuenta "
+"desconectada"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:300
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:314
 #, c-format
 msgid "User “%s” was not found on the server"
 msgstr "No se encontró el usuario «%s» en el servidor"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:336
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:350
 #, c-format
 msgid "User name “%s” is ambiguous, specify it more precisely, please"
 msgstr ""
 "El nombre de usuario «%s» es ambiguo, especifíquelo de forma más precisa"
 
 #. Translators: This is used as a calendar name; it constructs "User Name - 
Availability" string shown in UI
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:374
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:388
 msgid "Availability"
 msgstr "Disponibilidad"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:391
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:405
 #, c-format
 msgid ""
 "Folder “%s” not found. Either it does not exist or you do not have "
@@ -859,7 +871,7 @@
 "No se encontró la carpeta «%s». O no existe o no tiene permiso para acceder "
 "a ella."
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:410
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:424
 msgid "Cannot add folder, cannot determine folder’s type"
 msgstr ""
 "No se puede añadir la carpeta, no se puede determinar el tipo de carpeta"
@@ -869,70 +881,72 @@
 #. * the second '%s' is replaced with folder name.
 #. * Example result: "John Smith — Calendar"
 #.
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:455
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:469
 #, c-format
 msgctxt "ForeignFolder"
 msgid "%s — %s"
 msgstr "%s — %s"
 
 #. convert well-known names to their non-localized form
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:549
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:759
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:582
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:866
 msgid "Inbox"
 msgstr "Bandeja de entrada"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:551
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:760
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:584
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:867
 msgid "Contacts"
 msgstr "Contactos"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:553
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:761
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:586
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:868
 msgid "Calendar"
 msgstr "Calendario"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:555
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:762
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:588
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:869
 msgid "Free/Busy as Calendar"
 msgstr "Libre/ocupado como calendario"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:557
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:763
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:590
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:870
 msgid "Memos"
 msgstr "Notas"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:559
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:764
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:592
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:871
 msgid "Tasks"
 msgstr "Tareas"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:576
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:609
 #, c-format
-msgid "Testing availability of folder “%s” of user “%s”, please wait..."
+#| msgid "Testing availability of folder “%s” of user “%s”, please wait..."
+msgid "Testing availability of folder “%s” of user “%s”, please wait…"
 msgstr ""
-"Probando la disponibilidad de la carpeta «%s» del usuario «%s», espere…"
+"Verificando la disponibilidad de la carpeta «%s» del usuario «%s», espere…"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:653
-msgid "Subscribe to folder of other EWS user..."
-msgstr "Suscribirse a la carpeta de otro usuario EWS…"
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:648
+msgid "Cannot search for user when the account is offline"
+msgstr "No se puede buscar cuando la cuenta está desconectada"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:704
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:811
 msgid "User"
 msgstr "Usuario"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:711
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:818
 msgid "_User:"
 msgstr "_Usuario:"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:726
-msgid "C_hoose..."
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:833
+#| msgid "C_hoose..."
+msgid "C_hoose…"
 msgstr "E_legir…"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:742
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:849
 msgid "_Folder name:"
 msgstr "Nombre de la _carpeta:"
 
-#: ../src/configuration/e-ews-subscribe-foreign-folder.c:773
+#: ../src/configuration/e-ews-subscribe-foreign-folder.c:880
 msgid "Include _subfolders"
 msgstr "Incluir _subcarpetas"
 
@@ -965,7 +979,8 @@
 msgstr "Abrir la b_andeja de entrada de otro usuario"
 
 #: ../src/configuration/e-mail-config-ews-backend.c:277
-msgid "S_earch..."
+#| msgid "S_earch..."
+msgid "S_earch…"
 msgstr "_Buscar…"
 
 #: ../src/configuration/e-mail-config-ews-backend.c:288
@@ -1099,15 +1114,16 @@
 msgstr "El delegado puede ver mis elementos _privados"
 
 #: ../src/configuration/e-mail-config-ews-delegates-page.c:905
-msgid "Retrieving current user permissions, please wait..."
+#| msgid "Retrieving current user permissions, please wait..."
+msgid "Retrieving current user permissions, please wait…"
 msgstr "Obteniendo los permisos actuales del usuario, espere…"
 
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1026
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1649
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1028
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1651
 msgid "Delegates"
 msgstr "Delegados"
 
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1050
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1052
 msgid ""
 "Delegates can send items on your behalf, including creating and responding "
 "to meeting requests. If you want to grant folder permissions without giving "
@@ -1120,7 +1136,7 @@
 "pulse con el botón derecho en la carpeta, pulse en Permisos y cambie las ahí "
 "opciones."
 
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1100
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1102
 msgid ""
 "Deliver meeting requests addressed to me and responses to meeting requests "
 "where I am the organizer to:"
@@ -1129,7 +1145,7 @@
 "solicitudes de reunión donde yo soy el organizador:"
 
 #. new-line break, because GtkRadioButton doesn't allow wrapping of the inner 
label
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1110
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1112
 msgid ""
 "My delegates only, but _send a copy of meeting requests\n"
 "and responses to me (recommended)"
@@ -1137,15 +1153,15 @@
 "Sólo mis delegados, pero _enviar una copia de las peticiones de reunión\n"
 "y responderme (recomendado)"
 
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1117
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1119
 msgid "My d_elegates only"
 msgstr "Sólo mis _delegados "
 
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1124
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1126
 msgid "My delegates a_nd me"
 msgstr "Mis delegados _y yo"
 
-#: ../src/configuration/e-mail-config-ews-delegates-page.c:1721
+#: ../src/configuration/e-mail-config-ews-delegates-page.c:1723
 msgid "Retrieving “Delegates” settings"
 msgstr "Obteniendo la configuración de «Delegados»"
 
@@ -1407,6 +1423,15 @@
 msgid "Office365"
 msgstr "Office365"
 
+#~ msgid "Folder Sizes..."
+#~ msgstr "Tamaño de carpetas…"
+
+#~ msgid "Permissions..."
+#~ msgstr "Permisos…"
+
+#~ msgid "Edit EWS folder permissions..."
+#~ msgstr "Editar permisos de la carpeta de EWS…"
+
 #~ msgid "The backend does not support bulk additions"
 #~ msgstr "El «backend» no soporta adiciones"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-ews-3.30.1/src/addressbook/e-book-backend-ews.c 
new/evolution-ews-3.30.2/src/addressbook/e-book-backend-ews.c
--- old/evolution-ews-3.30.1/src/addressbook/e-book-backend-ews.c       
2018-09-24 09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/src/addressbook/e-book-backend-ews.c       
2018-10-22 10:24:30.000000000 +0200
@@ -65,6 +65,9 @@
 #define EDB_ERROR(_code) e_data_book_create_error (E_DATA_BOOK_STATUS_ ## 
_code, NULL)
 #define EDB_ERROR_EX(_code,_msg) e_data_book_create_error (E_DATA_BOOK_STATUS_ 
## _code, _msg)
 
+#define EBB_EWS_DATA_VERSION 1
+#define EBB_EWS_DATA_VERSION_KEY "ews-data-version"
+
 #define X_EWS_ORIGINAL_VCARD "X-EWS-ORIGINAL-VCARD"
 #define X_EWS_CHANGEKEY "X-EWS-CHANGEKEY"
 #define X_EWS_GAL_SHA1 "X-EWS-GAL-SHA1"
@@ -167,6 +170,9 @@
 
        g_return_if_fail (E_IS_CONTACT (contact));
 
+       /* This makes sure it's not saved also in the original vCard */
+       ebb_ews_remove_x_attribute (contact, X_EWS_ORIGINAL_VCARD);
+
        vcard_str = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
 
        ebb_ews_store_x_attribute (contact, X_EWS_ORIGINAL_VCARD, vcard_str);
@@ -849,6 +855,7 @@
        e_ews_message_write_string_parameter (msg, "Street", NULL, 
contact_addr->street);
        e_ews_message_write_string_parameter (msg, "City", NULL, 
contact_addr->locality);
        e_ews_message_write_string_parameter (msg, "State", NULL, 
contact_addr->region);
+       e_ews_message_write_string_parameter (msg, "CountryOrRegion", NULL, 
contact_addr->country);
        e_ews_message_write_string_parameter (msg, "PostalCode", NULL, 
contact_addr->code);
 
        e_soap_message_end_element (msg);
@@ -1340,6 +1347,8 @@
                convert_indexed_contact_property_to_updatexml_physical_address 
(message, "PhysicalAddress", "City", new_address->locality, "contacts", 
"PhysicalAddresses", key);
        if (set || g_strcmp0 (new_address->region, old_address->region) != 0)
                convert_indexed_contact_property_to_updatexml_physical_address 
(message, "PhysicalAddress", "State", new_address->region, "contacts", 
"PhysicalAddresses", key);
+       if (set || g_strcmp0 (new_address->country, old_address->country) != 0)
+               convert_indexed_contact_property_to_updatexml_physical_address 
(message, "PhysicalAddress", "CountryOrRegion", new_address->country, 
"contacts", "PhysicalAddresses", key);
        if (set || g_strcmp0 (new_address->code, old_address->code) != 0)
                convert_indexed_contact_property_to_updatexml_physical_address 
(message, "PhysicalAddress", "PostalCode", new_address->code, "contacts", 
"PhysicalAddresses", key);
 
@@ -3057,14 +3066,16 @@
 }
 
 static EBookMetaBackendInfo *
-ebb_ews_contact_to_info (EContact *contact)
+ebb_ews_contact_to_info (EContact *contact,
+                        gboolean is_gal)
 {
        EBookMetaBackendInfo *nfo;
 
        if (!E_IS_CONTACT (contact))
                return NULL;
 
-       ebb_ews_store_original_vcard (contact);
+       if (!is_gal)
+               ebb_ews_store_original_vcard (contact);
 
        nfo = e_book_meta_backend_info_new (
                e_contact_get_const (contact, E_CONTACT_UID),
@@ -3076,7 +3087,8 @@
 }
 
 static GSList * /* EBookMetaBackendInfo */
-ebb_ews_contacts_to_infos (const GSList *contacts) /* EContact * */
+ebb_ews_contacts_to_infos (const GSList *contacts, /* EContact * */
+                          gboolean is_gal)
 {
        GSList *nfos = NULL, *link;
 
@@ -3084,7 +3096,7 @@
                EContact *contact = link->data;
                EBookMetaBackendInfo *nfo;
 
-               nfo = ebb_ews_contact_to_info (contact);
+               nfo = ebb_ews_contact_to_info (contact, is_gal);
                if (nfo)
                        nfos = g_slist_prepend (nfos, nfo);
        }
@@ -3092,6 +3104,79 @@
        return nfos;
 }
 
+typedef struct _MigrateData {
+       gint data_version;
+       gboolean is_gal;
+} MigrateData;
+
+static gboolean
+ebb_ews_migrate_data_cb (ECache *cache,
+                        const gchar *uid,
+                        const gchar *revision,
+                        const gchar *object,
+                        EOfflineState offline_state,
+                        gint ncols,
+                        const gchar *column_names[],
+                        const gchar *column_values[],
+                        gchar **out_revision,
+                        gchar **out_object,
+                        EOfflineState *out_offline_state,
+                        ECacheColumnValues **out_other_columns,
+                        gpointer user_data)
+{
+       MigrateData *md = user_data;
+
+       g_return_val_if_fail (md != NULL, FALSE);
+       g_return_val_if_fail (object != NULL, FALSE);
+       g_return_val_if_fail (out_object != NULL, FALSE);
+
+       if (md->data_version < 1) {
+               EContact *contact;
+
+               contact = e_contact_new_from_vcard (object);
+               if (contact) {
+                       gchar *vcard;
+
+                       if (md->is_gal) {
+                               /* GAL doesn't store it, it's not writable */
+                               ebb_ews_remove_x_attribute (contact, 
X_EWS_ORIGINAL_VCARD);
+                       } else {
+                               /* This updates the X_EWS_ORIGINAL_VCARD to not 
contain itself */
+                               ebb_ews_store_original_vcard (contact);
+                       }
+
+                       vcard = e_vcard_to_string (E_VCARD (contact), 
EVC_FORMAT_VCARD_30);
+                       if (vcard && *vcard)
+                               *out_object = vcard;
+                       else
+                               g_free (vcard);
+
+                       g_object_unref (contact);
+               }
+       }
+
+       return TRUE;
+}
+
+static gboolean
+ebb_ews_check_is_gal (EBookBackendEws *bbews)
+{
+       CamelEwsSettings *ews_settings;
+       ESource *source;
+       gchar *gal_uid;
+       gboolean is_gal;
+
+       g_return_val_if_fail (E_IS_BOOK_BACKEND_EWS (bbews), FALSE);
+
+       source = e_backend_get_source (E_BACKEND (bbews));
+       ews_settings = ebb_ews_get_collection_settings (bbews);
+       gal_uid = camel_ews_settings_dup_gal_uid (ews_settings);
+       is_gal = g_strcmp0 (e_source_get_uid (source), gal_uid) == 0;
+       g_free (gal_uid);
+
+       return is_gal;
+}
+
 static gboolean
 ebb_ews_connect_sync (EBookMetaBackend *meta_backend,
                      const ENamedParameters *credentials,
@@ -3102,6 +3187,7 @@
                      GError **error)
 {
        EBookBackendEws *bbews;
+       EBookCache *book_cache;
        CamelEwsSettings *ews_settings;
        gchar *hosturl;
        gboolean success = FALSE;
@@ -3121,6 +3207,28 @@
                return TRUE;
        }
 
+       book_cache = e_book_meta_backend_ref_cache (E_BOOK_META_BACKEND 
(bbews));
+       if (book_cache) {
+               ECache *cache = E_CACHE (book_cache);
+               gint data_version;
+
+               data_version = e_cache_get_key_int (cache, 
EBB_EWS_DATA_VERSION_KEY, NULL);
+
+               if (data_version != EBB_EWS_DATA_VERSION) {
+                       MigrateData md;
+
+                       e_cache_set_key_int (cache, EBB_EWS_DATA_VERSION_KEY, 
EBB_EWS_DATA_VERSION, NULL);
+
+                       md.data_version = data_version;
+                       md.is_gal = ebb_ews_check_is_gal (bbews);
+
+                       if (e_cache_foreach_update (cache, 
E_CACHE_INCLUDE_DELETED, NULL, ebb_ews_migrate_data_cb, &md, cancellable, NULL))
+                               e_cache_sqlite_exec (cache, "vacuum;", 
cancellable, NULL);
+               }
+
+               g_clear_object (&book_cache);
+       }
+
        ews_settings = ebb_ews_get_collection_settings (bbews);
        hosturl = camel_ews_settings_dup_hosturl (ews_settings);
 
@@ -3136,17 +3244,12 @@
        if (*out_auth_result == E_SOURCE_AUTHENTICATION_ACCEPTED) {
                ESource *source = e_backend_get_source (E_BACKEND (bbews));
                ESourceEwsFolder *ews_folder;
-               gchar *gal_uid;
 
                ews_folder = e_source_get_extension (source, 
E_SOURCE_EXTENSION_EWS_FOLDER);
 
                g_free (bbews->priv->folder_id);
                bbews->priv->folder_id = e_source_ews_folder_dup_id 
(ews_folder);
-
-               gal_uid = camel_ews_settings_dup_gal_uid (ews_settings);
-               bbews->priv->is_gal = g_strcmp0 (e_source_get_uid (source), 
gal_uid) == 0;
-
-               g_free (gal_uid);
+               bbews->priv->is_gal = ebb_ews_check_is_gal (bbews);
 
                g_signal_connect_swapped (bbews->priv->cnc, 
"server-notification",
                        G_CALLBACK (ebb_ews_server_notification_cb), bbews);
@@ -3384,13 +3487,13 @@
                        if (items_created) {
                                success = ebb_ews_fetch_items_sync (bbews, 
items_created, &contacts_created, cancellable, error);
                                if (success)
-                                       *out_created_objects = 
ebb_ews_contacts_to_infos (contacts_created);
+                                       *out_created_objects = 
ebb_ews_contacts_to_infos (contacts_created, bbews->priv->is_gal);
                        }
 
                        if (items_modified) {
                                success = ebb_ews_fetch_items_sync (bbews, 
items_modified, &contacts_modified, cancellable, error);
                                if (success)
-                                       *out_modified_objects = 
ebb_ews_contacts_to_infos (contacts_modified);
+                                       *out_modified_objects = 
ebb_ews_contacts_to_infos (contacts_modified, bbews->priv->is_gal);
                        }
 
                        for (link = items_deleted; link; link = g_slist_next 
(link)) {
@@ -3700,7 +3803,7 @@
                                        if (!ebb_ews_fetch_gal_photo_sync 
(bbews, contact, cancellable, &local_error))
                                                ebb_ews_store_photo_check_date 
(contact, NULL);
 
-                                       nfo = ebb_ews_contact_to_info (contact);
+                                       nfo = ebb_ews_contact_to_info (contact, 
bbews->priv->is_gal);
                                        if (nfo)
                                                modified = g_slist_prepend 
(modified, nfo);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-ews-3.30.1/src/calendar/e-cal-backend-ews.c 
new/evolution-ews-3.30.2/src/calendar/e-cal-backend-ews.c
--- old/evolution-ews-3.30.1/src/calendar/e-cal-backend-ews.c   2018-09-24 
09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/src/calendar/e-cal-backend-ews.c   2018-10-22 
10:24:30.000000000 +0200
@@ -311,7 +311,7 @@
        else if (g_ascii_strcasecmp (responsetype, "NoResponseReceived") == 0)
                param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION);
        else if (g_ascii_strcasecmp (responsetype, "Unknown") == 0)
-               param = icalparameter_new_partstat (ICAL_PARTSTAT_NONE);
+               param = icalparameter_new_partstat (ICAL_PARTSTAT_NEEDSACTION);
 
        if (!param)
                param = icalparameter_new_partstat (ICAL_PARTSTAT_NONE);
@@ -981,6 +981,9 @@
 
        g_return_if_fail (E_IS_CAL_COMPONENT (comp));
 
+       /* This makes sure it's not saved also in the original component */
+       e_cal_util_remove_x_property (e_cal_component_get_icalcomponent (comp), 
X_EWS_ORIGINAL_COMP);
+
        comp_str = e_cal_component_get_as_string (comp);
        g_return_if_fail (comp_str != NULL);
 
@@ -2657,7 +2660,7 @@
                GHashTable *removed_indexes;
                EwsCalendarConvertData convert_data = { 0 };
                EEwsItem *item = NULL;
-               const EwsId *ews_id = NULL;
+               EwsId *ews_id = NULL;
                const gchar *send_meeting_invitations;
                icalcomponent *icalcomp;
                icalproperty *prop;
@@ -2701,7 +2704,7 @@
                        if (item) {
                                g_object_ref (item);
 
-                               ews_id = e_ews_item_get_id (item);
+                               ews_id = e_ews_id_copy (e_ews_item_get_id 
(item));
                        }
                }
 
@@ -2725,6 +2728,8 @@
                                g_clear_object (&item);
 
                                item = items_req->data;
+
+                               e_ews_id_free (ews_id);
                                ews_id = NULL;
 
                                if (e_ews_item_get_item_type (item) == 
E_EWS_ITEM_TYPE_ERROR) {
@@ -2733,7 +2738,7 @@
                                        success = FALSE;
                                } else {
                                        item = g_object_ref (item);
-                                       ews_id = e_ews_item_get_id (item);
+                                       ews_id = e_ews_id_copy 
(e_ews_item_get_id (item));
                                }
                        }
 
@@ -2748,13 +2753,21 @@
                        g_warn_if_fail (ews_id != NULL);
 
                        if (ews_id && ecb_ews_extract_attachments (icalcomp, 
&info_attachments)) {
+                               gchar *changekey = NULL;
                                GSList *ids = NULL;
 
                                success = 
e_ews_connection_create_attachments_sync (cbews->priv->cnc, EWS_PRIORITY_MEDIUM,
-                                       ews_id, info_attachments, FALSE, NULL, 
&ids, cancellable, error);
+                                       ews_id, info_attachments, FALSE, 
&changekey, &ids, cancellable, error);
 
                                g_slist_free_full (info_attachments, 
(GDestroyNotify) e_ews_attachment_info_free);
                                g_slist_free_full (ids, g_free);
+
+                               if (success && changekey) {
+                                       g_free (ews_id->change_key);
+                                       ews_id->change_key = changekey;
+                               } else {
+                                       g_free (changekey);
+                               }
                        }
                }
 
@@ -2789,6 +2802,7 @@
                }
 
                icalcomponent_free (icalcomp);
+               e_ews_id_free (ews_id);
                g_clear_object (&item);
 
                for (link = (GSList *) instances; link && success; link = 
g_slist_next (link)) {
@@ -3738,6 +3752,8 @@
                return g_strjoin (
                        ",",
                        CAL_STATIC_CAPABILITY_NO_EMAIL_ALARMS,
+                       CAL_STATIC_CAPABILITY_NO_AUDIO_ALARMS,
+                       CAL_STATIC_CAPABILITY_NO_PROCEDURE_ALARMS,
                        CAL_STATIC_CAPABILITY_ONE_ALARM_ONLY,
                        CAL_STATIC_CAPABILITY_REMOVE_ALARMS,
                        CAL_STATIC_CAPABILITY_NO_THISANDPRIOR,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/src/collection/e-ews-backend.c 
new/evolution-ews-3.30.2/src/collection/e-ews-backend.c
--- old/evolution-ews-3.30.1/src/collection/e-ews-backend.c     2018-09-24 
09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/src/collection/e-ews-backend.c     2018-10-22 
10:24:30.000000000 +0200
@@ -48,7 +48,7 @@
 
        gboolean need_update_folders;
 
-       gulong notify_online_id;
+       gulong source_changed_id;
 };
 
 struct _SyncFoldersClosure {
@@ -647,15 +647,21 @@
 ews_backend_dispose (GObject *object)
 {
        EEwsBackendPrivate *priv;
+       ESource *source;
 
        priv = E_EWS_BACKEND_GET_PRIVATE (object);
 
+       source = e_backend_get_source (E_BACKEND (object));
+       if (source && priv->source_changed_id) {
+               g_signal_handler_disconnect (source, priv->source_changed_id);
+               priv->source_changed_id = 0;
+       }
+
        g_hash_table_remove_all (priv->folders);
 
-       if (priv->connection != NULL) {
-               g_object_unref (priv->connection);
-               priv->connection = NULL;
-       }
+       g_mutex_lock (&priv->connection_lock);
+       g_clear_object (&priv->connection);
+       g_mutex_unlock (&priv->connection_lock);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_ews_backend_parent_class)->dispose (object);
@@ -770,12 +776,8 @@
 
        ews_backend->priv->need_update_folders = TRUE;
 
-       if (!ews_backend->priv->notify_online_id) {
-               ews_backend->priv->notify_online_id = g_signal_connect (
-                       backend, "notify::online",
-                       G_CALLBACK (ews_backend_populate), NULL);
-
-               g_signal_connect (
+       if (!ews_backend->priv->source_changed_id) {
+               ews_backend->priv->source_changed_id = g_signal_connect (
                        source, "changed",
                        G_CALLBACK (ews_backend_source_changed_cb), 
ews_backend);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/src/server/e-ews-connection.c 
new/evolution-ews-3.30.2/src/server/e-ews-connection.c
--- old/evolution-ews-3.30.1/src/server/e-ews-connection.c      2018-09-24 
09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/src/server/e-ews-connection.c      2018-10-22 
10:24:30.000000000 +0200
@@ -438,7 +438,7 @@
        return node;
 }
 
-static gboolean
+static void
 autodiscover_parse_protocol (xmlNode *node,
                              EwsUrls *urls)
 {
@@ -459,10 +459,21 @@
 
                /* Once we find both, we can stop looking for the URLs */
                if (urls->as_url && urls->oab_url)
-                       return TRUE;
+                       return;
        }
+}
 
-       return FALSE;
+static xmlChar *
+autodiscover_get_protocol_type (xmlNode *node)
+{
+       for (node = node->children; node; node = node->next) {
+               if (node->type == XML_ELEMENT_NODE &&
+                   !strcmp ((gchar *) node->name, "Type")) {
+                       return xmlNodeGetContent (node);
+               }
+       }
+
+       return NULL;
 }
 
 static gint
@@ -2896,6 +2907,22 @@
        ews_connection_schedule_abort (cnc);
 }
 
+/* Frees only the content, not the 'urls' structure itself */
+static void
+ews_urls_free_content (EwsUrls *urls)
+{
+       if (!urls)
+               return;
+
+       if (urls->as_url)
+               xmlFree (urls->as_url);
+       urls->as_url = NULL;
+
+       if (urls->oab_url)
+               xmlFree (urls->oab_url);
+       urls->oab_url = NULL;
+}
+
 /* Called when each soup message completes */
 static void
 autodiscover_response_cb (SoupSession *session,
@@ -2905,14 +2932,16 @@
 {
        GSimpleAsyncResult *simple = data;
        struct _autodiscover_data *ad;
-       EwsUrls *urls = NULL;
+       EwsUrls exch_urls, expr_urls;
        guint status = msg->status_code;
        xmlDoc *doc;
        xmlNode *node;
        gint idx;
-       gboolean success = FALSE;
        GError *error = NULL;
 
+       memset (&exch_urls, 0, sizeof (EwsUrls));
+       memset (&expr_urls, 0, sizeof (EwsUrls));
+
        ad = g_simple_async_result_get_op_res_gpointer (simple);
 
        for (idx = 0; idx < 5; idx++) {
@@ -2984,25 +3013,34 @@
                goto failed;
        }
 
-       urls = g_new0 (EwsUrls, 1);
        for (node = node->children; node; node = node->next) {
                if (node->type == XML_ELEMENT_NODE &&
                    !strcmp ((gchar *) node->name, "Protocol")) {
-                       success = autodiscover_parse_protocol (node, urls);
-                       /* Since the server may send back multiple <Protocol> 
nodes
-                        * don't break unless we found the both URLs.
-                        */
-                       if (success)
-                               break;
+                       xmlChar *protocol_type = autodiscover_get_protocol_type 
(node);
+
+                       if (g_strcmp0 ((const gchar *) protocol_type, "EXCH") 
== 0) {
+                               ews_urls_free_content (&exch_urls);
+                               autodiscover_parse_protocol (node, &exch_urls);
+                       } else if (g_strcmp0 ((const gchar *) protocol_type, 
"EXPR") == 0) {
+                               ews_urls_free_content (&expr_urls);
+                               autodiscover_parse_protocol (node, &expr_urls);
+
+                               /* EXPR has precedence, thus stop once found 
both there */
+                               if (expr_urls.as_url && expr_urls.oab_url) {
+                                       xmlFree (protocol_type);
+                                       break;
+                               }
+                       }
+
+                       if (protocol_type)
+                               xmlFree (protocol_type);
                }
        }
 
-       if (!success) {
-               if (urls->as_url != NULL)
-                       xmlFree (urls->as_url);
-               if (urls->oab_url != NULL)
-                       xmlFree (urls->oab_url);
-               g_free (urls);
+       /* Make the <OABUrl> optional */
+       if (!exch_urls.as_url && !expr_urls.as_url) {
+               ews_urls_free_content (&exch_urls);
+               ews_urls_free_content (&expr_urls);
                g_set_error (
                        &error, EWS_CONNECTION_ERROR, -1,
                        _("Failed to find <ASUrl> and <OABUrl> in autodiscover 
response"));
@@ -3018,17 +3056,18 @@
                }
        }
 
-       if (urls->as_url != NULL) {
-               ad->as_url = g_strdup ((gchar *) urls->as_url);
-               xmlFree (urls->as_url);
-       }
-
-       if (urls->oab_url != NULL) {
-               ad->oab_url = g_strdup ((gchar *) urls->oab_url);
-               xmlFree (urls->oab_url);
-       }
+       if (expr_urls.as_url)
+               ad->as_url = g_strdup ((gchar *) expr_urls.as_url);
+       else if (exch_urls.as_url)
+               ad->as_url = g_strdup ((gchar *) exch_urls.as_url);
+
+       if (expr_urls.as_url && expr_urls.oab_url)
+               ad->oab_url = g_strdup ((gchar *) expr_urls.oab_url);
+       else if (!expr_urls.as_url && exch_urls.oab_url)
+               ad->oab_url = g_strdup ((gchar *) exch_urls.oab_url);
 
-       g_free (urls);
+       ews_urls_free_content (&exch_urls);
+       ews_urls_free_content (&expr_urls);
 
        goto exit;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/src/server/e-ews-item.c 
new/evolution-ews-3.30.2/src/server/e-ews-item.c
--- old/evolution-ews-3.30.1/src/server/e-ews-item.c    2018-09-24 
09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/src/server/e-ews-item.c    2018-10-22 
10:24:30.000000000 +0200
@@ -726,7 +726,7 @@
        if (subparam)
                address->state = e_soap_parameter_get_string_value (subparam);
 
-       subparam = e_soap_parameter_get_first_child_by_name (param, "Country");
+       subparam = e_soap_parameter_get_first_child_by_name (param, 
"CountryOrRegion");
        if (subparam)
                address->country = e_soap_parameter_get_string_value (subparam);
 
@@ -3223,3 +3223,28 @@
 
        return ex_address;
 }
+
+EwsId *
+e_ews_id_copy (const EwsId *ews_id)
+{
+       EwsId *copy;
+
+       if (!ews_id)
+               return NULL;
+
+       copy = g_new0 (EwsId, 1);
+       copy->id = g_strdup (ews_id->id);
+       copy->change_key = g_strdup (ews_id->change_key);
+
+       return copy;
+}
+
+void
+e_ews_id_free (EwsId *ews_id)
+{
+       if (ews_id) {
+               g_free (ews_id->id);
+               g_free (ews_id->change_key);
+               g_free (ews_id);
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-ews-3.30.1/src/server/e-ews-item.h 
new/evolution-ews-3.30.2/src/server/e-ews-item.h
--- old/evolution-ews-3.30.1/src/server/e-ews-item.h    2018-09-24 
09:15:45.000000000 +0200
+++ new/evolution-ews-3.30.2/src/server/e-ews-item.h    2018-10-22 
10:24:30.000000000 +0200
@@ -477,6 +477,8 @@
 /* Utility functions */
 const gchar *  e_ews_item_util_strip_ex_address
                                                (const gchar *ex_address);
+EwsId *                e_ews_id_copy                   (const EwsId *ews_id);
+void           e_ews_id_free                   (EwsId *ews_id);
 
 G_END_DECLS
 


Reply via email to