pimutils / pimutils/vdirsyncer

Vdirsyncer does not work with iPhone hotspot on macOS

Open
#1,148 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Everything works as expected on normal Wifi but fails when using a hotspot from a mobile phone.

I assume it times out, as there is a long pause between Sending request... and the error output.

vdirsyncer, version 0.19.3
Python version 3.12.7
macOS Sequoia 15.1

vdirsyncer -vdebug sync output:

debug: Fetching value for password.fetch with command strategy.
debug: Found cached value for ['command', ...].
Syncing calendar_posteo
debug: ====================
debug: PROPFIND 
debug: {'User-Agent': 'vdirsyncer/0.19.3', 'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '1'}
debug: b'<?xml version="1.0" encoding="utf-8" ?>\n            <propfind xmlns="DAV:">\n                <prop>\n                    <resourcetype/>\n                    <getcontenttype/>\n                    <getetag/>\n                </prop>\n            </propfind>\n            '
debug: Sending request...
Syncing contacts_posteo
debug: ====================
debug: PROPFIND 
debug: {'User-Agent': 'vdirsyncer/0.19.3', 'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '1'}
debug: b'<?xml version="1.0" encoding="utf-8" ?>\n            <propfind xmlns="DAV:">\n                <prop>\n                    <resourcetype/>\n                    <getcontenttype/>\n                    <getetag/>\n                </prop>\n            </propfind>\n            '
debug: Sending request...
error: Unknown error occurred for calendar_posteo: Cannot connect to host posteo.de:8443 ssl:default [None]
error: Use `-vdebug` to see the full traceback.
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/cli/tasks.py", line 74, in sync_collection
debug:     await sync.sync(
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/sync/__init__.py", line 149, in sync
debug:     a_nonempty = await a_info.prepare_new_status()
debug:                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/sync/__init__.py", line 55, in prepare_new_status
debug:     async for href, etag in self.storage.list():  # type: ignore[attr-defined]
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/storage/dav.py", line 853, in list
debug:     async for href, etag in super().list():
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/storage/dav.py", line 672, in list
debug:     response = await self.session.request(
debug:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/storage/dav.py", line 413, in request
debug:     return await http.request(method, url, session=session, **more)
debug:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/dfnrv7dckr3km3vi9lh3k1fpqdkprlx3-python3.12-vdirsyncer-0.19.3/lib/python3.12/site-packages/vdirsyncer/http.py", line 184, in request
debug:     response = await session.request(method, url, headers=headers, **kwargs)
debug:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/xkaby9wz7izp9rgqf29f4fqcf0hlslv0-python3.12-aiohttp-3.10.8/lib/python3.12/site-packages/aiohttp/client.py", line 659, in _request
debug:     conn = await self._connector.connect(
debug:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/xkaby9wz7izp9rgqf29f4fqcf0hlslv0-python3.12-aiohttp-3.10.8/lib/python3.12/site-packages/aiohttp/connector.py", line 557, in connect
debug:     proto = await self._create_connection(req, traces, timeout)
debug:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/xkaby9wz7izp9rgqf29f4fqcf0hlslv0-python3.12-aiohttp-3.10.8/lib/python3.12/site-packages/aiohttp/connector.py", line 1002, in _create_connection
debug:     _, proto = await self._create_direct_connection(req, traces, timeout)
debug:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
debug:   File "/nix/store/xkaby9wz7izp9rgqf29f4fqcf0hlslv0-python3.12-aiohttp-3.10.8/lib/python3.12/site-packages/aiohttp/connector.py", line 1293, in _create_direct_connection
debug:     raise ClientConnectorError(req.connection_key, exc) from exc

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

The traceback leads through vdirsyncer/storage/dav.py and vdirsyncer/http.py into aiohttp's connection setup. Reproduce the PROPFIND failure on macOS with normal Wi-Fi and an iPhone hotspot, then compare connection and timeout behavior. Done means identifying a reproducible cause and adding a focused fix or regression test for hotspot connections.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.