@@ -276,7 +276,7 @@ mod integration {
276276 wait_for_service_ready ( ohttp_relay. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
277277 wait_for_service_ready ( directory. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
278278 let ohttp_keys =
279- fetch_ohttp_keys ( & ohttp_relay, & directory, cert_der. clone ( ) ) . await ?;
279+ fetch_ohttp_keys ( ohttp_relay, directory. clone ( ) , cert_der. clone ( ) ) . await ?;
280280
281281 // **********************
282282 // Inside the Receiver:
@@ -388,7 +388,7 @@ mod integration {
388388 wait_for_service_ready ( ohttp_relay. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
389389 wait_for_service_ready ( directory. clone ( ) , agent. clone ( ) ) . await . unwrap ( ) ;
390390 let ohttp_keys =
391- fetch_ohttp_keys ( & ohttp_relay, & directory, cert_der. clone ( ) ) . await ?;
391+ fetch_ohttp_keys ( ohttp_relay, directory. clone ( ) , cert_der. clone ( ) ) . await ?;
392392
393393 let mut enrolled =
394394 enroll_with_directory ( directory, ohttp_keys. clone ( ) , cert_der. clone ( ) ) . await ?;
@@ -525,38 +525,17 @@ mod integration {
525525 }
526526
527527 async fn fetch_ohttp_keys (
528- ohttp_relay : & Url ,
529- directory : & Url ,
528+ ohttp_relay : Url ,
529+ directory : Url ,
530530 cert_der : Vec < u8 > ,
531531 ) -> Result < payjoin:: OhttpKeys , BoxError > {
532- let ohttp_relay = ohttp_relay. clone ( ) ;
533- let directory_ohttp_keys = directory. join ( "/ohttp-keys" ) ?;
534- let res = spawn_blocking ( move || {
535- http_proxy ( cert_der, & ohttp_relay)
536- . unwrap ( )
537- . get ( directory_ohttp_keys. as_str ( ) )
538- . call ( )
532+ let res = tokio:: task:: spawn_blocking ( move || {
533+ payjoin_io:: fetch_ohttp_keys ( ohttp_relay. clone ( ) , directory. clone ( ) , cert_der)
539534 } )
540- . await ??;
541- assert_eq ! ( res. status( ) , 200 , "Failed to connect to target {}" , res. status( ) ) ;
542- let mut body = Vec :: new ( ) ;
543- let _ = res. into_reader ( ) . read_to_end ( & mut body) ?;
544- Ok ( payjoin:: OhttpKeys :: decode ( & body) ?)
545- }
546-
547- /// Normalize the Url to include the port for ureq. ureq has a bug
548- /// which makes Proxy::new(...) use port 8080 for all input with scheme
549- /// http regardless of the port included in the Url. This prevents that.
550- /// https://github.com/algesten/ureq/pull/717
551- fn normalize_proxy_url ( proxy : & Url ) -> Result < String , BoxError > {
552- let scheme = proxy. scheme ( ) ;
553- let host = proxy. host_str ( ) . ok_or ( "No host" ) ?;
554-
555- if scheme == "http" || scheme == "https" {
556- Ok ( format ! ( "{}:{}" , host, proxy. port( ) . unwrap_or( 80 ) ) )
557- } else {
558- Ok ( proxy. as_str ( ) . to_string ( ) )
559- }
535+ . await
536+ . map_err ( |e| e. to_string ( ) ) ?
537+ . map_err ( |e| e. to_string ( ) ) ?;
538+ Ok ( res)
560539 }
561540
562541 async fn enroll_with_directory (
@@ -692,11 +671,6 @@ mod integration {
692671 Ok ( http_agent_builder ( cert_der) ?. build ( ) )
693672 }
694673
695- fn http_proxy ( cert_der : Vec < u8 > , proxy : & Url ) -> Result < Agent , BoxError > {
696- let proxy = ureq:: Proxy :: new ( normalize_proxy_url ( proxy) ?) ?;
697- Ok ( http_agent_builder ( cert_der) ?. proxy ( proxy) . build ( ) )
698- }
699-
700674 fn http_agent_builder ( cert_der : Vec < u8 > ) -> Result < AgentBuilder , BoxError > {
701675 use rustls:: client:: ClientConfig ;
702676 use rustls:: pki_types:: CertificateDer ;
0 commit comments