http.Client.Timeout is ignored by redirect-aware requests
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 68/100
Research direction
Start with roundTripWithOptionalFollowRedirect and trace how redirect-aware helpers obtain and invoke the configured http.Client or transport. Reproduce the issue with a custom RoundTripper that waits on req.Context().Done() and a 10 ms client timeout. Done means the first redirect response remains inspectable while requests through WithHTTPClient or WithTimeout return at the configured deadline.
Written by the indexing model from the issue text.
Description
Bug
Requests made through the redirect-aware endpoint helpers do not honor the timeout configured on the client's http.Client.
roundTripWithOptionalFollowRedirect calls the configured transport directly. That preserves the ability to inspect 301/302 responses, but bypasses http.Client.Do, which is where http.Client.Timeout is applied. This affects helpers such as workflow log downloads, artifact downloads, archive links, and other callers of that helper when WithHTTPClient or WithTimeout is used.
Reproduction
Use a custom RoundTripper that waits for req.Context().Done() and a client timeout of 10 ms. On current master, the helper invokes the transport with the caller context and waits for the transport's full delay instead of returning a deadline error. The same request through the client's no-redirect http.Client returns context deadline exceeded at the configured timeout.
Expected behavior
Redirect-aware requests should preserve the existing no-follow behavior for the first response while honoring the configured HTTP client timeout.
- Dominant language
- Go
- Stars
- 11.3k
- Forks
- 2.5k
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 41
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from google/go-github
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Add actions policies endpointsPossibly taken @jndz2 claimed this 8 days ago. Open
google/go-github#4583 · 2 comments · 1 reaction · 1 assignee ·
Maintainers usually reply within 1 day
-
Add Copilot content exclusion set/get enterprise and org set endpointsPossibly taken @Tens1des claimed this 22 days ago. Open
google/go-github#4526 · 1 comment · 1 reaction · 1 assignee ·
Maintainers usually reply within 1 day
All issues in google/go-github
Similar issues
-
automation models
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
txn2/mcp-data-platform#1984 ·
Maintainers usually reply within 1 day
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
kind/docs prio/P2
Difficulty 1/5 Under an hour Newbie friendliness 95/100
agent-substrate/substrate#1986 ·
Maintainers usually reply within 1 day