mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-15 10:02:47 +03:00
1d0409c4c4
We used to not accept new indirect lanes if we already have a direct lane. This means that if Bob, with a publicly-accessible lane, changes lanes (eg by restarting the process and getting a new port or changing ip addresses), tries to talk to Alice, who is behind a NAT, then Bob will try directly but fail (because Alice is behind a NAT), so he will route the message through her galaxy. This is good -- the message gets to Alice. However, Alice had a direct route to Bob's old lane, so she will try to ack on that lane, which fails. She will not time out this lane because she doesn't know that Bob isn't getting the acks (acks don't have their own acks). The solution is that if Alice receives an indirect lane for Bob when she already has a direct lane, she shouldn't ignore it. If the lane is the same as what she has, she shouldn't change anything (in particular, she shouldn't mark it as indirect). But if it's a new lane, she should discard her old direct lane and use the new indirect lane. |
||
---|---|---|
.. | ||
arvo | ||
ent | ||
ge-additions | ||
herb | ||
hs | ||
interface | ||
libaes_siv | ||
urbit |