File tree Expand file tree Collapse file tree 1 file changed +15
-10
lines changed Expand file tree Collapse file tree 1 file changed +15
-10
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ use crate::response::CookieEvent;
2
2
use crate :: utils:: BoxFuture ;
3
3
use crate :: { Middleware , Next , Request } ;
4
4
5
- use cookie:: CookieJar ;
5
+ use cookie:: { Cookie , CookieJar } ;
6
6
use http_types:: headers;
7
7
8
8
use std:: sync:: { Arc , RwLock } ;
@@ -77,16 +77,21 @@ pub(crate) struct CookieData {
77
77
78
78
impl CookieData {
79
79
pub ( crate ) fn from_request < S > ( req : & Request < S > ) -> Self {
80
- let cookie_jar = req. request . cookies ( ) . and_then ( |cookies| {
81
- let mut jar = CookieJar :: new ( ) ;
82
- for cookie in cookies. into_iter ( ) {
83
- jar. add_original ( cookie. into_owned ( ) ) ;
84
- }
80
+ let mut jar = CookieJar :: new ( ) ;
85
81
86
- Ok ( jar)
87
- } ) ;
88
- let content = Arc :: new ( RwLock :: new ( cookie_jar. unwrap_or_default ( ) ) ) ;
82
+ if let Some ( cookie_headers) = req. header ( & headers:: COOKIE ) {
83
+ for cookie_header in cookie_headers {
84
+ // spec says there should be only one, so this is permissive
85
+ for pair in cookie_header. as_str ( ) . split ( ";" ) . map ( str:: trim) {
86
+ if let Ok ( cookie) = Cookie :: parse ( String :: from ( pair) ) {
87
+ jar. add_original ( cookie) ;
88
+ }
89
+ }
90
+ }
91
+ }
89
92
90
- CookieData { content }
93
+ CookieData {
94
+ content : Arc :: new ( RwLock :: new ( jar) ) ,
95
+ }
91
96
}
92
97
}
You can’t perform that action at this time.
0 commit comments