summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/url/ChangeLog8
-rw-r--r--lisp/url/url-http.el14
-rw-r--r--lisp/url/url-vars.el4
3 files changed, 23 insertions, 3 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 120d00002e4..9bdaff6f51a 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,11 @@
+2013-08-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-vars.el (url-mime-encoding-string): If we have built-in gzip
+ support, say that we accept gzipped content.
+
+ * url-http.el (url-handle-content-transfer-encoding): Support
+ decompressing gzipped content.
+
2013-07-31 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-file-name-completion)
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 7f21a38c535..beffbe1f79b 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -851,11 +851,23 @@ should be shown to the user."
(error "Unknown class of HTTP response code: %d (%d)"
class url-http-response-status)))
(if (not success)
- (url-mark-buffer-as-dead buffer))
+ (url-mark-buffer-as-dead buffer)
+ (url-handle-content-transfer-encoding))
(url-http-debug "Finished parsing HTTP headers: %S" success)
(widen)
success))
+(defun url-handle-content-transfer-encoding ()
+ (let ((encoding (mail-fetch-field "content-encoding")))
+ (when (and encoding
+ (fboundp 'decompress-gzipped-region)
+ (equal (downcase encoding) "gzip"))
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (when (search-forward "\n\n")
+ (decompress-gzipped-region (point) (point-max)))))))
+
;; Miscellaneous
(defun url-http-activate-callback ()
"Activate callback specified when this buffer was created."
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 6cd0e9aec3c..a59667b57b0 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -210,8 +210,8 @@ Should be an assoc list of headers/contents.")
(defvar url-request-method nil "The method to use for the next request.")
-;; FIXME!! (RFC 2616 gives examples like `compress, gzip'.)
-(defvar url-mime-encoding-string nil
+(defvar url-mime-encoding-string (and (fboundp 'decompress-gzipped-region)
+ "gzip")
"String to send in the Accept-encoding: field in HTTP requests.")
(defvar mm-mime-mule-charset-alist)