mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
`url-retrieve-synchronously' now takes an optional timeout parameter
* doc/misc/url.texi (Retrieving URLs): Document optional parameters. * lisp/url/url.el (url-retrieve-synchronously): Allow passing in a timeout parameter (bug#22940).
This commit is contained in:
parent
4f25bef332
commit
77ba0f1c5a
3 changed files with 24 additions and 5 deletions
|
|
@ -221,14 +221,20 @@ URL-encoded before it's used."
|
|||
buffer))
|
||||
|
||||
;;;###autoload
|
||||
(defun url-retrieve-synchronously (url &optional silent inhibit-cookies)
|
||||
(defun url-retrieve-synchronously (url &optional silent inhibit-cookies timeout)
|
||||
"Retrieve URL synchronously.
|
||||
Return the buffer containing the data, or nil if there are no data
|
||||
associated with it (the case for dired, info, or mailto URLs that need
|
||||
no further processing). URL is either a string or a parsed URL."
|
||||
no further processing). URL is either a string or a parsed URL.
|
||||
|
||||
If SILENT is non-nil, don't do any messaging while retrieving.
|
||||
If INHIBIT-COOKIES is non-nil, refuse to store cookies. If
|
||||
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))
|
||||
(asynch-buffer nil))
|
||||
(setq asynch-buffer
|
||||
(url-retrieve url (lambda (&rest ignored)
|
||||
|
|
@ -250,7 +256,11 @@ no further processing). URL is either a string or a parsed URL."
|
|||
;; 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 (not retrieval-done)
|
||||
(while (and (not retrieval-done)
|
||||
(or (not timeout)
|
||||
(< (float-time (time-subtract
|
||||
(current-time) start-time))
|
||||
timeout)))
|
||||
(url-debug 'retrieval
|
||||
"Spinning in url-retrieve-synchronously: %S (%S)"
|
||||
retrieval-done asynch-buffer)
|
||||
|
|
@ -281,7 +291,7 @@ no further processing). URL is either a string or a parsed URL."
|
|||
;; `sleep-for' was tried but it lead to other forms of
|
||||
;; hanging. --Stef
|
||||
(unless (or (with-local-quit
|
||||
(accept-process-output proc))
|
||||
(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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue