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
fix: close HTTP response in pipes() and update docs
Code fix:
- pipes(): initialize response=None before try-block and add
finally: response.close() to guarantee the connection is returned
to the session pool in every code path (auth errors, JSON decode
failures, unexpected exceptions)
Documentation fixes:
- Update test count from 234 to 249 across README, TESTING, CONTRIBUTING,
and PULL_REQUEST_TEMPLATE (all missed or newly identified references)
- Fix SECURITY.md Supported Versions table (malformed Markdown — rows
were fused onto one line, breaking GitHub rendering)
- Add SYNC_PROVIDER_ICONS valve to README Advanced configuration table
- Correct HTTP 429 troubleshooting tip: MAX_RETRIES does not retry HTTP
errors — it only retries on network timeouts and connection failures
- Update bug_report.yml Pipe Version placeholder from 1.0.0 to 1.2.0
- Clarify TESTING.md §9.1 FALLBACK_MODELS test: make explicit that the
primary model is the first element in the models array
- Replace non-existent reasoning model example (claude-3.7-sonnet:thinking)
with deepseek/deepseek-r1 in TESTING.md §3.2
- Add pipes() response-close fix entry to CHANGELOG [Unreleased]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
-**Icon sync: correct prefixed model IDs** — `_sync_model_icons()` now discovers the pipe's `function_id` via `type(self).__module__` and writes DB records with the full prefixed ID (e.g. `openrouter_pipe.openai/gpt-4o`) matching what Open WebUI's frontend requests at `/models/model/profile/image`
17
17
-**Streaming status event** — the "done" status event is now correctly emitted at the end of streaming responses (async generator wrapper replaces sync generator that could not `await`)
18
18
-**Dead provider-icon code removed** — `info.meta.profile_image_url` was included in model dicts returned by `pipes()` but Open WebUI ignores all fields except `id` and `name`; the field has been removed in favour of the new DB-sync approach
19
+
-**`pipes()` response always closed** — added `finally: response.close()` to guarantee HTTP connections are returned to the session pool in all code paths (auth errors, JSON decode failures, unexpected exceptions)
You're sending too many requests. Wait a moment and try again. Consider setting `MAX_RETRIES`to `2` or higher for automatic backoff.
278
+
You're sending too many requests. Wait a moment and try again, or consider upgrading your OpenRouter plan. Note: `MAX_RETRIES`only retries on network timeouts and connection failures — HTTP rate limit errors are returned immediately without retry.
Copy file name to clipboardExpand all lines: TESTING.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ Manual checklist to verify every Pipe feature before release.
12
12
python test_pipe.py
13
13
```
14
14
15
-
Must print **234/234 passed**. If any test fails, **do not release**.
15
+
Must print **249/249 passed**. If any test fails, **do not release**.
16
16
17
17
---
18
18
@@ -41,7 +41,7 @@ Must print **234/234 passed**. If any test fails, **do not release**.
41
41
| # | Action | Expected result |
42
42
|---|--------|-----------------|
43
43
| 3.1 | Select a model (e.g. `openai/gpt-4o`), type "Hello" with `stream: false`| The response appears all at once, correct text |
44
-
| 3.2 | Select a reasoning model (e.g. `anthropic/claude-3.7-sonnet:thinking`) | The response contains `<think>...</think>` blocks followed by content |
44
+
| 3.2 | Select a reasoning model (e.g. `deepseek/deepseek-r1`) | The response contains `<think>...</think>` blocks followed by content |
45
45
46
46
---
47
47
@@ -105,7 +105,7 @@ Must print **234/234 passed**. If any test fails, **do not release**.
| 9.1 |While using `openai/gpt-4o` as primary, set `FALLBACK_MODELS = anthropic/claude-3.5-sonnet`| payload contains`"models": ["openai/gpt-4o", "anthropic/claude-3.5-sonnet"]` (primary model first, then fallbacks)|
109
109
| 9.2 | Leave `FALLBACK_MODELS` empty | No `models` field in payload |
110
110
111
111
---
@@ -191,7 +191,7 @@ Must print **234/234 passed**. If any test fails, **do not release**.
0 commit comments