Commit Graph

1213 Commits

Author SHA1 Message Date
Brian Warner
86f246dbdb just might work. close() mapped out.
Starting to draw a distinction between clean-close and abrupt-halt. At least,
if we're in the connected state, wormhole.close() should take its time and
free up server-side resources (nameplate/mailbox) right away, rather than
relying on GC/timeouts to release them.

It might be useful to make separate "clean" wormhole.close() and "abrupt"
wormhole.halt() API calls, except that really when would you ever call halt?
To be realistic, only one of two things will happen:

* connection happens normally, app finishes, calls "clean" close()
* app terminates suddenly, via exception or SIGINT

The problem with defining .close() is that I have to make it work sensibly
from any state, not just the one plausible "connected" state. Providing
.halt() requires defining its behavior from everywhere else.
2017-04-06 12:21:00 -07:00
Brian Warner
2cfc990d5e more 2017-04-06 12:21:00 -07:00
Brian Warner
5b82b424a0 w.dot: comment out things that seem superceded by w2.dot 2017-04-06 12:21:00 -07:00
Brian Warner
fa76b57976 w2.dot: add M_ prefix 2017-04-06 12:21:00 -07:00
Brian Warner
e7b2a7bbf9 fixing 118 is the key 2017-04-06 12:21:00 -07:00
Brian Warner
f85e2ec68a more 2017-04-06 12:21:00 -07:00
Brian Warner
f27e601e41 more 2017-04-06 12:21:00 -07:00
Brian Warner
78fcb6b809 new approach, thinking about connections up front 2017-04-06 12:21:00 -07:00
Brian Warner
6c77f33cdf start on connection machine 2017-04-06 12:21:00 -07:00
Brian Warner
3ec7747b1e more 2017-04-06 12:21:00 -07:00
Brian Warner
b1f313b116 more diagram work 2017-04-06 12:21:00 -07:00
Brian Warner
8a9b50b320 adding high-level state diagram
Automat doesn't let me combine flowcharts with state machines in a way that's
useful for documenting my thoughts.
2017-04-06 12:21:00 -07:00
Brian Warner
057f616765 more experimentation 2017-04-06 12:21:00 -07:00
Brian Warner
18f7ab9308 more state-machine work 2017-04-06 12:21:00 -07:00
Brian Warner
63ae3c63fc notes 2017-04-06 12:21:00 -07:00
Brian Warner
9e5bf452e3 rename 2017-04-06 12:21:00 -07:00
Brian Warner
3c9c0e58ab move to _connection.py, add more state machines
Starting on defining manager state machines for nameplates, mailboxes, the
PAKE key-establishment process, and the bit that knows it can drop the
connection when both nameplates and mailboxes have been released.
2017-04-06 12:21:00 -07:00
Brian Warner
14c8e76364 onConnect, start manual tests, doesn't work yet 2017-04-06 12:21:00 -07:00
Brian Warner
b826e8c73c hack args till they work, add ALLOW_CLOSE
the diagram is a lot simpler if the only way to shut things down is to
terminate the whole process
2017-04-06 12:21:00 -07:00
Brian Warner
d136028fa8 try adding args 2017-04-06 12:21:00 -07:00
Brian Warner
73f3d86107 state machine should be complete, I think 2017-04-06 12:21:00 -07:00
Brian Warner
94b1ed8739 starting to draw new state machines 2017-04-06 12:21:00 -07:00
Brian Warner
578522ae0f Merge PR141 2017-04-06 12:12:58 -07:00
Brian Warner
98e3df1e4d api.md: mark argument slightly better 2017-04-06 12:12:42 -07:00
Shirley Kotian
abec2d2680 typos 2017-03-18 18:39:54 +05:30
Brian Warner
65db4729cd rendezvous_websocket.py: add idempotency docs 2017-03-03 05:55:39 -08:00
Brian Warner
8d5770d8cc tor_manager: allow port to be a 'long' 2017-03-03 05:49:36 -08:00
Brian Warner
b7ff5f05d5 transit: allow port to be a 'long' 2017-03-03 05:49:30 -08:00
Brian Warner
cf9053637c test_util: free-space can be a 'long' 2017-03-03 05:49:25 -08:00
Brian Warner
71f34e4f5b test/run_trial.py: protect run() with __name__
Without this, any import (e.g. when running "automat-visualize") caused the
tests to be run as a side-effect.
2017-02-22 18:03:33 -08:00
Brian Warner
6889ba088c remove server/runner.py, no longer used 2017-02-22 17:52:14 -08:00
Brian Warner
4df4cf0016 Merge PR139
closes #73
2017-02-22 17:48:20 -08:00
Shannon Mulloy
ffefb5ebdc improve coverage with input mock 2017-02-05 15:42:49 -08:00
Shannon Mulloy
33526b2180 rx: _remove_existing after accept 2017-02-05 13:29:20 -08:00
Shannon Mulloy
56a0a1f584 rx: allow overwrite with --output-file= #73 2017-02-04 19:27:09 -08:00
Brian Warner
20619bcce7 send: set allowZip64=True, to handle large (>2GB) directories
refs #138
2017-02-02 11:40:24 -08:00
Brian Warner
625cb96b63 tox: simplify with new-ish tox features
use 'extras' and 'usedevelop' instead of 'deps = --editable=.[dev]'
2017-01-16 22:35:10 -05:00
Brian Warner
abe305a80d NEWS: update for 0.9.2 release 2017-01-16 18:21:42 -05:00
Brian Warner
775a35d337 update Tor docs, mention py2-only 2017-01-16 18:21:42 -05:00
Brian Warner
12d676f7dc MANIFEST.in: include snapcraft.yaml 2017-01-16 18:10:01 -05:00
Brian Warner
47a22fde6f more NEWS updates 2017-01-16 17:57:40 -05:00
Brian Warner
ed674e5ffe transit: increase connection timeout from 15s to 60s
I haven't seen any timeouts yet, but I'm thinking ahead to .onion connections
that might take longer than 15 seconds to establish.
2017-01-16 17:56:16 -05:00
Brian Warner
862820679c don't hang when asked to send a zero-length file
closes #98
2017-01-16 17:29:40 -05:00
Brian Warner
360ad70667 update NEWS 2017-01-16 16:50:24 -05:00
Brian Warner
38c8a7192c Merge branch 'fix-tor-2' 2017-01-16 11:37:44 -05:00
Brian Warner
f2704c6ce0 cli: oops, fix ssh args
wish there were some tests for this
2017-01-16 11:34:32 -05:00
Brian Warner
df62e16462 cli: handle tor args in 'ssh' subcommands 2017-01-16 11:29:20 -05:00
Brian Warner
c6ac04433f add docs/tor.md 2017-01-16 11:14:23 -05:00
Brian Warner
47007273ec rewrite Tor support (py2 only)
The new TorManager adds --launch-tor and --tor-control-port= arguments
(requiring the user to explicitly request a new Tor process, if that's what
they want). The default (when --tor is enabled) looks for a control port in
the usual places (/var/run/tor/control, localhost:9051, localhost:9151), then
falls back to hoping there's a SOCKS port in the usual
place (localhost:9050). (closes #64)

The ssh utilities should now accept the same tor arguments as ordinary
send/receive commands. There are now full tests for TorManager, and basic
tests for how send/receive use it. (closes #97)

Note that Tor is only supported on python2.7 for now, since txsocksx (and
therefore txtorcon) doesn't work on py3. You need to do "pip install
magic-wormhole[tor]" to get Tor support, and that will get you an inscrutable
error on py3 (referencing vcversioner, "install_requires must be a string or
list of strings", and "int object not iterable").

To run tests, you must install with the [dev] extra (to get "mock" and other
libraries). Our setup.py only includes "txtorcon" in the [dev] extra when on
py2, not on py3. Unit tests tolerate the lack of txtorcon (they mock out
everything txtorcon would provide), so they should provide the same coverage
on both py2 and py3.
2017-01-15 22:39:03 -05:00
Brian Warner
203216c0ff cli: move TorArgs out to separate decorator 2017-01-15 22:21:29 -05:00