Bug 18628: Pass the client_ip parameter in the JavaScript proxy as well.

This commit is contained in:
David Fifield 2017-08-15 18:15:48 -07:00
parent 0c7ddeb1d0
commit eca7ebb265
2 changed files with 16 additions and 3 deletions

View file

@ -93,7 +93,20 @@ class ProxyPair
# Assumes WebRTC datachannel is connected. # Assumes WebRTC datachannel is connected.
connectRelay: => connectRelay: =>
dbg 'Connecting to relay...' dbg 'Connecting to relay...'
@relay = makeWebsocket @relayAddr
# Get a remote IP address from the PeerConnection, if possible. Add it to
# the WebSocket URL's query string if available.
# MDN marks remoteDescription as "experimental". However the other two
# options, currentRemoteDescription and pendingRemoteDescription, which
# are not marked experimental, were undefined when I tried them in Firefox
# 52.2.0.
# https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/remoteDescription
peer_ip = Parse.ipFromSDP(@pc.remoteDescription?.sdp)
params = []
if peer_ip?
params.push(["client_ip", peer_ip])
@relay = makeWebsocket @relayAddr, params
@relay.label = 'websocket-relay' @relay.label = 'websocket-relay'
@relay.onopen = => @relay.onopen = =>
if @timer if @timer

View file

@ -46,9 +46,9 @@ buildUrl = (scheme, host, port, path, params) ->
parts.join '' parts.join ''
makeWebsocket = (addr) -> makeWebsocket = (addr, params) ->
wsProtocol = if WSS_ENABLED then 'wss' else 'ws' wsProtocol = if WSS_ENABLED then 'wss' else 'ws'
url = buildUrl wsProtocol, addr.host, addr.port, '/' url = buildUrl wsProtocol, addr.host, addr.port, '/', params
ws = new WebSocket url ws = new WebSocket url
### ###
'User agents can use this as a hint for how to handle incoming binary data: if 'User agents can use this as a hint for how to handle incoming binary data: if