[evolution] [itip-formatter] Meeting request attendee response address not properly filled



commit 720be6155dc4e810a220522421021ce98c834c24
Author: Milan Crha <mcrha redhat com>
Date:   Tue Feb 27 15:06:15 2018 +0100

    [itip-formatter] Meeting request attendee response address not properly filled
    
    Two issues:
    a) the ATTENDEE property value is supposed to be URI, specifically
       a mailto: URI for email addresses
    b) when the calendar has set no user email backend property, the code
       returns an empty string, which had been used as the attendee address.
    
    This had been discovered while working on a downstream bug:
    https://bugzilla.redhat.com/show_bug.cgi?id=1515776

 src/modules/itip-formatter/itip-view.c |   27 +++++++++++++++++++++------
 1 files changed, 21 insertions(+), 6 deletions(-)
---
diff --git a/src/modules/itip-formatter/itip-view.c b/src/modules/itip-formatter/itip-view.c
index e27af2e..ee16eef 100644
--- a/src/modules/itip-formatter/itip-view.c
+++ b/src/modules/itip-formatter/itip-view.c
@@ -4469,9 +4469,13 @@ change_status (ESourceRegistry *registry,
        } else {
                icalparameter *param;
 
-               if (address != NULL) {
-                       prop = icalproperty_new_attendee (address);
+               if (address && *address) {
+                       gchar *mailto_uri;
+
+                       mailto_uri = g_strconcat ("mailto:";, itip_strip_mailto (address), NULL);
+                       prop = icalproperty_new_attendee (mailto_uri);
                        icalcomponent_add_property (ical_comp, prop);
+                       g_free (mailto_uri);
 
                        param = icalparameter_new_role (ICAL_ROLE_OPTPARTICIPANT);
                        icalproperty_add_parameter (prop, param);
@@ -4481,15 +4485,20 @@ change_status (ESourceRegistry *registry,
                } else {
                        gchar *default_name = NULL;
                        gchar *default_address = NULL;
+                       gchar *mailto_uri;
 
                        itip_get_default_name_and_address (
                                registry, &default_name, &default_address);
 
-                       prop = icalproperty_new_attendee (default_address);
+                       mailto_uri = g_strconcat ("mailto:";, itip_strip_mailto (address), NULL);
+                       prop = icalproperty_new_attendee (mailto_uri);
                        icalcomponent_add_property (ical_comp, prop);
+                       g_free (mailto_uri);
 
-                       param = icalparameter_new_cn (default_name);
-                       icalproperty_add_parameter (prop, param);
+                       if (default_name && *default_name && g_strcmp0 (default_name, default_address) != 0) {
+                               param = icalparameter_new_cn (default_name);
+                               icalproperty_add_parameter (prop, param);
+                       }
 
                        param = icalparameter_new_role (ICAL_ROLE_REQPARTICIPANT);
                        icalproperty_add_parameter (prop, param);
@@ -5955,9 +5964,15 @@ view_response_cb (ItipView *view,
                        e_cal_component_set_transparency (view->priv->comp, E_CAL_COMPONENT_TRANSP_OPAQUE);
        }
 
-       if (!view->priv->to_address && view->priv->current_client != NULL)
+       if (!view->priv->to_address && view->priv->current_client != NULL) {
                e_client_get_backend_property_sync (E_CLIENT (view->priv->current_client), 
CAL_BACKEND_PROPERTY_CAL_EMAIL_ADDRESS, &view->priv->to_address, NULL, NULL);
 
+               if (view->priv->to_address && !*view->priv->to_address) {
+                       g_free (view->priv->to_address);
+                       view->priv->to_address = NULL;
+               }
+       }
+
        /* check if it is a  recur instance (no master object) and
         * add a property */
        if (itip_view_get_recur_check_state (view)) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]