File tree 1 file changed +8
-4
lines changed
1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -107,9 +107,13 @@ enum UpgradeStatus<S> {
107
107
}
108
108
use UpgradeStatus :: { NotUpgraded , Upgraded } ;
109
109
110
- fn header_eq_ignore_case < T > ( req : & Request < T > , header_name : HeaderName , value : & str ) -> bool {
110
+ fn header_contains_ignore_case < T > ( req : & Request < T > , header_name : HeaderName , value : & str ) -> bool {
111
111
req. header ( header_name)
112
- . map ( |h| h. as_str ( ) . eq_ignore_ascii_case ( value) )
112
+ . map ( |h| {
113
+ h. as_str ( )
114
+ . split ( ',' )
115
+ . any ( |s| s. trim ( ) . eq_ignore_ascii_case ( value. trim ( ) ) )
116
+ } )
113
117
. unwrap_or ( false )
114
118
}
115
119
@@ -139,8 +143,8 @@ where
139
143
}
140
144
141
145
async fn handle_upgrade ( & self , req : Request < S > ) -> UpgradeStatus < S > {
142
- let connection_upgrade = header_eq_ignore_case ( & req, CONNECTION , "upgrade" ) ;
143
- let upgrade_to_websocket = header_eq_ignore_case ( & req, UPGRADE , "websocket" ) ;
146
+ let connection_upgrade = header_contains_ignore_case ( & req, CONNECTION , "upgrade" ) ;
147
+ let upgrade_to_websocket = header_contains_ignore_case ( & req, UPGRADE , "websocket" ) ;
144
148
let upgrade_requested = connection_upgrade && upgrade_to_websocket;
145
149
146
150
if !upgrade_requested {
You can’t perform that action at this time.
0 commit comments