pimutils / pimutils/vdirsyncer

vdirsyncer puts two PRODIDs in a singlefile and then pushes them back to server

Open
#763 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: bug
Dominant language
Python
Stars
1.9k
Forks
185
Avg merge
11h 49m
Merged PRs (30d)
1

Description

I am running vdirsyncer 0.16.7 on Python 3.6.5 on Gentoo with a Radicale 2.1.10 server. On my server, there are a number of calendar events in a single calendar, created with a number of different pieces of software; hence, across the events, there are a few different PRODID values. When vdirsyncer synchronizes a pair one side of which is the server via caldav and the other side of which is a singlefile collection, if a new event has been added on the server, when vdirsyncer fetches the event and adds it to the singlefile, if the PRODID is different to the one present in the file, it adds it. This results in a single .ics file with two PRODID rows, which vdirsyncer then tries to push back to the server in every event; the server, in turn, rejects all the events because they have two PRODIDs. I then have to edit the singlefile and delete one of the PRODIDs (it doesn’t seem to matter which), after which vdirsyncer no longer tries to push all the events. Even if the PRODID in the singlefile is different than the PRODID on the server for a particular event, vdirsyncer doesn’t seem to try to replace it (which is good, since it’s obviously wrong for most of the events no matter what value it’s set to); it’s only if a second one appears in the file that vdirsyncer tries to push all the events up to the server.

I actually don’t even want vdirsyncer to push changes from the singlefile to the server ever, but, well, GH-453 isn’t done yet, so I don’t quite have that option (except for the hacky way). But some people probably do want this, so this bug would affect them.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how the caldav collection adds fetched events to the singlefile collection and how PRODID values are serialized. Reproduce the case with multiple PRODID rows, then verify that synchronization no longer creates a file the server rejects or repeatedly pushes unchanged events.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.