Hi,
I want to re-raise the topic of duplicate cookies. I've had this issue with the older version of Drakma (1.1.0) and was unaware of the patch with *remove-duplicate-cookies-p*. But investigating the problem (before I've read the discussion in the mailing list), I've encountered it's cause in the source code, that is highlighted in the attached diff. The problem is, that SET-DIFFERENCE and UNION are not supplied COOKIE= tests in UPDATE-COOKIES.
It still remains in the current version (1.2.2) and can be tested like this:
CL-USER> (defvar *cookies* (make-instance 'drakma:cookie-jar)) *COOKIES* CL-USER> (drakma::update-cookies (list (make-instance 'drakma:cookie :name "lang" :value "en" :domain "site.com" :path "/") (make-instance 'drakma:cookie :name "lang" :value "en" :domain "site.com" :path "/")) *cookies*) #<DRAKMA:COOKIE-JAR (with 2 cookies) {B629521}>
I think, that this is a bug, because without the TEST argument, for example, SET-DIFFERENCE in this case will constantly return the first set (see below), so either the code should be simplified or the test argument should be added.
CL-USER> (set-difference (list (make-instance 'drakma:cookie :name "lang" :value "en" :domain "site.com" :path "/") (make-instance 'drakma:cookie :name "lang" :value "en" :domain "site.com" :path "/")) (list (make-instance 'drakma:cookie :name "lang" :value "en" :domain "site.com" :path "/") (make-instance 'drakma:cookie :name "lang" :value "en" :domain "site.com" :path "/"))) (#<DRAKMA:COOKIE lang=en; path=/; domain=site.com> #<DRAKMA:COOKIE lang=en; path=/; domain=site.com>)
So, I believe, that this part should also be fixed, especially, since UPDATE-COOKIES is called alongside with GET-COOKIES.
Best regards, Vsevolod