@@ -234,17 +234,30 @@ implement_http_transport! {
234234 signal: Arc <Condvar >,
235235 shutdown_immediately: Arc <AtomicBool >,
236236 queue_size: Arc <Mutex <usize >>,
237- http_client: Client ,
237+ http_client: Option < Client > ,
238238 ) {
239239 let dsn = options. dsn. clone( ) . unwrap( ) ;
240240 let user_agent = options. user_agent. to_string( ) ;
241241
242242 let mut disabled = None :: <SystemTime >;
243+ let http_proxy = options. http_proxy. as_ref( ) . map( ToString :: to_string) ;
244+ let https_proxy = options. https_proxy. as_ref( ) . map( ToString :: to_string) ;
243245
244246 thread:: Builder :: new( )
245247 . name( "sentry-transport" . to_string( ) )
246248 . spawn( move || {
247249 sentry_debug!( "spawning reqwest transport" ) ;
250+ let http_client = http_client. unwrap_or_else( || {
251+ let mut builder = Client :: builder( ) ;
252+ if let Some ( url) = http_proxy {
253+ builder = builder. proxy( Proxy :: http( & url) . unwrap( ) ) ;
254+ } ;
255+ if let Some ( url) = https_proxy {
256+ builder = builder. proxy( Proxy :: https( & url) . unwrap( ) ) ;
257+ } ;
258+ builder. build( ) . unwrap( )
259+ } ) ;
260+
248261 let url = dsn. store_api_url( ) . to_string( ) ;
249262
250263 while let Some ( event) = receiver. recv( ) . unwrap_or( None ) {
@@ -301,19 +314,8 @@ implement_http_transport! {
301314 } ) . unwrap( )
302315 }
303316
304- fn http_client( options: & ClientOptions , client: Option <Client >) -> Client {
305- client. unwrap_or_else( || {
306- let http_proxy = options. http_proxy. as_ref( ) . map( ToString :: to_string) ;
307- let https_proxy = options. https_proxy. as_ref( ) . map( ToString :: to_string) ;
308- let mut client = Client :: builder( ) ;
309- if let Some ( url) = http_proxy {
310- client = client. proxy( Proxy :: http( & url) . unwrap( ) ) ;
311- } ;
312- if let Some ( url) = https_proxy {
313- client = client. proxy( Proxy :: https( & url) . unwrap( ) ) ;
314- } ;
315- client. build( ) . unwrap( )
316- } )
317+ fn http_client( _options: & ClientOptions , client: Option <Client >) -> Option <Client > {
318+ client
317319 }
318320}
319321
@@ -421,8 +423,7 @@ implement_http_transport! {
421423 match handle. response_code( ) {
422424 Ok ( 429 ) => {
423425 if let Some ( retry_after) = retry_after
424- . as_ref( )
425- . map( String :: as_str)
426+ . as_deref( )
426427 . and_then( parse_retry_after)
427428 {
428429 disabled = Some ( retry_after) ;
0 commit comments