ZIm/crates
Finn Evers 3a1bd38503
reqwest_client: Only register proxies with valid proxy URIs (#27773)
Closes #27641

This PR fixes invalid proxy URIs being registered despite the URI not
being a valid proxy URI.

Whilst investigating #27641 , I noticed that currently any proxy URI
passed to `RequestClient::proxy_and_user_agent` will be assigned to the
created client, even if the URI is not a valid proxy URI. Given a test
as an example:

We create an URI here and pass it as a proxy to
`ReqwestClient::proxy_and_user_agent`:

https://github.com/zed-industries/zed/blob/main/crates/reqwest_client/src/reqwest_client.rs#L272-L273

In `ReqwestClient::proxy_and_user_agent`we take the proxy parameter here

9b40770e9f/crates/reqwest_client/src/reqwest_client.rs (L46)

and set it unconditionally here:

9b40770e9f/crates/reqwest_client/src/reqwest_client.rs (L62)

, not considering at all whether the proxy was successfully created
above. Concluding, we currently do not actually check whether a proxy
was successfully created, but rather whether an URI is equal to itself,
which trivially holds. The existing test for a malformed proxy URI


9b40770e9f/crates/reqwest_client/src/reqwest_client.rs (L293-L297)

does not check whether invalid proxies cause an error, but rather checks
whether `http::Uri::from_static` panics on an invalid URI, [which it
does as
documented](https://docs.rs/http/latest/http/uri/struct.Uri.html#panics).
Thus, the tests currently do not really check anything proxy-related and
invalid proxies are assigned as valid proxies.

---

This PR fixes the behaviour by considering whether the proxy was
actually properly parsed and only assigning it if that is the case.
Furthermore, it improves logging in case of errors so issues like the
linked one are easier to debug (for the linked issue, the log will now
include that the proxy schema is not supported in the logs).
Lastly, it also updates the test for a malformed proxy URI. The test now
actually checks that malformed proxy URIs are not registered for the
client rather than testing the `http` crate.

The update also initially caused the [test for a `socks4a`
proxy](9b40770e9f/crates/reqwest_client/src/reqwest_client.rs (L280C1-L282C50))
to fail. This happened because the reqwest-library introduced supports
for `socks4a` proxies in [version
0.12.13](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md#v01213).
Thus, this PR includes a bump of the reqwest library to add proper
support for socks4a proxies.

Release Notes:

- Added support for socks4a proxies.

---------

Co-authored-by: Peter Tripp <peter@zed.dev>
2025-04-28 11:12:16 -04:00
..
activity_indicator Git activity indicator (#28204) 2025-04-07 18:10:01 +00:00
agent agent: Simplify elements of the thread design (#29533) 2025-04-28 11:36:06 -03:00
anthropic anthropic: Remove list of supported countries (#29346) 2025-04-24 15:17:33 +00:00
askpass askpass: Shell escape Zed path in askpass script (#29447) 2025-04-25 21:16:43 +00:00
assets Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant agent: Bring title editing back to text threads (#29425) 2025-04-28 09:09:19 -03:00
assistant_context_editor agent: Bring title editing back to text threads (#29425) 2025-04-28 09:09:19 -03:00
assistant_settings VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
assistant_slash_command Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_slash_commands zed: Remove unnecessary clones (#29513) 2025-04-27 19:23:37 -07:00
assistant_tool agent: Improve MCP tools compatibility with Gemini models (#29411) 2025-04-25 15:14:16 +02:00
assistant_tools agent tools: Make read_file.end_line inclusive (#29524) 2025-04-28 09:37:13 +00:00
audio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
auto_update VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
auto_update_helper Update block diagnostics (#28006) 2025-04-15 09:35:13 -06:00
auto_update_ui Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
aws_http_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
bedrock Default to fast model for thread summaries and titles + don't include system prompt / context / thinking segments (#29102) 2025-04-19 23:26:29 +00:00
breadcrumbs breadcrumbs: Update multibuffer to match singleton (#28267) 2025-04-07 20:26:55 +00:00
buffer_diff Fix diff recalculation hang (#28377) 2025-04-10 22:58:41 +00:00
call VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
channel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
cli Try to weak-link ScreenCaptureKit always (#28585) 2025-04-11 17:38:14 +00:00
client reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
clock Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
collab Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
collab_ui Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
collections Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette Avoid unnecessary DB writes (#29417) 2025-04-25 17:41:49 +03:00
command_palette_hooks Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
component Add example agent tool preview (#28984) 2025-04-17 17:29:19 +00:00
component_preview Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
context_server agent: Render diffs for the edit file tool (#29234) 2025-04-23 15:43:33 -03:00
context_server_settings VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
copilot Default to fast model for thread summaries and titles + don't include system prompt / context / thinking segments (#29102) 2025-04-19 23:26:29 +00:00
credentials_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
dap debugger/tasks: Remove TaskType enum (#29208) 2025-04-26 01:44:56 +02:00
dap_adapters debugger/tasks: Remove TaskType enum (#29208) 2025-04-26 01:44:56 +02:00
db Avoid unnecessary DB writes (#29417) 2025-04-25 17:41:49 +03:00
debugger_tools Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
debugger_ui Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
deepseek Default to fast model for thread summaries and titles + don't include system prompt / context / thinking segments (#29102) 2025-04-19 23:26:29 +00:00
diagnostics Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
docs_preprocessor Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
editor editor: Show tooltips on breakpoints (#29523) 2025-04-28 12:28:13 +02:00
eval reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
extension extension: Use heck instead of convert_case for snake_case check (#28608) 2025-04-11 22:01:25 +00:00
extension_api zed_extension_api: Release v0.4.0 (#29237) 2025-04-22 21:07:52 +00:00
extension_cli Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extension_host zed: Remove unnecessary clones (#29513) 2025-04-27 19:23:37 -07:00
extensions_ui Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
feature_flags language_models: Remove language-models feature flag (#29416) 2025-04-25 14:18:48 +00:00
feedback feedback: Update issue template URL (#28790) 2025-04-15 21:36:30 -04:00
file_finder VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
file_icons Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fs git: Use the CLI for loading commit SHAs and details (#29351) 2025-04-25 14:46:02 -04:00
fsevent Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fuzzy Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
git git: Use the CLI for loading commit SHAs and details (#29351) 2025-04-25 14:46:02 -04:00
git_hosting_providers VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
git_ui Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
go_to_line VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
google_ai Fix error when deserializing Gemini streams (#29470) 2025-04-26 11:51:04 +00:00
gpui reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
gpui_macros Rename regex search tool to grep and accept an include glob pattern (#29100) 2025-04-20 00:53:30 +00:00
gpui_tokio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
html_to_markdown Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
http_client reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
http_client_tls Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
icons agent: Support pasting images as context (#29177) 2025-04-22 09:01:01 +00:00
image_viewer Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
indexed_docs Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
inline_completion Show edit predictions usage in status bar menu (#29046) 2025-04-18 14:15:19 +00:00
inline_completion_button inline_completion_button: Show the usage limits returned from the API (#29239) 2025-04-22 21:16:54 +00:00
install_cli install_cli: Show feedback when installing CLI from welcome screen (#28532) 2025-04-11 01:47:40 +05:30
journal VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
language debugger/tasks: Remove TaskType enum (#29208) 2025-04-26 01:44:56 +02:00
language_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_model Treat invalid JSON in tool calls as failed tool calls (#29375) 2025-04-24 16:54:27 -04:00
language_model_selector feature_flags: Add FeatureFlag suffix to feature flag types (#29392) 2025-04-25 04:07:49 +00:00
language_models language_models: Remove language-models feature flag (#29416) 2025-04-25 14:18:48 +00:00
language_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_tools Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
languages debugger/tasks: Remove TaskType enum (#29208) 2025-04-26 01:44:56 +02:00
livekit_api Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
livekit_client Fix deafening new participants (#28330) 2025-04-08 16:01:27 +00:00
lmstudio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
lsp debugger: Add support for inline value hints (#28656) 2025-04-23 22:27:27 +00:00
markdown Use u64 instead of usize in ElementId (#29493) 2025-04-27 02:31:25 +00:00
markdown_preview Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
media chore: Make objc a workspace level crate (#28258) 2025-04-07 18:46:09 +00:00
menu Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
migrator agent: Improve initial file search quality (#29317) 2025-04-23 21:24:41 -03:00
mistral Switch from open-codestral-mamba to codestral-latest for default mistral model (#29104) 2025-04-19 23:29:36 +00:00
multi_buffer Show diagnostic codes (#29296) 2025-04-23 20:51:01 -06:00
node_runtime reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
notifications Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
ollama ollama: Fix build with default features (#29502) 2025-04-28 09:58:10 -04:00
open_ai open_ai: Remove list of supported countries (#29347) 2025-04-24 14:55:37 +00:00
outline Highlight merge conflicts and provide for resolving them (#28065) 2025-04-23 12:38:46 -04:00
outline_panel VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
paths VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
picker agent: Refine language model selector (#28597) 2025-04-11 23:02:50 +00:00
prettier Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
project debugger: Fix new session modal not having worktree scenarios (#29453) 2025-04-26 00:16:21 +00:00
project_panel Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
project_symbols Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
prompt_store Fix agent rules files for remote project by loading via buffer (#29440) 2025-04-25 20:06:40 +00:00
proto debugger/tasks: Remove TaskType enum (#29208) 2025-04-26 01:44:56 +02:00
recent_projects VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
refineable Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
release_channel Fix handling of --system-specs argument so it happens before Application::new (#29240) 2025-04-22 21:32:32 +00:00
remote Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
remote_server reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
repl Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
reqwest_client reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
rich_text Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rope chore: Bump Rust version to 1.86 (#28021) 2025-04-03 23:32:50 +02:00
rpc rpc: Remove llm module in favor of zed_llm_client (#28900) 2025-04-16 20:22:44 +00:00
rules_library Rename "Prompt Library" to "Rules Library" (#29349) 2025-04-24 16:42:06 -03:00
schema_generator Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
search Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
semantic_index Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
semantic_version Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
session Avoid unnecessary DB writes (#29417) 2025-04-25 17:41:49 +03:00
settings Refactor markdown formatting utilities to avoid building intermediate strings (#29511) 2025-04-27 19:04:51 +00:00
settings_ui Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
snippet Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippet_provider snippet_provider: Use proper casing of VsCode in identifiers (#29038) 2025-04-18 12:11:54 +00:00
snippets_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sqlez Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sqlez_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
story Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
storybook Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
streaming_diff Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sum_tree Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven_api Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
tab_switcher Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
task debugger: Fix new session modal not having worktree scenarios (#29453) 2025-04-26 00:16:21 +00:00
tasks_ui debugger/tasks: Remove TaskType enum (#29208) 2025-04-26 01:44:56 +02:00
telemetry Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
telemetry_events Add new action to run agent eval (#29158) 2025-04-21 21:30:21 -07:00
terminal Terminal in debugger (#29328) 2025-04-24 14:26:09 -06:00
terminal_view Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
text format: Re-implement support for formatting with code actions that contain commands (#28392) 2025-04-09 01:53:54 +00:00
theme VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
theme_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_importer theme_importer: Handle comma-separated token scopes (#27740) 2025-04-23 14:06:58 +00:00
theme_selector theme_selector: Don't select last theme when fuzzy searching (#28278) 2025-04-28 14:29:17 +00:00
time_format Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
title_bar feature_flags: Add FeatureFlag suffix to feature flag types (#29392) 2025-04-25 04:07:49 +00:00
toolchain_selector toolchain: Respect currently focused file when querying toolchains (#28875) 2025-04-16 19:05:57 +02:00
ui ui: Add inline_code method to label (#29306) 2025-04-23 19:27:56 -03:00
ui_input Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
ui_macros Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
ui_prompt markdown: Don't retain MarkdownStyle in favor of using MarkdownElement directly (#28255) 2025-04-07 19:03:24 +00:00
util Refactor markdown formatting utilities to avoid building intermediate strings (#29511) 2025-04-27 19:04:51 +00:00
util_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
vim Honor default_mode in NormalBefore (#29518) 2025-04-28 08:51:06 -06:00
vim_mode_setting VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00
web_search agent: Expose web search tool to beta users (#29273) 2025-04-23 15:30:20 +00:00
web_search_providers agent: Expose web search tool to beta users (#29273) 2025-04-23 15:30:20 +00:00
welcome Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
workspace Add searchable global tab switcher (#28047) 2025-04-28 09:21:27 +00:00
worktree Fix agent rules files for remote project by loading via buffer (#29440) 2025-04-25 20:06:40 +00:00
zed reqwest_client: Only register proxies with valid proxy URIs (#27773) 2025-04-28 11:12:16 -04:00
zed_actions Rename "Prompt Library" to "Rules Library" (#29349) 2025-04-24 16:42:06 -03:00
zeta Use u64 instead of usize in ElementId (#29493) 2025-04-27 02:31:25 +00:00
zlog zlog: Fix incorrect assumption with filters (#29428) 2025-04-25 16:11:58 +00:00
zlog_settings VSCode Settings import (#29018) 2025-04-23 20:54:09 +00:00