Brian Warner
c27680b910
terminator: shut down Dilator after everything else stops
...
This makes w.stop() the right way to shut everything down including any
Dilator connections (in-progress, active, or in-shutdown).
2019-02-10 18:01:14 -08:00
Brian Warner
53ad951c11
DilatedConnectionProtocol/Role: prettier repr
2019-02-10 16:57:16 -08:00
Brian Warner
ebc63e52e0
add description to inbound connections
2019-02-10 16:52:17 -08:00
Brian Warner
74c416517f
scids are four-byte strings, not integers
...
be consistent about it
2019-02-10 16:23:20 -08:00
Brian Warner
2ec7b8e662
update_ack_watermark takes seqnum, not record
2019-02-10 16:22:30 -08:00
Brian Warner
bf25dc68cf
connector: use disconnect(), not loseConnection()
2019-02-10 15:57:55 -08:00
Brian Warner
0c9d2c927a
fix hashability of dilation objects
2019-02-10 15:57:39 -08:00
Brian Warner
059338a257
Add Dilator.stop(), fix delivery of connection made/lost messages
...
Dilator.stop() now shuts everything down, and returns a Deferred when it all
stops moving. This needed some Manager state machine changes (to notify
Dilator when it enters the STOPPED state). This also revealed problems in the
delivery of connector_connection_made() (which was misnamed) and
connector_connection_lost() (which wasn't being called at all).
2019-02-10 11:51:54 -08:00
Brian Warner
39fed50071
add no_listen=False to Manager and Dilator
...
This is only used by tests so far (and will simplify the integration test
that hasn't landed yet), but is not yet wired up to Boss, so there's no way
for applications to enable it yet.
2019-02-10 11:51:54 -08:00
Brian Warner
64618bcb64
manager: tidy up repr, leave out keys and some other fields
2019-02-10 11:51:54 -08:00
Brian Warner
b538dd6758
dilation.outbound: registerProducer goes on transport, not Protocol
2019-02-10 11:51:54 -08:00
Brian Warner
53ffbe1632
fix Noise handshake ordering
...
I mistakenly believed that Noise handshakes are simultaneous. In fact, the
Responder waits until it sees the Initiator's handshake before sending its
own. I had to update the Connection state machines to work this way (the
Record machine now has set_role_leader and set_role_follower), and update the
tests to match.
For debugging I added a `_role` property to Record, but it should probably be
removed.
2019-02-10 11:51:54 -08:00
Brian Warner
d1ff97f988
make some dilation objects hashable
...
necessary to include them in a set like _pending_connectors
2019-02-10 11:51:54 -08:00
Brian Warner
29c269ac8d
get tests to work on py2.7
...
only install 'noiseprotocol' (which is necessary for dilation to work) if the
"dilate" feature is requested (e.g. `pip install magic-wormhole[dilate]`)
2018-12-24 00:07:06 -05:00
Brian Warner
a458fe9ab9
finish test coverage/fixes for connector.py
2018-12-23 15:23:27 -05:00
Brian Warner
6ad6f8f40f
test and fix half of connector.py
...
still to do:
* relay delays
* connection race
* cancellation of losing connections
* shutdown of all connections when abandoned
2018-12-23 15:23:27 -05:00
Brian Warner
e7cb1df785
factor out HKDF
2018-12-23 15:23:27 -05:00
Brian Warner
b4c90b40a2
move parse_hint/encode_hint into _hints.py, add tests
2018-12-23 15:23:27 -05:00
Brian Warner
7720312c8f
factor out parse_tcp_v1_hint
2018-12-23 15:23:27 -05:00
Brian Warner
2f4e4d3031
factor out describe_hint_obj and endpoint_from_hint_obj
2018-12-23 15:23:27 -05:00
Brian Warner
bd1a199f3e
start factoring Hints out to separate file
...
shared between old transit.py and new _dilation/connector.py
2018-12-23 15:23:27 -05:00
Brian Warner
3b7c9831f6
appease flake8 somewhat
2018-12-23 15:23:27 -05:00
Brian Warner
40dadfeb71
finish fixing/testing manager.py
2018-12-23 15:23:27 -05:00
Brian Warner
e55787c693
get most of Manager working and tested
...
still need to test the subchannel interfaces, and ping/pong/kcm
2018-12-23 15:23:27 -05:00
Brian Warner
78358358bc
manager: hush flake8
2018-12-23 15:23:27 -05:00
Brian Warner
8a1a8b1f9c
manager: factor out make_side for testing and override
2018-12-23 15:23:27 -05:00
Brian Warner
7e168b819e
manager: clean up versions, merge state machines
2018-12-23 15:23:27 -05:00
Brian Warner
74e5d9948b
move old-follower.py out of src, kept for temporary reference
2018-12-23 15:23:27 -05:00
Brian Warner
bf0c93eddc
more flake8 fixes
2018-12-23 15:22:57 -05:00
Brian Warner
05900bd08b
fix some flake8 complaints
2018-12-23 15:22:57 -05:00
Brian Warner
34686a346a
add dilation code
...
(this compresses several months of false starts and rearchitecting)
2018-12-23 15:21:08 -05:00