You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make remote and source dispatch paths safe, bounded, and consistent before the GeoTIFF-focused release.
Remote reads and source routing are high-risk because a small dispatch mistake can bypass SSRF defenses, fetch unbounded data, or route a URL into the wrong backend.
Scope
HTTP/HTTPS source classification.
fsspec/cloud source classification.
File-like and local path behavior.
HTTP private-host rejection and DNS-rebinding pinning.
Bounded metadata, tile, strip, cloud, and coalesced-range reads.
Consistent routing across eager, dask, GPU fallback, VRT source reads, and sidecar discovery.
Known Priority Issue
Several paths use case-sensitive checks like:
source.startswith(('http://', 'https://'))
URL schemes are case-insensitive. HTTP://... and HTTPS://... should still route through _HTTPSource and receive SSRF/DNS-pinning protections, not fall through to fsspec or local handling.
Work Items
Centralize source scheme classification using urlparse(source).scheme.lower().
Acceptance criteria — case-insensitive dispatch, scheme-agnostic SSRF protections, bounded fsspec/dask remote reads, exception-safe cleanup, and advanced-tier documentation of remote behavior — are all in place.
Activity
brendancol commentedon May 25, 2026
Closing as complete. The work items for this epic were delivered across several cross-cutting PRs rather than dedicated sub-issues:
Scheme classification / SSRF casing:
urlparse(source).scheme.lower()inxrspatial/geotiff/_sources.py, made_is_fsspec_uricase-insensitive)test_http_scheme_case_2321.py,test_uppercase_scheme_ssrf_2323.py,test_ssrf_hardening_1664.pyBounded remote reads:
test_cloud_read_byte_limit_1928.py,test_max_cloud_bytes_dispatcher_silent_drop_2026_05_15.py,test_open_geotiff_max_cloud_bytes_annot_2106.py,test_sidecar_max_cloud_bytes_2121.pytest_http_range_validation_1735.py,test_http_read_all_bounded_2051.py,test_http_cog_range_contract_2286.pySource cleanup:
read_all()so failed reads still release the sourceAcceptance criteria — case-insensitive dispatch, scheme-agnostic SSRF protections, bounded fsspec/dask remote reads, exception-safe cleanup, and
advanced-tier documentation of remote behavior — are all in place.Polish release_gate_geotiff.rst for maintainer use (#2345 PR 3, closes …
Draft GeoTIFF release-notes section in CHANGELOG (#2345 PR 5) (#2384)