Undo UPnP UDP port binding
This commit is contained in:
parent
1d8bb5144e
commit
3e0e09555a
|
@ -301,20 +301,18 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mk_client(r: &ReplicatedData) -> ThinClient {
|
fn mk_client(r: &ReplicatedData) -> ThinClient {
|
||||||
let transactions_socket_pair = udp_public_bind("transactions");
|
let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
let requests_socket_pair = udp_public_bind("requests");
|
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
|
|
||||||
requests_socket_pair
|
requests_socket
|
||||||
.receiver
|
|
||||||
.set_read_timeout(Some(Duration::new(1, 0)))
|
.set_read_timeout(Some(Duration::new(1, 0)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
ThinClient::new(
|
ThinClient::new(
|
||||||
r.requests_addr,
|
r.requests_addr,
|
||||||
requests_socket_pair.sender,
|
requests_socket,
|
||||||
requests_socket_pair.receiver,
|
|
||||||
r.transactions_addr,
|
r.transactions_addr,
|
||||||
transactions_socket_pair.sender,
|
transactions_socket,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ use clap::{App, Arg, SubCommand};
|
||||||
use solana::crdt::ReplicatedData;
|
use solana::crdt::ReplicatedData;
|
||||||
use solana::drone::DroneRequest;
|
use solana::drone::DroneRequest;
|
||||||
use solana::mint::Mint;
|
use solana::mint::Mint;
|
||||||
use solana::nat::udp_public_bind;
|
|
||||||
use solana::signature::{PublicKey, Signature};
|
use solana::signature::{PublicKey, Signature};
|
||||||
use solana::thin_client::ThinClient;
|
use solana::thin_client::ThinClient;
|
||||||
use std::error;
|
use std::error;
|
||||||
|
@ -20,7 +19,7 @@ use std::fmt;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr, TcpStream};
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr, TcpStream, UdpSocket};
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
@ -288,19 +287,17 @@ fn read_mint(path: String) -> Result<Mint, Box<error::Error>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mk_client(r: &ReplicatedData) -> io::Result<ThinClient> {
|
fn mk_client(r: &ReplicatedData) -> io::Result<ThinClient> {
|
||||||
let transactions_socket_pair = udp_public_bind("transactions");
|
let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
let requests_socket_pair = udp_public_bind("requests");
|
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
requests_socket_pair
|
requests_socket
|
||||||
.receiver
|
|
||||||
.set_read_timeout(Some(Duration::new(1, 0)))
|
.set_read_timeout(Some(Duration::new(1, 0)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
Ok(ThinClient::new(
|
Ok(ThinClient::new(
|
||||||
r.requests_addr,
|
r.requests_addr,
|
||||||
requests_socket_pair.sender,
|
requests_socket,
|
||||||
requests_socket_pair.receiver,
|
|
||||||
r.transactions_addr,
|
r.transactions_addr,
|
||||||
transactions_socket_pair.sender,
|
transactions_socket,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,6 @@ impl Drone {
|
||||||
|
|
||||||
let mut client = ThinClient::new(
|
let mut client = ThinClient::new(
|
||||||
self.requests_addr,
|
self.requests_addr,
|
||||||
requests_socket.try_clone().unwrap(),
|
|
||||||
requests_socket,
|
requests_socket,
|
||||||
self.transactions_addr,
|
self.transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
|
@ -293,7 +292,6 @@ mod tests {
|
||||||
|
|
||||||
let mut client = ThinClient::new(
|
let mut client = ThinClient::new(
|
||||||
leader.data.requests_addr,
|
leader.data.requests_addr,
|
||||||
requests_socket.try_clone().unwrap(),
|
|
||||||
requests_socket,
|
requests_socket,
|
||||||
leader.data.transactions_addr,
|
leader.data.transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
|
|
|
@ -15,8 +15,7 @@ use transaction::Transaction;
|
||||||
/// An object for querying and sending transactions to the network.
|
/// An object for querying and sending transactions to the network.
|
||||||
pub struct ThinClient {
|
pub struct ThinClient {
|
||||||
requests_addr: SocketAddr,
|
requests_addr: SocketAddr,
|
||||||
requests_sender: UdpSocket,
|
requests_socket: UdpSocket,
|
||||||
requests_receiver: UdpSocket,
|
|
||||||
transactions_addr: SocketAddr,
|
transactions_addr: SocketAddr,
|
||||||
transactions_socket: UdpSocket,
|
transactions_socket: UdpSocket,
|
||||||
last_id: Option<Hash>,
|
last_id: Option<Hash>,
|
||||||
|
@ -31,15 +30,13 @@ impl ThinClient {
|
||||||
/// to a public address before invoking ThinClient methods.
|
/// to a public address before invoking ThinClient methods.
|
||||||
pub fn new(
|
pub fn new(
|
||||||
requests_addr: SocketAddr,
|
requests_addr: SocketAddr,
|
||||||
requests_sender: UdpSocket,
|
requests_socket: UdpSocket,
|
||||||
requests_receiver: UdpSocket,
|
|
||||||
transactions_addr: SocketAddr,
|
transactions_addr: SocketAddr,
|
||||||
transactions_socket: UdpSocket,
|
transactions_socket: UdpSocket,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let client = ThinClient {
|
let client = ThinClient {
|
||||||
requests_addr,
|
requests_addr,
|
||||||
requests_sender,
|
requests_socket,
|
||||||
requests_receiver,
|
|
||||||
transactions_addr,
|
transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
last_id: None,
|
last_id: None,
|
||||||
|
@ -53,7 +50,7 @@ impl ThinClient {
|
||||||
pub fn recv_response(&self) -> io::Result<Response> {
|
pub fn recv_response(&self) -> io::Result<Response> {
|
||||||
let mut buf = vec![0u8; 1024];
|
let mut buf = vec![0u8; 1024];
|
||||||
trace!("start recv_from");
|
trace!("start recv_from");
|
||||||
self.requests_receiver.recv_from(&mut buf)?;
|
self.requests_socket.recv_from(&mut buf)?;
|
||||||
trace!("end recv_from");
|
trace!("end recv_from");
|
||||||
let resp = deserialize(&buf).expect("deserialize balance in thin_client");
|
let resp = deserialize(&buf).expect("deserialize balance in thin_client");
|
||||||
Ok(resp)
|
Ok(resp)
|
||||||
|
@ -115,7 +112,7 @@ impl ThinClient {
|
||||||
trace!("get_balance");
|
trace!("get_balance");
|
||||||
let req = Request::GetBalance { key: *pubkey };
|
let req = Request::GetBalance { key: *pubkey };
|
||||||
let data = serialize(&req).expect("serialize GetBalance in pub fn get_balance");
|
let data = serialize(&req).expect("serialize GetBalance in pub fn get_balance");
|
||||||
self.requests_sender
|
self.requests_socket
|
||||||
.send_to(&data, &self.requests_addr)
|
.send_to(&data, &self.requests_addr)
|
||||||
.expect("buffer error in pub fn get_balance");
|
.expect("buffer error in pub fn get_balance");
|
||||||
let mut done = false;
|
let mut done = false;
|
||||||
|
@ -139,7 +136,7 @@ impl ThinClient {
|
||||||
serialize(&req).expect("serialize GetTransactionCount in pub fn transaction_count");
|
serialize(&req).expect("serialize GetTransactionCount in pub fn transaction_count");
|
||||||
let mut done = false;
|
let mut done = false;
|
||||||
while !done {
|
while !done {
|
||||||
self.requests_sender
|
self.requests_socket
|
||||||
.send_to(&data, &self.requests_addr)
|
.send_to(&data, &self.requests_addr)
|
||||||
.expect("buffer error in pub fn transaction_count");
|
.expect("buffer error in pub fn transaction_count");
|
||||||
|
|
||||||
|
@ -163,7 +160,7 @@ impl ThinClient {
|
||||||
let mut done = false;
|
let mut done = false;
|
||||||
while !done {
|
while !done {
|
||||||
debug!("get_last_id send_to {}", &self.requests_addr);
|
debug!("get_last_id send_to {}", &self.requests_addr);
|
||||||
self.requests_sender
|
self.requests_socket
|
||||||
.send_to(&data, &self.requests_addr)
|
.send_to(&data, &self.requests_addr)
|
||||||
.expect("buffer error in pub fn get_last_id");
|
.expect("buffer error in pub fn get_last_id");
|
||||||
|
|
||||||
|
@ -205,7 +202,7 @@ impl ThinClient {
|
||||||
let data = serialize(&req).expect("serialize GetSignature in pub fn check_signature");
|
let data = serialize(&req).expect("serialize GetSignature in pub fn check_signature");
|
||||||
let mut done = false;
|
let mut done = false;
|
||||||
while !done {
|
while !done {
|
||||||
self.requests_sender
|
self.requests_socket
|
||||||
.send_to(&data, &self.requests_addr)
|
.send_to(&data, &self.requests_addr)
|
||||||
.expect("buffer error in pub fn get_last_id");
|
.expect("buffer error in pub fn get_last_id");
|
||||||
|
|
||||||
|
@ -267,7 +264,6 @@ mod tests {
|
||||||
|
|
||||||
let mut client = ThinClient::new(
|
let mut client = ThinClient::new(
|
||||||
leader.data.requests_addr,
|
leader.data.requests_addr,
|
||||||
requests_socket.try_clone().unwrap(),
|
|
||||||
requests_socket,
|
requests_socket,
|
||||||
leader.data.transactions_addr,
|
leader.data.transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
|
@ -315,7 +311,6 @@ mod tests {
|
||||||
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
let mut client = ThinClient::new(
|
let mut client = ThinClient::new(
|
||||||
leader.data.requests_addr,
|
leader.data.requests_addr,
|
||||||
requests_socket.try_clone().unwrap(),
|
|
||||||
requests_socket,
|
requests_socket,
|
||||||
leader.data.transactions_addr,
|
leader.data.transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
|
@ -374,7 +369,6 @@ mod tests {
|
||||||
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
let mut client = ThinClient::new(
|
let mut client = ThinClient::new(
|
||||||
leader.data.requests_addr,
|
leader.data.requests_addr,
|
||||||
requests_socket.try_clone().unwrap(),
|
|
||||||
requests_socket,
|
requests_socket,
|
||||||
leader.data.transactions_addr,
|
leader.data.transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
|
|
|
@ -246,7 +246,6 @@ fn mk_client(leader: &ReplicatedData) -> ThinClient {
|
||||||
|
|
||||||
ThinClient::new(
|
ThinClient::new(
|
||||||
leader.requests_addr,
|
leader.requests_addr,
|
||||||
requests_socket.try_clone().unwrap(),
|
|
||||||
requests_socket,
|
requests_socket,
|
||||||
leader.transactions_addr,
|
leader.transactions_addr,
|
||||||
transactions_socket,
|
transactions_socket,
|
||||||
|
|
Loading…
Reference in New Issue