From eb0165cae8bd60f357f9c1fa05d85d72bf9dfff3 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 3 Oct 2011 08:31:59 -0500 Subject: [PATCH] adjust drracket's "download plt" file functionality to follow redirections closes PR 6675 --- collects/drracket/private/frame.rkt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/collects/drracket/private/frame.rkt b/collects/drracket/private/frame.rkt index 847ba94d38..db4ee0ae44 100644 --- a/collects/drracket/private/frame.rkt +++ b/collects/drracket/private/frame.rkt @@ -463,14 +463,18 @@ (format "~a" (exn-message exn)) (format "~s" exn)) #:dialog-mixin frame:focus-table-mixin))]) - (let* ([url (string->url s-url)] - [tmp-filename (make-temporary-file "tmp~a.plt")] - [port (get-impure-port url)] + (define-values (port size) + (let-values ([(port header) + (get-pure-port/headers (string->url s-url) + #:redirections 5)]) + (define size + (let* ([content-header (extract-field "content-length" header)] + [m (and content-header + (regexp-match "[0-9]+" content-header))]) + (and m (string->number (car m))))) + (values port size))) + (let* ([tmp-filename (make-temporary-file "tmp~a.plt")] [header (purify-port port)] - [size (let* ([content-header (extract-field "content-length" header)] - [m (and content-header - (regexp-match "[0-9]+" content-header))]) - (and m (string->number (car m))))] [d (make-object dialog% (string-constant downloading) parent)] [message (make-object message% (string-constant downloading-file...) d)] [gauge (if size