GNU bug report logs - #20159
24.4; url-retrieve invokes same callback twice with kill-buffer

Previous Next

Package: emacs;

Reported by: Christopher Wellons <wellons <at> nullprogram.com>

Date: Sat, 21 Mar 2015 20:47:01 UTC

Severity: normal

Tags: confirmed

Found in version 24.4

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 20159 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Christopher Wellons <wellons <at> nullprogram.com>
Cc: 20159 <at> debbugs.gnu.org
Subject: Re: bug#20159: 24.4;
 url-retrieve invokes same callback twice with kill-buffer
Date: Sat, 21 Mar 2015 23:00:51 +0200
> 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.