let running_clone = Arc::clone(&running);
let thread_handle = spawn(move || {
- run_proxy(configuration, running_clone);
+ run_proxy(&configuration, &running_clone);
});
Server {
/// The main loop that listens for incoming (plaintext) connections on
/// `configuration.bind_address:configuration.local_port`.
-fn run_proxy(configuration: Arc<Proxy>, running: Arc<AtomicBool>) {
+fn run_proxy(configuration: &Arc<Proxy>, running: &Arc<AtomicBool>) {
let listener = match TcpListener::bind(format!(
"{}:{}",
configuration.bind_address, configuration.local_port
Ok((stream, addr)) => {
info!("New {} connection from {}", configuration.protocol, addr);
- let configuration_clone = Arc::clone(&configuration);
+ let configuration_clone = Arc::clone(configuration);
let handle = spawn(move || {
- handle_client(stream, configuration_clone);
+ handle_client(stream, &configuration_clone);
});
active_threads.push(handle);
}
}
/// Handles a single client connection by bridging it (plaintext) to a TLS connection.
-fn handle_client(client_stream: TcpStream, configuration: Arc<Proxy>) {
+fn handle_client(client_stream: TcpStream, configuration: &Arc<Proxy>) {
if let Err(e) = client_stream.set_nonblocking(true) {
error!("Failed to set client stream to nonblocking: {}", e);
return;