@@ -9,6 +9,8 @@ use hyper::http::uri::InvalidUri;
99use hyper:: upgrade:: OnUpgrade ;
1010use hyper:: { Body , Client , Error , Request , Response , StatusCode } ;
1111use lazy_static:: lazy_static;
12+ use std:: error:: Error as StdError ;
13+ use std:: fmt:: { Display , Formatter , Result as FmtResult } ;
1214use std:: net:: IpAddr ;
1315use tokio:: io:: copy_bidirectional;
1416
@@ -42,6 +44,28 @@ pub enum ProxyError {
4244 UpgradeError ( String ) ,
4345}
4446
47+ impl Display for ProxyError {
48+ fn fmt ( & self , f : & mut Formatter < ' _ > ) -> FmtResult {
49+ match self {
50+ ProxyError :: InvalidUri ( err) => write ! ( f, "InvalidUri: {err}" ) ,
51+ ProxyError :: HyperError ( err) => write ! ( f, "HyperError: {err}" ) ,
52+ ProxyError :: ForwardHeaderError => write ! ( f, "ForwardHeaderError" ) ,
53+ ProxyError :: UpgradeError ( err) => write ! ( f, "UpgradeError: {err}" ) ,
54+ }
55+ }
56+ }
57+
58+ impl StdError for ProxyError {
59+ fn source ( & self ) -> Option < & ( dyn StdError + ' static ) > {
60+ match self {
61+ ProxyError :: InvalidUri ( err) => err. source ( ) ,
62+ ProxyError :: HyperError ( err) => err. source ( ) ,
63+ ProxyError :: ForwardHeaderError => None ,
64+ ProxyError :: UpgradeError ( ..) => None ,
65+ }
66+ }
67+ }
68+
4569impl From < Error > for ProxyError {
4670 fn from ( err : Error ) -> ProxyError {
4771 ProxyError :: HyperError ( err)
0 commit comments