[horde] Horde/Kronolith: events modified more than once don't sync via CalDAV

Anthony Messina amessina at messinet.com
Thu Apr 17 21:08:56 UTC 2014


I've submitted the following as http://bugs.horde.org/ticket/13123


Using Horde 5.1.6, Kronolith 4.1.5, and Horde_Dav 1.0.4 after an event
is created and then modified more than once, the event is no longer
synced via CalDAV.  The issue appears to be that after the second
modification, the ETag and Last-Modified headers are not updated with
the newer event_modified timestamp.

I have attached a text file with the instructions to reproduce this
issue, as well as examples of the HTTP headers detailing the ETag and
Last-Modified headers not being updated after the second modification.

Any help in resolving this issue would be appreciated.  Thanks.  -A
-- 
Anthony - http://messinet.com - http://messinet.com/~amessina/gallery
8F89 5E72 8DF0 BCF0 10BE 9967 92DC 35DC B001 4A4E
-------------- next part --------------
#
# Create new event in Horde/Kronolith titled "TESTMOD"
#

horde=# SELECT event_id, event_title, event_modified FROM kronolith_events WHERE event_title = 'TESTMOD';
        event_id         | event_title | event_modified 
-------------------------+-------------+----------------
 hyeSZ6PdQurUlw4nXbXSXA1 | TESTMOD     |     1397754309
(1 row)

[username at ws1 ~]$ curl -I -u username --basic https://example.com/horde/rpc/calendars/username/calendar:sjl6ZxQGR3qgtDGCu_MWaA1/hyeSZ6PdQurUlw4nXbXSXA1.ics
Enter host password for user 'username':
HTTP/1.1 200 OK
Date: Thu, 17 Apr 2014 17:06:53 GMT
Server: Apache/2.4.9 (Fedora) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4 PHP/5.5.11 mod_wsgi/3.4 Python/2.7.5
Strict-Transport-Security: max-age=15552000
X-Powered-By: PHP/5.5.11
Set-Cookie: Horde=6bnqs1hhr6n8scaenkqrhmrkv6; path=/horde; domain=example.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: Horde=nsldtsr731efsusttubuu0lvb2; path=/horde; domain=example.com; secure; HttpOnly
Set-Cookie: horde_secret_key=nsldtsr731efsusttubuu0lvb2; path=/horde; domain=example.com; secure; httponly
Set-Cookie: default_horde_view=auto; expires=Sat, 17-May-2014 17:06:53 GMT; Max-Age=2592000; path=/horde; domain=example.com
Content-Length: 426
Last-Modified: Thu, 17 Apr 2014 17:05:09 GMT
ETag: "0d35676c3743a250dc9cd25e548ba93e"
Vary: User-Agent
Content-Type: text/calendar; charset=utf-8

[username at ws1 ~]$ date -u -d @1397754309
Thu Apr 17 17:05:09 UTC 2014

#
# Modify event "TESTMOD" once in Horde/Kronolith (add a location "TESTLOC")
#

horde=# SELECT event_id, event_title, event_location, event_modified FROM kronolith_events WHERE event_title = 'TESTMOD';
        event_id         | event_title | event_location | event_modified 
-------------------------+-------------+----------------+----------------
 hyeSZ6PdQurUlw4nXbXSXA1 | TESTMOD     | TESTLOC        |     1397754543
(1 row)

[username at ws1 ~]$ curl -I -u username --basic https://example.com/horde/rpc/calendars/username/calendar:sjl6ZxQGR3qgtDGCu_MWaA1/hyeSZ6PdQurUlw4nXbXSXA1.ics
Enter host password for user 'username':
HTTP/1.1 200 OK
Date: Thu, 17 Apr 2014 17:09:48 GMT
Server: Apache/2.4.9 (Fedora) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4 PHP/5.5.11 mod_wsgi/3.4 Python/2.7.5
Strict-Transport-Security: max-age=15552000
X-Powered-By: PHP/5.5.11
Set-Cookie: Horde=g9hlqn8nrk6fecmo82e4h74ah4; path=/horde; domain=example.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache                                                                                                                                             
Set-Cookie: Horde=ed3vi8nejg8vep9j6fgqu9nhc3; path=/horde; domain=example.com; secure; HttpOnly                                                             
Set-Cookie: horde_secret_key=ed3vi8nejg8vep9j6fgqu9nhc3; path=/horde; domain=example.com; secure; httponly                                                  
Set-Cookie: default_horde_view=auto; expires=Sat, 17-May-2014 17:09:49 GMT; Max-Age=2592000; path=/horde; domain=example.com                                
Content-Length: 444                                                                                                                                          
Last-Modified: Thu, 17 Apr 2014 17:09:03 GMT                                                                                                                 
ETag: "b1f3d1aeddbd00bcbe0f472ae31f9ab3"
Vary: User-Agent
Content-Type: text/calendar; charset=utf-8

