After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 728942 - Fails to pair user with attendee in invitation response
Fails to pair user with attendee in invitation response
Status: RESOLVED FIXED
Product: evolution-ews
Classification: Other
Component: Calendar
3.12.x
Other Linux
: Normal normal
: ---
Assigned To: Evolution EWS maintainer(s)
Evolution EWS maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2014-04-25 09:56 UTC by David Gabriel
Modified: 2014-07-03 16:44 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
debug log of evolution calendar factory process (153.56 KB, text/x-log)
2014-05-06 09:46 UTC, David Gabriel
Details
Evolution calendar factory debug log (48.06 KB, text/plain)
2014-07-02 15:07 UTC, Jared Smith
Details

Description David Gabriel 2014-04-25 09:56:54 UTC
Looks like a Regression from Bug 686024

All accepted meeting requests are sent as 'Tentative'
Comment 1 Milan Crha 2014-05-02 13:22:10 UTC
Thanks for a bug report. I tried to reproduce this, but it works properly for me, the meeting response is received as Accepted to the meeting organizer.

Do you know the server version you connect to, please? I tried 
Exchange 2010.

Could you test what the evolution-ews sends to the server, please? You can do that when you run evolution-calendar-factory like:

   $ EWS_DEBUG=2 /usr/libexec/evolution-calendar-factory -w &>log.txt

(actual path for the evolution-calendar-factory may be different, it depends on your distribution), then run evolution and Accept the meeting. Once it's done, close evolution and search the log.txt for "ReferenceItemId" (quotes for clarity only). There is shown what the evolution-ews sent to the server. Mine log shows:
   ...<AcceptItem><ReferenceItemId Id="..." ChangeKey="..."/></AcceptItem>...
which corresponds to what I chose in the UI.
Comment 2 David Gabriel 2014-05-06 09:45:51 UTC
I logged the request as per your instrutions, but in my case the request is shown as 'TentativelyAcceptItem':

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><types:RequestServerVersion xmlns:types="http://schemas.microsoft.com/exchange/services/2006/types" Version="Exchange2010_SP2"/></SOAP-ENV:Header><SOAP-ENV:Body xmlns:messages="http://schemas.microsoft.com/exchange/services/2006/messages"><messages:CreateItem xmlns="http://schemas.microsoft.com/exchange/services/2006/types" MessageDisposition="SendAndSaveCopy"><messages:Items><TentativelyAcceptItem><ReferenceItemId Id="AAMkADdmNDZhZWZjLTc4YWQtNGIzYy1hYjNlLWJmYzMxZjY1ODk0NQBGAAAAAABfqIbkV5roQIiNA5kR8WDoBwD4pwtVcojARpS6Q9b90kbiAAAFzkV/AACjE7M2AWRVRKQH43meYCgvAABZnvddAAA=" ChangeKey="DwAAABYAAACjE7M2AWRVRKQH43meYCgvAABZ10uV"/></TentativelyAcceptItem></messages:Items></messages:CreateItem></SOAP-ENV:Body></SOAP-ENV:Envelope>


I attached the complete log with several attempts:
* evo_cal_factory.log
Comment 3 David Gabriel 2014-05-06 09:46:40 UTC
Created attachment 275956 [details]
debug log of evolution calendar factory process
Comment 4 Milan Crha 2014-05-06 10:35:43 UTC
Interesting. That might mean that the UI set incorrect value. Could you provide your versions for evolution-data-server, evolution, evolution-ews, libical and gtk3, please?
Comment 5 David Gabriel 2014-05-06 11:42:14 UTC
This might be possible. I use KDE as my desktop, but need evolution+evolution-ews to connect to my company's exchange server. Until now meeting invites worked flawlessly.

I'm on Arch Linux and use the latest 3.12.1 packages from the standard repositories:

pacman output:

extra/evolution 3.12.1-1 (gnome-extra) [installed]
extra/evolution-data-server 3.12.1-2 [installed]
extra/evolution-ews 3.12.1-1 [installed]
extra/gtk3 3.12.1-2 [installed]
extra/libical 1.0-3 [installed]


local gtk config in '~/.config/gtk-3.0/settings.ini' :

