Skip to content

Commit

Permalink
refine code
Browse files Browse the repository at this point in the history
  • Loading branch information
ssrlive committed Apr 15, 2024
1 parent c51c893 commit 732b1f9
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 32 deletions.
52 changes: 28 additions & 24 deletions src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,21 @@ pub unsafe extern "C" fn over_tls_client_run(
log::warn!("failed to set logger, error={:?}", err);
}
}
let config_path = std::ffi::CStr::from_ptr(config_path).to_str();
if let Err(err) = config_path {
log::error!("invalid config path, error={:?}", err);
return -1;
}
let config_path = config_path.unwrap();
let config_path = match std::ffi::CStr::from_ptr(config_path).to_str() {
Err(err) => {
log::error!("invalid config path, error={:?}", err);
return -1;
}
Ok(config_path) => config_path,
};

let config = Config::from_config_file(config_path);
if let Err(err) = config {
log::error!("failed to load config, error={:?}", err);
return -2;
}
let mut config = config.unwrap();
let mut config = match Config::from_config_file(config_path) {
Err(err) => {
log::error!("failed to load config, error={:?}", err);
return -2;
}
Ok(config) => config,
};

if let Err(err) = config.check_correctness(false) {
log::error!("invalid config, error={:?}", err);
Expand Down Expand Up @@ -89,19 +91,21 @@ pub unsafe extern "C" fn over_tls_client_run_with_ssr_url(
log::warn!("failed to set logger, error={:?}", err);
}
}
let url = std::ffi::CStr::from_ptr(url).to_str();
if let Err(err) = url {
log::error!("invalid config path, error={:?}", err);
return -1;
}
let url = url.unwrap();
let url = match std::ffi::CStr::from_ptr(url).to_str() {
Err(err) => {
log::error!("invalid config path, error={:?}", err);
return -1;
}
Ok(url) => url,
};

let config = Config::from_ssr_url(url);
if let Err(err) = config {
log::error!("failed to load config, error={:?}", err);
return -2;
}
let mut config = config.unwrap();
let mut config = match Config::from_ssr_url(url) {
Err(err) => {
log::error!("failed to load config, error={:?}", err);
return -2;
}
Ok(config) => config,
};

if let Err(err) = config.check_correctness(false) {
log::error!("invalid config, error={:?}", err);
Expand Down
16 changes: 8 additions & 8 deletions src/bin/overtls.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
use overtls::{run_client, run_server, CmdOpt, Config, Error, Result};
use overtls::{run_client, run_server, BoxError, CmdOpt, Config, Error, Result};

fn main() -> Result<()> {
fn main() -> Result<(), BoxError> {
let opt = CmdOpt::parse_cmd();

if opt.c_api {
if opt.is_server() {
return Err(Error::from("C API is not supported for server"));
return Err("C API is not supported for server".into());
}

// Test the C API usage
let config_path_str = opt.config.as_path().to_string_lossy().into_owned();
let c_string = std::ffi::CString::new(config_path_str).unwrap();
let c_string = std::ffi::CString::new(config_path_str)?;
let config_path: *const std::os::raw::c_char = c_string.as_ptr();

let join = ctrlc2::set_handler(|| {
log::info!("Ctrl-C received, exiting...");
unsafe { overtls::over_tls_client_stop() };
true
})
.expect("Error setting Ctrl-C handler");
})?;

unsafe extern "C" fn log_cb(_: overtls::ArgVerbosity, msg: *const std::os::raw::c_char, _ctx: *mut std::os::raw::c_void) {
println!("{:?}", unsafe { std::ffi::CStr::from_ptr(msg).to_str() });
Expand All @@ -30,7 +29,7 @@ fn main() -> Result<()> {
}
unsafe { overtls::over_tls_client_run(config_path, opt.verbosity, Some(port_cb), std::ptr::null_mut()) };

join.join().unwrap();
join.join().expect("Couldn't join on the associated thread");
return Ok(());
}

Expand Down Expand Up @@ -66,7 +65,8 @@ fn main() -> Result<()> {
}

let rt = tokio::runtime::Builder::new_multi_thread().enable_all().build()?;
rt.block_on(async_main(config))
rt.block_on(async_main(config))?;
Ok(())
}

async fn async_main(config: Config) -> Result<()> {
Expand Down
6 changes: 6 additions & 0 deletions src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ pub enum Error {
#[error("socks5_impl::Error {0}")]
Socks5(#[from] socks5_impl::Error),

#[error("std::ffi::NulError {0}")]
Nul(#[from] std::ffi::NulError),

#[error("BoxError {0}")]
BoxError(#[from] BoxError),

#[error("String error: {0}")]
String(String),
}
Expand Down

0 comments on commit 732b1f9

Please sign in to comment.