From unknown Fri Aug 15 14:47:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#49897: 28.0.50; [PATCH] Make sense of url-retrieve-synchronously Resent-From: dick.r.chiang@gmail.com Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Aug 2021 16:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 49897 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 49897@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.162818203210528 (code B ref -1); Thu, 05 Aug 2021 16:48:01 +0000 Received: (at submit) by debbugs.gnu.org; 5 Aug 2021 16:47:12 +0000 Received: from localhost ([127.0.0.1]:48239 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBgWU-0002ji-Aj for submit@debbugs.gnu.org; Thu, 05 Aug 2021 12:47:12 -0400 Received: from lists.gnu.org ([209.51.188.17]:55238) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBgWQ-0002jY-9M for submit@debbugs.gnu.org; Thu, 05 Aug 2021 12:47:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mBgWQ-00033S-12 for bug-gnu-emacs@gnu.org; Thu, 05 Aug 2021 12:47:06 -0400 Received: from mail-qk1-x733.google.com ([2607:f8b0:4864:20::733]:37710) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mBgWL-0000U2-Uy for bug-gnu-emacs@gnu.org; Thu, 05 Aug 2021 12:47:05 -0400 Received: by mail-qk1-x733.google.com with SMTP id 14so6931218qkc.4 for ; Thu, 05 Aug 2021 09:47:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:user-agent:mime-version; bh=hJA7HkW7Er5fvnjNoOIcLk27SfRYdypRA6fDC1bT2iA=; b=UJFJgVESFQSwGLjdmGCenrvw3LHQur65N29WFygH1CzHU+bkNxGK/A6kg6gtRH+ouk 2GrYtKJDs5hzEbe1ASCw3qoX0Fti2ulLGPNadW3njRqxQsye8XVsjk4/zYo8WGFD/ND8 pZn17drFhzMRWV83r23r9z3rCQ3oPm1oDfnmTuUIXSBxftkVEhGSjiC461x3WyxkxuWk 1ySq6FOtAC4OwoCXvolGQeMzFP29RdQc8tIDCFmHrU9yQl+YZmX/30b5vxg07JIV3B7d mRHuHhslo4j4fev19AAl4ufJauxG0mvaQH0ifJJQTY1fsIp4usdX2e/idtBHgILJ5D8n UH2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version; bh=hJA7HkW7Er5fvnjNoOIcLk27SfRYdypRA6fDC1bT2iA=; b=sBXnM9TqSyhOPFwUqH+e+3JlTEauqp9JUE+ycoH3poiDio59p5mcB59Lm1gVrtBPuS 5jLlUtvv5/qE1Q9wM5hVfvyim+AgJBDmN2CW5sneAwh6rLYDfNhccYfsJNaHjd5144pj x3vXgniB6oGGFJPo13aQBvGfgOxKNfZ7NPJ5f1z+hn1yXRvrskTMf9yIW28tNs3+j7OE p36uIBFpaFSM4Erq95Zmib5x3z18aV3OcJeYp5f4uIJX1QWHTanDI0cxY/Ozp7eICLfE 83Qr5T8Ey+56nfnO7L1KasI+Cn73z+Zezn6bWgbQGNtXKFJIK5fbp35Kgn0ThuLiLwz6 BsgA== X-Gm-Message-State: AOAM5307vxwGEyFOlRDGe3q2SyQI2KmwkRJZNP2ATAIIQctYKlkJI1iX +FKHvH51EwWQukI9bm0lz0Q21KhY1js= X-Google-Smtp-Source: ABdhPJy8HOCv2BnXeRbsCD/Jbxj2/pwHDqZJe7grV+6HkSzRyar82CbkyT3fvvgnGuWsVfJehOTrgg== X-Received: by 2002:a37:2cc4:: with SMTP id s187mr5828489qkh.407.1628182020261; Thu, 05 Aug 2021 09:47:00 -0700 (PDT) Received: from localhost ([68.237.93.126]) by smtp.gmail.com with ESMTPSA id l29sm2751220qtn.8.2021.08.05.09.46.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 05 Aug 2021 09:46:59 -0700 (PDT) From: dick.r.chiang@gmail.com Date: Thu, 05 Aug 2021 12:46:59 -0400 Message-ID: <87h7g3g7p8.fsf@dick> User-Agent: Gnus/5.14 (Gnus v5.14pre) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::733; envelope-from=dick.r.chiang@gmail.com; helo=mail-qk1-x733.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Rationalize-url-retrieve-synchronously.patch >From b560aa029810dcfdee278b4b3614c938d996fa6c Mon Sep 17 00:00:00 2001 From: dickmao Date: Thu, 5 Aug 2021 12:41:39 -0400 Subject: [PATCH] Rationalize url-retrieve-synchronously It's impossible to reason about this function without the conveniences of throw-catch and unwind-protect. Related bug#49861. * lisp/url/url.el (url-retrieve-synchronously): Accept-process-output on a null process. That is the safer, more conventional way of achieving non-blocking sleep-for. --- lisp/url/url.el | 125 ++++++++++++++++++------------------------------ 1 file changed, 46 insertions(+), 79 deletions(-) diff --git a/lisp/url/url.el b/lisp/url/url.el index a6565e2cdb..be66510dd8 100644 --- a/lisp/url/url.el +++ b/lisp/url/url.el @@ -235,85 +235,52 @@ url-retrieve-synchronously TIMEOUT is passed, it should be a number that says (in seconds) how long to wait for a response before giving up." (url-do-setup) - - (let ((retrieval-done nil) - (start-time (current-time)) - (url-asynchronous nil) - (asynch-buffer nil) - (timed-out nil)) - (setq asynch-buffer - (url-retrieve url (lambda (&rest ignored) - (url-debug 'retrieval "Synchronous fetching done (%S)" (current-buffer)) - (setq retrieval-done t - asynch-buffer (current-buffer))) - nil silent inhibit-cookies)) - (if (null asynch-buffer) - ;; We do not need to do anything, it was a mailto or something - ;; similar that takes processing completely outside of the URL - ;; package. - nil - (let ((proc (get-buffer-process asynch-buffer))) - ;; If the access method was synchronous, `retrieval-done' should - ;; hopefully already be set to t. If it is nil, and `proc' is also - ;; nil, it implies that the async process is not running in - ;; asynch-buffer. This happens e.g. for FTP files. In such a case - ;; url-file.el should probably set something like a `url-process' - ;; buffer-local variable so we can find the exact process that we - ;; should be waiting for. In the mean time, we'll just wait for any - ;; process output. - (while (and (not retrieval-done) - (or (not timeout) - (not (setq timed-out - (time-less-p timeout - (time-since start-time)))))) - (url-debug 'retrieval - "Spinning in url-retrieve-synchronously: %S (%S)" - retrieval-done asynch-buffer) - (if (buffer-local-value 'url-redirect-buffer asynch-buffer) - (setq proc (get-buffer-process - (setq asynch-buffer - (buffer-local-value 'url-redirect-buffer - asynch-buffer)))) - (if (and proc (memq (process-status proc) - '(closed exit signal failed)) - ;; Make sure another process hasn't been started. - (eq proc (or (get-buffer-process asynch-buffer) proc))) - ;; FIXME: It's not clear whether url-retrieve's callback is - ;; guaranteed to be called or not. It seems that url-http - ;; decides sometimes consciously not to call it, so it's not - ;; clear that it's a bug, but even then we need to decide how - ;; url-http can then warn us that the download has completed. - ;; In the mean time, we use this here workaround. - ;; XXX: The callback must always be called. Any - ;; exception is a bug that should be fixed, not worked - ;; around. - (progn ;; Call delete-process so we run any sentinel now. - (delete-process proc) - (setq retrieval-done t))) - ;; We used to use `sit-for' here, but in some cases it wouldn't - ;; work because apparently pending keyboard input would always - ;; interrupt it before it got a chance to handle process input. - ;; `sleep-for' was tried but it lead to other forms of - ;; hanging. --Stef - (unless (or (with-local-quit - (accept-process-output proc 1)) - (null proc)) - ;; accept-process-output returned nil, maybe because the process - ;; exited (and may have been replaced with another). If we got - ;; a quit, just stop. - (when quit-flag - (delete-process proc)) - (setq proc (and (not quit-flag) - (get-buffer-process asynch-buffer)))))) - ;; On timeouts, make sure we kill any pending processes. - ;; There may be more than one if we had a redirect. - (when timed-out - (when (process-live-p proc) - (delete-process proc)) - (when-let ((aproc (get-buffer-process asynch-buffer))) - (when (process-live-p aproc) - (delete-process aproc)))))) - asynch-buffer)) + (let* (url-asynchronous + data-buffer + (callback (lambda (&rest _args) + (setq data-buffer (current-buffer)) + (url-debug 'retrieval + "Synchronous fetching done (%S)" + data-buffer)))) + (if-let ((start-time (current-time)) + (proc-buffer (url-retrieve url callback nil silent inhibit-cookies))) + (unwind-protect + (catch 'done + (while (not data-buffer) + (when (and timeout (time-less-p timeout (time-since start-time))) + (url-debug 'retrieval "Timed out %s (after %ss)" url + (float-time (time-since start-time))) + (throw 'done 'timeout)) + (url-debug 'retrieval + "Spinning in url-retrieve-synchronously: nil (%S)" + proc-buffer) + (when-let ((redirect-buffer (buffer-local-value + 'url-redirect-buffer + proc-buffer))) + (unless (eq redirect-buffer proc-buffer) + (url-debug 'retrieval + "Redirect in url-retrieve-synchronously: %S -> %S" + proc-buffer redirect-buffer) + (let (kill-buffer-query-functions) + (kill-buffer proc-buffer)) + ;; Accommodate self-admitted hack in commit 55d1d8b + (setq proc-buffer redirect-buffer))) + (when-let ((proc (get-buffer-process proc-buffer))) + (when (memq (process-status proc) + '(closed exit signal failed)) + ;; Process sentinel vagaries occasionally cause + ;; url-retrieve to fail calling callback. + (unless data-buffer + (url-debug 'retrieval "Dead process %s" url) + (throw 'done 'exception)))) + ;; Querying over consumer internet in the US takes 100 ms, + ;; so split the difference. + (accept-process-output nil 0.05))) + (unless (eq data-buffer proc-buffer) + (let (kill-buffer-query-functions) + (kill-buffer proc-buffer)))) + (url-debug 'retrieval "Synchronous fetching unnecessary %s" url)) + data-buffer)) ;; url-mm-callback called from url-mm, which requires mm-decode. (declare-function mm-dissect-buffer "mm-decode" -- 2.26.2 --=-=-= Content-Type: text/plain In GNU Emacs 28.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.22.30, cairo version 1.15.10) of 2021-08-05 built on dick Repository revision: a9709f95a1a9c0f32227f9458bfe6410fccde0aa Repository branch: el-gz Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 System Description: Ubuntu 18.04.4 LTS Configured using: 'configure --prefix=/home/dick/.local PKG_CONFIG_PATH=/home/dick/.local/lib/pkgconfig' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Magit Log Minor modes in effect: async-bytecomp-package-mode: t global-git-commit-mode: t magit-auto-revert-mode: t show-paren-mode: t projectile-mode: t flx-ido-mode: t override-global-mode: t shell-dirtrack-mode: t global-hl-line-mode: t winner-mode: t tooltip-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /home/dick/ESS/lisp/obsolete/ess-swv hides /home/dick/ESS/lisp/ess-swv /home/dick/ESS/lisp/obsolete/ess-rutils hides /home/dick/ESS/lisp/ess-rutils /home/dick/ESS/lisp/obsolete/ess-noweb hides /home/dick/ESS/lisp/ess-noweb /home/dick/ESS/lisp/obsolete/mouseme hides /home/dick/ESS/lisp/mouseme /home/dick/ESS/lisp/obsolete/ess-mouse hides /home/dick/ESS/lisp/ess-mouse /home/dick/ESS/lisp/obsolete/ess-noweb-mode hides /home/dick/ESS/lisp/ess-noweb-mode /home/dick/ESS/lisp/obsolete/make-regexp hides /home/dick/ESS/lisp/make-regexp /home/dick/ESS/lisp/obsolete/ess-r-a hides /home/dick/ESS/lisp/ess-r-a /home/dick/ESS/lisp/obsolete/ess-noweb-font-lock-mode hides /home/dick/ESS/lisp/ess-noweb-font-lock-mode /home/dick/gomacro-mode/gomacro-mode hides /home/dick/.emacs.d/elpa/gomacro-mode-20200326.1103/gomacro-mode /home/dick/ESS/lisp/julia-mode hides /home/dick/.emacs.d/elpa/julia-mode-20200717.1915/julia-mode /home/dick/ESS/lisp/julia-mode-latexsubs hides /home/dick/.emacs.d/elpa/julia-mode-20200717.1915/julia-mode-latexsubs /home/dick/.emacs.d/elpa/hydra-20170924.2259/lv hides /home/dick/.emacs.d/elpa/lv-20191106.1238/lv /home/dick/.emacs.d/elpa/gnus-5.14pre/ol-gnus hides /home/dick/.emacs.d/elpa/org-9.4.5/ol-gnus /home/dick/org-gcal.el/org-gcal hides /home/dick/.emacs.d/elpa/org-gcal-0.3/org-gcal /home/dick/.emacs.d/lisp/json hides /home/dick/.local/share/emacs/28.0.50/lisp/json /home/dick/.emacs.d/elpa/transient-0.3.6/transient hides /home/dick/.local/share/emacs/28.0.50/lisp/transient /home/dick/.emacs.d/elpa/org-9.4.5/ob-eval hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-eval /home/dick/.emacs.d/elpa/org-9.4.5/ob-perl hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-perl /home/dick/.emacs.d/elpa/org-9.4.5/ob-eshell hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-eshell /home/dick/.emacs.d/elpa/org-9.4.5/ob-abc hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-abc /home/dick/.emacs.d/elpa/org-9.4.5/ob-tangle hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-tangle /home/dick/.emacs.d/elpa/org-9.4.5/ob-vala hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-vala /home/dick/.emacs.d/elpa/org-9.4.5/org-attach-git hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-attach-git /home/dick/.emacs.d/elpa/org-9.4.5/org-ctags hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-ctags /home/dick/.emacs.d/elpa/org-9.4.5/ob-table hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-table /home/dick/.emacs.d/elpa/org-9.4.5/org-element hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-element /home/dick/.emacs.d/elpa/org-9.4.5/org-colview hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-colview /home/dick/.emacs.d/elpa/org-9.4.5/ol-mhe hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-mhe /home/dick/.emacs.d/elpa/org-9.4.5/ob-stan hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-stan /home/dick/.emacs.d/elpa/org-9.4.5/org-table hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-table /home/dick/.emacs.d/elpa/org-9.4.5/org-keys hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-keys /home/dick/.emacs.d/elpa/org-9.4.5/ol hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol /home/dick/.emacs.d/elpa/org-9.4.5/ob-dot hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-dot /home/dick/.emacs.d/elpa/org-9.4.5/ob-js hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-js /home/dick/.emacs.d/elpa/org-9.4.5/ob-clojure hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-clojure /home/dick/.emacs.d/elpa/org-9.4.5/ob-fortran hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-fortran /home/dick/.emacs.d/elpa/org-9.4.5/org-refile hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-refile /home/dick/.emacs.d/elpa/org-9.4.5/org-clock hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-clock /home/dick/.emacs.d/elpa/org-9.4.5/ob-sql hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-sql /home/dick/.emacs.d/elpa/org-9.4.5/ob-exp hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-exp /home/dick/.emacs.d/elpa/org-9.4.5/ob-asymptote hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-asymptote /home/dick/.emacs.d/elpa/org-9.4.5/ob-org hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-org /home/dick/.emacs.d/elpa/org-9.4.5/org-compat hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-compat /home/dick/.emacs.d/elpa/org-9.4.5/ob-python hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-python /home/dick/.emacs.d/elpa/org-9.4.5/ob-ref hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-ref /home/dick/.emacs.d/elpa/org-9.4.5/ox hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox /home/dick/.emacs.d/elpa/org-9.4.5/ob-C hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-C /home/dick/.emacs.d/elpa/org-9.4.5/ol-info hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-info /home/dick/.emacs.d/elpa/org-9.4.5/org-tempo hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-tempo /home/dick/.emacs.d/elpa/org-9.4.5/ox-md hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-md /home/dick/.emacs.d/elpa/org-9.4.5/ob-screen hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-screen /home/dick/.emacs.d/elpa/org-9.4.5/ob-lisp hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-lisp /home/dick/.emacs.d/elpa/org-9.4.5/ob-lua hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-lua /home/dick/.emacs.d/elpa/org-9.4.5/ob-matlab hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-matlab /home/dick/.emacs.d/elpa/org-9.4.5/org-list hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-list /home/dick/.emacs.d/elpa/org-9.4.5/ob-groovy hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-groovy /home/dick/.emacs.d/elpa/org-9.4.5/ol-docview hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-docview /home/dick/.emacs.d/elpa/org-9.4.5/ob-ebnf hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-ebnf /home/dick/.emacs.d/elpa/org-9.4.5/ob-forth hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-forth /home/dick/.emacs.d/elpa/org-9.4.5/ox-html hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-html /home/dick/.emacs.d/elpa/org-9.4.5/ob-io hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-io /home/dick/.emacs.d/elpa/org-9.4.5/org-faces hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-faces /home/dick/.emacs.d/elpa/org-9.4.5/ob-emacs-lisp hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp /home/dick/.emacs.d/elpa/org-9.4.5/ob-ocaml hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-ocaml /home/dick/.emacs.d/elpa/org-9.4.5/ol-bbdb hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-bbdb /home/dick/.emacs.d/elpa/org-9.4.5/org-lint hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-lint /home/dick/.emacs.d/elpa/org-9.4.5/ob-shen hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-shen /home/dick/.emacs.d/elpa/org-9.4.5/org-loaddefs hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-loaddefs /home/dick/.emacs.d/elpa/org-9.4.5/ob-scheme hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-scheme /home/dick/.emacs.d/elpa/org-9.4.5/org-protocol hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-protocol /home/dick/.emacs.d/elpa/org-9.4.5/ob-maxima hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-maxima /home/dick/.emacs.d/elpa/org-9.4.5/ox-latex hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-latex /home/dick/.emacs.d/elpa/org-9.4.5/ob-mscgen hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-mscgen /home/dick/.emacs.d/elpa/org-9.4.5/ob-R hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-R /home/dick/.emacs.d/elpa/org-9.4.5/ob-sed hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-sed /home/dick/.emacs.d/elpa/org-9.4.5/org hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org /home/dick/.emacs.d/elpa/org-9.4.5/org-plot hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-plot /home/dick/.emacs.d/elpa/org-9.4.5/ox-beamer hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-beamer /home/dick/.emacs.d/elpa/org-9.4.5/org-pcomplete hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-pcomplete /home/dick/.emacs.d/elpa/org-9.4.5/ob-plantuml hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-plantuml /home/dick/.emacs.d/elpa/org-9.4.5/ox-publish hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-publish /home/dick/.emacs.d/elpa/org-9.4.5/ob-java hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-java /home/dick/.emacs.d/elpa/org-9.4.5/ol-eww hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-eww /home/dick/.emacs.d/elpa/org-9.4.5/org-macs hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-macs /home/dick/.emacs.d/elpa/org-9.4.5/ol-eshell hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-eshell /home/dick/.emacs.d/elpa/org-9.4.5/org-src hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-src /home/dick/.emacs.d/elpa/org-9.4.5/ol-rmail hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-rmail /home/dick/.emacs.d/elpa/org-9.4.5/org-datetree hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-datetree /home/dick/.emacs.d/elpa/org-9.4.5/ob-J hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-J /home/dick/.emacs.d/elpa/org-9.4.5/ob-shell hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-shell /home/dick/.emacs.d/elpa/org-9.4.5/org-archive hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-archive /home/dick/.emacs.d/elpa/org-9.4.5/org-habit hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-habit /home/dick/.emacs.d/elpa/org-9.4.5/ob-picolisp hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-picolisp /home/dick/.emacs.d/elpa/org-9.4.5/org-capture hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-capture /home/dick/.emacs.d/elpa/org-9.4.5/ob-core hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-core /home/dick/.emacs.d/elpa/org-9.4.5/ob-octave hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-octave /home/dick/.emacs.d/elpa/org-9.4.5/org-mobile hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-mobile /home/dick/.emacs.d/elpa/org-9.4.5/ol-bibtex hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-bibtex /home/dick/.emacs.d/elpa/org-9.4.5/org-goto hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-goto /home/dick/.emacs.d/elpa/org-9.4.5/ox-odt hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-odt /home/dick/.emacs.d/elpa/org-9.4.5/ob-calc hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-calc /home/dick/.emacs.d/elpa/org-9.4.5/ob-gnuplot hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-gnuplot /home/dick/.emacs.d/elpa/org-9.4.5/org-macro hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-macro /home/dick/.emacs.d/elpa/org-9.4.5/ob hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob /home/dick/.emacs.d/elpa/org-9.4.5/ob-comint hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-comint /home/dick/.emacs.d/elpa/org-9.4.5/ob-ditaa hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-ditaa /home/dick/.emacs.d/elpa/org-9.4.5/org-duration hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-duration /home/dick/.emacs.d/elpa/org-9.4.5/org-entities hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-entities /home/dick/.emacs.d/elpa/org-9.4.5/org-agenda hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-agenda /home/dick/.emacs.d/elpa/org-9.4.5/ox-ascii hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-ascii /home/dick/.emacs.d/elpa/org-9.4.5/org-num hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-num /home/dick/.emacs.d/elpa/org-9.4.5/ob-awk hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-awk /home/dick/.emacs.d/elpa/org-9.4.5/ob-ruby hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-ruby /home/dick/.emacs.d/elpa/org-9.4.5/ox-man hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-man /home/dick/.emacs.d/elpa/org-9.4.5/ob-sqlite hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-sqlite /home/dick/.emacs.d/elpa/gnus-5.14pre/ol-gnus hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-gnus /home/dick/.emacs.d/elpa/org-9.4.5/org-attach hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-attach /home/dick/.emacs.d/elpa/org-9.4.5/org-inlinetask hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-inlinetask /home/dick/.emacs.d/elpa/org-9.4.5/ob-coq hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-coq /home/dick/.emacs.d/elpa/org-9.4.5/org-feed hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-feed /home/dick/.emacs.d/elpa/org-9.4.5/ob-hledger hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-hledger /home/dick/.emacs.d/elpa/org-9.4.5/org-crypt hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-crypt /home/dick/.emacs.d/elpa/org-9.4.5/ol-irc hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-irc /home/dick/.emacs.d/elpa/org-9.4.5/ob-css hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-css /home/dick/.emacs.d/elpa/org-9.4.5/ob-haskell hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-haskell /home/dick/.emacs.d/elpa/org-9.4.5/org-footnote hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-footnote /home/dick/.emacs.d/elpa/org-9.4.5/org-indent hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-indent /home/dick/.emacs.d/elpa/org-9.4.5/ox-icalendar hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-icalendar /home/dick/.emacs.d/elpa/org-9.4.5/ob-processing hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-processing /home/dick/.emacs.d/elpa/org-9.4.5/ob-ledger hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-ledger /home/dick/.emacs.d/elpa/org-9.4.5/org-id hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-id /home/dick/.emacs.d/elpa/org-9.4.5/ox-org hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-org /home/dick/.emacs.d/elpa/org-9.4.5/ob-lob hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-lob /home/dick/.emacs.d/elpa/org-9.4.5/ob-latex hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-latex /home/dick/.emacs.d/elpa/org-9.4.5/ol-w3m hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ol-w3m /home/dick/.emacs.d/elpa/org-9.4.5/org-timer hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-timer /home/dick/.emacs.d/elpa/org-9.4.5/ob-makefile hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-makefile /home/dick/.emacs.d/elpa/org-9.4.5/ob-lilypond hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-lilypond /home/dick/.emacs.d/elpa/org-9.4.5/ox-texinfo hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ox-texinfo /home/dick/.emacs.d/elpa/org-9.4.5/ob-sass hides /home/dick/.local/share/emacs/28.0.50/lisp/org/ob-sass /home/dick/.emacs.d/elpa/org-9.4.5/org-mouse hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-mouse /home/dick/.emacs.d/elpa/org-9.4.5/org-version hides /home/dick/.local/share/emacs/28.0.50/lisp/org/org-version /home/dick/.emacs.d/elpa/gnus-5.14pre/mh-compat hides /home/dick/.local/share/emacs/28.0.50/lisp/mh-e/mh-compat /home/dick/.emacs.d/elpa/gnus-5.14pre/nnmbox hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnmbox /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-notifications hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-notifications /home/dick/.emacs.d/elpa/gnus-5.14pre/spam-stat hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/spam-stat /home/dick/.emacs.d/elpa/gnus-5.14pre/nndraft hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nndraft /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-extern hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-extern /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-util hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-util /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-win hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-win /home/dick/.emacs.d/elpa/gnus-5.14pre/mail-source hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mail-source /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-diary hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-diary /home/dick/.emacs.d/elpa/gnus-5.14pre/nnml hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnml /home/dick/.emacs.d/elpa/gnus-5.14pre/spam-report hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/spam-report /home/dick/.emacs.d/elpa/gnus-5.14pre/nnagent hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnagent /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-cite hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-cite /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-srvr hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-srvr /home/dick/.emacs.d/elpa/gnus-5.14pre/nnrss hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnrss /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-vm hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-vm /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-spec hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-spec /home/dick/.emacs.d/elpa/gnus-5.14pre/nndiary hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nndiary /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-util hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-util /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-fun hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-fun /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-bodies hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-bodies /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-search hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-search /home/dick/.emacs.d/elpa/gnus-5.14pre/nnvirtual hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnvirtual /home/dick/.emacs.d/elpa/gnus-5.14pre/score-mode hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/score-mode /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-ml hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-ml /home/dick/.emacs.d/elpa/gnus-5.14pre/gmm-utils hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gmm-utils /home/dick/.emacs.d/elpa/gnus-5.14pre/message hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/message /home/dick/.emacs.d/elpa/gnus-5.14pre/nnmh hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnmh /home/dick/.emacs.d/elpa/gnus-5.14pre/nnspool hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnspool /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-start hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-start /home/dick/.emacs.d/elpa/gnus-5.14pre/smime hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/smime /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-uu hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-uu /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-draft hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-draft /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-cloud hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-cloud /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-undo hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-undo /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-salt hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-salt /home/dick/.emacs.d/elpa/gnus-5.14pre/canlock hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/canlock /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus /home/dick/.emacs.d/elpa/gnus-5.14pre/gssapi hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gssapi /home/dick/.emacs.d/elpa/gnus-5.14pre/mml-sec hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mml-sec /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-uu hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-uu /home/dick/.emacs.d/elpa/gnus-5.14pre/nnfolder hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnfolder /home/dick/.emacs.d/elpa/gnus-5.14pre/nnmairix hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnmairix /home/dick/.emacs.d/elpa/gnus-5.14pre/nnheader hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnheader /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-dbus hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-dbus /home/dick/.emacs.d/elpa/gnus-5.14pre/nnimap hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnimap /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-bcklg hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-bcklg /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-demon hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-demon /home/dick/.emacs.d/elpa/gnus-5.14pre/nneething hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nneething /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-score hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-score /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-html hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-html /home/dick/.emacs.d/elpa/gnus-5.14pre/mml2015 hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mml2015 /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-async hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-async /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-sum hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-sum /home/dick/.emacs.d/elpa/gnus-5.14pre/mml1991 hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mml1991 /home/dick/.emacs.d/elpa/gnus-5.14pre/nnweb hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnweb /home/dick/.emacs.d/elpa/gnus-5.14pre/mml-smime hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mml-smime /home/dick/.emacs.d/elpa/gnus-5.14pre/nnmail hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnmail /home/dick/.emacs.d/elpa/gnus-5.14pre/nndir hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nndir /home/dick/.emacs.d/elpa/gnus-5.14pre/nndoc hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nndoc /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-art hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-art /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-eform hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-eform /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-cus hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-cus /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-sieve hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-sieve /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-mlspl hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-mlspl /home/dick/.emacs.d/elpa/gnus-5.14pre/nnmaildir hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnmaildir /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-agent hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-agent /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-int hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-int /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-delay hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-delay /home/dick/.emacs.d/elpa/gnus-5.14pre/nnselect hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnselect /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-decode hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-decode /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-rfc1843 hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-rfc1843 /home/dick/.emacs.d/elpa/gnus-5.14pre/spam-wash hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/spam-wash /home/dick/.emacs.d/elpa/gnus-5.14pre/nnoo hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnoo /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-picon hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-picon /home/dick/.emacs.d/elpa/gnus-5.14pre/smiley hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/smiley /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-registry hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-registry /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-range hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-range /home/dick/.emacs.d/elpa/gnus-5.14pre/nnbabyl hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnbabyl /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-archive hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-archive /home/dick/.emacs.d/elpa/gnus-5.14pre/nntp hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nntp /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-icalendar hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-icalendar /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-url hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-url /home/dick/.emacs.d/elpa/gnus-5.14pre/spam hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/spam /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-dup hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-dup /home/dick/.emacs.d/elpa/gnus-5.14pre/nnregistry hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnregistry /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-group hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-group /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-bookmark hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-bookmark /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-mh hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-mh /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-kill hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-kill /home/dick/.emacs.d/elpa/gnus-5.14pre/mml hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mml /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-view hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-view /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-cache hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-cache /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-partial hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-partial /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-msg hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-msg /home/dick/.emacs.d/elpa/gnus-5.14pre/mm-encode hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/mm-encode /home/dick/.emacs.d/elpa/gnus-5.14pre/legacy-gnus-agent hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/legacy-gnus-agent /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-dired hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-dired /home/dick/.emacs.d/elpa/gnus-5.14pre/nnnil hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nnnil /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-gravatar hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-gravatar /home/dick/.emacs.d/elpa/gnus-5.14pre/nngateway hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/nngateway /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-logic hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-logic /home/dick/.emacs.d/elpa/gnus-5.14pre/deuglify hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/deuglify /home/dick/.emacs.d/elpa/gnus-5.14pre/gnus-topic hides /home/dick/.local/share/emacs/28.0.50/lisp/gnus/gnus-topic /home/dick/.emacs.d/elpa/hierarchy-20171221.1151/hierarchy hides /home/dick/.local/share/emacs/28.0.50/lisp/emacs-lisp/hierarchy /home/dick/.emacs.d/elpa/gnus-5.14pre/nnir hides /home/dick/.local/share/emacs/28.0.50/lisp/obsolete/nnir Features: (shadow emacsbug supercite regi bbdb-message sendmail footnote nndoc debbugs-gnu debbugs soap-client rng-xsd rng-dt rng-util xsd-regexp goto-addr magit-extras mule-util magit-patch-changelog magit-patch magit-submodule magit-obsolete magit-popup async-bytecomp async magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff git-commit log-edit pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor vterm face-remap vterm-module term ehelp eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util server magit-mode transient magit-git magit-section magit-utils tramp-archive tramp-gvfs tramp-cache zeroconf ivy delsel colir ivy-overlay ffap dumb-jump f vc-git vc vc-dispatcher bug-reference cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs shortdoc emms-source-file locate url-about url-dired help-fns radix-tree jka-compr misearch multi-isearch url-queue smerge-mode diff diff-mode qp sort smiley shr-color gnus-async gnus-ml gravatar dns mail-extr gnus-notifications gnus-fun notifications gnus-kill gnus-dup disp-table mm-archive utf-7 gnutls network-stream url-cache nntwitter nntwitter-api nnrss nndiscourse benchmark rbenv nnhackernews nnfolder bbdb-gnus gnus-demon nntp nnmairix nnml nnreddit gnus-topic url-http url-auth url-gw nsm request autorevert filenotify virtualenvwrapper gud s dash json-rpc python tramp-sh tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat ls-lisp gnus-score score-mode gnus-bcklg gnus-srvr gnus-cite anaphora bbdb-mua bbdb-com crm bbdb bbdb-site timezone gnus-delay gnus-draft gnus-cache gnus-agent gnus-msg nnselect gnus-search eieio-opt speedbar ezimage dframe find-func gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum shr svg dom nndraft nnmh gnus-group mm-url gnus-undo use-package use-package-delight use-package-diminish gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source imap rfc2104 utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win paredit-ext paredit subed subed-vtt subed-srt subed-common subed-mpv subed-debug subed-config dired-x inf-ruby ruby-mode smie company haskell-interactive-mode haskell-presentation-mode haskell-process haskell-session haskell-compile haskell-mode haskell-cabal haskell-utils haskell-font-lock haskell-indentation haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports haskell-complete-module haskell-ghc-support etags fileloop generator dabbrev haskell-customize hydra lv use-package-ensure paren solarized-theme solarized-definitions projectile skeleton ibuf-macs find-dired ibuf-ext ibuffer ibuffer-loaddefs grep gnus message rx rmc puny dired dired-loaddefs rfc822 mml mml-sec epa epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader pcase nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date flx-ido flx google-translate-default-ui google-translate-core-ui facemenu color ido google-translate-core google-translate-tk google-translate-backend use-package-bind-key bind-key auto-complete advice popup cus-edit pp cus-load wid-edit ess-r-mode ess-r-flymake flymake-proc flymake warnings thingatpt ess-r-xref xref ess-trns ess-r-package shell pcomplete ess-r-completion ess-roxy ess-r-syntax ess-rd noutline outline easy-mmode hideshow ess-s-lang ess-help ess-mode ess-inf project format-spec ess-tracebug ess ess-utils ess-custom compile text-property-search comint ansi-color emms-player-mplayer emms-player-simple emms emms-compat cl-extra help-mode use-package-core derived hl-line winner ring edmacro kmacro finder-inf json-reformat-autoloads json-snatcher-autoloads sml-mode-autoloads tornado-template-mode-autoloads info package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 1311187 135586) (symbols 48 55510 4) (strings 32 206640 27720) (string-bytes 1 8554859) (vectors 16 76514) (vector-slots 8 2135257 126708) (floats 8 2336 4198) (intervals 56 5063 1552) (buffers 992 42)) --=-=-=-- From unknown Fri Aug 15 14:47:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#49897: 28.0.50; [PATCH] Make sense of url-retrieve-synchronously Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Aug 2021 11:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49897 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: dick.r.chiang@gmail.com Cc: 49897@debbugs.gnu.org Received: via spool by 49897-submit@debbugs.gnu.org id=B49897.162824927510296 (code B ref 49897); Fri, 06 Aug 2021 11:28:02 +0000 Received: (at 49897) by debbugs.gnu.org; 6 Aug 2021 11:27:55 +0000 Received: from localhost ([127.0.0.1]:49297 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBy15-0002fy-0P for submit@debbugs.gnu.org; Fri, 06 Aug 2021 07:27:55 -0400 Received: from quimby.gnus.org ([95.216.78.240]:36110) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBy12-0002fg-Mn for 49897@debbugs.gnu.org; Fri, 06 Aug 2021 07:27:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=m7KuOcyNzIlU4Ay3H6XznPxBqiIkXQDY7v32+T4a6So=; b=qTOBwQGk9SLSytjL61670f+eoE 5UJa3FW8Xnz1Edzn7fVdrMypnytm4GzKF2wpjaAcuHzHn7Mvy5R1RoOT8sR/sG04LzaxDXxb7kdtv WVai1qwJC1kpE1y+b+iH/5+KHVfAeGmBHAtruZokghBrqs3ag3Y6DdyQPGkv50WLsrv4=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBy0t-0003tb-Ob; Fri, 06 Aug 2021 13:27:46 +0200 From: Lars Ingebrigtsen References: <87h7g3g7p8.fsf@dick> Date: Fri, 06 Aug 2021 13:27:43 +0200 In-Reply-To: <87h7g3g7p8.fsf@dick> (dick r. chiang's message of "Thu, 05 Aug 2021 12:46:59 -0400") Message-ID: <87r1f6ak40.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: dick.r.chiang@gmail.com writes: > It's impossible to reason about this function without the > conveniences of throw-catch and unwind-protect. Related bug#49861. Well, that's a big change here, and the code had a lot of special-casing to handle various edge cases with quit-ing and stuff... which... I agree with you shouldn't be necessary, so I've done some tes [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) dick.r.chiang@gmail.com writes: > It's impossible to reason about this function without the > conveniences of throw-catch and unwind-protect. Related bug#49861. Well, that's a big change here, and the code had a lot of special-casing to handle various edge cases with quit-ing and stuff... which... I agree with you shouldn't be necessary, so I've done some tests and applied your patch (with some trivial changes): > + (if-let ((start-time (current-time)) Doing if-lets on things that can't be nil is mildly confusing, so I moved that up to the surrounding let... > + (proc-buffer (url-retrieve url callback nil silent inhibit-cookies))) ... and the same here, which allowed for less indentation. So now I guess we'll wait for the bug reports to arrive about something subtle not working any more here. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Aug 06 07:28:00 2021 Received: (at control) by debbugs.gnu.org; 6 Aug 2021 11:28:00 +0000 Received: from localhost ([127.0.0.1]:49300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBy1A-0002gG-7r for submit@debbugs.gnu.org; Fri, 06 Aug 2021 07:28:00 -0400 Received: from quimby.gnus.org ([95.216.78.240]:36124) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBy18-0002fr-Bj for control@debbugs.gnu.org; Fri, 06 Aug 2021 07:27:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Qxh/2sFU64RunJs1sPansSKo7bmlAeDTFskeNF4Zcgo=; b=W1nPseCP8rzQ6F5puN/w9/peYC zYqaguQ1GomTQ4ay66bVQuJZYhLs5ZLxi6RUJAW0D7li/KWpt8vOX+0esbSf/4UtSwPduH369abs/ VUz+xXTaA6zg/jqWlqhIHIhNQzYc0m+MZn0PwP5wXZUryXt1/lctQIKeHDXGN6ke7EOo=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mBy10-0003tn-L0 for control@debbugs.gnu.org; Fri, 06 Aug 2021 13:27:52 +0200 Date: Fri, 06 Aug 2021 13:27:50 +0200 Message-Id: <87pmuqak3t.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #49897 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 49897 28.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) close 49897 28.1 quit From unknown Fri Aug 15 14:47:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#49897: 28.0.50; [PATCH] Make sense of url-retrieve-synchronously Resent-From: dick Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Aug 2021 12:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49897 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Lars Ingebrigtsen Cc: 49897@debbugs.gnu.org Received: via spool by 49897-submit@debbugs.gnu.org id=B49897.162825214731619 (code B ref 49897); Fri, 06 Aug 2021 12:16:02 +0000 Received: (at 49897) by debbugs.gnu.org; 6 Aug 2021 12:15:47 +0000 Received: from localhost ([127.0.0.1]:49355 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBylP-0008Du-3W for submit@debbugs.gnu.org; Fri, 06 Aug 2021 08:15:47 -0400 Received: from mail-qv1-f41.google.com ([209.85.219.41]:46688) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBylN-0008Df-Lf for 49897@debbugs.gnu.org; Fri, 06 Aug 2021 08:15:46 -0400 Received: by mail-qv1-f41.google.com with SMTP id e1so2403002qvs.13 for <49897@debbugs.gnu.org>; Fri, 06 Aug 2021 05:15:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=yYmyayf706pmAHf/SZ16quyc8svEIVNew7szl+W9oX4=; b=NbqyVKMG6Bx1DMJ9Ld3WqxqsU/RMr8FkCf33jhND6NgMZB9Cv2TDNLgg+/n5pYlGXr 25uZmSJRPmUzUKDh8sXFnolK8KhFwXPGcTSk26gcnXolFr9/TzCWp3P7J6q1mxaRV13i 3VPeNoaNdxkX15mfWTq1Og1SZO7OlhOAHfnma62Jax5L0YxVZEDngGn5hoX9v1yILIJx IF3in6vVSlYckc5Jbb1MMpa3aEL8TOBiKjXSJE+BPmr/imlrJ/fbMZpbPQBvVqcxGPV6 Qlutky9msuvi/uaSNIHwMSbRsuMsZKNbvh/hc8lpWUNe89eeadjjrpojISVITJZrCkHX eTyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=yYmyayf706pmAHf/SZ16quyc8svEIVNew7szl+W9oX4=; b=KOos8Yv9XDGj0J8UaPs8+aexdzVLsnIiLjlacmB1jzAYJKc3w7bnTQWaJgGn2QFWi5 gBsTpUdvB1nghkk+kRV77KqVzYeLgtJ/U/YXWn7voAIi1EVd2mhCBAS51DY0EHDc+Xky IQHbRkc13bpIUhtNY/2nU22katsDBFSiQ+AkZdXy/wYfV7L5IBgqA9VcsUAh8oKVLDpG dM97SrscMDNQA7vYXxtmfOf2r3GOTFjFxd0r1/uPu7baTDyw0CBBuHT9fap4eY2BuGj3 A1wNEh6iSORYP7u2K88fNyxGAUJ3jOy+iQpml6/MILZAmScN7cbqeBkj3JpYsgnZQq1y saWg== X-Gm-Message-State: AOAM531S1EUkjzLoaZdazOzCwEFTyaLzOxu6CBmGIB3s1+rRjkf2pb2o M1ByuFZeEwA/sUiTyn/MrMezdbAOM0A= X-Google-Smtp-Source: ABdhPJzXExK7BtroPDGOPkJR5hlfg4PNvtsdROUq2DuHZY/vbVL49yUz46typ0y6aRSwPMbgAE9mSw== X-Received: by 2002:ad4:4ae6:: with SMTP id cp6mr10469730qvb.23.1628252140150; Fri, 06 Aug 2021 05:15:40 -0700 (PDT) Received: from localhost ([68.237.93.126]) by smtp.gmail.com with ESMTPSA id t64sm4501069qkd.71.2021.08.06.05.15.28 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 06 Aug 2021 05:15:33 -0700 (PDT) From: dick References: <87h7g3g7p8.fsf@dick> <87r1f6ak40.fsf@gnus.org> Date: Fri, 06 Aug 2021 08:15:27 -0400 In-Reply-To: <87r1f6ak40.fsf@gnus.org> (Lars Ingebrigtsen's message of "Fri, 06 Aug 2021 13:27:43 +0200") Message-ID: <87czqqydk0.fsf@dick> User-Agent: Gnus/5.14 (Gnus v5.14pre) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Yes, this is much better. I wonder what came over me to obfuscate things like that. From unknown Fri Aug 15 14:47:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#49897: 28.0.50; [PATCH] Make sense of url-retrieve-synchronously Resent-From: dick Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Aug 2021 13:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49897 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Lars Ingebrigtsen Cc: 49897@debbugs.gnu.org Received: via spool by 49897-submit@debbugs.gnu.org id=B49897.16282553814681 (code B ref 49897); Fri, 06 Aug 2021 13:10:02 +0000 Received: (at 49897) by debbugs.gnu.org; 6 Aug 2021 13:09:41 +0000 Received: from localhost ([127.0.0.1]:49468 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBzbZ-0001DP-66 for submit@debbugs.gnu.org; Fri, 06 Aug 2021 09:09:41 -0400 Received: from mail-qt1-f181.google.com ([209.85.160.181]:37414) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mBzbW-0001D9-Oh for 49897@debbugs.gnu.org; Fri, 06 Aug 2021 09:09:39 -0400 Received: by mail-qt1-f181.google.com with SMTP id l24so6381682qtj.4 for <49897@debbugs.gnu.org>; Fri, 06 Aug 2021 06:09:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=6nW7dpONM4XNBursF5dwDjAawUNZEqjha+esfeYBBJo=; b=IurNLPi7TrDu2q8RFYtyJiscSeFRtXm/Oo+U5Rr+VClAkoEdJtvV67aaIeaLZBLb32 TZCmyhBSTyknfPAeeirhxEeWOxNAxoQHCX4zQ6mJWyjZqEyJbMu8kw/wjq8L9ezhQ4MC kSDbAAbWl0gpdIfQrd2Rfb63TWM4gPb2+URT4qxkGT+2LFkJuNa8u7I+WerItK1zTHCA TExGelFQHSPkIIpfr5TtipqqGfvC7RONbfd7eROEDcRHMfNrvKKg4Vya75j8SS6u5Ooi hQcN3ZSpbAR6X7mUjIyEIwxDGqfaJg+YPY3mcVVF0kdYskD+bIR43dywXoTCI7XHK5IX QjqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=6nW7dpONM4XNBursF5dwDjAawUNZEqjha+esfeYBBJo=; b=rUc+akgtmhdzvOb0OrhHHuRVKGIhk9a7PWEZkMdobwwKF1Xdmmg/Fzzydc+E9mFT+a YcPXSymN/XTpChYlEaQuMyMqN/JkrubV1Nrvw77548NFTVMOYxXNgmkWCPVs8922EUMI oZBWbtQbkKrUyrrOvp723DyAASXfMK7Ya67920Vi2kuoLcGBxlcaKK4F12KFRp0n7iaP Iy9AS6NxEpCVJs03gFneErGIjGGE7h9LmVCcjuzCF0oK7NmWXHGT6dgdW284GxJQF1OD 2V3ya8R/g2pbboTQOIOLYri6YWMm0wRQ/2nxXHdTXHRyQW8wtRWpM+uWRP78mQqJ8RDV h/pw== X-Gm-Message-State: AOAM533GPww9J03yJ4aUKsGQLdw3EZ6Vw7jgDr6WGVM0k1oLV/PJ4wek 8GrKCpGvukZ7FXC0FvWOk3o= X-Google-Smtp-Source: ABdhPJyaJE3RJ9I5OBwYijcozS5f0BFgOAwqOTrkzw4HAWu8zprLtDrxT9qRklQ1Cwhp0OSBy7Sy0Q== X-Received: by 2002:ac8:7551:: with SMTP id b17mr8893534qtr.347.1628255373354; Fri, 06 Aug 2021 06:09:33 -0700 (PDT) Received: from localhost ([68.237.93.126]) by smtp.gmail.com with ESMTPSA id v19sm1546757qta.60.2021.08.06.06.09.32 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 06 Aug 2021 06:09:32 -0700 (PDT) From: dick References: <87h7g3g7p8.fsf@dick> <87r1f6ak40.fsf@gnus.org> Date: Fri, 06 Aug 2021 09:09:32 -0400 In-Reply-To: <87r1f6ak40.fsf@gnus.org> (Lars Ingebrigtsen's message of "Fri, 06 Aug 2021 13:27:43 +0200") Message-ID: <87pmuqiusz.fsf@dick> User-Agent: Gnus/5.14 (Gnus v5.14pre) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I'm sorry to say the rewrite doesn't solve bug#49861 (hanging http GETs) for me. The process filter `url-http-generic-filter` just isn't seeing any data from the remote site, and given the frequency of occurrence, it's not the remote site's fault. There's something off about the C-level network descriptor handling for process filters. While (in my mind) the url lisp code is not culpable, I'm still glad we rewrote url-retrieve-synchronously. From unknown Fri Aug 15 14:47:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#49897: 28.0.50; [PATCH] Make sense of url-retrieve-synchronously Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Aug 2021 13:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 49897 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: dick Cc: 49897@debbugs.gnu.org Received: via spool by 49897-submit@debbugs.gnu.org id=B49897.16282576548353 (code B ref 49897); Fri, 06 Aug 2021 13:48:02 +0000 Received: (at 49897) by debbugs.gnu.org; 6 Aug 2021 13:47:34 +0000 Received: from localhost ([127.0.0.1]:49505 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mC0CD-0002Af-NV for submit@debbugs.gnu.org; Fri, 06 Aug 2021 09:47:33 -0400 Received: from quimby.gnus.org ([95.216.78.240]:37386) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mC0CB-0002AR-DE for 49897@debbugs.gnu.org; Fri, 06 Aug 2021 09:47:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=ZB0j2gj45cZLAQxGifuJiS4saVNDdt0FLWs4vMUpaRs=; b=Mfn+E4/e/DlJEoqlVfVR880FDK aNVxaI92e8lbkdXj/CcjjWBMULc/fXoC5xH0dO9wfF0NZ4e3uR7h9Ne4Hp8V590XMPcTPIqDz5VLg iQ9itMitQGvFhi9I31u8OEXlSN6m8O1WwtuKojGbccUASgCmvLi99uB6I3QDlkYHTm1Y=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mC0C1-0005zU-VV; Fri, 06 Aug 2021 15:47:24 +0200 From: Lars Ingebrigtsen References: <87h7g3g7p8.fsf@dick> <87r1f6ak40.fsf@gnus.org> <87pmuqiusz.fsf@dick> Date: Fri, 06 Aug 2021 15:47:21 +0200 In-Reply-To: <87pmuqiusz.fsf@dick> (dick's message of "Fri, 06 Aug 2021 09:09:32 -0400") Message-ID: <87a6luadna.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: dick writes: > I'm sorry to say the rewrite doesn't solve bug#49861 (hanging http GETs) for > me. The process filter `url-http-generic-filter` just isn't seeing any data > from the remote site, and given the frequ [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) dick writes: > I'm sorry to say the rewrite doesn't solve bug#49861 (hanging http GETs) for > me. The process filter `url-http-generic-filter` just isn't seeing any data > from the remote site, and given the frequency of occurrence, it's not the > remote site's fault. There's something off about the C-level network > descriptor handling for process filters. Yes, people have been poking away at the process.c code again and again to try to fix these hangs, and they usually seem to be able to fix their own use case... it's pretty maddening. It's always impossible for anybody else to reproduce the problems, which doesn't help. It's not that network connections are complex in themselves, but the Emacs process stuff has grown from a viewpoint of "run a command and output the data in the displayed buffer", and that's grown into real network connections, with coding systems applied and filters and... (And then TLS was added, and then there was that rewrite to make it all asynchronous, which complicated things even further.) So what we have is a slow, convoluted mess in this area, which is a shame. I have for years wanted to redo the network stuff (note -- note the process stuff; they're separate issues) to be efficient and sane. That is: You can push octets to the network, and you get octets back, stashed into a unibyte buffer only. And then it's up to the application level, not the network level, to interpret the octets. But it's that problem of finding the time... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no