Skip to content
Snippets Groups Projects
  1. Nov 11, 2021
  2. Oct 04, 2021
  3. Sep 30, 2021
  4. Aug 24, 2021
  5. Aug 20, 2021
  6. Aug 10, 2021
  7. Aug 05, 2021
    • David Fifield's avatar
      521eb4d4
    • David Fifield's avatar
      Implement ampCacheRendezvous. · 5adb9940
      David Fifield authored
      5adb9940
    • David Fifield's avatar
      Skeleton of ampCacheRendezvous. · c1381019
      David Fifield authored
      Currently the same as httpRendezvous, but activated using the -ampcache
      command-line option.
      c1381019
    • David Fifield's avatar
      Factor out httpRendezvous separate from BrokerChannel. · 0f34a777
      David Fifield authored
      Makes BrokerChannel abstract over a rendezvousMethod. BrokerChannel
      itself is responsible for keepLocalAddresses and the NAT type state, as
      well as encoding and decoding client poll messages. rendezvousMethod is
      only responsible for delivery of encoded messages.
      0f34a777
    • David Fifield's avatar
      Change the representation of domain fronting in HTTP rendezvous. · 55f4814d
      David Fifield authored
      Formerly, BrokerChannel represented the broker URL and possible domain
      fronting as
      	bc.url  *url.URL
              bc.Host string
      That is, bc.url is the URL of the server which we contact directly, and
      bc.Host is the Host header to use in the request. With no domain
      fronting, bc.url points directly at the broker itself, and bc.Host is
      blank. With domain fronting, we do the following reshuffling:
      	if front != "" {
      		bc.Host = bc.url.Host
      		bc.url.Host = front
      	}
      That is, we alter bc.url to reflect that the server to which we send
      requests directly is the CDN, not the broker, and store the broker's own
      URL in the HTTP Host header.
      
      The above representation was always confusing to me, because in my
      mental model, we are always conceptually communicating with the broker;
      but we may optionally be using a CDN proxy in the middle. The new
      representation is
      	bc.url   *url.URL
              bc.front string
      bc.url is the URL of the broker itself, and never changes. bc.front is
      the optional CDN front domain, and likewise never changes after
      initialization. When domain fronting is in use, we do the swap in the
      http.Request struct, not in BrokerChannel itself:
      	if bc.front != "" {
      		request.Host = request.URL.Host
      		request.URL.Host = bc.front
      	}
      
      Compare to the representation in meek-client:
      
      https://gitweb.torproject.org/pluggable-transports/meek.git/tree/meek-client/meek-client.go?h=v0.35.0#n94
      	var options struct {
      		URL       string
      		Front     string
      	}
      https://gitweb.torproject.org/pluggable-transports/meek.git/tree/meek-client/meek-client.go?h=v0.35.0#n308
      	if ok { // if front is set
      		info.Host = info.URL.Host
      		info.URL.Host = front
      	}
      55f4814d
    • David Fifield's avatar
      Use a URL with a Host component in BrokerChannel tests. · 191510c4
      David Fifield authored
      The tests were using a broker URL of "test.broker" (i.e., a schema-less,
      host-less, relative path), and running assertions on the value of
      b.url.Path. This is strange, especially in tests regarding domain
      fronting, where we care about b.url.Host, not b.url.Path. This commit
      changes the broker URL to "http://test.broker" and changes tests to
      check b.url.Host. I also added an additional assertion for an empty
      b.Host in the non-domain-fronted case.
      191510c4
  8. Jul 19, 2021
  9. Jul 18, 2021
  10. Jun 24, 2021
  11. Jun 14, 2021
    • sbs's avatar
      fix(client/snowflake.go): prevent wg.Add race condition · aefabe68
      sbs authored
      In VSCode, the staticcheck tool emits this warning:
      
      > should call wg.Add(1) before starting the goroutine to
      > avoid a race (SA2000)go-staticcheck
      
      To avoid this warning, just move wg.Add outside.
      aefabe68
  12. Jun 02, 2021
    • Cecylia Bocovich's avatar
      Encode client-broker messages as json in HTTP body · 270eb218
      Cecylia Bocovich authored
      Send the client poll request and response in a json-encoded format in
      the HTTP request body rather than sending the data in HTTP headers. This
      will pave the way for using domain-fronting alternatives for the
      Snowflake rendezvous.
      270eb218
  13. May 24, 2021
  14. May 12, 2021
  15. Apr 01, 2021
  16. Jan 12, 2021
  17. Dec 17, 2020
  18. Dec 16, 2020
  19. Dec 05, 2020
Loading