GNU bug report logs -
#20159
24.4; url-retrieve invokes same callback twice with kill-buffer
Previous Next
Full log
Message #8 received at 20159 <at> debbugs.gnu.org (full text, mbox):
> From: Christopher Wellons <wellons <at> nullprogram.com>
> Date: Sat, 21 Mar 2015 16:46:16 -0400
>
>
> ;;; -*- lexical-binding: t; -*-
> (let ((calls 0))
> (url-retrieve "http://localhost:1/"
> (lambda (_)
> (assert (= 1 (cl-incf calls)))
> (kill-buffer))))
>
> When I eval the above expression, the assertion fails asynchronously.
>
> error in process sentinel: Assertion failed: (= 1 (cl-incf calls))
>
> I expect the callback given to `url-retrieve' to never be invoked more
> than once each time it's passed to `url-retrieve'. Ideally I expect it
> to be called exactly once for each call to `url-retrieve', always
> delivering errors asynchronously.
>
> I also tested this on a Windows build of Emacs. The callback is invoked
> zero times because the connection error is delivered synchronously at
> the call to `url-retrieve' (which I now realize explains why connection
> queuing doesn't work right on Windows). So even if the double-invoke
> problem is fixed for Linux, the behavior still differs across platforms.
I don't understand what you mean by "error is delivered synchronously
at the call", and by "connection queuing doesn't work right". Please
consider elaborating on those 2 points.
Thanks.
This bug report was last modified 9 years and 81 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.