New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 747315 link

Starred by 3 users

Issue metadata

Status: Duplicate
Merged: issue webrtc:8102
Owner: ----
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Connect to TURN servers through HTTP proxy

Reported by balwant....@gmail.com, Jul 21 2017

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

Example URL:
https://apollo-lt.bbcollab.com/collab/ui/session/guest/15f36c3c984a4c9d9e8e1e6540891445

Steps to reproduce the problem:
1. Enter name
2. Join the session

What is the expected behavior?
WebRTC connection should establish with media server

What went wrong?
Corporate networks offer connectivity only via web proxy and the DNS servers only return results for servers on the internal network. WebRTC connection is not establishing via TURN server on port 443

Did this work before? N/A 

Chrome version: 59.0.3071.115  Channel: stable
OS Version: 10
Flash Version: Shockwave Flash 26.0 r0
 
chrome_debug.log
951 KB View Download
Also attaching Net-Internals file
chrome-net-export-log.json
5.8 MB View Download

Comment 2 by mmenke@chromium.org, Jul 21 2017

Components: -Internals>Network Blink>WebRTC>Network
Labels: Needs-Milestone
We are able to connect WebRTC connection via proxy using TLS. But the problem now is, Chrome not trying to connect to PROXY server until TURN hostname is resolved, we have to add TURN IP entry in HOST file to make it work but that is not a feasible solution. This DNS lookup issue is only happening in case of TLS, in normal case Chrome is able to connect to PROXY server, but proxy is dropping the packets from TURN server.
Cc: kkaluri@chromium.org
Labels: TE-NeedsTriageFromMTV
Unable to triage this issue from TE-End, adding "TE-NeedsTriageFromMTV" label for further triage.
Any update on this?
Ping for triaging.
Cc: pauljensen@chromium.org mge...@chromium.org
Components: Internals>Network>Library
Labels: Needs-Feedback
WebRTC ultimately should be using "GetBrowserContext()->GetResourceContext()->GetHostResolver()". Will this end up going through the HTTP proxy? What's the easiest way to test/verify this? CCing some people who may know.

Also, question for the reporter: when you say "the issue is only happening in case of TLS", do you mean a TLS connection to the TURN server, or to the HTTP proxy?
TLS connection to the TURN server using TURNS URLS
Project Member

Comment 10 by sheriffbot@chromium.org, Oct 12 2017

Cc: deadbeef@chromium.org
Labels: -Needs-Feedback
Thank you for providing more feedback. Adding requester "deadbeef@chromium.org" to the cc list and removing "Needs-Feedback" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Components: -Internals>Network>Library Internals>Network
> WebRTC ultimately should be using "GetBrowserContext()->GetResourceContext()->GetHostResolver()".
> Will this end up going through the HTTP proxy? What's the easiest way to test/verify this? CCing some people who may know.

I don't believe the net::HostResolver will go through an HTTP proxy.  HTTP proxy resolution should be done prior to resolving host names.
I'm a bit confused now. If net::HostResolver doesn't go through an HTTP proxy, what host resolver does? And does webrtc need to do something to trigger HTTP proxy resolution? Does this normally happen automatically when we try to send packets?
Cc: asanka@chromium.org
> I'm a bit confused now. If net::HostResolver doesn't go through an HTTP proxy, 
> what host resolver does?

net::HostResolver resolves hosts.  For normal net::UrlRequests, if proxy resolution determines a proxy should be used, then the net::HostResolver will be used to resolve the host of the proxy (not of the intended destination), and the proxy will handle communication with the intended destination (including, if necessary, host resolution).

> And does webrtc need to do something to trigger HTTP proxy resolution?
> Does this normally happen automatically when we try to send packets?

WebRTC uses ProxyResolvingClientSocket to tunnel through proxies.

+asanka@ who fixed the case where the proxy needs auth in  Issue 439560  in January.
Labels: Needs-Feedback
Ok, I now see that if the net::HostResolver fails, webrtc will fall back to creating a socket that connects via hostname, which is expected to do what you describe: https://cs.chromium.org/chromium/src/third_party/webrtc/p2p/base/turnport.cc?q=turnport.cc&dr&l=715

And it looks like ProxyResolvingClientSocket is used for TURN TLS sockets.

I tested this by hacking chromium/webrtc to always fail the initial address resolution, and only use TLS TURN servers, and it seems to be working with the link you provide (resolving the address through the proxy server). Is there any information I could be missing? Have you tried testing with a Canary build? Could be it an issue with the proxy server itself?
Mergedinto: 8102
Status: Duplicate (was: Unconfirmed)
I believe this was due to a webrtc bug that was fixed. Especially given the fact that you said it only occurs for TURN over TLS, which is a property of the webrtc bug. See https://bugs.chromium.org/p/webrtc/issues/detail?id=8102
Mergedinto: -8102 webrtc:8102

Sign in to add a comment