Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: SSRF proxy file descriptor leak in concurrent requests #13108

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ZuzooVn
Copy link
Contributor

@ZuzooVn ZuzooVn commented Jan 29, 2025

Summary

This PR addresses the [Errno 9] File descriptor was closed in another greenlet error that occurs when using the SSRF proxy in concurrent workflows (e.g., greenlets, threads).

Changes:

  1. Dynamic Transport Initialization

    • Fresh httpx.HTTPTransport instances are now created for each request when SSRF_PROXY_HTTP_URL and SSRF_PROXY_HTTPS_URL are configured.
    • Removes the global proxy_mounts variable to prevent shared transports across requests.
  2. Concurrency Safety

    • Fixes race conditions caused by reusing the same transports in asynchronous/greenlet contexts.

Checklist

Important

Please review the checklist below before submitting your pull request.

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods

@dosubot dosubot bot added size:S This PR changes 10-29 lines, ignoring generated files. 🐞 bug Something isn't working labels Jan 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working size:S This PR changes 10-29 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant