mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Do not set url-gateway-method' in url-https'. (Bug#16543)
Currently, when `url-retrieve' is called for an https url it modifies the variable `url-gateway-method'. This has been changed to explicitly pass the requested gateway method to other functions. When `url-retrieve' is being processed then (via `accept-process-output') another `url-retrieve' call from a pending timer can be started. The second call would always see the modified `url-gateway-method' of the first one, which in general does not match the url. 2014-09-28 Ulf Jasper <ulf.jasper@web.de> * url-gw.el (url-open-stream): New optional parameter `gateway-method'. If non-nil use it instead of global variable `url-gateway-method'. * url/url-http.el (url-http): New optional parameter `gateway-method', pass it to `url-http-find-free-connection'. (url-http-find-free-connection): New optional parameter gateway-method, pass it to `url-open-stream'. (url-https-create-secure-wrapper): Do not modify `url-gateway-method' but explicitly provide 'tls as gateway-method parameter to `url-https'.
This commit is contained in:
parent
3ff1c9a8ea
commit
98c58df832
3 changed files with 38 additions and 18 deletions
|
|
@ -171,7 +171,7 @@ request.")
|
|||
url-http-open-connections))
|
||||
nil)
|
||||
|
||||
(defun url-http-find-free-connection (host port)
|
||||
(defun url-http-find-free-connection (host port &optional gateway-method)
|
||||
(let ((conns (gethash (cons host port) url-http-open-connections))
|
||||
(connection nil))
|
||||
(while (and conns (not connection))
|
||||
|
|
@ -193,7 +193,7 @@ request.")
|
|||
;; `url-open-stream' needs a buffer in which to do things
|
||||
;; like authentication. But we use another buffer afterwards.
|
||||
(unwind-protect
|
||||
(let ((proc (url-open-stream host buf host port)))
|
||||
(let ((proc (url-open-stream host buf host port gateway-method)))
|
||||
;; url-open-stream might return nil.
|
||||
(when (processp proc)
|
||||
;; Drop the temp buffer link before killing the buffer.
|
||||
|
|
@ -1167,7 +1167,7 @@ the end of the document."
|
|||
(when (eq process-buffer (current-buffer))
|
||||
(goto-char (point-max)))))
|
||||
|
||||
(defun url-http (url callback cbargs &optional retry-buffer)
|
||||
(defun url-http (url callback cbargs &optional retry-buffer gateway-method)
|
||||
"Retrieve URL via HTTP asynchronously.
|
||||
URL must be a parsed URL. See `url-generic-parse-url' for details.
|
||||
|
||||
|
|
@ -1178,11 +1178,14 @@ request, as described in the docstring of `url-retrieve' (if in
|
|||
doubt, specify nil).
|
||||
|
||||
Optional arg RETRY-BUFFER, if non-nil, specifies the buffer of a
|
||||
previous `url-http' call, which is being re-attempted."
|
||||
previous `url-http' call, which is being re-attempted.
|
||||
|
||||
Optional arg GATEWAY-METHOD specifies the gateway to be used,
|
||||
overriding the value of `url-gateway-method'."
|
||||
(cl-check-type url vector "Need a pre-parsed URL.")
|
||||
(let* ((host (url-host (or url-using-proxy url)))
|
||||
(port (url-port (or url-using-proxy url)))
|
||||
(connection (url-http-find-free-connection host port))
|
||||
(connection (url-http-find-free-connection host port gateway-method))
|
||||
(buffer (or retry-buffer
|
||||
(generate-new-buffer
|
||||
(format " *http %s:%d*" host port)))))
|
||||
|
|
@ -1440,9 +1443,8 @@ p3p
|
|||
(defmacro url-https-create-secure-wrapper (method args)
|
||||
`(defun ,(intern (format (if method "url-https-%s" "url-https") method)) ,args
|
||||
,(format "HTTPS wrapper around `%s' call." (or method "url-http"))
|
||||
(let ((url-gateway-method 'tls))
|
||||
(,(intern (format (if method "url-http-%s" "url-http") method))
|
||||
,@(remove '&rest (remove '&optional args))))))
|
||||
(,(intern (format (if method "url-http-%s" "url-http") method))
|
||||
,@(remove '&rest (remove '&optional (append args (if method nil '(nil 'tls))))))))
|
||||
|
||||
;;;###autoload (autoload 'url-https "url-http")
|
||||
(url-https-create-secure-wrapper nil (url callback cbargs))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue