1. 04 Dec, 2020 1 commit
    • Cecylia Bocovich's avatar
      Create new smux session for each SOCKS connection · 114df695
      Cecylia Bocovich authored
      Each SOCKS connection has its own set of snowflakes and broker poll
      loop. Since the session manager was tied to a single set of snowflakes,
      this resulted in a bug where RedialPacketConn would sometimes try to
      pull snowflakes from a previously melted pool. The fix is to maintain
      separate smux sessions for each SOCKS connection, tied to its own
      snowflake pool.
      114df695
  2. 23 Nov, 2020 1 commit
    • Cecylia Bocovich's avatar
      Remove for loop around broker.Negotiate · 665d76c5
      Cecylia Bocovich authored
      Instead of continuously polling the broker until the client receives a
      snowflake, fail back to the Connect() loop and try again to collect more
      peers after ReconnectTimeout.
      665d76c5
  3. 15 Oct, 2020 1 commit
    • Cecylia Bocovich's avatar
      Add synchronization to prevent post-melt collects · 6baa3c4d
      Cecylia Bocovich authored
      This fixes a race condition in which snowflakes.End() is called while
      snowflakes.Collect() is in progress resulting in a write to a closed
      channel. We now wait for all in-progress collections to finish and add
      an extra check before proceeding with a collection.
      6baa3c4d
  4. 27 Aug, 2020 2 commits
  5. 30 Jul, 2020 1 commit
    • Cecylia Bocovich's avatar
      Add response header timeouts to broker transports · d5ae7562
      Cecylia Bocovich authored
      The client and proxy use the net/http default transport to make round
      trip connecitons to the broker. These by default don't time out and can
      wait indefinitely for the broker to respond if the broker hangs and
      doesn't terminate the connection.
      d5ae7562
  6. 06 Jul, 2020 1 commit
    • Cecylia Bocovich's avatar
      Implement NAT discovery (RFC 5780) at the client · bf924445
      Cecylia Bocovich authored
      Snowflake clients will now attempt NAT discovery using the provided STUN
      servers and report their NAT type to the Snowflake broker for matching.
      The three possibilities for NAT types are:
      - unknown (the client was unable to determine their NAT type),
      - restricted (the client has a restrictive NAT and can only be paired
      with unrestricted NATs)
      - unrestricted (the client can be paired with any other NAT).
      bf924445
  7. 07 May, 2020 1 commit
  8. 05 May, 2020 1 commit
  9. 01 May, 2020 1 commit
    • David Fifield's avatar
      Format the establishDataChannel error log message like other log messages. · c8293a5d
      David Fifield authored
      It was sticking out in the context of other log messages.
      
      2020/04/30 22:39:10 WebRTC: DataChannel created.
      2020/04/30 22:39:20 establishDataChannel: timeout waiting for DataChannel.OnOpen
      2020/04/30 22:39:20 WebRTC: closing PeerConnection
      2020/04/30 22:39:20 WebRTC: Closing
      2020/04/30 22:39:20 WebRTC: WebRTC: Could not establish DataChannel  Retrying in 10s...
      c8293a5d
  10. 28 Apr, 2020 10 commits
  11. 27 Apr, 2020 3 commits
  12. 24 Apr, 2020 8 commits
  13. 23 Apr, 2020 4 commits
  14. 03 Apr, 2020 1 commit
  15. 02 Apr, 2020 1 commit
  16. 26 Mar, 2020 1 commit
  17. 18 Mar, 2020 1 commit
  18. 05 Mar, 2020 1 commit