[Settings]
gtk-font-name=Verdana Regular 10
gtk-theme-name=Adwaita
gtk-icon-theme-name=oxygen
gtk-fallback-icon-theme=gnome
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-menu-images=0
gtk-button-images=1
Comment 6 David Gabriel 2014-05-25 16:54:05 UTC
Any news on this one? Do you need more information?
Comment 7 Milan Crha 2014-05-26 10:35:27 UTC
Oops, I'm sorry, I missed your previous information update. I installed KDE (in a Fedora installation) with the same versions of the packages as you have (those named at comment #5), which should be also the same, maybe except of the distro-specific customizations, if any.

When I click "Accepted", the sender receives Accepted; when I click "Decline", the sender receives "Declined".

These buttons are handled in WebKitGTK, but it feel unlikely that the WebKitGTK would report wrong button index.

Mine WebKitGTK is packaged as webkitgtk3 in Fedora and is version 2.4.0 here. I also updated webkitgtk3 to 2.4.2 and it still works as expected for me.
Comment 8 David Gabriel 2014-05-30 07:08:04 UTC
Sorry for the late reply, but I'm running into the weirdest problems with evolution(-ews) lately...

I thought that my problem might be caused by some error in my evolution config, so i deleted my evolution/gnome config (.config/evolution, .cache/evolution, .local/share/evolution, .gnome*, .config/dconf, .config/gconf) and started from scratch. However, after configuring my Exchange account, I can't sync mail anymore at all. Calender and Contacts get synched however.

Also, Evolution seems to be confused about its online status - I get errors about not being able to sync in 'Offline Mode' when being online. If I 'Go Offline', it tries to start synching and fails with a lot of errors like these:

-------------
(evolution:12821): Gtk-WARNING **: Failed to register client: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
(evolution:12821): camel-WARNING **: CamelMaildirStore::get_folder_sync() reported failure without setting its GError
(evolution:12821): camel-local-provider-CRITICAL **: camel_local_folder_construct: assertion 'fi != NULL' failed
** (evolution:12821): CRITICAL **: e_mail_session_get_local_folder: assertion 'CAMEL_IS_FOLDER (folder)' failed
(evolution:12821): camel-ews-provider-WARNING **: camel_ews_folder_update_thread: You must be working online to complete this operation
** (evolution:12821): CRITICAL **: e_mail_session_get_local_folder: assertion 'CAMEL_IS_FOLDER (folder)' failed
-------------

I must admit I'm a little bit at a loss here. The same configuration works flawlessly on my notebook which runs arch linux with the same packages, so I don't know what to look at next. Do you have any ideas what might be the culprit?

thanx in advance and br,
d.
Comment 9 David Gabriel 2014-05-30 07:14:27 UTC
Now that I'm thinking of it, might this by dbus-related?
Comment 10 Milan Crha 2014-05-30 09:27:05 UTC
Playing with internal application files while the application is running tends to break things heavily. Even if you didn't have running evolution itself, then some related processes in the background could be still there.
   $ ps ax | grep evolution
will show you all the related evolution processes.

The error about SourceManager means that evolution-source-registry failed to start, or evolution itself failed to connect to it. Usual fix is to re-login (or restart) the machine. This SourceManager is connected through D-Bus, hence the message on the console.
Comment 11 David Gabriel 2014-06-03 06:22:47 UTC
I always did shut down evolution and its background processes before removing / changing any files, so there should be no runtime issues. However I'm still stuck. To be sure, I 
 - shut down all evolution processes
 - removed all evolution related config files
 - updated arch linux
 - rebooted the system

Still, on evolution startup I immediately get those errors:

===========
(evolution:4904): Gtk-WARNING **: Failed to register client: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
(evolution:4904): camel-WARNING **: CamelMaildirStore::get_folder_sync() reported failure without setting its GError
(evolution:4904): camel-local-provider-CRITICAL **: camel_local_folder_construct: assertion 'fi != NULL' failed
** (evolution:4904): CRITICAL **: e_mail_session_get_local_folder: assertion 'CAMEL_IS_FOLDER (folder)' failed
===========


And after configuring my mailserver profile, it won't sync. On later start-ups it just complains about GDBus and being offline, although it is clearly not:

