Inspector proxy: Rewrite 127.0.0.1 to localhost in source map URLs to support IPv4->IPv6 tunnels#44092
Closed
robhogan wants to merge 2 commits into
Closed
Inspector proxy: Rewrite 127.0.0.1 to localhost in source map URLs to support IPv4->IPv6 tunnels#44092robhogan wants to merge 2 commits into
robhogan wants to merge 2 commits into
Conversation
…tion (facebook#44086) Summary: When a debugger frontend is connected to inspector-proxy via another proxy or tunnel that times out on idle (such as [VS Code's remote tunnel](https://github.com/microsoft/vscode/blob/main/src/vs/platform/tunnel/node/tunnelService.ts)), the connection between proxy and debugger may be dropped. In addition, when the connection is dropped without a closing handshake, the proxy does *not* detect the disconnection - no disconnect is logged to the reporter and no notifications are sent to any connected devices. This adds a mechanism using the WebSocket-standard `ping` and `pong` frames to: 1. Keep the connection alive 2. Detect when the debugger has gone away Note that as all WebSocket clients already **must** reply to a ping with a pong, this is non-breaking for compliant implementations: https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.2 Changelog: [General][Added] Inspector proxy: Add ping/pong keepalive to debugger connections. Reviewed By: hoxyq Differential Revision: D56069185
… support IPv4->IPv6 tunnels Summary: In a setup where a device retrieves a bundle from `http://127.0.0.1:8081`, but this is tunnelled to a remote host without an IPv6 stack (eg, FB dev servers), the host running the inspector-proxy will fail to fetch source or source maps from 127.0.0.1 despite typically being on the same host (indeed, process) as Metro. This causes a surprising inconsistency where using a bundler URL of `localhost` from the device results in source maps being inlined into `Debugger.scriptParsed`, but using a bundler URL of `127.0.0.1` causes inspector-proxy to fall back to preserving URLs, which are typically fetched lazily by CDT later. This should be unnecessary once we've implemented CDP `Network.loadNetworkResource` and removed `Debugger.scriptParsed` rewriting, but for now it brings IPv6 tunnelled servers in line with local servers. Changelog: [General][Changed] Inspector proxy: Rewrite 127.0.0.1 to localhost in source map URLs for better IPv4->IPv6 tunnelling support. Differential Revision: D56138742
Contributor
|
This pull request was exported from Phabricator. Differential Revision: D56138742 |
Contributor
|
This pull request has been merged in a52bd7d. |
|
This pull request was successfully merged by @robhogan in a52bd7d. When will my fix make it into a release? | How to file a pick request? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
In a setup where a device retrieves a bundle from
http://127.0.0.1:8081, but this is tunnelled to a remote host with only an IPv6 stack (eg, FB dev servers), the host running the inspector-proxy will fail to fetch source or source maps from 127.0.0.1 despite typically being on the same host (indeed, process) as Metro.This causes a surprising inconsistency where using a bundler URL of
localhostfrom the device results in source maps being inlined intoDebugger.scriptParsed, but using a bundler URL of127.0.0.1causes inspector-proxy to fall back to preserving URLs, which are typically fetched lazily by CDT later.This should be unnecessary once we've implemented CDP
Network.loadNetworkResourceand removedDebugger.scriptParsedrewriting, but for now it brings IPv6 tunnelled servers in line with local servers.Changelog:
[General][Changed] Inspector proxy: Rewrite 127.0.0.1 to localhost in source map URLs for better IPv4->IPv6 tunnelling support.
Differential Revision: D56138742