[username at ws1 ~]$ date -u -d @1397754543
Thu Apr 17 17:09:03 UTC 2014

#
# Modify event "TESTMOD" again in Horde/Kronolith (add a tag "Business")
#

horde=# SELECT event_id, event_title, event_location, event_modified FROM kronolith_events WHERE event_title = 'TESTMOD';
        event_id         | event_title | event_location | event_modified 
-------------------------+-------------+----------------+----------------
 hyeSZ6PdQurUlw4nXbXSXA1 | TESTMOD     | TESTLOC        |     1397754669
(1 row)

[username at ws1 ~]$ curl -I -u username --basic https://example.com/horde/rpc/calendars/username/calendar:sjl6ZxQGR3qgtDGCu_MWaA1/hyeSZ6PdQurUlw4nXbXSXA1.ics
Enter host password for user 'username':
HTTP/1.1 200 OK
Date: Thu, 17 Apr 2014 17:13:35 GMT
Server: Apache/2.4.9 (Fedora) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4 PHP/5.5.11 mod_wsgi/3.4 Python/2.7.5
Strict-Transport-Security: max-age=15552000
X-Powered-By: PHP/5.5.11
Set-Cookie: Horde=snaodgt6hn702vqbc9rgf1k9l5; path=/horde; domain=example.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: Horde=0qnmvq36j5cta78ekkrofjlm93; path=/horde; domain=example.com; secure; HttpOnly
Set-Cookie: horde_secret_key=0qnmvq36j5cta78ekkrofjlm93; path=/horde; domain=example.com; secure; httponly
Set-Cookie: default_horde_view=auto; expires=Sat, 17-May-2014 17:13:36 GMT; Max-Age=2592000; path=/horde; domain=example.com
Content-Length: 465
Last-Modified: Thu, 17 Apr 2014 17:09:03 GMT
ETag: "b1f3d1aeddbd00bcbe0f472ae31f9ab3"
Vary: User-Agent
Content-Type: text/calendar; charset=utf-8

[username at ws1 ~]$ date -u -d @1397754669
Thu Apr 17 17:11:09 UTC 2014

##
## Note that after the second modification, the event_modified is updated in kronolith_events, but the Last-Modified and ETag headers are not changed, preventing WebDAV clients from syncling the updates.
##

#
# Modify event "TESTMOD" again in Horde/Kronolith (change event_location to "TESTNEWLOC")
#

horde=# SELECT event_id, event_title, event_location, event_modified FROM kronolith_events WHERE event_title = 'TESTMOD';
        event_id         | event_title | event_location | event_modified 
-------------------------+-------------+----------------+----------------
 hyeSZ6PdQurUlw4nXbXSXA1 | TESTMOD     | TESTNEWLOC     |     1397754937
(1 row)

[username at ws1 ~]$ curl -I -u username --basic https://example.com/horde/rpc/calendars/username/calendar:sjl6ZxQGR3qgtDGCu_MWaA1/hyeSZ6PdQurUlw4nXbXSXA1.ics
Enter host password for user 'username':
HTTP/1.1 200 OK
Date: Thu, 17 Apr 2014 17:16:44 GMT
Server: Apache/2.4.9 (Fedora) OpenSSL/1.0.1e-fips mod_auth_kerb/5.4 PHP/5.5.11 mod_wsgi/3.4 Python/2.7.5
Strict-Transport-Security: max-age=15552000
X-Powered-By: PHP/5.5.11
Set-Cookie: Horde=6f532st2aip6tding162sjjt11; path=/horde; domain=example.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: Horde=6olipf0v3rmj46np0ng876pqq0; path=/horde; domain=example.com; secure; HttpOnly
Set-Cookie: horde_secret_key=6olipf0v3rmj46np0ng876pqq0; path=/horde; domain=example.com; secure; httponly
Set-Cookie: default_horde_view=auto; expires=Sat, 17-May-2014 17:16:44 GMT; Max-Age=2592000; path=/horde; domain=example.com
Content-Length: 469
Last-Modified: Thu, 17 Apr 2014 17:09:03 GMT
ETag: "b1f3d1aeddbd00bcbe0f472ae31f9ab3"
Vary: User-Agent
Content-Type: text/calendar; charset=utf-8

[username at ws1 ~]$ date -u -d @1397754937
Thu Apr 17 17:15:37 UTC 2014

##
## Note again, that after the third modification, the event_modified is updated in kronolith_events, but the Last-Modified and ETag headers are not changed from the first modification, preventing WebDAV clients from syncling the updates.
##



-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: PGP Digital Signature
URL: <http://lists.horde.org/archives/horde/attachments/20140417/36b173c7/attachment.bin>


More information about the horde mailing list