]> git.bitcoin.ninja Git - rust-lightning/commit
[lightning-net-tokio] Fix race-y unwrap fetching peer socket address
authorMatt Corallo <git@bluematt.me>
Sun, 24 Apr 2022 20:57:53 +0000 (20:57 +0000)
committerMatt Corallo <git@bluematt.me>
Sun, 24 Apr 2022 21:04:54 +0000 (21:04 +0000)
commitfca67bcaa4c7bf36da7cebf142b0baf33488909d
tree224659c93eb266211094095b78a60b299c61ced5
parent637fb88037fa329363e4b6462e9ad01f25cb4e41
[lightning-net-tokio] Fix race-y unwrap fetching peer socket address

I recently saw the following panic on one of my test nodes:

```
thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()`
    on an `Err` value: Os { code: 107, kind: NotConnected, message:
    "Transport endpoint is not connected" }',
    rust-lightning/lightning-net-tokio/src/lib.rs:250:38
```

Presumably what happened is somehow the connection was closed in
between us accepting it and us going to start processing it. While
this is a somewhat surprising race, its clearly reachable. The fix
proposed here is quite trivial - simply don't `unwrap` trying to
fetch our peer's socket address, instead treat the peer address as
`None` and discover the disconnection later when we go to read.
lightning-net-tokio/src/lib.rs