nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
27.55k stars 4.08k forks source link

The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART #7771

Closed blackandcold closed 6 years ago

blackandcold commented 6 years ago

Steps to reproduce

  1. Download 2DO App (iOS)
  2. Sync with NC
  3. Create or change Start/End date from Tast

Expected behaviour

Setting Dates and Times in NC

Actual behaviour

Sync Error, no sync possible.

"The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART"

Temporary fix

turn off syncing of due date/time in app

Server configuration

Operating system: Arch Linux

Web server: Apache 2.4

Database: MariaDB

PHP version: 7.0 from AUR

Nextcloud version: 12.0.4

Updated from an older Nextcloud/ownCloud or fresh install: Older NC 11

Where did you install Nextcloud from: Source zip

Signing status:

Signing status ``` No errors have been found. ```

Are you using encryption: no

Client configuration

Client: 2DO App

Operating system: iOS latest

Logs

Nextcloud log (data/nextcloud.log)

Nextcloud log ``` Sabre\DAV\Exception\UnsupportedMediaType: Validation error in iCalendar: The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART /srv/http/nextcloud/3rdparty/sabre/dav/lib/CalDAV/Plugin.php - line 772: Sabre\CalDAV\Plugin->validateICalendar('BEGIN VCALENDAR...', 'calendars/black/h...', false, Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response), false) [internal function] Sabre\CalDAV\Plugin->beforeWriteContent('calendars/black/h...', Object(OCA\DAV\CalDAV\CalendarObject), 'BEGIN VCALENDAR...', false) /srv/http/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array) /srv/http/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 1128: Sabre\Event\EventEmitter->emit('beforeWriteCont...', Array) /srv/http/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 513: Sabre\DAV\Server->updateFile('calendars/black/h...', 'BEGIN VCALENDAR...', NULL) [internal function] Sabre\DAV\CorePlugin->httpPut(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response)) /srv/http/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array) /srv/http/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 479: Sabre\Event\EventEmitter->emit('method PUT', Array) /srv/http/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response)) /srv/http/nextcloud/apps/dav/lib/Server.php - line 258: Sabre\DAV\Server->exec() /srv/http/nextcloud/apps/dav/appinfo/v2/remote.php - line 33: OCA\DAV\Server->exec() /srv/http/nextcloud/remote.php - line 162: require_once('/srv/http/nextc...') {main} ```

Seems to be a problem of an too old Sabre dependency. Someone opened a issue over at Sabre but they don't see the problem there: https://github.com/sabre-io/dav/issues/986

MorrisJobke commented 6 years ago

cc @georgehrke

georgehrke commented 6 years ago

Well, that error message is pretty clear: The value type (DATE or DATE-TIME) must be identical for DUE and DTSTART

From RFC 5545 Section 3.8.2.3:

This property defines the date and time before which a
      to-do is expected to be completed.  For cases where this property
      is specified in a "VTODO" calendar component that also specifies a
      "DTSTART" property, the value type of this property MUST be the
      same as the "DTSTART" property, and the value of this property
      MUST be later in time than the value of the "DTSTART" property.
      Furthermore, this property MUST be specified as a date with local
      time if and only if the "DTSTART" property is also specified as a
      date with local time.

So this is definitely a bug in the 2DO App not following RFC 5545 properly. => Please report the issue to the 2DO app developers

blackandcold commented 6 years ago

Thanks! I just changed to another DAV app... they want 29€ for that broken implementation. Standard impl works fine now.