Commit graph

41 commits

Author SHA1 Message Date
Serene Han
b2d7586cb4 use webrtcRemotes len for capacity instead of the chan 2016-03-27 09:08:54 -07:00
Serene Han
22ace32a71 replace webrtcRemote with webrtcRemotes map & indexing, client multiplexing remotes confirmed working (#31) 2016-03-27 09:08:54 -07:00
Serene Han
a8ea5e586e client multiplexing using a webRTCConn channel (#31) 2016-03-27 09:08:54 -07:00
Serene Han
451edb6dec begin multiplex snowflake connect loop for #31 2016-03-27 09:08:54 -07:00
Arlo Breault
ed60c74686 Redundant close 2016-03-20 08:48:49 -07:00
Serene Han
b8815627bd defer conn.Close for simplicity and remove unnecessary goroutines, improve error handling (close #12) 2016-03-19 22:36:17 -07:00
Arlo Breault
598e2a3bfb Close SocksConn when WebRTC connection is reset
* This will induce the tor client to establish a new SocksConn,
   which in turn will dial a new WebRTC connection.

   To be improved upon.

 * Part of #12
2016-03-18 21:29:31 -07:00
Serene Han
960a136c64 retry client offers immediately instead of reset, combine sendOffer and receiveAnswer into exchangeSDP 2016-03-08 20:33:39 -08:00
Serene Han
9daa6c4b71 multiple arbitrary ice servers can be passed as client flag (close #24) 2016-03-05 17:01:33 -08:00
Serene Han
4e6bba559a provide IceServerList flag as variadic arg to webrtc Configuration (#24) 2016-03-04 13:21:56 -08:00
Serene Han
3ec771df01 prepare IceServerList client flag (#24) 2016-03-03 22:51:10 -08:00
Serene Han
5edac195f6 move endWebRTC() mostly into webRTCConn.Close() 2016-02-26 14:35:20 -08:00
Serene Han
f3e0abe0e1 only flush datachannel with nonzero bytes, which prevents Tor from marking the SOCKS for close (#12) 2016-02-25 01:24:06 -08:00
Serene Han
d4efe774d1 remove webRTCConn SendLoop and simplify Write without additional channel, as net.Conn is already safe 2016-02-23 17:34:51 -08:00
Serene Han
3a7e0ea620 simplify client handler & dialWebRTC with independent webRTCConn constructor 2016-02-23 17:01:44 -08:00
Serene Han
f86f5b5b07 move webRTCConn into separate file 2016-02-21 22:03:19 -08:00
Serene Han
ef5cb162c0 fix SendData channel syncing 2016-02-21 22:00:51 -08:00
Serene Han
c3ada1b545 Use a channel to safely synchronize datachannel writes, (#12)
clean up ice candidate log message.
still need to debug the copy loop break.
2016-02-19 16:25:08 -08:00
Serene Han
c4215b5614 log traffic bytes only once every few seconds, along with OnMessage & datachannel.Send counts, to prevent flooded logs 2016-02-18 14:15:22 -08:00
Serene Han
a1b7e01c54 Include answer channel as part of the webRTCConn struct (#12) 2016-02-17 20:41:33 -08:00
Serene Han
8a2e7a6041 Use reconnect timeout on client (#12) 2016-02-17 19:53:11 -08:00
Serene Han
f205a0be59 Snowflake client now using a reconnect loop (#12) 2016-02-17 19:19:16 -08:00
Serene Han
eb7eb04ac0 Buffer writes to DataChannel, remove blocking on openChannel (#12) 2016-02-17 18:38:52 -08:00
Serene Han
760dee8a0f prepare snowflake client for buffered datachannel writes, separate out dialWebRTC (#12) 2016-02-17 17:42:00 -08:00
Arlo Breault
9fd471b4c4 Update to go-webrtc HEAD 2016-02-15 12:37:52 -08:00
Serene Han
678cf454cd s/MeekChannel/BrokerChannel (close #14) and more informative TODOs 2016-01-31 21:51:21 -08:00
Serene Han
c0b6383f26 Automatic 100% bootstrap using meek-signaling broker works.
Minimum viable webrtc pt now exists.
(close #1)
2016-01-21 14:00:39 -08:00
Serene Han
f2d8a749f4 Also skip creating named pipe if --meek is enabled, and output a more useful waiting message if pipe is expected 2016-01-20 15:51:22 -08:00
Arlo Breault
0abb3bd856 Skip creating the named pipe on the client if we're using http signaling
* Blocks waiting on the open for write (`cat > signal`), at least for me.
2016-01-19 21:44:23 -08:00
Serene Han
5e9b23de9e consolidate RequestInfo into MeekChannel with a simplified Negotiate method 2016-01-19 18:06:40 -08:00
Serene Han
b4a07c4192 add --meek flag to client to toggle the domain fronted rendezvous 2016-01-19 17:21:10 -08:00
Serene Han
e4e068640f begin appengine rendezvous component - domain fronting works,
although it just reflects the offer.
next step is to retrieve browser proxy answer (#1)
2016-01-19 13:24:57 -08:00
David Fifield
e0b36d2f33 Do simple HTTP POST signaling in the client.
This is just enough to be compatible with the HTTP signaling in the
server, and doesn't do domain fronting or anything like that. It's just
an interim replacement for the copy-paste FIFO signaling while we
continue to develop the other pieces that'll be dropped in the middle.
2016-01-18 22:53:22 -08:00
David Fifield
c9eeff6fc2 Remove unused notImplemented error. 2016-01-18 22:39:18 -08:00
David Fifield
a77ae6b771 Use chan struct{} instead of chan bool in openChan.
http://dave.cheney.net/2014/03/25/the-empty-struct
"...there is one important practical use of empty structs, and that is
the chan struct{} construct used for signaling between go routines"
2016-01-18 03:04:39 -08:00
David Fifield
48db4ac132 Log errors from main. 2016-01-17 23:22:23 -08:00
Serene Han
b4934f3979 begin meek-webrtc signalling channel for client (issue #1) 2016-01-15 11:43:15 -08:00
Serene Han
fb304c673c README update and go fmt 2016-01-14 16:40:28 -08:00
Serene Han
30e7ba79ae shutdown webrtc on interrupt in go client 2016-01-14 15:22:15 -08:00
David Fifield
c519813cf7 Keep quoted log messages ASCII. 2016-01-09 19:24:05 -08:00
Arlo Breault
da563bc913 Separate client / server 2016-01-07 09:26:02 -08:00
Renamed from snowflake.go (Browse further)