@@ -39,99 +39,103 @@ impl CurlHttpTransport {
3939 let channel_capacity = options. transport_channel_capacity ;
4040
4141 let mut handle = client;
42- let thread = TransportThread :: new ( move |envelope, rl| {
43- handle. reset ( ) ;
44- handle. url ( & url) . unwrap ( ) ;
45- handle. custom_request ( "POST" ) . unwrap ( ) ;
46-
47- if accept_invalid_certs {
48- handle. ssl_verify_host ( false ) . unwrap ( ) ;
49- handle. ssl_verify_peer ( false ) . unwrap ( ) ;
50- }
51-
52- match ( scheme, & http_proxy, & https_proxy) {
53- ( Scheme :: Https , _, Some ( proxy) ) => {
54- if let Err ( err) = handle. proxy ( proxy) {
55- sentry_debug ! ( "invalid proxy: {:?}" , err) ;
56- }
42+ let thread = TransportThread :: new (
43+ move |envelope, rl| {
44+ handle. reset ( ) ;
45+ handle. url ( & url) . unwrap ( ) ;
46+ handle. custom_request ( "POST" ) . unwrap ( ) ;
47+
48+ if accept_invalid_certs {
49+ handle. ssl_verify_host ( false ) . unwrap ( ) ;
50+ handle. ssl_verify_peer ( false ) . unwrap ( ) ;
5751 }
58- ( _, Some ( proxy) , _) => {
59- if let Err ( err) = handle. proxy ( proxy) {
60- sentry_debug ! ( "invalid proxy: {:?}" , err) ;
52+
53+ match ( scheme, & http_proxy, & https_proxy) {
54+ ( Scheme :: Https , _, Some ( proxy) ) => {
55+ if let Err ( err) = handle. proxy ( proxy) {
56+ sentry_debug ! ( "invalid proxy: {:?}" , err) ;
57+ }
58+ }
59+ ( _, Some ( proxy) , _) => {
60+ if let Err ( err) = handle. proxy ( proxy) {
61+ sentry_debug ! ( "invalid proxy: {:?}" , err) ;
62+ }
6163 }
64+ _ => { }
6265 }
63- _ => { }
64- }
65-
66- let mut body = Vec :: new ( ) ;
67- envelope. to_writer ( & mut body) . unwrap ( ) ;
68- let mut body = Cursor :: new ( body) ;
69-
70- let mut retry_after = None ;
71- let mut sentry_header = None ;
72- let mut headers = curl:: easy:: List :: new ( ) ;
73- headers. append ( & format ! ( "X-Sentry-Auth: {auth}" ) ) . unwrap ( ) ;
74- headers. append ( "Expect:" ) . unwrap ( ) ;
75- handle. http_headers ( headers) . unwrap ( ) ;
76- handle. upload ( true ) . unwrap ( ) ;
77- handle. in_filesize ( body. get_ref ( ) . len ( ) as u64 ) . unwrap ( ) ;
78- handle
79- . read_function ( move |buf| Ok ( body. read ( buf) . unwrap_or ( 0 ) ) )
80- . unwrap ( ) ;
81- handle. verbose ( true ) . unwrap ( ) ;
82- handle
83- . debug_function ( move |info, data| {
84- let prefix = match info {
85- curl:: easy:: InfoType :: HeaderIn => "< " ,
86- curl:: easy:: InfoType :: HeaderOut => "> " ,
87- curl:: easy:: InfoType :: DataOut => "" ,
88- _ => return ,
89- } ;
90- sentry_debug ! ( "curl: {}{}" , prefix, String :: from_utf8_lossy( data) . trim( ) ) ;
91- } )
92- . unwrap ( ) ;
93-
94- {
95- let mut handle = handle. transfer ( ) ;
96- let retry_after_setter = & mut retry_after;
97- let sentry_header_setter = & mut sentry_header;
66+
67+ let mut body = Vec :: new ( ) ;
68+ envelope. to_writer ( & mut body) . unwrap ( ) ;
69+ let mut body = Cursor :: new ( body) ;
70+
71+ let mut retry_after = None ;
72+ let mut sentry_header = None ;
73+ let mut headers = curl:: easy:: List :: new ( ) ;
74+ headers. append ( & format ! ( "X-Sentry-Auth: {auth}" ) ) . unwrap ( ) ;
75+ headers. append ( "Expect:" ) . unwrap ( ) ;
76+ handle. http_headers ( headers) . unwrap ( ) ;
77+ handle. upload ( true ) . unwrap ( ) ;
78+ handle. in_filesize ( body. get_ref ( ) . len ( ) as u64 ) . unwrap ( ) ;
79+ handle
80+ . read_function ( move |buf| Ok ( body. read ( buf) . unwrap_or ( 0 ) ) )
81+ . unwrap ( ) ;
82+ handle. verbose ( true ) . unwrap ( ) ;
9883 handle
99- . header_function ( move |data| {
100- if let Ok ( data) = std:: str:: from_utf8 ( data) {
101- let mut iter = data. split ( ':' ) ;
102- if let Some ( key) = iter. next ( ) . map ( str:: to_lowercase) {
103- if key == "retry-after" {
104- * retry_after_setter = iter. next ( ) . map ( |x| x. trim ( ) . to_string ( ) ) ;
105- } else if key == "x-sentry-rate-limits" {
106- * sentry_header_setter =
107- iter. next ( ) . map ( |x| x. trim ( ) . to_string ( ) ) ;
84+ . debug_function ( move |info, data| {
85+ let prefix = match info {
86+ curl:: easy:: InfoType :: HeaderIn => "< " ,
87+ curl:: easy:: InfoType :: HeaderOut => "> " ,
88+ curl:: easy:: InfoType :: DataOut => "" ,
89+ _ => return ,
90+ } ;
91+ sentry_debug ! ( "curl: {}{}" , prefix, String :: from_utf8_lossy( data) . trim( ) ) ;
92+ } )
93+ . unwrap ( ) ;
94+
95+ {
96+ let mut handle = handle. transfer ( ) ;
97+ let retry_after_setter = & mut retry_after;
98+ let sentry_header_setter = & mut sentry_header;
99+ handle
100+ . header_function ( move |data| {
101+ if let Ok ( data) = std:: str:: from_utf8 ( data) {
102+ let mut iter = data. split ( ':' ) ;
103+ if let Some ( key) = iter. next ( ) . map ( str:: to_lowercase) {
104+ if key == "retry-after" {
105+ * retry_after_setter =
106+ iter. next ( ) . map ( |x| x. trim ( ) . to_string ( ) ) ;
107+ } else if key == "x-sentry-rate-limits" {
108+ * sentry_header_setter =
109+ iter. next ( ) . map ( |x| x. trim ( ) . to_string ( ) ) ;
110+ }
108111 }
109112 }
113+ true
114+ } )
115+ . unwrap ( ) ;
116+ handle. perform ( ) . ok ( ) ;
117+ }
118+
119+ match handle. response_code ( ) {
120+ Ok ( response_code) => {
121+ if let Some ( sentry_header) = sentry_header {
122+ rl. update_from_sentry_header ( & sentry_header) ;
123+ } else if let Some ( retry_after) = retry_after {
124+ rl. update_from_retry_after ( & retry_after) ;
125+ } else if response_code == 429 {
126+ rl. update_from_429 ( ) ;
127+ }
128+ if response_code == HTTP_PAYLOAD_TOO_LARGE as u32 {
129+ sentry_debug ! ( "{HTTP_PAYLOAD_TOO_LARGE_MESSAGE}" ) ;
110130 }
111- true
112- } )
113- . unwrap ( ) ;
114- handle. perform ( ) . ok ( ) ;
115- }
116-
117- match handle. response_code ( ) {
118- Ok ( response_code) => {
119- if let Some ( sentry_header) = sentry_header {
120- rl. update_from_sentry_header ( & sentry_header) ;
121- } else if let Some ( retry_after) = retry_after {
122- rl. update_from_retry_after ( & retry_after) ;
123- } else if response_code == 429 {
124- rl. update_from_429 ( ) ;
125131 }
126- if response_code == HTTP_PAYLOAD_TOO_LARGE as u32 {
127- sentry_debug ! ( "{HTTP_PAYLOAD_TOO_LARGE_MESSAGE}" ) ;
132+ Err ( err ) => {
133+ sentry_debug ! ( "Failed to send envelope: {}" , err ) ;
128134 }
129135 }
130- Err ( err) => {
131- sentry_debug ! ( "Failed to send envelope: {}" , err) ;
132- }
133- }
134- } , channel_capacity) ;
136+ } ,
137+ channel_capacity,
138+ ) ;
135139 Self { thread }
136140 }
137141}
0 commit comments