Skip to content

URLSession timeoutIntervalForResource=30 in LLMAPITransport silently caps user timeout overrides #253

Description

@chirag127

Problem

LLMAPITransport pins timeoutIntervalForResource = 30 on its URLSessionConfiguration, which is a session-level hard cap with no per-request override, so the README-documented transcription_timeout_seconds / post_processing_timeout_seconds / context_request_timeout_seconds defaults are silently ignored for any transfer >30s.

Read cite

Sources/LLMAPITransport.swift:13configuration.timeoutIntervalForResource = 30

Steps

  1. Configure a slow local model per README "Configure longer timeouts for local models":
    defaults write com.zachlatta.freeflow transcription_timeout_seconds -float 120
  2. Point transcription at a slow local Whisper endpoint whose upload+transcribe exceeds 30s.
  3. Dictate a long clip.

Expected

Request allowed to run up to 120s per README + TranscriptionService.transcriptionTimeoutSeconds (TranscriptionService.swift:12-15).

Actual

URLSession aborts the resource at 30s regardless of the user override; per-request request.timeoutInterval = 120 does not override timeoutIntervalForResource (Apple: this property has no per-request equivalent).

Environment

FreeFlow 1.1.0 (CHANGELOG), macOS 13.0+ target (Makefile -target arm64-apple-macosx13.0).

Fix: derive the session's timeoutIntervalForResource from the same UserDefaults keys, or expose a per-call session factory.

Thanks for maintaining zachlatta/freeflow!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions