Brian Warner
335ed00cb7
build out tests
2016-05-19 19:55:11 -07:00
Brian Warner
e39a8291e3
checkpointing: server roughed out
2016-05-19 18:09:17 -07:00
Brian Warner
0e72422ffa
WIP
2016-05-19 14:18:49 -07:00
Brian Warner
5994eb11d4
WIP new proto
2016-05-18 00:16:46 -07:00
Brian Warner
2ea5d96290
Channels don't need "welcome" anymore
2016-05-17 17:35:44 -07:00
Brian Warner
a74b1b1e3a
WIP: new server protocol
2016-05-16 22:04:25 -07:00
Brian Warner
5dd91c7311
test too-many-allocate, allocate+claim
2016-05-13 00:46:12 -07:00
Brian Warner
c4c0cf71eb
add test
2016-05-13 00:43:59 -07:00
Brian Warner
1198977e06
SCHEMA CHANGE: channelids are now strs, not ints
...
This will enable the use of large randomly-generated hex or base32
channelids, for post-startup or resumed-connection channels.
2016-05-13 00:37:53 -07:00
Brian Warner
c14e982ae7
rendezvous: allow multiple channels per connection
2016-05-12 18:01:56 -07:00
Brian Warner
31491bb939
update docs
2016-05-12 17:48:26 -07:00
Brian Warner
85dc0fd41b
change server API: "release" instead of "deallocate"
2016-05-12 17:46:15 -07:00
Brian Warner
2c2cf29564
update comment: sent -> server_tx
2016-05-12 17:12:04 -07:00
Brian Warner
bdc9066c23
rendezvous: change add_listener signature
...
Pass in a handle and a pair of functions, rather than an object with two
well-known methods. This should make it easier to subscribe to multiple
channels in the future.
2016-05-12 17:03:57 -07:00
Brian Warner
a34fb2a98b
remove plain-HTTP (non-WebSocket) rendezvous server
2016-05-12 16:56:19 -07:00
Brian Warner
104ef44d53
provide wormhole() as a function, rather than a class constructor
...
You must always provide a reactor= argument. In the future, omitting the
reactor= argument is how you ask for a blocking Wormhole.
2016-05-12 16:45:54 -07:00
Brian Warner
d87aba40e4
rename _confirm message to just "confirm"
2016-05-12 16:45:54 -07:00
Brian Warner
d0ef53fc4d
remove phase= from the Wormhole API
...
Phase are now implicit and numbered.
2016-05-12 16:45:54 -07:00
Brian Warner
501af4b4ec
rename send_data/get_data to just send/get
2016-05-12 16:45:54 -07:00
Brian Warner
49785008bb
remove blocking implementation: it will return
...
It will return as a crochet-based wrapper around the Twisted
implementation.
2016-05-12 16:45:54 -07:00
Brian Warner
5501a6bf1c
simplify timing, add msgid
2016-05-06 18:53:28 -07:00
Brian Warner
5530c33185
rdv_ws: send acks for each message
...
but only if the client is modern enough to include "id" in the message,
which lets us avoid sending acks to an 0.7.5 client (which would cause
them to abort, they don't like unrecognized server messages).
The acks let the client learn the server_rx time of messages that
terminate on the server, like "allocate" and "claim".
2016-05-06 18:51:28 -07:00
Brian Warner
644c7c6840
DB schema change: add/store/return msgid
...
This enables dump-timing to correlate sender logs with receiver logs.
2016-05-06 18:29:58 -07:00
Brian Warner
8a80242532
rdv_ws: deliver "server_tx", not "sent"
...
Update twisted/transcribe.py to accept it, update tests.
2016-05-06 18:29:58 -07:00
Brian Warner
d2dfc325d8
deliver stored server_rx to clients
...
This enables the "dump-timing" tools to display more information.
2016-05-06 18:29:58 -07:00
Brian Warner
959ab4baca
rdv_ws: get server_rx at a better place
2016-05-06 18:29:58 -07:00
Brian Warner
d9ba55621b
Channel.add_message(server_rx=): add new arg
2016-05-06 18:29:58 -07:00
Brian Warner
fe2dfc1a35
DB schema change: rename 'when' to 'server_rx'
2016-05-06 18:29:58 -07:00
Brian Warner
cd9f6e4377
ignore unknown rendezvous messages
...
I should have added this earlier, so 0.7.5 would be tolerant of new
server messages.
2016-05-06 18:29:19 -07:00
Brian Warner
a671982ab0
rdv: add comment
2016-05-05 19:13:05 -07:00
Brian Warner
58e95cff0d
rdv_ws: avoid magic method-name concatenation
2016-05-05 19:11:21 -07:00
Brian Warner
a086effd52
cmd_send: time import of tor_manager too
2016-05-05 19:10:01 -07:00
Brian Warner
cfbd418898
rendezvous: minor refactoring
2016-05-05 18:21:06 -07:00
Brian Warner
8e664fdfcd
timing.py: record finish(when) correctly
2016-04-30 15:48:43 -07:00
Brian Warner
24e52c0320
rewrite timing instrumentation: use context managers
2016-04-29 14:27:29 -07:00
Brian Warner
b70c2f8868
Make get_verifier() wait for _confirm to arrive
...
This improves the error behavior when --verify is used but there's a
WrongPasswordError: the mismatch is detected before the verifiers are
displayed or confirmation is requested.
It requires that the far end sends a "_confirm" message, which was
introduced in release 0.6.0. Use with older versions (if it doesn't
break for other reasons) will cause a hang.
This patch also deletes test_twisted.Basic.test_verifier_mismatch, since
both sides now detect this on their own. It changes
test_wrong_password() too, since we might now notice the error during
send_data (previously we'd only see it in get_data).
2016-04-25 19:01:55 -07:00
Brian Warner
c017de5e4b
cosmetic cleanups to error messages
2016-04-25 18:24:39 -07:00
Brian Warner
2a6767ee6f
cmd_receive: internal error-handling cleanups
2016-04-25 18:24:18 -07:00
Brian Warner
a181a3fb35
WrongPasswordError: display docstring in str()
2016-04-25 18:16:08 -07:00
Brian Warner
2f6caa04d3
test_scripts.Cleanup: new test
...
This asserts that we deallocate the rendezvous channel, even when we
terminate early due to errors.
2016-04-25 17:53:00 -07:00
Brian Warner
7e8bfe314d
Call w.close() exactly once, in both success and error cases.
...
One downside is that we keep the wormhole channel allocated longer (we
have to finish the file transfer before we can deallocate it, which
could take a while for large files). Maybe we can fix this in the
future.
2016-04-25 17:53:00 -07:00
Brian Warner
34116c7b1f
CLI: document and return correct errors
...
Also clean up test_scripts.PregeneratedCode:
* fetch results from both sides at the same time
* only check rc when using a subprocess, since the direct call doesn't
use rc=0 anymore
* no need to cancel the other side's Deferred when one errors
* provide more information if stderr was non-empty
2016-04-25 17:52:59 -07:00
Brian Warner
e4a19748db
CLI: don't catch+wrap WrongPasswordError
...
Also remove .explain, now that we no longer wrap it in TransferError
2016-04-25 17:52:59 -07:00
Brian Warner
b96b052c96
start on cleanups: error catching in CLI dispatch
2016-04-25 17:52:59 -07:00
Brian Warner
a4c1ba9e4e
transcribe: stop automatically doing close() on error
...
And provide a close() that can live at the end of a Deferred chain, so
callers can do d.addBoth(w.close).
I like auto-close-on-error in general, but I'm removing it so I can
clean up the error-handling pathways. It will probably come back later.
The constraint is that it must be possible to wait on the return
Deferred that close() gives you (to synchronize tests, or keep the CLI
program running long enough to deallocate the channel) even if something
else (and error handler) called close() earlier. This will require
either a OneShotObserverList, or keeping a "deallocated" Deferred around
in case more callers want to wait on it later.
2016-04-25 17:50:52 -07:00
Brian Warner
8d0bcf9f82
transcribe._sleep: make it usable from deallocate()
...
If we're closing because of an error, we need to sleep through the old
error, to be able to wait for the "deallocated" message. This might want
to be different: maybe clear the error first, or store the errors in a
list and sleep until a second error happens.
2016-04-25 17:34:57 -07:00
Brian Warner
4eaf88d7d2
cmd: remove _twisted suffix from function names
...
No longer necessary now that all commands are twisted-based.
2016-04-24 22:49:18 -07:00
Brian Warner
b0da2a9ac7
cmd_send: fold helper routines back into main function
...
These were split out to make the blocking- and twisted- based
implementations share some code, but now that we're down to just
Twisted, it's clearer to merge them back in.
2016-04-24 22:46:21 -07:00
Brian Warner
35639dafed
cmd_send: rearrange functions, no code changes
2016-04-24 22:40:25 -07:00
Brian Warner
754cabbdd8
Fail better when input-code is interrupted
...
Hitting Control-C (which sends SIGINT) while we're waiting in the
readline-based input_code() function didn't shut down the process
properly: the reactor would wait for the readline thread to exit, which
wouldn't happen until it finished getting a code, which requires the
user to hit Return. I haven't found a good way to force the thread to
exit, or to synthetically inject a newline into stdin. So my compromise
is to tell the user that they need to hit Return to finish interrupting
the command.
See the _warn_readline() function for a list of other potential
approaches.
2016-04-24 22:20:27 -07:00
Brian Warner
e8d3689a3a
runner: display TransferErrors better
...
These are known failures (like file-not-found, transfer rejected, etc).
Display the error message, but not a traceback.
2016-04-24 12:10:51 -07:00
Brian Warner
86edf96412
switch to tqdm for nicer CLI progress bars
2016-04-24 12:04:05 -07:00
Brian Warner
16c6c0977e
progress: make it easier to change display width
2016-04-23 22:43:42 -07:00
Brian Warner
1e7c714453
CLI: don't hide errors so much
2016-04-20 22:36:43 -07:00
Brian Warner
1b16127cad
fix --tor
...
* twisted/transcribe: call correct tor_manager method
* tor_manager: remove now-unused web agent endpoint factory
2016-04-20 22:34:58 -07:00
Brian Warner
b2c3f49038
unsplit txwormhole step 2: edit files
2016-04-20 19:18:41 -07:00
Brian Warner
0ae8463331
unsplit txwormhole step 1: move files
2016-04-20 19:15:33 -07:00
Brian Warner
7c45f3d472
unsplit wormhole_server step 2: edit files
2016-04-20 19:15:33 -07:00
Brian Warner
ec13404fca
unsplit wormhole_server step 1: move files
2016-04-20 19:15:33 -07:00
Brian Warner
85b6264826
unsplit cli step 2: edit files
2016-04-20 19:15:33 -07:00
Brian Warner
a3c836bcd3
unsplit cli step 1: move files
2016-04-20 18:54:36 -07:00
Brian Warner
7a5a99a1a8
unsplit tests step 3: modify files
2016-04-20 18:54:10 -07:00
Brian Warner
fc33ea41ff
unsplit tests step 2: delete test_load
2016-04-20 18:51:03 -07:00
Brian Warner
c890a850aa
unsplit tests step 1: move files
2016-04-20 18:44:33 -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
Brian Warner
08a5e6043a
twisted.transit: tolerate the lack of a listener
...
In Tor mode, there is no local listener. Eventually we'll add an Onion
Service listener, but it's not guaranteed that we can run one.
2016-03-03 12:32:26 -08:00