@@ -102,7 +102,7 @@ impl TryFrom<http::HeaderMap> for Headers {
102102 if let Some ( name) = name {
103103 let value: HeaderValue = value. try_into ( ) ?;
104104 let name: HeaderName = name. try_into ( ) ?;
105- headers. append ( name, value) ;
105+ headers. append ( name, value) ? ;
106106 }
107107 Ok ( ( ) )
108108 } )
@@ -140,16 +140,20 @@ impl TryFrom<Headers> for http::HeaderMap {
140140 }
141141}
142142
143- fn hyperium_headers_to_headers ( hyperium_headers : http:: HeaderMap , headers : & mut Headers ) {
143+ fn hyperium_headers_to_headers (
144+ hyperium_headers : http:: HeaderMap ,
145+ headers : & mut Headers ,
146+ ) -> crate :: Result < ( ) > {
144147 for ( name, value) in hyperium_headers {
145148 let value = value. as_bytes ( ) . to_owned ( ) ;
146149 let value = unsafe { HeaderValue :: from_bytes_unchecked ( value) } ;
147150 if let Some ( name) = name {
148151 let name = name. as_str ( ) . as_bytes ( ) . to_owned ( ) ;
149152 let name = unsafe { HeaderName :: from_bytes_unchecked ( name) } ;
150- headers. append ( name, value) ;
153+ headers. append ( name, value) ? ;
151154 }
152155 }
156+ Ok ( ( ) )
153157}
154158
155159fn headers_to_hyperium_headers ( headers : & mut Headers , hyperium_headers : & mut http:: HeaderMap ) {
@@ -176,7 +180,7 @@ fn from_url_to_uri(url: &Url) -> http::Uri {
176180}
177181
178182impl TryFrom < http:: Request < Body > > for Request {
179- type Error = crate :: url :: ParseError ;
183+ type Error = crate :: Error ;
180184
181185 fn try_from ( req : http:: Request < Body > ) -> Result < Self , Self :: Error > {
182186 let ( parts, body) = req. into_parts ( ) ;
@@ -185,7 +189,7 @@ impl TryFrom<http::Request<Body>> for Request {
185189 let mut req = Request :: new ( method, url) ;
186190 req. set_body ( body) ;
187191 req. set_version ( Some ( parts. version . into ( ) ) ) ;
188- hyperium_headers_to_headers ( parts. headers , req. as_mut ( ) ) ;
192+ hyperium_headers_to_headers ( parts. headers , req. as_mut ( ) ) ? ;
189193 Ok ( req)
190194 }
191195}
@@ -203,14 +207,15 @@ impl From<Request> for http::Request<Body> {
203207 }
204208}
205209
206- impl From < http:: Response < Body > > for Response {
207- fn from ( res : http:: Response < Body > ) -> Self {
210+ impl TryFrom < http:: Response < Body > > for Response {
211+ type Error = crate :: Error ;
212+ fn try_from ( res : http:: Response < Body > ) -> Result < Self , Self :: Error > {
208213 let ( parts, body) = res. into_parts ( ) ;
209214 let mut res = Response :: new ( parts. status ) ;
210215 res. set_body ( body) ;
211216 res. set_version ( Some ( parts. version . into ( ) ) ) ;
212- hyperium_headers_to_headers ( parts. headers , res. as_mut ( ) ) ;
213- res
217+ hyperium_headers_to_headers ( parts. headers , res. as_mut ( ) ) ? ;
218+ Ok ( res)
214219 }
215220}
216221
0 commit comments