===========
(evolution:6651): Gtk-WARNING **: Failed to register client: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (ArchLinux build 7.u55_2.4.7-1-x86_64)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

(evolution:6651): evolution-mail-WARNING **: Failed to refresh folder 'Exchange: Inbox': You must be working online to complete this operation
===========

Is there some communication problem between evolution and one of its background processes?
these processes are running after evolution startup:
===========
b2c       1093     1  0 07:55 ?        S      0:00 dbus-launch --sh-syntax --exit-with-session
b2c       1094     1  0 07:55 ?        Ss     0:00 /usr/bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
b2c       1119     1  0 07:55 ?        Ss     0:00 /usr/bin/gpg-agent -s --daemon --pinentry-program /usr/bin/pinentry-qt4 --write-env-file
b2c       4906     1  0 08:03 ?        Sl     0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
b2c       4910  4906  0 08:03 ?        S      0:00  \_ /usr/bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
b2c       4913     1  0 08:03 ?        Sl     0:00 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
b2c       4920     1  0 08:03 ?        SLl    0:00 /usr/lib/evolution-data-server/evolution-source-registry
b2c       4927     1  0 08:03 ?        Sl     0:00 /usr/lib/gnome-online-accounts/goa-daemon
b2c       4945     1  0 08:03 pts/6    Sl     0:00 /usr/lib/evolution/3.12/evolution-alarm-notify
b2c       4947     1  0 08:03 ?        Sl     0:00 /usr/lib/dconf/dconf-service
b2c       4963     1  0 08:03 ?        Sl     0:03 /usr/lib/evolution-data-server/evolution-calendar-factory
b2c       6475     1  0 08:15 ?        SLl    0:00 /usr/bin/gnome-keyring-daemon --start --foreground --components=secrets
Comment 12 Milan Crha 2014-06-03 07:43:32 UTC
(In reply to comment #11)
> (evolution:4904): Gtk-WARNING **: Failed to register client:
> GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
> org.gnome.SessionManager was not provided by any .service files

This one is harm-less and comes from gtk, if I recall correctly. It basicallt means that you are not running gnome-shell.

> (evolution:4904): camel-WARNING **: CamelMaildirStore::get_folder_sync()
> reported failure without setting its GError
> (evolution:4904): camel-local-provider-CRITICAL **:
> camel_local_folder_construct: assertion 'fi != NULL' failed
> ** (evolution:4904): CRITICAL **: e_mail_session_get_local_folder: assertion
> 'CAMEL_IS_FOLDER (folder)' failed

The last time I saw this one it was when one of the On This Computer folders didn't have a proper Maildir structure. Please check in
   ~/.local/share/evolution/mail/local/
that the folder has 'cur', 'new' and 'tmp' subfolders, the same as its immediate subfolders (which begin with a dot, like .Outbox). What I saw was that here was only a 'cur' subfolder, but not the other two.
 
> (evolution:6651): evolution-mail-WARNING **: Failed to refresh folder
> 'Exchange: Inbox': You must be working online to complete this operation

I guess it's about proxy settings. Could you verify your Edit->Preferences->Network Preferences, whether you have proxy disabled (in case it's not needed)? I'd use "Direct connection" or configure proxy manually in Evolution, to avoid issues from incorrectly filled proxies in the system, especially when you do not run gnome-shell. Please see bug #708175 for more detailed information for this "claimed offline state".

In any case, none of these issues should cause the 'Tentative' meeting response.

There is an option to debug this with gdb, but I do not know how much you know gdb. Let's try it. Please install also packages with debug information for evolution and evolution-ews. Then run evolution with this command under gdb:
   $ gdb evolution --ex "b itip-view.c:view_response_cb" --ex r --ex "bt" \
     --ex "b itip-view.c:update_item" --ex c  --ex bt --ex "p response" \
     --ex "b e_cal_client_receive_objects" --ex c \
     --ex "printf \"%s\\n\", icalcomponent_as_ical_string (icalcomp)" \
     --ex "d br 1" --ex "d br 2" --ex "d br 3" --ex c

You'll be asked immediately after the start something like this:
   No source file named itip-view.c.
   Make breakpoint pending on future shared library load? (y or [n]) y
to which you should answer 'y'.

