[tor-bugs] #25472 [Obfuscation/Snowflake]: snowflake-client's `-url` option is intolerant of a missing path

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Mar 14 02:03:41 UTC 2018


#25472: snowflake-client's `-url` option is intolerant of a missing path
-----------------------------------+------------------------------
 Reporter:  dcf                    |          Owner:  (none)
     Type:  defect                 |         Status:  needs_review
 Priority:  Medium                 |      Milestone:
Component:  Obfuscation/Snowflake  |        Version:
 Severity:  Minor                  |     Resolution:
 Keywords:  easy                   |  Actual Points:
Parent ID:                         |         Points:
 Reviewer:                         |        Sponsor:
-----------------------------------+------------------------------

Comment (by dcf):

 Replying to [comment:2 arlolra]:
 > > If the patch looks good, I think we should change proxy-go to use
 ResolveReference as well, because it avoids having to repeatedly re-parse
 brokerURL, and allows the base URL to have a path, as in the example
 above.
 >
 > and attached one for review with the follow up suggested.

 Your attached patch looks good.

 I'm looking at how the browser proxy code does it. It also uses string
 concatenation, though the broker object constructor ensures that the URL
 ends in a slash, so you can't get the problem this ticket is about.

 https://gitweb.torproject.org/pluggable-
 transports/snowflake.git/tree/proxy/broker.coffee?id=c61336c897b5d21cc94a21241e98b33df5dcbf78#n24
 {{{
   constructor: (@url) ->
     @clients = 0
     # Ensure url has the right protocol + trailing slash.
     @url = 'http://' + @url if 0 == @url.indexOf('localhost', 0)
     @url = 'https://' + @url if 0 != @url.indexOf('http', 0)
     @url += '/' if '/' != @url.substr -1
 }}}
 https://gitweb.torproject.org/pluggable-
 transports/snowflake.git/tree/proxy/broker.coffee?id=c61336c897b5d21cc94a21241e98b33df5dcbf78#n76
 {{{
   _postRequest: (id, xhr, urlSuffix, payload) =>
     try
       xhr.open 'POST', @url + urlSuffix
 }}}
 For uniformity, we could use the [https://developer.mozilla.org/en-
 US/docs/Web/API/URL/URL URL] constructor, which allows resolving a URL
 against a base URL, like ResolveReference:
 {{{
       xhr.open 'POST', new URL(urlSuffix, @url).href
 }}}
 What do you think? I attached a patch. The URL API is marked
 "experimental"; maybe we don't want to deal with that?

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25472#comment:3>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list