Brian Warner
5f25e92a2d
cmd_send.py: add note about future speedup opportunity
2016-04-20 18:14:58 -07:00
Brian Warner
34f4c284b0
txwormhole: use websockets, not HTTP
...
This should speed up the protocol, since we don't have to wait for
acks (HTTP responses) unless we really want to. It also makes it easier
to have multiple messages in flight at once. The protocol is still
compatible with the old HTTP version (which is still used by the
blocking flavor), but requires an updated Rendezvous server that speaks
websockets.
set_code() no longer touches the network: it just stores the code and
channelid for later. We hold off doing 'claim' and 'watch' until we need
messages, triggered by get_verifier() or get_data() or send_data().
We check for error before sleeping, not just after waking. This makes it
possible to detect a WrongPasswordError in get_data() even if the other
side hasn't done a corresponding send_data(), as long as the other side
finished PAKE (and thus sent a CONFIRM message). The unit test was doing
just this, and was hanging.
2016-04-20 18:14:47 -07:00
Brian Warner
a57845eb0b
tor_manager: accept websocket URLs too
2016-04-20 12:15:59 -07:00
Brian Warner
611a7d05e9
cmd_receive: use wait=True for the last ack
...
This prevents the process from shutting down before the ack makes it to
the server.
2016-04-20 12:13:53 -07:00
Brian Warner
9c1af2667e
send_data(): add wait=True
...
This doesn't do anything yet (the HTTP-based Channel always waits), but
will matter in an upcoming implementation change.
2016-04-20 12:13:53 -07:00
Brian Warner
8068aeeca4
CLI runner: use task.react, remove sync wrapper
2016-04-20 12:13:53 -07:00
Brian Warner
44ca031047
transcribe.py: accept reactor=, for tests
2016-04-20 12:13:53 -07:00
Brian Warner
28b3f685d6
rendezvous: allow both allocate and claim (of the same channelid)
...
This allows the Wormhole setup path to be simpler: consistently doing a
claim() just before watch(), regardless of whether we allocated the
channelid (with get_code), or dictated it (with set_code or
from_serialized).
2016-04-20 11:20:53 -07:00
Brian Warner
558f01818f
server: log websocket URL
2016-04-20 11:14:52 -07:00
Brian Warner
88b78d1c46
fix comment: bodies are hex, not base64
2016-04-20 11:13:40 -07:00
Brian Warner
92c4ad19bc
rendezvous_websocket: fix Error
2016-04-20 11:12:50 -07:00
Brian Warner
aa8f714a48
websocket: change 'all-channelids' to 'channelids'
...
Yeah, names are easier to work with when they're also valid identifiers.
2016-04-18 23:49:11 -07:00
Brian Warner
aec0615d66
Add WebSocket-based rendezvous protocol frontend
...
The websocket lives on a Resource of the main rendezvous web site, and
the websocket URL is derived from the main "relay_url", so there's no
extra port to allocate, and no extra service to shut down.
2016-04-18 18:03:26 -07:00
Brian Warner
efc23bd078
Rendezvous: change internal API
...
Deliver not-yet-JSONed objects to listeners (both in broadcast_message
and as the "catch-up" responses to add_listener). Also make the (web)
frontend responsible for adding "sent" timestamps. This all makes
rendezvous.py less web-centric.
2016-04-18 17:40:12 -07:00
Brian Warner
c3bd9e936e
split rendezvous server into web, nonweb files
...
Also rename files/classes from "relay" to "rendezvous".
2016-04-18 17:40:08 -07:00
Brian Warner
3b215c106a
use "hkdf" from PyPI instead of wormhole.hkdf
2016-04-18 16:49:29 -07:00
Brian Warner
95706c752c
move tests step 1: rename files
2016-04-18 16:45:03 -07:00
Brian Warner
17613ce8c1
move hkdf out of util/, remove now-empty directory
2016-04-18 16:45:03 -07:00
Brian Warner
36e63e2347
split wormhole_cli step 2: fix imports, setup.py
2016-04-18 16:43:18 -07:00
Brian Warner
2e7bb1a8f1
split wormhole_cli step 1: move files
2016-04-18 16:43:18 -07:00
Brian Warner
1688da74d9
split txwormhole step 2: fix imports
2016-04-18 16:41:56 -07:00
Brian Warner
323175ddfe
split txwormhole step 1: move files
2016-04-18 16:41:52 -07:00
Brian Warner
0b162af09e
move ipaddrs.py from wormhole.util to wormhole.twisted
2016-04-18 16:24:13 -07:00
Brian Warner
87266f1292
split wormhole_server step 3: fix tests
2016-04-18 16:18:51 -07:00
Brian Warner
190ce2c027
split wormhole_server step 2: new files, fix imports
...
remove server commands from old src/wormhole/scripts/runner.py
2016-04-18 16:18:47 -07:00
Brian Warner
bde4696a8b
split wormhole_server step 1: move files
2016-04-18 16:18:45 -07:00
Brian Warner
1a455c05f5
remove wormhole.twisted.util port-allocation functions
2016-04-18 16:16:27 -07:00
Brian Warner
e20026488a
remove unused observer.py
2016-04-18 16:16:27 -07:00
Brian Warner
a8446d2bc5
merge transit_common into twisted.transit
2016-04-18 16:16:27 -07:00
Brian Warner
db137c26e5
remove blocking.transit
2016-04-18 15:52:29 -07:00
Brian Warner
4e937c2100
rename cmd_send_twisted to cmd_send, same for cmd_receive
2016-04-18 15:52:29 -07:00
Brian Warner
a1033b06a3
merge send_common into cmd_send_twisted
2016-04-18 15:52:29 -07:00
Brian Warner
9b53bb96c6
merge cmd_receive_blocking into cmd_receive_twisted
2016-04-18 15:52:29 -07:00
Brian Warner
8c67a98259
merge test_transit.py into test_server.py
2016-04-18 15:52:29 -07:00
Brian Warner
68b22bec97
remove --twisted, stop using blocking-flavor scripts
2016-04-18 15:52:18 -07:00
Brian Warner
94a3be91b2
add tab-completion to twisted-style input_code()
2016-04-15 17:27:32 -07:00
Brian Warner
589226f076
tor: add comments, let it pick its own control port
2016-03-28 02:26:11 -07:00
Brian Warner
618706681a
record time spent importing code
2016-03-28 02:25:40 -07:00
Brian Warner
9630ab9aae
find-tor: record more detailed timings
2016-03-28 02:25:32 -07:00
Brian Warner
12c4c51fd8
record tor-launch time in DebugTiming
2016-03-28 02:25:01 -07:00
Brian Warner
01ed9902de
add --tor support
2016-03-28 02:25:01 -07:00
Brian Warner
ed6e5ff169
get a TorManager working
2016-03-28 02:25:01 -07:00
Brian Warner
049fac01db
tolerate trailing slash on "wormhole send dirname/"
...
Previously, the trailing slash would cause the receiving side to get an
empty-named directory.
2016-03-24 08:46:29 -07:00
Brian Warner
c5415495c0
dump-timing: store server-sent time too
...
Adjust dump-timing to ignore the extra data, for now. Also do some
general instrumentation cleanup.
2016-03-03 18:03:27 -08:00
Brian Warner
aaf4e70a33
remove obsolete TODO
2016-03-03 17:56:15 -08:00
Brian Warner
626732b730
relay_server: include 'sent' timestamp with each message
...
This will be used by client-side timeline instrumentation, to guide
performance improvements.
2016-03-03 17:52:59 -08:00
Brian Warner
e342236b7d
relay_server: internal rearrangement
...
Construct the response in the render_* method, rather than
add_messages(), to prepare for adding server timestamps. Use
json_response() everywhere.
2016-03-03 16:57:44 -08:00
Brian Warner
9d7b9dd8d2
add --no-listen, for debugging
2016-03-03 14:52:14 -08:00
Brian Warner
418fe9419e
twisted: use persistent connections, slight speedup
...
This uses a single TCP connection to the relay server for all
requests (although it probably uses a second one for the downstream
EventSource feed). This should squeeze out some of the round-trip times.
2016-03-03 13:39:09 -08:00
Brian Warner
4f5e037d39
cmd-twisted: report exceptions better
...
The previous scheme would swallow the real traceback, making debugging
difficult.
2016-03-03 12:33:26 -08:00