mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-03-03 10:46:48 +01:00
Cache socket address in HttpClient for reconnect
If the HttpClient attempts to reconnect to bitcoind that is no longer running, the client fails to get the address from the stream. Cache the address when connecting to prevent this.
This commit is contained in:
parent
8e7b5905fd
commit
4a12d7656e
1 changed files with 4 additions and 4 deletions
|
@ -8,7 +8,7 @@ use std::convert::TryFrom;
|
|||
use std::fmt;
|
||||
#[cfg(not(feature = "tokio"))]
|
||||
use std::io::Write;
|
||||
use std::net::ToSocketAddrs;
|
||||
use std::net::{SocketAddr, ToSocketAddrs};
|
||||
use std::time::Duration;
|
||||
|
||||
#[cfg(feature = "tokio")]
|
||||
|
@ -97,6 +97,7 @@ impl<'a> std::net::ToSocketAddrs for &'a HttpEndpoint {
|
|||
|
||||
/// Client for making HTTP requests.
|
||||
pub(crate) struct HttpClient {
|
||||
address: SocketAddr,
|
||||
stream: TcpStream,
|
||||
}
|
||||
|
||||
|
@ -119,7 +120,7 @@ impl HttpClient {
|
|||
TcpStream::from_std(stream)?
|
||||
};
|
||||
|
||||
Ok(Self { stream })
|
||||
Ok(Self { address, stream })
|
||||
}
|
||||
|
||||
/// Sends a `GET` request for a resource identified by `uri` at the `host`.
|
||||
|
@ -162,7 +163,6 @@ impl HttpClient {
|
|||
/// Sends an HTTP request message and reads the response, returning its body. Attempts to
|
||||
/// reconnect and retry if the connection has been closed.
|
||||
async fn send_request_with_retry(&mut self, request: &str) -> std::io::Result<Vec<u8>> {
|
||||
let endpoint = self.stream.peer_addr().unwrap();
|
||||
match self.send_request(request).await {
|
||||
Ok(bytes) => Ok(bytes),
|
||||
Err(_) => {
|
||||
|
@ -176,7 +176,7 @@ impl HttpClient {
|
|||
tokio::time::sleep(Duration::from_millis(100)).await;
|
||||
#[cfg(not(feature = "tokio"))]
|
||||
std::thread::sleep(Duration::from_millis(100));
|
||||
*self = Self::connect(endpoint)?;
|
||||
*self = Self::connect(self.address)?;
|
||||
self.send_request(request).await
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue