I have modified Drakma to use a SOCKS5 proxy if desired. Before I
submit a patch I'd like to know what is the preferred interface for
this:
1. Modify http-request with a SOCKS-PROXY option analogous to the
PROXY option. Introduce SOCKS5 protocol code (about 200 lines) into
hunchentoot and rely on no external libraries
2. Modify http-request with a SOCKS-PROXY option analogous to the
PROXY option. Introduce a dependency on an external SOCKS5 library.
3. Modify Drakma in some way that allows a user to establish a
socks-proxy connection without explicitly supporting this in Drakma
itself.
The implementation requires that instead of establishing a socket
connection to HOST/PORT, the socket connects to SOCKS-HOST/SOCKS-PORT
instead and then sets up the socket to forward to HOST/PORT.
The implementation is available here:
http://github.com/gonzojive/drakma/tree/socks
socks5 spec: http://www.faqs.org/rfcs/rfc1928.html
Red
Thanks for the patch. I'm back from vacation now and I've just
released 1.2.3 which fixes this.
Edi.
On Thu, Jul 29, 2010 at 11:22 AM, Vsevolod Dyomkin <vseloved(a)gmail.com> wrote:
> 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
>
> _______________________________________________
> drakma-devel mailing list
> drakma-devel(a)common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/drakma-devel
>
>