@@ -48,16 +48,31 @@ pub unsafe extern "C" fn dns2socks_start(
4848 . force_tcp ( force_tcp)
4949 . cache_records ( cache_records) ;
5050 if !listen_addr. is_null ( ) {
51- let listen_addr = unsafe { std:: ffi:: CStr :: from_ptr ( listen_addr) } . to_str ( ) . unwrap ( ) ;
52- config. listen_addr ( listen_addr. parse ( ) . unwrap ( ) ) ;
51+ let Ok ( listen_addr) = unsafe { std:: ffi:: CStr :: from_ptr ( listen_addr) } . to_str ( ) else {
52+ return -3 ;
53+ } ;
54+ let Ok ( addr) = listen_addr. parse ( ) else {
55+ return -4 ;
56+ } ;
57+ config. listen_addr ( addr) ;
5358 }
5459 if !dns_remote_server. is_null ( ) {
55- let dns_remote_server = unsafe { std:: ffi:: CStr :: from_ptr ( dns_remote_server) } . to_str ( ) . unwrap ( ) ;
56- config. dns_remote_server ( dns_remote_server. parse ( ) . unwrap ( ) ) ;
60+ let Ok ( dns_remote_server) = unsafe { std:: ffi:: CStr :: from_ptr ( dns_remote_server) } . to_str ( ) else {
61+ return -5 ;
62+ } ;
63+ let Ok ( addr) = dns_remote_server. parse ( ) else {
64+ return -6 ;
65+ } ;
66+ config. dns_remote_server ( addr) ;
5767 }
5868 if !socks5_settings. is_null ( ) {
59- let socks5_settings = unsafe { std:: ffi:: CStr :: from_ptr ( socks5_settings) } . to_str ( ) . unwrap ( ) ;
60- config. socks5_settings ( crate :: config:: ArgProxy :: try_from ( socks5_settings) . unwrap ( ) ) ;
69+ let Ok ( socks5_settings) = unsafe { std:: ffi:: CStr :: from_ptr ( socks5_settings) } . to_str ( ) else {
70+ return -7 ;
71+ } ;
72+ let Ok ( proxy_settings) = crate :: config:: ArgProxy :: try_from ( socks5_settings) else {
73+ return -8 ;
74+ } ;
75+ config. socks5_settings ( proxy_settings) ;
6176 }
6277
6378 let main_loop = async move {
@@ -69,10 +84,10 @@ pub unsafe extern "C" fn dns2socks_start(
6984 } ;
7085
7186 match tokio:: runtime:: Builder :: new_multi_thread ( ) . enable_all ( ) . build ( ) {
72- Err ( _e) => -3 ,
87+ Err ( _e) => -9 ,
7388 Ok ( rt) => match rt. block_on ( main_loop) {
7489 Ok ( _) => 0 ,
75- Err ( _e) => -4 ,
90+ Err ( _e) => -10 ,
7691 } ,
7792 }
7893}
0 commit comments