deduplicate match arms in handle_client_request
This commit is contained in:
parent
cfc4717b98
commit
2adee7b31a
|
@ -564,6 +564,16 @@ where
|
|||
use Request::*;
|
||||
let InProgressClientRequest { request, tx, span } = req;
|
||||
|
||||
// common logic for client requests without an expected response
|
||||
fn continue_without_response(
|
||||
tx: MustUseOneshotSender<Result<Response, SharedPeerError>>,
|
||||
) -> Transition {
|
||||
// Since we're not waiting for further messages, we need to
|
||||
// send a response before dropping tx.
|
||||
let _ = tx.send(Ok(Response::Nil));
|
||||
Transition::AwaitRequest
|
||||
}
|
||||
|
||||
match request {
|
||||
Peers => match self.peer_tx.send(Message::GetAddr).await {
|
||||
Ok(()) => Transition::AwaitResponse {
|
||||
|
@ -657,12 +667,7 @@ where
|
|||
},
|
||||
PushTransaction(transaction) => {
|
||||
match self.peer_tx.send(Message::Tx(transaction)).await {
|
||||
Ok(()) => {
|
||||
// Since we're not waiting for further messages, we need to
|
||||
// send a response before dropping tx.
|
||||
let _ = tx.send(Ok(Response::Nil));
|
||||
Transition::AwaitRequest
|
||||
}
|
||||
Ok(()) => continue_without_response(tx),
|
||||
Err(e) => Transition::CloseResponse { e: e.into(), tx },
|
||||
}
|
||||
}
|
||||
|
@ -672,23 +677,13 @@ where
|
|||
.send(Message::Inv(hashes.iter().map(|h| (*h).into()).collect()))
|
||||
.await
|
||||
{
|
||||
Ok(()) => {
|
||||
// Since we're not waiting for further messages, we need to
|
||||
// send a response before dropping tx.
|
||||
let _ = tx.send(Ok(Response::Nil));
|
||||
Transition::AwaitRequest
|
||||
}
|
||||
Ok(()) => continue_without_response(tx),
|
||||
Err(e) => Transition::CloseResponse { e: e.into(), tx },
|
||||
}
|
||||
}
|
||||
AdvertiseBlock(hash) => {
|
||||
match self.peer_tx.send(Message::Inv(vec![hash.into()])).await {
|
||||
Ok(()) => {
|
||||
// Since we're not waiting for further messages, we need to
|
||||
// send a response before dropping tx.
|
||||
let _ = tx.send(Ok(Response::Nil));
|
||||
Transition::AwaitRequest
|
||||
}
|
||||
Ok(()) => continue_without_response(tx),
|
||||
Err(e) => Transition::CloseResponse { e: e.into(), tx },
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue