diff --git a/library/server/wsf/src/wsf_request.e b/library/server/wsf/src/wsf_request.e index 93980c60..48a9e89a 100644 --- a/library/server/wsf/src/wsf_request.e +++ b/library/server/wsf/src/wsf_request.e @@ -1262,41 +1262,43 @@ feature {NONE} -- Cookies local i,j,p,n: INTEGER l_cookies: like internal_cookies_table + s32: READABLE_STRING_32 k,v,s: STRING do l_cookies := internal_cookies_table if l_cookies = Void then + create l_cookies.make_equal (0) if attached {WSF_STRING} meta_variable ({WSF_META_NAMES}.http_cookie) as val then - s := val.value - create l_cookies.make_equal (5) - from - n := s.count - p := 1 - i := 1 - until - p < 1 - loop - i := s.index_of ('=', p) - if i > 0 then - j := s.index_of (';', i) - if j = 0 then - j := n + 1 - k := s.substring (p, i - 1) - v := s.substring (i + 1, n) + s32 := val.value + if s32.is_valid_as_string_8 then + s := s32.to_string_8 + from + n := s.count + p := 1 + i := 1 + until + p < 1 + loop + i := s.index_of ('=', p) + if i > 0 then + j := s.index_of (';', i) + if j = 0 then + j := n + 1 + k := s.substring (p, i - 1) + v := s.substring (i + 1, n) - p := 0 -- force termination - else - k := s.substring (p, i - 1) - v := s.substring (i + 1, j - 1) - p := j + 1 + p := 0 -- force termination + else + k := s.substring (p, i - 1) + v := s.substring (i + 1, j - 1) + p := j + 1 + end + k.left_adjust + k.right_adjust + add_value_to_table (k, v, l_cookies) end - k.left_adjust - k.right_adjust - add_value_to_table (k, v, l_cookies) end end - else - create l_cookies.make_equal (0) end internal_cookies_table := l_cookies end @@ -2065,7 +2067,7 @@ invariant wgi_request.content_type /= Void implies content_type /= Void note - copyright: "2011-2013, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others" + copyright: "2011-2014, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software