After that evolution will run. Just select a test meeting and click the Accept button as an answer to an organizer. After that the terminal will request your attendance. Just press Enter whenever asked for anything. There will be printed couple backtraces and the generated component, which is passed to evolution-ews. Once done, all the breakpoints are deleted and evolution runs like before. You can close it, but keep what was printed on the console since you clicked the Accept button. Remove any private information from it (preferably use some test meeting) and attach the output here. I'll see whether it passes the correct information to the evolution-ews.
Comment 13 David Gabriel 2014-06-09 08:26:42 UTC
Thank you for the detailed comments and your support, but at the moment I can't get evolution-ews to connect to our Exchange server anymore. I tried for days, even starting with a fresh home directory, but to no avail.
I tested with my laptop too, which does NOT have the problem, and could not reproduce it there. So I guess, whatever messed up my workstation must have been the culprit in the first place. Sorry for having bothered you for so long, and if I ever find out what's up with my workstation, I'll post the details.
Comment 14 Milan Crha 2014-06-09 09:05:21 UTC
No problem at all. I'd also like to know the cause, maybe your workstation faced just some corner case. Who knows.
Comment 15 David Gabriel 2014-06-28 10:10:08 UTC
Looks like you fixed the problem I ran into:
https://git.gnome.org/browse/evolution-ews/commit/?h=evolution-ews-3-12

It's all good in 3.13.3 ;)
Comment 16 Milan Crha 2014-06-30 08:37:26 UTC
Was this a side-effect of bug 731585 too? That might be unexpected by me, but good it finally works properly for you too.
Comment 17 Jared Smith 2014-07-02 15:07:00 UTC
Created attachment 279758 [details]
Evolution calendar factory debug log

My EWS debug log
Comment 18 Jared Smith 2014-07-02 15:07:57 UTC
I'm seing the same issue with Evolution 3.12.3 on Fedora (Rawhide).

Component versions:
evolution-data-server-3.12.3-1.fc21.x86_64
evolution-3.12.3-3.fc21.x86_64
evolution-ews-3.12.3-1.fc21.x86_64
libical-1.0-5.fc21.x86_64
gtk3-3.13.3-2.fc21.x86_64
Comment 19 Milan Crha 2014-07-03 06:55:16 UTC
Hmm, running gnome-shell with below package versions and when I mouse-click "Accept" in the preview panel of the Mail view window, then the meeting is received as accepted - confirmed in Exchange's 2010 Server's OWA (web interface). EWS account configured directly in evolution, though it might not have much impact, from my point of view.

evolution-data-server-3.12.3-1.fc21.x86_64
evolution-3.12.3-3.fc21.x86_64
evolution-ews-3.12.3-1.fc21.x86_64
libical-1.0-5.fc21.x86_64
gtk3-3.13.3-2.fc21.x86_64
webkitgtk3-2.4.3-2.fc21.x86_64
gnome-shell-3.13.3-1.fc21.x86_64
Comment 20 Milan Crha 2014-07-03 15:00:01 UTC
I'm reopening this due to given more details from Jared on IRC. The issue is that the attendee's email listed in the event doesn't match the one associated in the calendar, thus the response is not known, which defaults to tentative.

I can partially workaround the issue when there is only one attendee, but it'll be harder when there is more. I think I'll do my best to catch the right attendee, but if it'll still fail, then I will rather claim an error, than silently send incorrect response.
Comment 21 Milan Crha 2014-07-03 16:44:27 UTC
I made couple changes in the calendar backend to try to find the user harder. During that I realized that the backend didn't have set user's email, thus it could not find a match if there were more than one meeting attendee. That means that most likely only the last chunk of the patch, in e_cal_backend_ews_constructed, is a sufficient fix, but I'd rather try harder with the attendee search. There is also returned an error about Unknown user, when the user couldn't be found between attendees. It's a lame error message "Unknown user" in 3.12, but a more descriptive message "Cannot find user 'user@example.com' between attendees" in master. Other the patch in stable is the same as in master.

Created commit 6f7bbda in eds master (3.13.4+) [1]
Created commit e4435a7 in ews evolution-ews-3-12 (3.12.4+)

[1] https://git.gnome.org/browse/evolution-ews/commit/?id=6f7bbda